From c81f7da234047cc095405d1faffa7bd884b4bdc6 Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:08:34 +0800 Subject: [PATCH 01/15] release: stage v1.0.2 package version --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 7dea76e..6d7de6e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.1 +1.0.2 From caba7127f597d8037dcc90c7690d1c71f84cd6f3 Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:08:41 +0800 Subject: [PATCH 02/15] release: stage v1.0.2 manifest metadata --- AGNIR.yaml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/AGNIR.yaml b/AGNIR.yaml index 7eb6bf3..307a312 100644 --- a/AGNIR.yaml +++ b/AGNIR.yaml @@ -30,8 +30,8 @@ extensions: kind: "vcs-ref" selector: "refs/heads/main" agnir/release: - phase: "stable-v1.0.1-published" - repository_version: "1.0.1" + phase: "stable-v1.0.2-implemented-publication-pending" + repository_version: "1.0.2" core_contract: "spec/AGNIR_CORE_1_0.md" profile_contract: "profiles/REPOSITORY_FILESYSTEM_1_0.md" promotion_contract: "spec/CORE_0_2_TO_1_0_PROMOTION.md" @@ -65,7 +65,14 @@ extensions: accepted_rc_acceptance_checkpoint: "afc07d062b957e8dbfe3f859834c787e64aa52be" previous_latest_stable: "v1.0.0" latest_stable: "v1.0.1" - publication_status: "published-verified" + candidate_scope: "chatgpt-project-locator-only" + candidate_implementation_pr: 58 + candidate_implementation_revision: "2c62d026c48405c3e299f0f57d6a674b3f6f9e1c" + candidate_implementation_verification_run: 35353464865 + candidate_acceptance_checkpoint: "4fde39128e5edf3fba3d7906a279918b1c38b7c2" + candidate_acceptance_verification_run: 35353700740 + candidate_acceptance_verification_job: 105627739027 + publication_status: "v1.0.1-published-v1.0.2-candidate" target_ref: "refs/heads/main" agnir/operations: distribution: "agnir-agent-skill" From 2db24bf5d8539a2be218ea51644fe76fe36ca6b2 Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:08:50 +0800 Subject: [PATCH 03/15] release: define v1.0.2 locator-only upgrade --- SKILL.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SKILL.md b/SKILL.md index c25c86a..2216b2c 100644 --- a/SKILL.md +++ b/SKILL.md @@ -126,12 +126,14 @@ Ask the Principal to append or merge the block; do not overwrite unrelated exist Upgrade is **not re-initialization**. Activate the existing Project first through its currently valid activation route. Preserve Project identity, memory locators/content, unrelated README/`AGENTS.md`/`AGNIR.md` content, unrelated extensions, and still-valid surface locators unless another authorized operation changes them. +Agnir `1.0.2` is a locator-only execution-surface packaging patch over `1.0.1`: it does not change Core `1.0`, `repository-filesystem/1.0`, Project identity, logical lineage identity, checkpoint semantics, or Project-owned activation. For a ChatGPT Project that needs persistent instructions, upgrade/configuration must converge on the two-line locator-only handoff above rather than preserving or generating a duplicated Agnir procedure in Project Instructions. + Agnir `1.0.1` is an activation/packaging reliability patch over `1.0.0`: it does not change Core `1.0`, `repository-filesystem/1.0`, Project identity, logical lineage identity, or checkpoint semantics. For a `1.0.0` Project, migrate the activation packaging by creating canonical `AGNIR.md`, upgrading the Agnir locator in `AGENTS.md`, and reducing the README Agnir instruction section to a compatibility locator. Reconcile this as an operational upgrade, not a Core/profile promotion. ### Classify before mutating - **no-op** — same operational package and no material drift; -- **compatible operational upgrade** — Core/profile compatibility lines unchanged, including `1.0.0` → `1.0.1` activation packaging; +- **compatible operational upgrade** — Core/profile compatibility lines unchanged, including `1.0.0` → `1.0.1` activation packaging and `1.0.1` → `1.0.2` locator-only execution-surface packaging; - **migration or promotion required** — Core/profile compatibility identifiers change. Surface `AGNIR_UPGRADE_MIGRATION_REQUIRED`-class semantics and do not silently rewrite compatibility. A newer Agnir distribution may continue to operate a supported older compatibility line. In particular, a `1.0.x` distribution may resolve a valid `0.2` Project through its `0.2` compatibility path; merely installing the newer distribution is not authorization to rewrite the Project to Core/profile `1.0`. From 9b1480ae702197c380645f32f77c3b9405a07020 Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:08:58 +0800 Subject: [PATCH 04/15] release: allow v1.0.2 self-host conformance --- conformance/check_agnir_1_0.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/conformance/check_agnir_1_0.py b/conformance/check_agnir_1_0.py index dc3996c..ab26bd0 100644 --- a/conformance/check_agnir_1_0.py +++ b/conformance/check_agnir_1_0.py @@ -109,6 +109,7 @@ def require_1_0_distribution_surface() -> None: "## Install or initialize Agnir", "canonical Executor-facing Project activation and operation surface", "backward-compatible locator only", + "Agnir `1.0.2` is a locator-only execution-surface packaging patch over `1.0.1`", "Agnir `1.0.1` is an activation/packaging reliability patch over `1.0.0`", "checkpoint evaluation", "Project-defined pre-commit policy when declared", @@ -243,7 +244,7 @@ def main() -> None: fail("logical lineage identity must not be inferred from the selector") repository_version = (ROOT / "VERSION").read_text(encoding="utf-8").strip() - if repository_version not in {"1.0.0-rc.1", "1.0.0", "1.0.1"}: + if repository_version not in {"1.0.0-rc.1", "1.0.0", "1.0.1", "1.0.2"}: fail(f"unexpected Core 1.0 repository version: {repository_version}") if f'repository_version: "{repository_version}"' not in manifest: fail(f"AGNIR.yaml does not declare repository_version {repository_version}") From b387d95f249186dbe7db49c985a43a8514937649 Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:09:12 +0800 Subject: [PATCH 05/15] release: add v1.0.2 stable package gates --- conformance/test_stable_release_gates.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/conformance/test_stable_release_gates.py b/conformance/test_stable_release_gates.py index f898d4e..c728404 100644 --- a/conformance/test_stable_release_gates.py +++ b/conformance/test_stable_release_gates.py @@ -45,7 +45,7 @@ def test_0_1_compatibility_and_migration_surfaces_remain_present(self) -> None: self.assertTrue((ROOT / path).exists(), path) -@unittest.skipUnless(VERSION in {"1.0.0", "1.0.1"}, "stable 1.0.x package gate applies only to a stable 1.0.x source tree") +@unittest.skipUnless(VERSION in {"1.0.0", "1.0.1", "1.0.2"}, "stable 1.0.x package gate applies only to a stable 1.0.x source tree") class StableOneZeroReleaseGateTests(unittest.TestCase): def test_repository_package_keeps_stable_core_profile_1_0(self) -> None: manifest = (ROOT / "AGNIR.yaml").read_text(encoding="utf-8") @@ -86,6 +86,10 @@ def test_release_package_keeps_latest_stable_distinct_from_patch_candidate(self) if VERSION == "1.0.1": self.assertIn("v1.0.1 patch scope", release) self.assertIn("does not change Core `1.0`", release) + elif VERSION == "1.0.2": + self.assertIn("v1.0.2 patch scope", release) + self.assertIn("locator-only ChatGPT Project handoff", release) + self.assertIn("does not change Core `1.0`", release) def test_dedicated_activation_surface_is_packaging_not_core(self) -> None: instructions = (ROOT / "AGNIR.md").read_text(encoding="utf-8") @@ -112,6 +116,18 @@ def test_historical_compatibility_surfaces_remain_present(self) -> None: ): self.assertTrue((ROOT / path).exists(), path) + def test_v1_0_2_publication_gate_is_exact_authoritative_main_trigger(self) -> None: + workflow = (ROOT / ".github/workflows/conformance.yml").read_text(encoding="utf-8") + for marker in ( + "publish-v1-0-2:", + "Publish v1.0.2 stable release", + "release: publish v1.0.2 stable", + 'tag="v1.0.2"', + 'previous_tag="v1.0.1"', + "prerelease=false", + ): + self.assertIn(marker, workflow) + def test_v1_0_0_publication_gate_remains_immutable_history(self) -> None: workflow = (ROOT / ".github/workflows/conformance.yml").read_text(encoding="utf-8") for marker in ( From fd726cf02ec0027cd0369b2fbd97320f274ab8bf Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:09:23 +0800 Subject: [PATCH 06/15] release: test v1.0.2 skill packaging --- conformance/test_skill_package.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/conformance/test_skill_package.py b/conformance/test_skill_package.py index 5c10649..b5d523b 100644 --- a/conformance/test_skill_package.py +++ b/conformance/test_skill_package.py @@ -101,6 +101,16 @@ def test_skill_defines_transactional_checkpoint_and_repository_intent(self) -> N ): self.assertIn(marker, text) + def test_skill_defines_1_0_2_locator_only_upgrade_without_core_promotion(self) -> None: + text = SKILL.read_text(encoding="utf-8") + for marker in ( + "Agnir `1.0.2` is a locator-only execution-surface packaging patch over `1.0.1`", + "two-line locator-only handoff", + "`1.0.1` → `1.0.2` locator-only execution-surface packaging", + "does not change Core `1.0`", + ): + self.assertIn(marker, text) + def test_skill_defines_1_0_1_activation_upgrade_without_core_promotion(self) -> None: text = SKILL.read_text(encoding="utf-8") for marker in ( @@ -183,7 +193,10 @@ def test_versioning_defines_1_0_line_and_current_release_status(self) -> None: ): self.assertIn(marker, milestones) - if VERSION == "1.0.1": + if VERSION == "1.0.2": + self.assertIn("1.0.2", versioning) + self.assertIn("1.0.2", milestones) + elif VERSION == "1.0.1": self.assertIn("1.0.1", versioning) self.assertIn("1.0.1", milestones) elif VERSION == "1.0.0": From 867ad6ce4df8b726ab289f7291fddb714cd32d96 Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:09:49 +0800 Subject: [PATCH 07/15] release: add v1.0.2 publication gate --- .github/workflows/conformance.yml | 110 +++++++++++++++++++++++++++++- 1 file changed, 108 insertions(+), 2 deletions(-) diff --git a/.github/workflows/conformance.yml b/.github/workflows/conformance.yml index dabc95d..62e96d5 100644 --- a/.github/workflows/conformance.yml +++ b/.github/workflows/conformance.yml @@ -27,7 +27,7 @@ jobs: 0.2.0|0.2.0-rc.1) python conformance/check_agnir_0_2.py ;; - 1.0.1|1.0.0|1.0.0-rc.1) + 1.0.2|1.0.1|1.0.0|1.0.0-rc.1) python conformance/check_agnir_1_0.py ;; *) @@ -70,14 +70,120 @@ jobs: github.ref == 'refs/heads/release/v0.2.0' || github.ref == 'refs/heads/release/v1.0.0' || github.ref == 'refs/heads/release/v1.0.1' || + github.ref == 'refs/heads/release/v1.0.2' || github.base_ref == 'main' || github.head_ref == 'release/v0.2.0' || github.head_ref == 'release/v1.0.0' || - github.head_ref == 'release/v1.0.1' + github.head_ref == 'release/v1.0.1' || + github.head_ref == 'release/v1.0.2' run: python -m unittest discover -s conformance -p 'test_stable_release_gates.py' -v - name: Full conformance suite run: python -m unittest discover -s conformance -p 'test_*.py' -v + publish-v1-0-2: + name: Publish v1.0.2 stable release + needs: repository-filesystem + if: >- + github.event_name == 'push' && + github.ref == 'refs/heads/main' && + github.event.head_commit.message == 'release: publish v1.0.2 stable' + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Install conformance dependencies + run: python -m pip install --disable-pip-version-check -r conformance/requirements.txt + - name: Verify exact v1.0.2 publication candidate + run: | + set -euo pipefail + test "$(cat VERSION)" = "1.0.2" + test "$(git rev-parse HEAD)" = "${GITHUB_SHA}" + grep -q 'version: "1.0"' AGNIR.yaml + grep -q 'discovery_profile: "repository-filesystem/1.0"' AGNIR.yaml + grep -q 'repository_version: "1.0.2"' AGNIR.yaml + grep -q 'lineage: "urn:agnir:lineage:authoritative"' AGNIR.yaml + grep -q 'selector: "refs/heads/main"' AGNIR.yaml + grep -q 'Before doing Project work in this repository, read and follow `AGNIR.md`' AGENTS.md + grep -q '# Agnir Project Instructions' AGNIR.md + grep -q 'locator-only and intentionally small' SKILL.md + grep -q 'Canonical Project: ()' SKILL.md + grep -q 'read root AGENTS.md, and follow it before doing Project work' SKILL.md + python conformance/check_agnir_1_0.py + python -m unittest discover -s conformance -p 'test_*.py' -v + - name: Create immutable v1.0.2 tag and release + env: + GH_TOKEN: ${{ github.token }} + run: | + set -euo pipefail + tag="v1.0.2" + previous_tag="v1.0.1" + previous_sha="f56d25b22997c259c660651e7357334b063093e1" + v1_tag="v1.0.0" + v1_sha="6d16dcfd17b8e9f22fd25804e22b9f8a516d06c3" + accepted_rc="v1.0.0-rc.1" + accepted_rc_sha="092945289f1a0a9803e4fe0583104aa380ceaadc" + repo="${GITHUB_REPOSITORY}" + + test "$(gh api "repos/${repo}/git/ref/tags/${previous_tag}" --jq '.object.sha')" = "${previous_sha}" + test "$(gh api "repos/${repo}/git/ref/tags/${v1_tag}" --jq '.object.sha')" = "${v1_sha}" + test "$(gh api "repos/${repo}/git/ref/tags/${accepted_rc}" --jq '.object.sha')" = "${accepted_rc_sha}" + + if tag_json=$(gh api "repos/${repo}/git/ref/tags/${tag}" 2>/dev/null); then + test "$(printf '%s' "${tag_json}" | jq -r '.object.sha')" = "${GITHUB_SHA}" + else + gh api --method POST "repos/${repo}/git/refs" \ + -f ref="refs/tags/${tag}" \ + -f sha="${GITHUB_SHA}" >/dev/null + fi + + body=$(cat </dev/null); then + test "$(printf '%s' "${release_json}" | jq -r '.tag_name')" = "${tag}" + test "$(printf '%s' "${release_json}" | jq -r '.prerelease')" = "false" + test "$(printf '%s' "${release_json}" | jq -r '.draft')" = "false" + else + gh api --method POST "repos/${repo}/releases" \ + -f tag_name="${tag}" \ + -f target_commitish="${GITHUB_SHA}" \ + -f name="Agnir ${tag}" \ + -f body="${body}" \ + -F draft=false \ + -F prerelease=false >/dev/null + fi + + tag_sha=$(gh api "repos/${repo}/git/ref/tags/${tag}" --jq '.object.sha') + prerelease=$(gh api "repos/${repo}/releases/tags/${tag}" --jq '.prerelease') + draft=$(gh api "repos/${repo}/releases/tags/${tag}" --jq '.draft') + latest=$(gh api "repos/${repo}/releases/latest" --jq '.tag_name') + previous_sha_after=$(gh api "repos/${repo}/git/ref/tags/${previous_tag}" --jq '.object.sha') + v1_sha_after=$(gh api "repos/${repo}/git/ref/tags/${v1_tag}" --jq '.object.sha') + accepted_rc_after=$(gh api "repos/${repo}/git/ref/tags/${accepted_rc}" --jq '.object.sha') + test "${tag_sha}" = "${GITHUB_SHA}" + test "${prerelease}" = "false" + test "${draft}" = "false" + test "${latest}" = "${tag}" + test "${previous_sha_after}" = "${previous_sha}" + test "${v1_sha_after}" = "${v1_sha}" + test "${accepted_rc_after}" = "${accepted_rc_sha}" + echo "PASS: ${tag} -> ${tag_sha}; latest=${latest}; v1.0.1=${previous_sha_after}; v1.0.0=${v1_sha_after}; accepted-rc=${accepted_rc_after}" + publish-v1-0-1: name: Publish v1.0.1 stable release needs: repository-filesystem From e96d42ec2a208093d91fe23c9f6937a96b292e7b Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:10:10 +0800 Subject: [PATCH 08/15] release: stage v1.0.2 package contract --- RELEASE.md | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index c0dbcbc..f07f258 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,6 +1,6 @@ # Agnir 1.0.x Stable Release Package -**Current repository version:** `1.0.1` +**Current repository version:** `1.0.2` **Latest published stable:** `v1.0.1` @@ -10,7 +10,7 @@ ## Status -Agnir `v1.0.1` is the **published latest stable** repository/distribution release. +Agnir repository source `1.0.2` is the **accepted publication candidate**. The latest published stable remains `v1.0.1` until the separate authoritative publication transaction succeeds. Accepted stable publication receipts: @@ -25,9 +25,34 @@ Accepted stable publication receipts: - previous stable `v1.0.0` remains exactly `6d16dcfd17b8e9f22fd25804e22b9f8a516d06c3`; - accepted `v1.0.0-rc.1` remains exactly `092945289f1a0a9803e4fe0583104aa380ceaadc`. -Repository `1.0.1` is a backward-compatible PATCH for activation/packaging reliability. It **does not change Core `1.0`**, `repository-filesystem/1.0`, the Project identity model, Continuity Lineage semantics, checkpoint semantics, or historical compatibility lines. +Repository `1.0.2` is a backward-compatible PATCH for execution-surface onboarding/packaging reliability. It **does not change Core `1.0`**, `repository-filesystem/1.0`, the Project identity model, Continuity Lineage semantics, checkpoint semantics, or historical compatibility lines. Published `v1.0.1` remains the current stable release until `v1.0.2` publication succeeds. -`latest stable` is a publication property, not a moving-branch property. Stable resolution now selects the published non-prerelease `v1.0.1` release, not later untagged `main` commits. +`latest stable` is a publication property, not a moving-branch property. During the `1.0.2` candidate stage, stable resolution continues to select the published non-prerelease `v1.0.1` release, not the release branch or untagged `main` commits. + +## v1.0.2 patch scope + +The `1.0.2` candidate publishes the Principal-accepted **locator-only ChatGPT Project handoff**: + +```text +Canonical Project: () +At the first substantive turn of every new conversation, open it, read root AGENTS.md, and follow it before doing Project work. +``` + +For ChatGPT Projects that need persistent workspace instructions, the execution surface stores only the canonical Project/ref plus the fresh-context locator to root `AGENTS.md`. It must not duplicate `AGNIR.yaml` loading, durable-truth authority, checkpoint semantics, or repository-operation semantics into Project Instructions when those are already reachable through the Project-owned activation route. + +Continuity remains: + +`AGENTS.md -> AGNIR.md -> AGNIR.yaml -> selected durable continuity` + +Accepted implementation receipts before the release cycle: + +- implementation PR: `#58`; +- implementation merge: `2c62d026c48405c3e299f0f57d6a674b3f6f9e1c`; +- implementation post-merge conformance: `35353464865` — success; +- acceptance/checkpoint merge: `4fde39128e5edf3fba3d7906a279918b1c38b7c2`; +- acceptance post-merge conformance: `35353700740`, repository job `105627739027` — success. + +This patch is distribution/onboarding hardening only. Core/profile remain `1.0` / `repository-filesystem/1.0`. ## v1.0.1 patch scope @@ -147,7 +172,7 @@ Implementation, a green PR, or an authoritative-main merge does **not** by itsel `v1.0.1` was published only through the separately armed authoritative-main transaction `release: publish v1.0.1 stable`. The publication path verified the exact source candidate, created/validated immutable `refs/tags/v1.0.1`, created/validated a non-draft/non-prerelease GitHub Release, verified `releases/latest == v1.0.1`, and verified the existing `v1.0.0` tag remained exactly at `6d16dcfd17b8e9f22fd25804e22b9f8a516d06c3`. -Published tags are immutable by Project policy. +`v1.0.2` may be published only by the exact authoritative-main trigger `release: publish v1.0.2 stable` after the repository source is `1.0.2` and conformance is green. Published tags are immutable by Project policy. ## Activation and Skill boundary From e8995bf18704c25f43a49b94c696dbd8f5639639 Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:10:24 +0800 Subject: [PATCH 09/15] release: document v1.0.2 versioning scope --- VERSIONING.md | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/VERSIONING.md b/VERSIONING.md index a0792eb..2b819f5 100644 --- a/VERSIONING.md +++ b/VERSIONING.md @@ -1,6 +1,6 @@ # Agnir Versioning -Status: active versioning policy. Published non-prerelease tag `v1.0.1` is the current latest stable repository/distribution release. It uses the same Core `1.0` + `repository-filesystem/1.0` compatibility line as `v1.0.0`. +Status: active versioning policy. Repository source `1.0.2` is an accepted PATCH publication candidate. Published non-prerelease tag `v1.0.1` remains the current latest stable until the separate `v1.0.2` publication transaction succeeds. Both use Core `1.0` + `repository-filesystem/1.0`. Agnir distinguishes **repository release version** from **Core compatibility version** and profile/extension compatibility versions. @@ -14,6 +14,18 @@ Repository releases use semantic versioning for the Agnir product/distribution a A repository prerelease-to-stable promotion such as `1.0.0-rc.1` → `1.0.0` does not itself change Core/profile compatibility. Compatibility is determined by the declared Core/profile versions, not by the presence or absence of a SemVer prerelease suffix. +## v1.0.2 execution-surface locator patch + +Repository `1.0.2` is a PATCH-level distribution evolution over `1.0.1`. Its scope is deliberately narrow: + +- make the persistent ChatGPT Project handoff locator-only and intentionally small; +- use exactly the canonical Project/ref plus a first-substantive-turn instruction to read root `AGENTS.md`; +- keep Agnir discovery, durable-truth authority, checkpoint, and repository-operation semantics in the Project-owned `AGENTS.md -> AGNIR.md -> AGNIR.yaml` path rather than duplicating them into workspace instructions; +- add conformance that rejects reintroduction of those duplicated semantics into the ChatGPT handoff; +- preserve separate repository activation and execution-surface activation status/verification. + +This patch does **not** introduce Core `1.1`, `repository-filesystem/1.1`, new continuity semantics, or a new checkpoint model. Until publication succeeds, `v1.0.1` remains latest stable. + ## v1.0.1 activation/packaging patch Repository `1.0.1` is a published PATCH-level distribution evolution over `1.0.0`. Its scope is deliberately narrow: @@ -40,7 +52,8 @@ Published/supported lines include: - repository `v0.1.1` exposes Core `0.1`; - repository `v0.2.0` exposes Core `0.2`; - repository `v1.0.0` exposes stable Core `1.0` for fresh/promoted 1.0 Projects while retaining support for historical `0.1` and `0.2` Projects; -- repository `v1.0.1` exposes the same Core `1.0` semantics; its changes are distribution/activation packaging only. +- repository `v1.0.1` exposes the same Core `1.0` semantics; its changes are distribution/activation packaging only; +- repository `v1.0.2` keeps Core `1.0` and narrows ChatGPT persistent Project Instructions to a locator-only execution-surface handoff. Core `1.0` is a deliberate **stability promotion of the behavior proven under Core `0.2`**, not a semantic redesign. The stable normative contract is `spec/AGNIR_CORE_1_0.md`; promotion from an existing Core/profile `0.2` Project is governed by `spec/CORE_0_2_TO_1_0_PROMOTION.md`. @@ -52,7 +65,8 @@ Profiles/extensions version their own contracts independently where appropriate. - repository `v0.2.0` combines Core `0.2` with `repository-filesystem/0.2`; - repository `v1.0.0` combines Core `1.0` with stable `repository-filesystem/1.0` for fresh/promoted 1.0 Projects while continuing to ship supported historical compatibility paths; -- repository `v1.0.1` keeps `repository-filesystem/1.0` unchanged. +- repository `v1.0.1` keeps `repository-filesystem/1.0` unchanged; +- repository `v1.0.2` also keeps `repository-filesystem/1.0` unchanged. Other adapters/extensions retain their own identifiers and compatibility rules. @@ -91,11 +105,11 @@ A Core/profile `0.1` Project reaches `1.0` through the existing explicit `0.1` The accepted `v1.0.0-rc.1` is release evidence and remains immutable prerelease history; it never substitutes for stable resolution. -Publication created the non-prerelease `v1.0.1` tag/Release at exact stable source revision `f56d25b22997c259c660651e7357334b063093e1`; stable resolution now selects `v1.0.1`. Previous stable `v1.0.0` remains immutable history at `6d16dcfd17b8e9f22fd25804e22b9f8a516d06c3`. Published release tags are immutable by Project policy. +Publication created the non-prerelease `v1.0.1` tag/Release at exact stable source revision `f56d25b22997c259c660651e7357334b063093e1`; stable resolution continues to select `v1.0.1` while repository `1.0.2` is only a candidate. A successful `v1.0.2` publication will advance stable resolution; it must not move `v1.0.1` or earlier tags. Previous stable `v1.0.0` remains immutable history at `6d16dcfd17b8e9f22fd25804e22b9f8a516d06c3`. Published release tags are immutable by Project policy. ## Meaning of the 1.0 line -`v1.0.0` is the point at which Agnir committed to stable public compatibility and migration discipline for downstream Projects. Patch releases such as `v1.0.1` may harden implementation, documentation, activation, packaging, and conformance without changing the stable Core/profile contract. +`v1.0.0` is the point at which Agnir committed to stable public compatibility and migration discipline for downstream Projects. Patch releases such as `v1.0.1` and `v1.0.2` may harden implementation, documentation, activation, packaging, execution-surface onboarding, and conformance without changing the stable Core/profile contract. The compatibility alignment remains: From 31b93d34142ac1f6cf64758a42f1b4381d8c1d82 Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:10:43 +0800 Subject: [PATCH 10/15] release: record v1.0.2 milestone candidate --- RELEASE_MILESTONES.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/RELEASE_MILESTONES.md b/RELEASE_MILESTONES.md index 7abb17f..82122c3 100644 --- a/RELEASE_MILESTONES.md +++ b/RELEASE_MILESTONES.md @@ -4,6 +4,7 @@ - `v0.2.0`: stable pre-1.0 feature release line for Continuity Lineages. Its acceptance gates included Core `0.2` design, explicit `0.1` → `0.2` migration, materially different VCS and non-VCS backend conformance, fresh install/resume, real-Project validation, mount-boundary evidence, and an RC cycle. Historical Core/profile `0.2` remains a supported compatibility surface after 1.0 rather than being renamed in place. - `v1.0.0`: published stability milestone. Core `1.0` + `repository-filesystem/1.0` deliberately promote the independently validated `0.2` behavior into the first long-term stable compatibility identifiers. Existing `0.2` Projects remain supported and are not forcibly rewritten; explicit semantics-preserving `0.2` → `1.0` Project promotion remains separately authorized and conformance-tested. - `v1.0.1`: published PATCH maintenance milestone for activation/packaging reliability. It introduces dedicated `AGNIR.md` Project instructions, direct `AGENTS.md → AGNIR.md` activation, a backward-compatible README locator for `1.0.0` Projects, and explicit short commit-intent checkpoint dispatch. Core `1.0` + `repository-filesystem/1.0` remain unchanged; checkpoint no-op semantics remain unchanged. +- `v1.0.2`: authorized PATCH publication candidate for ChatGPT execution-surface onboarding reliability. It makes persistent ChatGPT Project Instructions locator-only while retaining the full Project-owned activation chain and continuity semantics. Core `1.0` + `repository-filesystem/1.0` remain unchanged. ## v1 acceptance receipts @@ -46,3 +47,17 @@ The `1.0.1` patch was accepted after all of the following held: - full conformance is green on the exact candidate. Publication of `v1.0.1` was a distinct authoritative-main transaction and did not follow automatically from implementation or PR acceptance. + +## v1.0.2 publication candidate + +The Principal explicitly authorized `v1.0.2` publication on 2026-09-18 after accepting the locator-only ChatGPT Project handoff. + +Accepted implementation inputs: + +- PR `#58` merged at `2c62d026c48405c3e299f0f57d6a674b3f6f9e1c`; +- implementation post-merge conformance `35353464865` — success; +- acceptance checkpoint merged at `4fde39128e5edf3fba3d7906a279918b1c38b7c2`; +- acceptance post-merge conformance `35353700740`, repository job `105627739027` — success; +- persistent ChatGPT handoff is conformance-locked to the canonical Project/ref plus root `AGENTS.md` locator. + +Publication remains a separate authoritative-main transaction. Until it succeeds, `v1.0.1` remains latest stable. From 56dfe7400b796f29aa76e6be617f2c635e335d21 Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:10:51 +0800 Subject: [PATCH 11/15] release: reconcile repository map for v1.0.2 --- REPOSITORY_TREE.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/REPOSITORY_TREE.md b/REPOSITORY_TREE.md index c752206..7184f47 100644 --- a/REPOSITORY_TREE.md +++ b/REPOSITORY_TREE.md @@ -113,8 +113,9 @@ agnir/ ## 当前版本职责 -- **Latest published stable:** `v1.0.0` remains the latest published non-prerelease release until a separately authorized `v1.0.1` publication succeeds. -- **v1.0.1 patch scope:** dedicated `AGNIR.md` Project activation/operation surface, direct locator from `AGENTS.md`, legacy README activation compatibility for pre-upgrade Projects, short commit-intent checkpoint interception, and associated Skill/conformance/packaging hardening. Core `1.0` and `repository-filesystem/1.0` do not change. +- **Latest published stable:** `v1.0.1` remains the latest published non-prerelease release until the separately authorized `v1.0.2` publication succeeds. +- **v1.0.2 patch scope:** persistent ChatGPT Project configuration is locator-only: canonical Project/ref plus a fresh-context locator to root `AGENTS.md`; the Project-owned `AGENTS.md → AGNIR.md → AGNIR.yaml` path retains discovery, authority, checkpoint, and operation semantics. Core `1.0` and `repository-filesystem/1.0` do not change. +- **v1.0.1 patch scope:** dedicated `AGNIR.md` Project activation/operation surface, direct locator from `AGENTS.md`, legacy README activation compatibility for pre-upgrade Projects, short commit-intent checkpoint interception, and associated Skill/conformance/packaging hardening. - **Accepted RC evidence for the stable 1.0 compatibility line:** immutable `v1.0.0-rc.1` at `092945289f1a0a9803e4fe0583104aa380ceaadc`; it remains prerelease evidence and must not be moved. - **Historical compatibility:** Core/profile `0.1` and `0.2` normative/schema/reference/tests remain supported. A `1.0.x` distribution dispatches according to the Project compatibility identifiers actually declared. - **Stable 0.2 -> 1.0 promotion contract:** `spec/CORE_0_2_TO_1_0_PROMOTION.md` plus `conformance/repository_filesystem_1_0_promotion_reference.py` and `conformance/test_repository_filesystem_1_0_promotion.py`. From d40ea714e29dfa5d15b1819377b29ef8880f63bb Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:11:19 +0800 Subject: [PATCH 12/15] checkpoint: stage v1.0.2 publication state --- .agnir/state.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.agnir/state.md b/.agnir/state.md index b77653e..9af998f 100644 --- a/.agnir/state.md +++ b/.agnir/state.md @@ -42,6 +42,21 @@ The GitHub Release body has one cosmetic omission: the intended literal `` `AGNI This is a repository-host presentation defect, not a package-integrity or protocol defect. It must not be repaired by moving/recreating the published tag. A future authorized metadata repair may update only the Release body while preserving release identity. +## v1.0.2 publication candidate + +On 2026-09-18, the Principal explicitly authorized **publish `v1.0.2`** after accepting the locator-only ChatGPT Project bootstrap contract. + +The release scope is intentionally PATCH-only: + +- publish the already accepted two-line ChatGPT Project locator handoff; +- keep Project continuity behind `AGENTS.md -> AGNIR.md -> AGNIR.yaml -> selected durable continuity`; +- add exact `v1.0.2` release packaging, conformance, and an authoritative-main publication gate; +- preserve Core `1.0`, `repository-filesystem/1.0`, Project identity, Continuity Lineage, checkpoint semantics, and historical `0.1`/`0.2` compatibility. + +Candidate staging branch: `release/v1.0.2`. Repository source version is `1.0.2`; **latest stable remains `v1.0.1` until publication actually succeeds**. Publication is allowed only through an exact `main` commit message `release: publish v1.0.2 stable`, after candidate and authoritative-main conformance are green. + +Accepted implementation inputs are PR `#58` / merge `2c62d026c48405c3e299f0f57d6a674b3f6f9e1c` and acceptance checkpoint `4fde39128e5edf3fba3d7906a279918b1c38b7c2`, with authoritative conformance run `35353700740` success. + ## Public product state The Principal-approved Agnir brand identity remains canonical under `brand/`. The bilingual README/website, scoped GitHub Pages publication, transparent render-self-contained brand surfaces, Apache-2.0 licensing, bilingual contribution guidance, repository topics/homepage, and GitHub Issues feedback intake remain accepted public surfaces on authoritative `main`. From 0d13e1e0277f63a8e9c47f74639f8e62073b6d62 Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:11:34 +0800 Subject: [PATCH 13/15] checkpoint: stage v1.0.2 release actions --- .agnir/next-actions.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/.agnir/next-actions.md b/.agnir/next-actions.md index 3fc12e4..6b1d8f1 100644 --- a/.agnir/next-actions.md +++ b/.agnir/next-actions.md @@ -1,16 +1,17 @@ # Agnir Next Actions -Agnir `v1.0.1` is published and verified as the latest stable repository/distribution release. Core/profile remain `1.0` / `repository-filesystem/1.0`. - -1. **Operate the 1.0 line in stable-maintenance mode.** Preserve Core/profile 1.0 semantics and historical 0.1/0.2 compatibility/migration surfaces. Future patch releases must not silently expand or redefine the stable contract. -2. **Observe the accepted locator-only handoff in the next genuine fresh ChatGPT Project initialization.** The packaging contract is accepted and conformance-protected. Treat a future verbose handoff as a regression; do not solve it by duplicating Agnir operational semantics back into Project Instructions. -3. **Optionally repair the v1.0.1 GitHub Release-body wording.** One cosmetic sentence omitted the literal `AGNIR.md` because of shell command substitution in an unquoted heredoc. Any repair must update host metadata only; do not move/recreate `v1.0.1` or change release identity. -4. **Complete human visual review of the refined Install-section two-session preview.** PR `#55` is published. Confirm the live install area now reads unmistakably as two different Agent sessions: Session A above, Fresh Session B below, with the “open a fresh session” divider, consistent four-point Agent icon, clean desktop/mobile balance, and usable dark/light plus English / Simplified Chinese / Japanese / Korean presentation. Also confirm the hero comparison caption now reads **“两个新会话都只收到一句:‘继续。’ 但大有不同。”** in Simplified Chinese. This is public-surface polish, not a Core or adoption gate. -5. **Recruit the first external design users and collect material adoption evidence.** The synchronized split-screen fresh-session demo v3 has passed Principal human visual review and is the primary first-contact proof surface. Prioritize genuine external cold-start resumes, second-session value, cross-Executor cases, new execution surfaces, repeat use, and independently built integrations. -6. **Keep brand/public-surface truth locked.** README, website, adoption/demo and social materials may consume approved brand assets/deterministic derivatives but must not reinterpret approved identity or Core semantics. -7. **Keep merged-head cleanup enabled.** `main` remains the sole intended long-lived authoritative branch; completed staging branches should remain retired after their material result and evidence are durably represented. -8. **Shift active product execution back to Svif where appropriate.** Svif owns its own canonical continuity and ChatGPT/Plugins publication path; do not smuggle Svif changes into Agnir maintenance. -9. **Keep FishUp production publication separate.** No FishUp main advancement without separate authorization. +Agnir `v1.0.1` remains the published latest stable release while repository source `1.0.2` is staged as an explicitly authorized PATCH publication candidate. Core/profile remain `1.0` / `repository-filesystem/1.0`. + +1. **Complete and publish the v1.0.2 candidate.** Require green candidate conformance, merge/reconcile onto authoritative `main`, require green post-merge conformance, then create an exact empty publication-arm commit `release: publish v1.0.2 stable`. Accept publication only after tag/Release/latest readback and immutable earlier-tag checks pass. +2. **After successful publication, reconcile stable metadata.** Update `AGNIR.yaml`, RELEASE/versioning/README surfaces, State/Next Actions, and publication Evidence so `v1.0.2` becomes the recorded latest stable while the immutable release tag continues to point to the exact publication-arm revision. +3. **Observe the accepted locator-only handoff in the next genuine fresh ChatGPT Project initialization.** Treat a future verbose handoff as a packaging regression; do not solve it by duplicating Agnir operational semantics back into Project Instructions. +4. **Optionally repair the v1.0.1 GitHub Release-body wording.** One historical cosmetic sentence omitted the literal `AGNIR.md`; any repair must update host metadata only and must not move/recreate `v1.0.1`. +5. **Complete human visual review of the refined Install-section two-session preview.** PR `#55` is published. Confirm the live install area now reads unmistakably as two different Agent sessions: Session A above, Fresh Session B below, with the “open a fresh session” divider, consistent four-point Agent icon, clean desktop/mobile balance, and usable dark/light plus English / Simplified Chinese / Japanese / Korean presentation. Also confirm the hero comparison caption now reads **“两个新会话都只收到一句:‘继续。’ 但大有不同。”** in Simplified Chinese. This is public-surface polish, not a Core or adoption gate. +6. **Recruit the first external design users and collect material adoption evidence.** The synchronized split-screen fresh-session demo v3 has passed Principal human visual review and is the primary first-contact proof surface. Prioritize genuine external cold-start resumes, second-session value, cross-Executor cases, new execution surfaces, repeat use, and independently built integrations. +7. **Keep brand/public-surface truth locked.** README, website, adoption/demo and social materials may consume approved brand assets/deterministic derivatives but must not reinterpret approved identity or Core semantics. +8. **Keep merged-head cleanup enabled.** `main` remains the sole intended long-lived authoritative branch; completed staging branches should remain retired after their material result and evidence are durably represented. +9. **Shift active product execution back to Svif where appropriate.** Svif owns its own canonical continuity and ChatGPT/Plugins publication path; do not smuggle Svif changes into Agnir maintenance. +10. **Keep FishUp production publication separate.** No FishUp main advancement without separate authorization. ## Install preview split-session refinement receipts From 907479d79921a8733052adb3384a58270a79bee1 Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:11:47 +0800 Subject: [PATCH 14/15] evidence: stage v1.0.2 publication candidate --- ...2026-09-18-v1.0.2-publication-candidate.md | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 .agnir/evidence/2026-09-18-v1.0.2-publication-candidate.md diff --git a/.agnir/evidence/2026-09-18-v1.0.2-publication-candidate.md b/.agnir/evidence/2026-09-18-v1.0.2-publication-candidate.md new file mode 100644 index 0000000..ceebe0f --- /dev/null +++ b/.agnir/evidence/2026-09-18-v1.0.2-publication-candidate.md @@ -0,0 +1,56 @@ +# Agnir v1.0.2 publication candidate + +Date: 2026-09-18 + +## Authorization + +The Principal explicitly authorized: **publish `v1.0.2`**. + +## Scope + +`1.0.2` is a PATCH-only distribution/onboarding release for the already accepted ChatGPT Project locator simplification. + +Accepted persistent handoff: + +```text +Canonical Project: () +At the first substantive turn of every new conversation, open it, read root AGENTS.md, and follow it before doing Project work. +``` + +The release does not change Core `1.0`, `repository-filesystem/1.0`, Project identity, Continuity Lineage, checkpoint semantics, or historical compatibility lines. + +## Accepted implementation input + +- implementation PR: `#58`; +- implementation merge: `2c62d026c48405c3e299f0f57d6a674b3f6f9e1c`; +- implementation post-merge conformance: `35353464865` — success; +- Principal acceptance/checkpoint merge: `4fde39128e5edf3fba3d7906a279918b1c38b7c2`; +- acceptance post-merge conformance: `35353700740` — success; +- acceptance repository job: `105627739027` — success. + +## Candidate packaging + +Staging ref: `release/v1.0.2`. + +The candidate changes: + +- repository `VERSION` to `1.0.2` while keeping Core/profile `1.0`; +- records `1.0.2` candidate metadata while `latest_stable` remains `v1.0.1` pre-publication; +- defines the `1.0.2` locator-only upgrade behavior in `SKILL.md`; +- extends 1.0.x self-host/stable package conformance to `1.0.2`; +- adds a publication job that can run only on authoritative `main` when the head commit message is exactly `release: publish v1.0.2 stable`; +- requires the publication job to verify immutable `v1.0.1`, `v1.0.0`, and accepted `v1.0.0-rc.1` tag receipts before and after creating `v1.0.2`. + +## Publication boundary + +Candidate implementation or merge does not publish. Publication is accepted only after: + +1. candidate conformance succeeds; +2. authoritative-main reconciliation and post-merge conformance succeed; +3. the exact publication-arm commit triggers the `v1.0.2` publication job; +4. `refs/tags/v1.0.2` resolves to the exact arm commit; +5. the GitHub Release is non-draft/non-prerelease; +6. `releases/latest == v1.0.2`; +7. `v1.0.1`, `v1.0.0`, and `v1.0.0-rc.1` remain unchanged. + +Final candidate revision/run receipts are appended after the staging branch reaches a green checkpoint. From 5aa07a6df0aafba641c21db1b8b7deb72a3c2393 Mon Sep 17 00:00:00 2001 From: mattamior Date: Fri, 18 Sep 2026 22:12:24 +0800 Subject: [PATCH 15/15] evidence: checkpoint v1.0.2 candidate conformance --- .../2026-09-18-v1.0.2-publication-candidate.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.agnir/evidence/2026-09-18-v1.0.2-publication-candidate.md b/.agnir/evidence/2026-09-18-v1.0.2-publication-candidate.md index ceebe0f..b7cdc43 100644 --- a/.agnir/evidence/2026-09-18-v1.0.2-publication-candidate.md +++ b/.agnir/evidence/2026-09-18-v1.0.2-publication-candidate.md @@ -53,4 +53,13 @@ Candidate implementation or merge does not publish. Publication is accepted only 6. `releases/latest == v1.0.2`; 7. `v1.0.1`, `v1.0.0`, and `v1.0.0-rc.1` remain unchanged. -Final candidate revision/run receipts are appended after the staging branch reaches a green checkpoint. +## Pre-checkpoint candidate receipts + +- exact candidate head before this Evidence reconciliation: `907479d79921a8733052adb3384a58270a79bee1`; +- workflow: `35354730577` — success; +- repository job: `105631181979` — success; +- stable package gates: success; +- full conformance suite: success; +- publication jobs: skipped, as required on the staging branch. + +This Evidence update becomes the final staging checkpoint and therefore advances the branch once more. The resulting checkpointed head requires one final branch conformance run before PR merge.