From bd2f2fcf84a7f0bbd5d843a4c14b77c29d509db2 Mon Sep 17 00:00:00 2001 From: corvid-agent Date: Sun, 18 Oct 2026 08:18:02 -0600 Subject: [PATCH 01/19] chore(lifecycle): materialize adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md --- .claude/skills/spec-sync/SKILL.md | 106 ++++++++++++----- .codex/skills/spec-sync/SKILL.md | 108 +++++++++++++----- .cursor/skills/spec-sync/SKILL.md | 108 +++++++++++++----- .gemini/skills/spec-sync/SKILL.md | 106 ++++++++++++----- .github/workflows/trust.yml | 17 ++- .../approvals.json | 43 +++++++ .../change.md | 24 ++++ .../context.md | 33 ++++++ .../design.md | 14 +++ .../plan.md | 36 ++++++ .../state.json | 44 +++++++ .../tasks.md | 13 +++ .../testing.md | 23 ++++ .../verification-attempts.json | 53 +++++++++ .../verification.json | 16 +++ .specsync/sdd.json | 5 +- AGENTS.md | 24 +++- scripts/check-specsync-lifecycle.sh | 25 ++++ scripts/test-specsync-lifecycle.sh | 62 ++++++++++ 19 files changed, 733 insertions(+), 127 deletions(-) create mode 100644 .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/approvals.json create mode 100644 .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/change.md create mode 100644 .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/context.md create mode 100644 .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/design.md create mode 100644 .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/plan.md create mode 100644 .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json create mode 100644 .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/tasks.md create mode 100644 .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/testing.md create mode 100644 .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json create mode 100644 .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json create mode 100755 scripts/check-specsync-lifecycle.sh create mode 100755 scripts/test-specsync-lifecycle.sh diff --git a/.claude/skills/spec-sync/SKILL.md b/.claude/skills/spec-sync/SKILL.md index 4832c7b3..348e2fdf 100644 --- a/.claude/skills/spec-sync/SKILL.md +++ b/.claude/skills/spec-sync/SKILL.md @@ -1,39 +1,64 @@ --- name: spec-sync -description: Keep markdown module specs in specs// synchronized with source code using spec-sync. Use this whenever creating, editing, or reviewing code in a module that has (or should have) a spec, or whenever the user mentions specs, spec-sync, companion files (tasks.md/requirements.md/context.md/testing.md/design.md), or asks to add/update a module's documentation. +description: Keep markdown module specs in specs// synchronized with source code using specsync check (the product). Use this whenever creating, editing, or reviewing a spec or its source, or when the user mentions spec-sync, SDD, change adopt, companion files, or the 6.0 change lifecycle (approve, check --commit, review, ship). --- # Spec-Sync Workflow This project uses [spec-sync](https://github.com/CorvidLabs/spec-sync) for bidirectional spec-to-code validation. Specs live in `specs//.spec.md`. -## Companion files +`specsync check` is the product. Bidirectional spec-to-code validation does not require an +active change. SDD (`specsync change`) is opt-in: `specsync init` writes it off; +`specsync change adopt` turns it on. -## Verified SDD change lifecycle (5.0) +## Verified change lifecycle (6.0) -For every meaningful source, test, public documentation, schema, or configuration change: +Happy path verbs: `change new` -> `answer` -> `approve --actor` -> implement -> +`check --commit` -> `review --reviewer` -> `ship`/`finalize`. `start` / `verify` / +`accept` / `archive` are v1 recovery, not the happy path. Change ids are slugs, not +`CHG-NNNN`. + +When SDD is adopted and the work is a meaningful source, test, public documentation, +schema, or configuration change: 1. Run `specsync change new "" --json` and conduct the returned interview with the user. 2. Use `specsync change answer "" --json` until no questions remain. 3. Complete the adaptively selected artifacts and semantic deltas. Requirements use stable `REQ--` IDs, a normative SHALL statement, and acceptance criteria. -4. Ask the user for the definition approval, then run `specsync change approve `. -5. Run `specsync change start ` before editing implementation code. -6. Keep tasks and artifacts current, then run `specsync change verify `. -7. Present verification evidence and ask for closing approval. Only after explicit approval, - run `specsync change accept `; archive separately with `specsync change archive `. - -Never invent or self-grant either human approval. If an approved definition changes, its digest -becomes stale and must be approved again. `specsync check` validates canonical specs plus approved -active deltas, requirement-to-test evidence, change coverage, and CI gates. +4. Ask the user for the single scope approval, then run `specsync change approve --actor ""`. +5. Implement code, canonical specs, and tests on the same branch. Run `specsync change check [] --commit` + for **scoped** verification of this change only (materialize deltas + spec↔code sync). Do **not** + treat check as a full archive integrity walk. Use `specsync change audit` when you need project + health over **active** workspaces and living specs. Archives are history. +6. Complete ordinary pull-request review. For agent-authored work, have a human inspect the + change package, implementation diff, canonical spec delta, and targeted evidence once, then + record it with `specsync change review --reviewer ""`. The reviewer MAY be the + same person who approved the definition. Do not invent a second identity for solo work. +7. Run `specsync change ship ` (or `finalize`) for the same-PR archive tip. Do not commit + between review and ship. Merge on GitHub. SpecSync does not merge the pull request. + +## Lifecycle verbs + +- `specsync check` - validate all specs against source. Default daily path. No change required. +- `specsync change check [id]` - verify **this** change (materialize + spec↔code sync). Add `--commit` for ship-ready product-tip evidence. +- `specsync change audit` - project health over **active** workspaces and living specs. Not archive history. +- Archives are history; do not re-validate terminal evidence for every archived change on each check. +- Slash commands after `specsync agents install`: Claude and Gemini use `/specsync:create-spec`, `/specsync:create-change`, `/specsync:check`, `/specsync:audit`. Cursor uses the flat names `/specsync-create-spec`, `/specsync-create-change`, `/specsync-check`, `/specsync-audit`. + +Never invent or self-grant the scope approval. If an approved definition +changes, its digest becomes stale and must be approved again. `specsync change status` always +prints one explicit next action and one `Handoff:` line. Clear context (or hand the change to a +fresh session) only when `Handoff:` says `safe`; otherwise do what `Before clearing:` names first. +Resume with `specsync change status `. Historical repair commands remain available for older +evidence, but new changes use this single workflow. Each canonical spec may have policy-selected companion files. Read and update the ones present; do not create empty companions only for ceremony: -- **`tasks.md`** — Work items for this module. Check off tasks (`- [x]`) as you complete them. Add new tasks if you discover work needed. -- **`requirements.md`** — Acceptance criteria and user stories. These are permanent invariants, not tasks — do not check them off. Update if requirements change. -- **`context.md`** — Architectural decisions, key files, and current status. Update when you make design decisions or change what's in progress. -- **`testing.md`** — Test strategy: automated test locations, manual QA checklists, and edge cases/boundary conditions. -- **`design.md`** *(opt-in)* — Layout, component hierarchy, design tokens, and asset references. Present when `companions.design` is enabled in config. +- **`tasks.md`** - Work items for this module. Check off tasks (`- [x]`) as you complete them. Add new tasks if you discover work needed. +- **`requirements.md`** - Acceptance criteria and user stories. These are permanent invariants, not tasks: do not check them off. Update if requirements change. +- **`context.md`** - Architectural decisions, key files, and current status. Update when you make design decisions or change what's in progress. When `.3md` exists beside the spec, that file is the lesson source: the first plane is context and later planes are lessons. Record a new lesson on a later plane. `context.md` stays, and briefings do not read it while the 3md file parses. +- **`testing.md`** - Test strategy: automated test locations, manual QA checklists, and edge cases/boundary conditions. +- **`design.md`** *(opt-in)* - Layout, component hierarchy, design tokens, and asset references. Present when `companions.design` is enabled in config. ## Before modifying any module @@ -43,33 +68,54 @@ Each canonical spec may have policy-selected companion files. Read and update th ## After completing work -1. Mark completed items in `tasks.md` — check off finished tasks, add new ones discovered -2. Update `context.md` — record decisions made, update current status +1. Mark completed items in `tasks.md`: check off finished tasks, add new ones discovered +2. If `.3md` exists beside the spec, record the lesson on a later plane of that file. Otherwise update `context.md`: record decisions made, update current status 3. If requirements changed, update `requirements.md` acceptance criteria 4. If test coverage changed, update `testing.md` with new test files or edge cases 5. If UI/layout changed, update `design.md` with revised layout, components, or tokens ## Before creating a PR -Run `specsync check --strict` — all specs must pass with zero warnings. +Run `specsync check --strict`: all specs must pass with zero warnings. If SDD is adopted, push +the product tip from `change check --commit` with the PR. Record `change review` and +`change ship`/`finalize` only after that tip is on the PR and required checks have run. Do not +record review or ship before the PR exists. ## When adding new modules Run `specsync scaffold ` to create a spec, companion files, a registry -entry, and auto-detected source files — or `specsync new ` for a +entry, and auto-detected source files, or `specsync new ` for a minimal spec-only draft. Complete the spec before writing code. The `/specsync:create-spec` command (or tool-equivalent) runs this for you, and accepts either a bare module name or a natural-language feature description (e.g. `/specsync:create-spec "I want a feature that lets users export their -data as CSV"`) — pass a description and it will pick a module name and use +data as CSV"`): pass a description and it will pick a module name and use the description to draft the spec's Purpose and Requirements. ## Key commands -- `specsync check` — validate all specs against source code -- `specsync check --json` — machine-readable validation output -- `specsync coverage` — show which modules lack specs -- `specsync score` — quality score for each spec (0-100) -- `specsync scaffold ` — full scaffold: spec + companions + registry entry + source detection -- `specsync new ` — quick-create a minimal spec (add `--full` for companions) -- `specsync resolve --remote` — verify cross-project dependencies +- `specsync check` - validate all specs against source code +- `specsync check --json` - machine-readable validation output +- `specsync change adopt` - turn on the opt-in verified change workflow +- `specsync change new ""` / `change answer` - open a change and finish the interview +- `specsync change approve --actor ""` - record the single scope approval +- `specsync change check [id]` - scoped verification for one SDD change (`--commit` for ship evidence) +- `specsync change review --reviewer ""` - record scoped implementation review +- `specsync change ship ` / `change finalize` - same-PR archive tip; do not commit between review and ship +- `specsync change status [id]` - one next action and a `Handoff:` line +- `specsync change audit` - active workspaces + living specs (not archive history) +- `specsync coverage` - show which modules lack specs +- `specsync score` - quality score for each spec (0-100) +- `specsync scaffold ` - full scaffold: spec + companions + registry entry + source detection +- `specsync new ` - quick-create a minimal spec (add `--full` for companions) +- `specsync resolve --remote` - verify cross-project dependencies + +## Repository delivery policy (SpecSync 6.1.1) + +This repository requires SDD for meaningful work, including Godot and Sculpt. Use the exact +6.1.1 writer. Definition approval is separate from actual human implementation review. +Keep canonical validation, product tests, scoped verification and global strict active audit +separate. Run the lifecycle guard before readiness; inherited debt is not exempt. Read prior +lessons, record the observed problem, smallest correction, evidence and applicability limits. +Finalize/archive on the same PR only after genuine current review. Preserve stronger Trust, +provenance, signer and reviewer policies. Never invent approvals or repair unrelated history. diff --git a/.codex/skills/spec-sync/SKILL.md b/.codex/skills/spec-sync/SKILL.md index e597cd04..348e2fdf 100644 --- a/.codex/skills/spec-sync/SKILL.md +++ b/.codex/skills/spec-sync/SKILL.md @@ -1,39 +1,64 @@ --- name: spec-sync -description: Keep markdown module specs in specs// synchronized with source code using spec-sync. Use this whenever creating, editing, or reviewing code in a module that has (or should have) a spec, or whenever the user mentions specs, spec-sync, companion files (tasks.md/requirements.md/context.md/testing.md/design.md), or asks to add/update a module's documentation. +description: Keep markdown module specs in specs// synchronized with source code using specsync check (the product). Use this whenever creating, editing, or reviewing a spec or its source, or when the user mentions spec-sync, SDD, change adopt, companion files, or the 6.0 change lifecycle (approve, check --commit, review, ship). --- # Spec-Sync Workflow This project uses [spec-sync](https://github.com/CorvidLabs/spec-sync) for bidirectional spec-to-code validation. Specs live in `specs//.spec.md`. -## Companion files +`specsync check` is the product. Bidirectional spec-to-code validation does not require an +active change. SDD (`specsync change`) is opt-in: `specsync init` writes it off; +`specsync change adopt` turns it on. -Each canonical spec may have policy-selected companion files. Read and update the ones present; do not create empty companions only for ceremony: - -- **`tasks.md`** — Work items for this module. Check off tasks (`- [x]`) as you complete them. Add new tasks if you discover work needed. -- **`requirements.md`** — Acceptance criteria and user stories. These are permanent invariants, not tasks — do not check them off. Update if requirements change. -- **`context.md`** — Architectural decisions, key files, and current status. Update when you make design decisions or change what's in progress. -- **`testing.md`** — Test strategy: automated test locations, manual QA checklists, and edge cases/boundary conditions. -- **`design.md`** *(opt-in)* — Layout, component hierarchy, design tokens, and asset references. Present when `companions.design` is enabled in config. +## Verified change lifecycle (6.0) -## Verified SDD change lifecycle (5.0) +Happy path verbs: `change new` -> `answer` -> `approve --actor` -> implement -> +`check --commit` -> `review --reviewer` -> `ship`/`finalize`. `start` / `verify` / +`accept` / `archive` are v1 recovery, not the happy path. Change ids are slugs, not +`CHG-NNNN`. -For every meaningful source, test, public documentation, schema, or configuration change: +When SDD is adopted and the work is a meaningful source, test, public documentation, +schema, or configuration change: 1. Run `specsync change new "" --json` and conduct the returned interview with the user. 2. Use `specsync change answer "" --json` until no questions remain. 3. Complete the adaptively selected artifacts and semantic deltas. Requirements use stable `REQ--` IDs, a normative SHALL statement, and acceptance criteria. -4. Ask the user for the definition approval, then run `specsync change approve `. -5. Run `specsync change start ` before editing implementation code. -6. Keep tasks and artifacts current, then run `specsync change verify `. -7. Present verification evidence and ask for closing approval. Only after explicit approval, - run `specsync change accept `; archive separately with `specsync change archive `. +4. Ask the user for the single scope approval, then run `specsync change approve --actor ""`. +5. Implement code, canonical specs, and tests on the same branch. Run `specsync change check [] --commit` + for **scoped** verification of this change only (materialize deltas + spec↔code sync). Do **not** + treat check as a full archive integrity walk. Use `specsync change audit` when you need project + health over **active** workspaces and living specs. Archives are history. +6. Complete ordinary pull-request review. For agent-authored work, have a human inspect the + change package, implementation diff, canonical spec delta, and targeted evidence once, then + record it with `specsync change review --reviewer ""`. The reviewer MAY be the + same person who approved the definition. Do not invent a second identity for solo work. +7. Run `specsync change ship ` (or `finalize`) for the same-PR archive tip. Do not commit + between review and ship. Merge on GitHub. SpecSync does not merge the pull request. + +## Lifecycle verbs + +- `specsync check` - validate all specs against source. Default daily path. No change required. +- `specsync change check [id]` - verify **this** change (materialize + spec↔code sync). Add `--commit` for ship-ready product-tip evidence. +- `specsync change audit` - project health over **active** workspaces and living specs. Not archive history. +- Archives are history; do not re-validate terminal evidence for every archived change on each check. +- Slash commands after `specsync agents install`: Claude and Gemini use `/specsync:create-spec`, `/specsync:create-change`, `/specsync:check`, `/specsync:audit`. Cursor uses the flat names `/specsync-create-spec`, `/specsync-create-change`, `/specsync-check`, `/specsync-audit`. + +Never invent or self-grant the scope approval. If an approved definition +changes, its digest becomes stale and must be approved again. `specsync change status` always +prints one explicit next action and one `Handoff:` line. Clear context (or hand the change to a +fresh session) only when `Handoff:` says `safe`; otherwise do what `Before clearing:` names first. +Resume with `specsync change status `. Historical repair commands remain available for older +evidence, but new changes use this single workflow. + +Each canonical spec may have policy-selected companion files. Read and update the ones present; do not create empty companions only for ceremony: -Never invent or self-grant either human approval. If an approved definition changes, its digest -becomes stale and must be approved again. `specsync check` validates canonical specs plus approved -active deltas, requirement-to-test evidence, change coverage, and CI gates. +- **`tasks.md`** - Work items for this module. Check off tasks (`- [x]`) as you complete them. Add new tasks if you discover work needed. +- **`requirements.md`** - Acceptance criteria and user stories. These are permanent invariants, not tasks: do not check them off. Update if requirements change. +- **`context.md`** - Architectural decisions, key files, and current status. Update when you make design decisions or change what's in progress. When `.3md` exists beside the spec, that file is the lesson source: the first plane is context and later planes are lessons. Record a new lesson on a later plane. `context.md` stays, and briefings do not read it while the 3md file parses. +- **`testing.md`** - Test strategy: automated test locations, manual QA checklists, and edge cases/boundary conditions. +- **`design.md`** *(opt-in)* - Layout, component hierarchy, design tokens, and asset references. Present when `companions.design` is enabled in config. ## Before modifying any module @@ -43,33 +68,54 @@ active deltas, requirement-to-test evidence, change coverage, and CI gates. ## After completing work -1. Mark completed items in `tasks.md` — check off finished tasks, add new ones discovered -2. Update `context.md` — record decisions made, update current status +1. Mark completed items in `tasks.md`: check off finished tasks, add new ones discovered +2. If `.3md` exists beside the spec, record the lesson on a later plane of that file. Otherwise update `context.md`: record decisions made, update current status 3. If requirements changed, update `requirements.md` acceptance criteria 4. If test coverage changed, update `testing.md` with new test files or edge cases 5. If UI/layout changed, update `design.md` with revised layout, components, or tokens ## Before creating a PR -Run `specsync check --strict` — all specs must pass with zero warnings. +Run `specsync check --strict`: all specs must pass with zero warnings. If SDD is adopted, push +the product tip from `change check --commit` with the PR. Record `change review` and +`change ship`/`finalize` only after that tip is on the PR and required checks have run. Do not +record review or ship before the PR exists. ## When adding new modules Run `specsync scaffold ` to create a spec, companion files, a registry -entry, and auto-detected source files — or `specsync new ` for a +entry, and auto-detected source files, or `specsync new ` for a minimal spec-only draft. Complete the spec before writing code. The `/specsync:create-spec` command (or tool-equivalent) runs this for you, and accepts either a bare module name or a natural-language feature description (e.g. `/specsync:create-spec "I want a feature that lets users export their -data as CSV"`) — pass a description and it will pick a module name and use +data as CSV"`): pass a description and it will pick a module name and use the description to draft the spec's Purpose and Requirements. ## Key commands -- `specsync check` — validate all specs against source code -- `specsync check --json` — machine-readable validation output -- `specsync coverage` — show which modules lack specs -- `specsync score` — quality score for each spec (0-100) -- `specsync scaffold ` — full scaffold: spec + companions + registry entry + source detection -- `specsync new ` — quick-create a minimal spec (add `--full` for companions) -- `specsync resolve --remote` — verify cross-project dependencies +- `specsync check` - validate all specs against source code +- `specsync check --json` - machine-readable validation output +- `specsync change adopt` - turn on the opt-in verified change workflow +- `specsync change new ""` / `change answer` - open a change and finish the interview +- `specsync change approve --actor ""` - record the single scope approval +- `specsync change check [id]` - scoped verification for one SDD change (`--commit` for ship evidence) +- `specsync change review --reviewer ""` - record scoped implementation review +- `specsync change ship ` / `change finalize` - same-PR archive tip; do not commit between review and ship +- `specsync change status [id]` - one next action and a `Handoff:` line +- `specsync change audit` - active workspaces + living specs (not archive history) +- `specsync coverage` - show which modules lack specs +- `specsync score` - quality score for each spec (0-100) +- `specsync scaffold ` - full scaffold: spec + companions + registry entry + source detection +- `specsync new ` - quick-create a minimal spec (add `--full` for companions) +- `specsync resolve --remote` - verify cross-project dependencies + +## Repository delivery policy (SpecSync 6.1.1) + +This repository requires SDD for meaningful work, including Godot and Sculpt. Use the exact +6.1.1 writer. Definition approval is separate from actual human implementation review. +Keep canonical validation, product tests, scoped verification and global strict active audit +separate. Run the lifecycle guard before readiness; inherited debt is not exempt. Read prior +lessons, record the observed problem, smallest correction, evidence and applicability limits. +Finalize/archive on the same PR only after genuine current review. Preserve stronger Trust, +provenance, signer and reviewer policies. Never invent approvals or repair unrelated history. diff --git a/.cursor/skills/spec-sync/SKILL.md b/.cursor/skills/spec-sync/SKILL.md index e597cd04..348e2fdf 100644 --- a/.cursor/skills/spec-sync/SKILL.md +++ b/.cursor/skills/spec-sync/SKILL.md @@ -1,39 +1,64 @@ --- name: spec-sync -description: Keep markdown module specs in specs// synchronized with source code using spec-sync. Use this whenever creating, editing, or reviewing code in a module that has (or should have) a spec, or whenever the user mentions specs, spec-sync, companion files (tasks.md/requirements.md/context.md/testing.md/design.md), or asks to add/update a module's documentation. +description: Keep markdown module specs in specs// synchronized with source code using specsync check (the product). Use this whenever creating, editing, or reviewing a spec or its source, or when the user mentions spec-sync, SDD, change adopt, companion files, or the 6.0 change lifecycle (approve, check --commit, review, ship). --- # Spec-Sync Workflow This project uses [spec-sync](https://github.com/CorvidLabs/spec-sync) for bidirectional spec-to-code validation. Specs live in `specs//.spec.md`. -## Companion files +`specsync check` is the product. Bidirectional spec-to-code validation does not require an +active change. SDD (`specsync change`) is opt-in: `specsync init` writes it off; +`specsync change adopt` turns it on. -Each canonical spec may have policy-selected companion files. Read and update the ones present; do not create empty companions only for ceremony: - -- **`tasks.md`** — Work items for this module. Check off tasks (`- [x]`) as you complete them. Add new tasks if you discover work needed. -- **`requirements.md`** — Acceptance criteria and user stories. These are permanent invariants, not tasks — do not check them off. Update if requirements change. -- **`context.md`** — Architectural decisions, key files, and current status. Update when you make design decisions or change what's in progress. -- **`testing.md`** — Test strategy: automated test locations, manual QA checklists, and edge cases/boundary conditions. -- **`design.md`** *(opt-in)* — Layout, component hierarchy, design tokens, and asset references. Present when `companions.design` is enabled in config. +## Verified change lifecycle (6.0) -## Verified SDD change lifecycle (5.0) +Happy path verbs: `change new` -> `answer` -> `approve --actor` -> implement -> +`check --commit` -> `review --reviewer` -> `ship`/`finalize`. `start` / `verify` / +`accept` / `archive` are v1 recovery, not the happy path. Change ids are slugs, not +`CHG-NNNN`. -For every meaningful source, test, public documentation, schema, or configuration change: +When SDD is adopted and the work is a meaningful source, test, public documentation, +schema, or configuration change: 1. Run `specsync change new "" --json` and conduct the returned interview with the user. 2. Use `specsync change answer "" --json` until no questions remain. 3. Complete the adaptively selected artifacts and semantic deltas. Requirements use stable `REQ--` IDs, a normative SHALL statement, and acceptance criteria. -4. Ask the user for the definition approval, then run `specsync change approve `. -5. Run `specsync change start ` before editing implementation code. -6. Keep tasks and artifacts current, then run `specsync change verify `. -7. Present verification evidence and ask for closing approval. Only after explicit approval, - run `specsync change accept `; archive separately with `specsync change archive `. +4. Ask the user for the single scope approval, then run `specsync change approve --actor ""`. +5. Implement code, canonical specs, and tests on the same branch. Run `specsync change check [] --commit` + for **scoped** verification of this change only (materialize deltas + spec↔code sync). Do **not** + treat check as a full archive integrity walk. Use `specsync change audit` when you need project + health over **active** workspaces and living specs. Archives are history. +6. Complete ordinary pull-request review. For agent-authored work, have a human inspect the + change package, implementation diff, canonical spec delta, and targeted evidence once, then + record it with `specsync change review --reviewer ""`. The reviewer MAY be the + same person who approved the definition. Do not invent a second identity for solo work. +7. Run `specsync change ship ` (or `finalize`) for the same-PR archive tip. Do not commit + between review and ship. Merge on GitHub. SpecSync does not merge the pull request. + +## Lifecycle verbs + +- `specsync check` - validate all specs against source. Default daily path. No change required. +- `specsync change check [id]` - verify **this** change (materialize + spec↔code sync). Add `--commit` for ship-ready product-tip evidence. +- `specsync change audit` - project health over **active** workspaces and living specs. Not archive history. +- Archives are history; do not re-validate terminal evidence for every archived change on each check. +- Slash commands after `specsync agents install`: Claude and Gemini use `/specsync:create-spec`, `/specsync:create-change`, `/specsync:check`, `/specsync:audit`. Cursor uses the flat names `/specsync-create-spec`, `/specsync-create-change`, `/specsync-check`, `/specsync-audit`. + +Never invent or self-grant the scope approval. If an approved definition +changes, its digest becomes stale and must be approved again. `specsync change status` always +prints one explicit next action and one `Handoff:` line. Clear context (or hand the change to a +fresh session) only when `Handoff:` says `safe`; otherwise do what `Before clearing:` names first. +Resume with `specsync change status `. Historical repair commands remain available for older +evidence, but new changes use this single workflow. + +Each canonical spec may have policy-selected companion files. Read and update the ones present; do not create empty companions only for ceremony: -Never invent or self-grant either human approval. If an approved definition changes, its digest -becomes stale and must be approved again. `specsync check` validates canonical specs plus approved -active deltas, requirement-to-test evidence, change coverage, and CI gates. +- **`tasks.md`** - Work items for this module. Check off tasks (`- [x]`) as you complete them. Add new tasks if you discover work needed. +- **`requirements.md`** - Acceptance criteria and user stories. These are permanent invariants, not tasks: do not check them off. Update if requirements change. +- **`context.md`** - Architectural decisions, key files, and current status. Update when you make design decisions or change what's in progress. When `.3md` exists beside the spec, that file is the lesson source: the first plane is context and later planes are lessons. Record a new lesson on a later plane. `context.md` stays, and briefings do not read it while the 3md file parses. +- **`testing.md`** - Test strategy: automated test locations, manual QA checklists, and edge cases/boundary conditions. +- **`design.md`** *(opt-in)* - Layout, component hierarchy, design tokens, and asset references. Present when `companions.design` is enabled in config. ## Before modifying any module @@ -43,33 +68,54 @@ active deltas, requirement-to-test evidence, change coverage, and CI gates. ## After completing work -1. Mark completed items in `tasks.md` — check off finished tasks, add new ones discovered -2. Update `context.md` — record decisions made, update current status +1. Mark completed items in `tasks.md`: check off finished tasks, add new ones discovered +2. If `.3md` exists beside the spec, record the lesson on a later plane of that file. Otherwise update `context.md`: record decisions made, update current status 3. If requirements changed, update `requirements.md` acceptance criteria 4. If test coverage changed, update `testing.md` with new test files or edge cases 5. If UI/layout changed, update `design.md` with revised layout, components, or tokens ## Before creating a PR -Run `specsync check --strict` — all specs must pass with zero warnings. +Run `specsync check --strict`: all specs must pass with zero warnings. If SDD is adopted, push +the product tip from `change check --commit` with the PR. Record `change review` and +`change ship`/`finalize` only after that tip is on the PR and required checks have run. Do not +record review or ship before the PR exists. ## When adding new modules Run `specsync scaffold ` to create a spec, companion files, a registry -entry, and auto-detected source files — or `specsync new ` for a +entry, and auto-detected source files, or `specsync new ` for a minimal spec-only draft. Complete the spec before writing code. The `/specsync:create-spec` command (or tool-equivalent) runs this for you, and accepts either a bare module name or a natural-language feature description (e.g. `/specsync:create-spec "I want a feature that lets users export their -data as CSV"`) — pass a description and it will pick a module name and use +data as CSV"`): pass a description and it will pick a module name and use the description to draft the spec's Purpose and Requirements. ## Key commands -- `specsync check` — validate all specs against source code -- `specsync check --json` — machine-readable validation output -- `specsync coverage` — show which modules lack specs -- `specsync score` — quality score for each spec (0-100) -- `specsync scaffold ` — full scaffold: spec + companions + registry entry + source detection -- `specsync new ` — quick-create a minimal spec (add `--full` for companions) -- `specsync resolve --remote` — verify cross-project dependencies +- `specsync check` - validate all specs against source code +- `specsync check --json` - machine-readable validation output +- `specsync change adopt` - turn on the opt-in verified change workflow +- `specsync change new ""` / `change answer` - open a change and finish the interview +- `specsync change approve --actor ""` - record the single scope approval +- `specsync change check [id]` - scoped verification for one SDD change (`--commit` for ship evidence) +- `specsync change review --reviewer ""` - record scoped implementation review +- `specsync change ship ` / `change finalize` - same-PR archive tip; do not commit between review and ship +- `specsync change status [id]` - one next action and a `Handoff:` line +- `specsync change audit` - active workspaces + living specs (not archive history) +- `specsync coverage` - show which modules lack specs +- `specsync score` - quality score for each spec (0-100) +- `specsync scaffold ` - full scaffold: spec + companions + registry entry + source detection +- `specsync new ` - quick-create a minimal spec (add `--full` for companions) +- `specsync resolve --remote` - verify cross-project dependencies + +## Repository delivery policy (SpecSync 6.1.1) + +This repository requires SDD for meaningful work, including Godot and Sculpt. Use the exact +6.1.1 writer. Definition approval is separate from actual human implementation review. +Keep canonical validation, product tests, scoped verification and global strict active audit +separate. Run the lifecycle guard before readiness; inherited debt is not exempt. Read prior +lessons, record the observed problem, smallest correction, evidence and applicability limits. +Finalize/archive on the same PR only after genuine current review. Preserve stronger Trust, +provenance, signer and reviewer policies. Never invent approvals or repair unrelated history. diff --git a/.gemini/skills/spec-sync/SKILL.md b/.gemini/skills/spec-sync/SKILL.md index 4832c7b3..348e2fdf 100644 --- a/.gemini/skills/spec-sync/SKILL.md +++ b/.gemini/skills/spec-sync/SKILL.md @@ -1,39 +1,64 @@ --- name: spec-sync -description: Keep markdown module specs in specs// synchronized with source code using spec-sync. Use this whenever creating, editing, or reviewing code in a module that has (or should have) a spec, or whenever the user mentions specs, spec-sync, companion files (tasks.md/requirements.md/context.md/testing.md/design.md), or asks to add/update a module's documentation. +description: Keep markdown module specs in specs// synchronized with source code using specsync check (the product). Use this whenever creating, editing, or reviewing a spec or its source, or when the user mentions spec-sync, SDD, change adopt, companion files, or the 6.0 change lifecycle (approve, check --commit, review, ship). --- # Spec-Sync Workflow This project uses [spec-sync](https://github.com/CorvidLabs/spec-sync) for bidirectional spec-to-code validation. Specs live in `specs//.spec.md`. -## Companion files +`specsync check` is the product. Bidirectional spec-to-code validation does not require an +active change. SDD (`specsync change`) is opt-in: `specsync init` writes it off; +`specsync change adopt` turns it on. -## Verified SDD change lifecycle (5.0) +## Verified change lifecycle (6.0) -For every meaningful source, test, public documentation, schema, or configuration change: +Happy path verbs: `change new` -> `answer` -> `approve --actor` -> implement -> +`check --commit` -> `review --reviewer` -> `ship`/`finalize`. `start` / `verify` / +`accept` / `archive` are v1 recovery, not the happy path. Change ids are slugs, not +`CHG-NNNN`. + +When SDD is adopted and the work is a meaningful source, test, public documentation, +schema, or configuration change: 1. Run `specsync change new "" --json` and conduct the returned interview with the user. 2. Use `specsync change answer "" --json` until no questions remain. 3. Complete the adaptively selected artifacts and semantic deltas. Requirements use stable `REQ--` IDs, a normative SHALL statement, and acceptance criteria. -4. Ask the user for the definition approval, then run `specsync change approve `. -5. Run `specsync change start ` before editing implementation code. -6. Keep tasks and artifacts current, then run `specsync change verify `. -7. Present verification evidence and ask for closing approval. Only after explicit approval, - run `specsync change accept `; archive separately with `specsync change archive `. - -Never invent or self-grant either human approval. If an approved definition changes, its digest -becomes stale and must be approved again. `specsync check` validates canonical specs plus approved -active deltas, requirement-to-test evidence, change coverage, and CI gates. +4. Ask the user for the single scope approval, then run `specsync change approve --actor ""`. +5. Implement code, canonical specs, and tests on the same branch. Run `specsync change check [] --commit` + for **scoped** verification of this change only (materialize deltas + spec↔code sync). Do **not** + treat check as a full archive integrity walk. Use `specsync change audit` when you need project + health over **active** workspaces and living specs. Archives are history. +6. Complete ordinary pull-request review. For agent-authored work, have a human inspect the + change package, implementation diff, canonical spec delta, and targeted evidence once, then + record it with `specsync change review --reviewer ""`. The reviewer MAY be the + same person who approved the definition. Do not invent a second identity for solo work. +7. Run `specsync change ship ` (or `finalize`) for the same-PR archive tip. Do not commit + between review and ship. Merge on GitHub. SpecSync does not merge the pull request. + +## Lifecycle verbs + +- `specsync check` - validate all specs against source. Default daily path. No change required. +- `specsync change check [id]` - verify **this** change (materialize + spec↔code sync). Add `--commit` for ship-ready product-tip evidence. +- `specsync change audit` - project health over **active** workspaces and living specs. Not archive history. +- Archives are history; do not re-validate terminal evidence for every archived change on each check. +- Slash commands after `specsync agents install`: Claude and Gemini use `/specsync:create-spec`, `/specsync:create-change`, `/specsync:check`, `/specsync:audit`. Cursor uses the flat names `/specsync-create-spec`, `/specsync-create-change`, `/specsync-check`, `/specsync-audit`. + +Never invent or self-grant the scope approval. If an approved definition +changes, its digest becomes stale and must be approved again. `specsync change status` always +prints one explicit next action and one `Handoff:` line. Clear context (or hand the change to a +fresh session) only when `Handoff:` says `safe`; otherwise do what `Before clearing:` names first. +Resume with `specsync change status `. Historical repair commands remain available for older +evidence, but new changes use this single workflow. Each canonical spec may have policy-selected companion files. Read and update the ones present; do not create empty companions only for ceremony: -- **`tasks.md`** — Work items for this module. Check off tasks (`- [x]`) as you complete them. Add new tasks if you discover work needed. -- **`requirements.md`** — Acceptance criteria and user stories. These are permanent invariants, not tasks — do not check them off. Update if requirements change. -- **`context.md`** — Architectural decisions, key files, and current status. Update when you make design decisions or change what's in progress. -- **`testing.md`** — Test strategy: automated test locations, manual QA checklists, and edge cases/boundary conditions. -- **`design.md`** *(opt-in)* — Layout, component hierarchy, design tokens, and asset references. Present when `companions.design` is enabled in config. +- **`tasks.md`** - Work items for this module. Check off tasks (`- [x]`) as you complete them. Add new tasks if you discover work needed. +- **`requirements.md`** - Acceptance criteria and user stories. These are permanent invariants, not tasks: do not check them off. Update if requirements change. +- **`context.md`** - Architectural decisions, key files, and current status. Update when you make design decisions or change what's in progress. When `.3md` exists beside the spec, that file is the lesson source: the first plane is context and later planes are lessons. Record a new lesson on a later plane. `context.md` stays, and briefings do not read it while the 3md file parses. +- **`testing.md`** - Test strategy: automated test locations, manual QA checklists, and edge cases/boundary conditions. +- **`design.md`** *(opt-in)* - Layout, component hierarchy, design tokens, and asset references. Present when `companions.design` is enabled in config. ## Before modifying any module @@ -43,33 +68,54 @@ Each canonical spec may have policy-selected companion files. Read and update th ## After completing work -1. Mark completed items in `tasks.md` — check off finished tasks, add new ones discovered -2. Update `context.md` — record decisions made, update current status +1. Mark completed items in `tasks.md`: check off finished tasks, add new ones discovered +2. If `.3md` exists beside the spec, record the lesson on a later plane of that file. Otherwise update `context.md`: record decisions made, update current status 3. If requirements changed, update `requirements.md` acceptance criteria 4. If test coverage changed, update `testing.md` with new test files or edge cases 5. If UI/layout changed, update `design.md` with revised layout, components, or tokens ## Before creating a PR -Run `specsync check --strict` — all specs must pass with zero warnings. +Run `specsync check --strict`: all specs must pass with zero warnings. If SDD is adopted, push +the product tip from `change check --commit` with the PR. Record `change review` and +`change ship`/`finalize` only after that tip is on the PR and required checks have run. Do not +record review or ship before the PR exists. ## When adding new modules Run `specsync scaffold ` to create a spec, companion files, a registry -entry, and auto-detected source files — or `specsync new ` for a +entry, and auto-detected source files, or `specsync new ` for a minimal spec-only draft. Complete the spec before writing code. The `/specsync:create-spec` command (or tool-equivalent) runs this for you, and accepts either a bare module name or a natural-language feature description (e.g. `/specsync:create-spec "I want a feature that lets users export their -data as CSV"`) — pass a description and it will pick a module name and use +data as CSV"`): pass a description and it will pick a module name and use the description to draft the spec's Purpose and Requirements. ## Key commands -- `specsync check` — validate all specs against source code -- `specsync check --json` — machine-readable validation output -- `specsync coverage` — show which modules lack specs -- `specsync score` — quality score for each spec (0-100) -- `specsync scaffold ` — full scaffold: spec + companions + registry entry + source detection -- `specsync new ` — quick-create a minimal spec (add `--full` for companions) -- `specsync resolve --remote` — verify cross-project dependencies +- `specsync check` - validate all specs against source code +- `specsync check --json` - machine-readable validation output +- `specsync change adopt` - turn on the opt-in verified change workflow +- `specsync change new ""` / `change answer` - open a change and finish the interview +- `specsync change approve --actor ""` - record the single scope approval +- `specsync change check [id]` - scoped verification for one SDD change (`--commit` for ship evidence) +- `specsync change review --reviewer ""` - record scoped implementation review +- `specsync change ship ` / `change finalize` - same-PR archive tip; do not commit between review and ship +- `specsync change status [id]` - one next action and a `Handoff:` line +- `specsync change audit` - active workspaces + living specs (not archive history) +- `specsync coverage` - show which modules lack specs +- `specsync score` - quality score for each spec (0-100) +- `specsync scaffold ` - full scaffold: spec + companions + registry entry + source detection +- `specsync new ` - quick-create a minimal spec (add `--full` for companions) +- `specsync resolve --remote` - verify cross-project dependencies + +## Repository delivery policy (SpecSync 6.1.1) + +This repository requires SDD for meaningful work, including Godot and Sculpt. Use the exact +6.1.1 writer. Definition approval is separate from actual human implementation review. +Keep canonical validation, product tests, scoped verification and global strict active audit +separate. Run the lifecycle guard before readiness; inherited debt is not exempt. Read prior +lessons, record the observed problem, smallest correction, evidence and applicability limits. +Finalize/archive on the same PR only after genuine current review. Preserve stronger Trust, +provenance, signer and reviewer policies. Never invent approvals or repair unrelated history. diff --git a/.github/workflows/trust.yml b/.github/workflows/trust.yml index 2682c31b..f388f05c 100644 --- a/.github/workflows/trust.yml +++ b/.github/workflows/trust.yml @@ -35,8 +35,8 @@ jobs: with: bun-version: latest - # Strict SpecSync contract uses the same 6.0.0 binary Trust 1.2.2 - # defaults to. 6.x check is spec validation plus coverage only; + # Strict SpecSync and Trust explicitly select the 6.1.1 engine. + # Keep the independent canonical contract. 6.x check is spec validation plus coverage only; # Trust owns lifecycle verify. - name: Install pinned lifecycle tools shell: bash @@ -44,7 +44,7 @@ jobs: set -euo pipefail archive="$RUNNER_TEMP/specsync-macos-aarch64.tar.gz" checksum="$archive.sha256" - base="https://github.com/CorvidLabs/spec-sync/releases/download/v6.0.0" + base="https://github.com/CorvidLabs/spec-sync/releases/download/v6.1.1" curl -fsSL "$base/specsync-macos-aarch64.tar.gz" -o "$archive" curl -fsSL "$base/specsync-macos-aarch64.tar.gz.sha256" -o "$checksum" expected="$(awk '{print $1}' "$checksum")" @@ -73,8 +73,19 @@ jobs: - name: CorvidLabs Trust gate id: trust uses: CorvidLabs/trust@bccd89c111d47778c97c5064fb62ab51695e04ea # v1.2.2 + with: + specsync-version: "6.1.1" # Durability: fail if the standing rules block was removed. - name: Trust block present run: | grep -q "CorvidLabs trust toolchain: BEGIN" AGENTS.md + + # Independent results: inherited lifecycle debt must not skip existing Trust checks. + - name: Lifecycle regression controls + if: ${{ always() }} + run: bash scripts/test-specsync-lifecycle.sh + + - name: Active lifecycle and archive gate + if: ${{ always() }} + run: bash scripts/check-specsync-lifecycle.sh diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/approvals.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/approvals.json new file mode 100644 index 00000000..d95087ad --- /dev/null +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/approvals.json @@ -0,0 +1,43 @@ +{ + "approvals": [ + { + "gate": "definition", + "actor": "0xLeif", + "timestamp": 1792332499, + "digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "note": "Human definition approval: Leif (0xLeif) answered yes at 2026-10-18 14:07 UTC to the written nine-project implementation scope in source thread 01a118b4-4fe7-70fc-9f2d-dbbe961ba009. Evidence relayed by authorized delegation. Recorded by agent:codex as corvid-agent. Approval covers this prepared definition only; not human implementation acceptance, review, merge, release or deployment.", + "approved_scope": { + "schema_version": 1, + "change_id": "adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md", + "title": "Adopt verified SpecSync 6.1.1 approval review learning and archive lifecycle for 3md", + "description": "Adopt verified SpecSync 6.1.1 approval review learning and archive lifecycle for 3md", + "kind": "operations", + "affected_specs": [], + "affected_paths": [ + ".claude/skills/spec-sync/SKILL.md", + ".codex/skills/spec-sync/SKILL.md", + ".cursor/skills/spec-sync/SKILL.md", + ".gemini/skills/spec-sync/SKILL.md", + ".github/workflows/trust.yml", + ".specsync/sdd.json", + "AGENTS.md", + "scripts/check-specsync-lifecycle.sh", + "scripts/test-specsync-lifecycle.sh" + ], + "no_spec_change": true, + "no_spec_change_rationale": "Operations-only CI and agent governance migration; product APIs and canonical module contracts remain unchanged.", + "acceptance_criteria": [ + "Exact 6.1.1 writer and action inputs; required meaningful source/test/governance coverage; genuine human definition approval before implementation; separate current scoped human review of the implementation; actual product tests distinct from canonical checks and active-workspace audit; same-PR finalize/archive before merge; read prior lessons and record observed findings with evidence and limits. Preserve all stronger existing checks, risk thresholds, signer policies, archives and unrelated work. A non-mutating lifecycle guard fails for a wrong engine, disabled policy, uncovered meaningful path or unfinished active workspace and passes a clean finalized fixture. No fabricated approvals or inherited-history repairs. Human review and finalization remain pending until they actually happen." + ], + "dependencies": [], + "supersedes": [], + "answers": { + "architecture_risk": "no", + "public_contract": "no" + } + }, + "approved_delta_digests": {} + } + ], + "reopenings": [] +} diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/change.md b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/change.md new file mode 100644 index 00000000..4363b1a7 --- /dev/null +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/change.md @@ -0,0 +1,24 @@ +--- +id: adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md +state: implementing +type: operations +base_commit: c19963be38ec9843b738c1dc335c53809bb99207 +--- + +# Adopt verified SpecSync 6.1.1 approval review learning and archive lifecycle for 3md + +## Intent + +Adopt verified SpecSync 6.1.1 approval review learning and archive lifecycle for 3md + +## Affected Canonical Specs + +- None + +## Acceptance Criteria + +- Exact 6.1.1 writer and action inputs; required meaningful source/test/governance coverage; genuine human definition approval before implementation; separate current scoped human review of the implementation; actual product tests distinct from canonical checks and active-workspace audit; same-PR finalize/archive before merge; read prior lessons and record observed findings with evidence and limits. Preserve all stronger existing checks, risk thresholds, signer policies, archives and unrelated work. A non-mutating lifecycle guard fails for a wrong engine, disabled policy, uncovered meaningful path or unfinished active workspace and passes a clean finalized fixture. No fabricated approvals or inherited-history repairs. Human review and finalization remain pending until they actually happen. + +## No-spec Rationale + +Operations-only CI and agent governance migration; product APIs and canonical module contracts remain unchanged. diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/context.md b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/context.md new file mode 100644 index 00000000..55ec6201 --- /dev/null +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/context.md @@ -0,0 +1,33 @@ +--- +change: adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md +artifact: context +--- + +# Context + +## Status + +Prepared by agent:codex using the authenticated corvid-agent GitHub account. Proposed interview answers are agent drafting from the user request, not a new human decision. Definition approval: pending. Implementation acceptance/review: pending. No approve, review, check, finalize, push or PR publication was performed for this change. + +Exact base: `c19963be38ec9843b738c1dc335c53809bb99207` on `main`; isolated branch `codex/specsync-611-definition`. + +## Ownership + +PR #98 (0xLeif) owns element bundle cleanup/fledge.toml. Preserve element/dist and historical archives. Linux checks do not establish macOS Sculpt UI acceptance. + +Host-Mac _notes #69 comment 6245284491 owns Bot policy; Raven #418 is merged and excluded. Site #537 is closed unmerged. The 197-repository audit is not this target list. + +## Evidence-backed observations + +The isolated official Linux aarch64 6.1.1 archive passed its published SHA-256 check and reports specsync 6.1.1. The global PATH writer is 6.1.0 and must not write these records. Arcsite Trust 1.2.0 action.yml supports specsync-version. Broad rollout permission does not approve these newly written definitions. + +## Learning plan + +Read the existing instruction/spec context and cited lessons before implementing. Record observed failure, fix, command/evidence, applicability limits and remaining question in this change context. Promote only reusable supported findings; do not claim a new product lesson from an unrun test. Preserve historical lesson bundles. + +- .specsync/archive/changes/2026-10-10-record-viewer-navigation-verification-evidence-for-the-approved-archive/lesson-bundle.md +- .specsync/archive/changes/2026-10-10-repair-blurry-cubes-and-slice-canvases-after-view-and-display-size-changes-while-retaining-the-webgl-context-and-camera/lesson-bundle.md + +## Resume + +Use the isolated 6.1.1 binary with `change status adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md`. Definition approval and implementation review remain separate human decisions. diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/design.md b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/design.md new file mode 100644 index 00000000..f8e614f8 --- /dev/null +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/design.md @@ -0,0 +1,14 @@ +--- +change: adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md +artifact: design +--- + +# Design + +## Operations design + +Pin the installed lifecycle writer and Trust selector to 6.1.1, retain Trust 1.2.2 and Fledge pins. Extend root meaningful paths to gdscript/, apps/sculpt/ and .agents/. Root lifecycle owns Sculpt operations; preserve nested specs and the existing Linux Sculpt and macOS app lanes. Do not invent a nested SDD policy or change its hashes. + +The guard runs separately from canonical validation and product tasks to avoid recursive verification. It checks exact engine, required flags and native strict active audit, then refuses unfinished active workspaces. It never changes state, signs evidence, or repairs archives. Inherited debt is a blocker rather than a baseline exemption. + +Learning stays in native change context/lesson bundles and applicable existing skills. Stronger risk and provenance controls remain unchanged. diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/plan.md b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/plan.md new file mode 100644 index 00000000..0f520dce --- /dev/null +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/plan.md @@ -0,0 +1,36 @@ +--- +change: adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md +artifact: plan +--- + +# Plan + +## Approach + +Pin the installed lifecycle writer and Trust selector to 6.1.1, retain Trust 1.2.2 and Fledge pins. Extend root meaningful paths to gdscript/, apps/sculpt/ and .agents/. Root lifecycle owns Sculpt operations; preserve nested specs and the existing Linux Sculpt and macOS app lanes. Do not invent a nested SDD policy or change its hashes. + +Exact 6.1.1 writer and action inputs; required meaningful source/test/governance coverage; genuine human definition approval before implementation; separate current scoped human review of the implementation; actual product tests distinct from canonical checks and active-workspace audit; same-PR finalize/archive before merge; read prior lessons and record observed findings with evidence and limits. Preserve all stronger existing checks, risk thresholds, signer policies, archives and unrelated work. + +## Out of scope + +No product functional behavior, dependency upgrades, credentials, branch protections, main pushes, merges, tags, releases, deployments, VPS access, production services or historical acceptance repairs. No Bot #230 or paused AlgoChat Fledge work. Keep .specsync/version bytes unchanged; it is a lifecycle format stamp. + +## Steps + +1. Human inspects and approves this exact definition; resolve overlaps before implementation. +2. Pin only declared selectors and regenerate installed agent integrations with verified 6.1.1; inspect generated diff and retain local guidance. +3. Add required meaningful path coverage and a non-mutating lifecycle guard. Preserve existing workflow jobs. +4. Run product gates, canonical check and active audit separately; disclose baseline debt and resolve it only through separately authorized owner work. +5. Publish a tested draft PR only after applicable publication checks pass. Obtain actual current human implementation review. +6. Record only authentic review; finalize/archive on the same PR after evidence and lessons are ready. No merge in this scope. + +## Risks + +Inherited active records may block a strict global audit/archive guard. Do not accept them retroactively or add exclusions. The rollout stays blocked where stronger enforcement exposes debt. Linux cannot establish macOS or browser visual acceptance. + +## Constraints consulted + +PR #98 (0xLeif) owns element bundle cleanup/fledge.toml. Preserve element/dist and historical archives. Linux checks do not establish macOS Sculpt UI acceptance. + +- .specsync/archive/changes/2026-10-10-record-viewer-navigation-verification-evidence-for-the-approved-archive/lesson-bundle.md +- .specsync/archive/changes/2026-10-10-repair-blurry-cubes-and-slice-canvases-after-view-and-display-size-changes-while-retaining-the-webgl-context-and-camera/lesson-bundle.md diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json new file mode 100644 index 00000000..b7e125c4 --- /dev/null +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json @@ -0,0 +1,44 @@ +{ + "schema_version": 1, + "workflow_version": 2, + "workflow_origin_version": 2, + "id": "adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md", + "slug": "adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md", + "title": "Adopt verified SpecSync 6.1.1 approval review learning and archive lifecycle for 3md", + "description": "Adopt verified SpecSync 6.1.1 approval review learning and archive lifecycle for 3md", + "kind": "operations", + "state": "verifying", + "canonical_applied": true, + "base_commit": "c19963be38ec9843b738c1dc335c53809bb99207", + "created_at": 1792331985, + "updated_at": 1792333081, + "affected_specs": [], + "affected_paths": [ + ".github/workflows/trust.yml", + ".specsync/sdd.json", + "AGENTS.md", + "scripts/check-specsync-lifecycle.sh", + "scripts/test-specsync-lifecycle.sh", + ".codex/skills/spec-sync/SKILL.md", + ".cursor/skills/spec-sync/SKILL.md", + ".gemini/skills/spec-sync/SKILL.md", + ".claude/skills/spec-sync/SKILL.md" + ], + "no_spec_change": true, + "no_spec_change_rationale": "Operations-only CI and agent governance migration; product APIs and canonical module contracts remain unchanged.", + "acceptance_criteria": [ + "Exact 6.1.1 writer and action inputs; required meaningful source/test/governance coverage; genuine human definition approval before implementation; separate current scoped human review of the implementation; actual product tests distinct from canonical checks and active-workspace audit; same-PR finalize/archive before merge; read prior lessons and record observed findings with evidence and limits. Preserve all stronger existing checks, risk thresholds, signer policies, archives and unrelated work. A non-mutating lifecycle guard fails for a wrong engine, disabled policy, uncovered meaningful path or unfinished active workspace and passes a clean finalized fixture. No fabricated approvals or inherited-history repairs. Human review and finalization remain pending until they actually happen." + ], + "selected_artifacts": [ + "context", + "plan", + "testing", + "design", + "tasks" + ], + "dependencies": [], + "answers": { + "architecture_risk": "no", + "public_contract": "no" + } +} diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/tasks.md b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/tasks.md new file mode 100644 index 00000000..d0655740 --- /dev/null +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/tasks.md @@ -0,0 +1,13 @@ +--- +change: adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md +artifact: tasks +--- + +# Tasks + +- [x] Apply only the approved declared selector, instructions and policy changes. +- [x] Add and exercise lifecycle guard controls. +- [x] Run planned product, canonical, scoped and global checks; record actual results and limitations. +- [x] Record observed reusable lessons in change context. + +Human approval, PR publication, implementation review and finalization are delivery holds in testing/context, not claimed completed implementation tasks. diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/testing.md b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/testing.md new file mode 100644 index 00000000..ab4a51f4 --- /dev/null +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/testing.md @@ -0,0 +1,23 @@ +--- +change: adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md +artifact: testing +--- + +# Testing + +## Planned local tests (not run) + +- `fledge lanes run verify` +- `swift test --package-path apps/sculpt --no-parallel --skip deterministicPortableInterchangeFixtures` +- `fledge run gdscript` +- `fledge lanes run sculpt (macOS only)` + +Run the exact pinned writer: `specsync --version` must report 6.1.1. Run `specsync check --force --strict`, `specsync change audit --strict`, then scoped `specsync change check adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md --strict` only after definition approval and implementation. The operations no-spec check alone is not product testing. Preserve current coverage thresholds. Run the repository Trust gate where configured and qualified; report missing prerequisites or provenance failures without weakening them. + +## Lifecycle regression controls + +In disposable fixture repositories, compare an unchanged-policy clean finalized case against uncovered source/test/governance changes, wrong 6.1.0 engine, disabled flags and active/unfinalized workspaces. Each negative control must fail for the intended reason. Verify existing checks still execute and an archive-only follow-up can pass without creating an approval/review record. No human identity is invented for fixtures; controls needing authentic human acceptance remain manual. + +## Baseline versus candidate + +Baseline command outputs and exit codes live outside this repository in the rollout evidence directory at exact base c19963be38ec9843b738c1dc335c53809bb99207. They are not implementation validation. Re-run baselines after any base update. New failures belong to this candidate; inherited failures remain owner debt. No product tests have run in this preparation. diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json new file mode 100644 index 00000000..8e87f6b3 --- /dev/null +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json @@ -0,0 +1,53 @@ +{ + "schema_version": 1, + "attempts": [ + { + "timestamp": 1792333044, + "commit": "c19963be38ec9843b738c1dc335c53809bb99207", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "9b44fc6cdda52ab58f64d9d75d9bab974370942b497c7a9a5d500c68d84de3f6", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] + }, + { + "timestamp": 1792333067, + "commit": "c19963be38ec9843b738c1dc335c53809bb99207", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "ccc269040799a04a143ccd782cb735ce11e66b320b34b931fb48d50d1a6221b3", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] + }, + { + "timestamp": 1792333080, + "commit": "c19963be38ec9843b738c1dc335c53809bb99207", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "ccc269040799a04a143ccd782cb735ce11e66b320b34b931fb48d50d1a6221b3", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] + } + ] +} diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json new file mode 100644 index 00000000..98c2753c --- /dev/null +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json @@ -0,0 +1,16 @@ +{ + "timestamp": 1792333080, + "commit": "c19963be38ec9843b738c1dc335c53809bb99207", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "ccc269040799a04a143ccd782cb735ce11e66b320b34b931fb48d50d1a6221b3", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] +} diff --git a/.specsync/sdd.json b/.specsync/sdd.json index 796067cb..a21260d1 100644 --- a/.specsync/sdd.json +++ b/.specsync/sdd.json @@ -55,7 +55,10 @@ ".claude/", ".codex/", ".cursor/", - ".gemini/" + ".gemini/", + "gdscript/", + "apps/sculpt/", + ".agents/" ], "ignored_paths": [], "verification_commands": [ diff --git a/AGENTS.md b/AGENTS.md index 5ddb8cf7..805a4590 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -114,7 +114,7 @@ config in `.swift-format` enforces the mechanical parts. ## Binary and composition scope -Use SpecSync 6.0.0 for all lifecycle writers. The local binary is +Use SpecSync 6.1.1 for all lifecycle writers. The local binary is `/Users/leif/.cargo/bin/specsync`; the development Fledge pin is 1.7.2 at `/opt/homebrew/bin/fledge`. CI verifies the release checksums and pins Trust 1.2.2 to `bccd89c111d47778c97c5064fb62ab51695e04ea`. PATH can resolve @@ -212,3 +212,25 @@ This repository uses one trust gate. Every session must use it and must not bypa - Keep generated trust configuration and this managed block in place. + +## Required SpecSync 6.1.1 delivery lifecycle + +Use an explicitly verified 6.1.1 executable; the historical local path above is not proof +of its version. Root required meaningful coverage includes gdscript/, apps/sculpt/ and +.agents/. Preserve Sculpt's nested specs, hashes and separate Linux/macOS lanes. + +Inspect the completed native definition with the human and record only actual approval +before implementation. Changed definitions need renewed approval. Run product tests, +canonical validation, scoped change verification and strict active-workspace audit separately. +An operations check with no spec in scope does not establish product testing. + +Run `bash scripts/test-specsync-lifecycle.sh` and `bash scripts/check-specsync-lifecycle.sh`. +The non-mutating gate requires the exact engine and coverage policy, native strict active +audit, and no unfinished active workspace. Inherited failures remain owner recovery work; +do not exempt them or rewrite historical approval. + +For agent work, a human must inspect the current implementation, package, canonical delta +and evidence before `change review`. Definition approval is not implementation acceptance. +Finalize/archive on that same PR after actual verification and review; do not merge first. +Read prior lessons and record observed problems, smallest corrections, evidence, applicability +limits and open questions in native context/lesson bundles. Preserve prior archives. diff --git a/scripts/check-specsync-lifecycle.sh b/scripts/check-specsync-lifecycle.sh new file mode 100755 index 00000000..a1d3f61b --- /dev/null +++ b/scripts/check-specsync-lifecycle.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +# Run from the repository root. This gate never writes lifecycle state. +set -euo pipefail +engine="${SPECSYNC_BIN:-specsync}" +test "$("$engine" --version)" = 'specsync 6.1.1' || { echo 'lifecycle: expected specsync 6.1.1' >&2; exit 1; } +python3 - <<'PY' +import json +from pathlib import Path +p=json.loads(Path('.specsync/sdd.json').read_text()) +for flag in ('enabled','require_change_for_meaningful_files'): + if p.get(flag) is not True: raise SystemExit('lifecycle: required policy disabled: '+flag) +required=('src/ tests/ site/ .github/ Cargo.toml Cargo.lock action.yml package.json bun.lock package-lock.json pnpm-lock.yaml yarn.lock Package.swift Package.resolved go.mod go.sum pyproject.toml uv.lock requirements.txt .specsync/sdd.json .specsync/config.toml .specsync/config.json .specsync/version Sources/ Tests/ Examples/ conformance/ editor/ element/ js/ rust/ uitests/ web/ scripts/ README.md ROADMAP.md CHANGELOG.md SECURITY.md CONTRIBUTING.md docs/ docs.3md specs/ SPEC.md fledge.toml .trust.toml .augur.toml .attest.json AGENTS.md CLAUDE.md .claude/ .codex/ .cursor/ .gemini/ gdscript/ apps/sculpt/ .agents/').split() +missing=set(required)-set(p.get('meaningful_paths',[])) +if missing: raise SystemExit('lifecycle: missing meaningful paths: '+', '.join(sorted(missing))) +# This repository has no exclusions. Refuse masking future coverage with one. +if p.get('ignored_paths') != []: raise SystemExit('lifecycle: unexpected ignored paths') +PY +"$engine" change audit --strict +python3 - <<'PY' +from pathlib import Path +active=Path('.specsync/changes') +remaining=sorted(str(p) for p in active.iterdir() if p.is_dir()) if active.exists() else [] +if remaining: raise SystemExit('lifecycle: unfinished active workspaces: '+', '.join(remaining)) +print('lifecycle: exact engine, required coverage, strict audit and archive gate passed') +PY diff --git a/scripts/test-specsync-lifecycle.sh b/scripts/test-specsync-lifecycle.sh new file mode 100755 index 00000000..c8db0880 --- /dev/null +++ b/scripts/test-specsync-lifecycle.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +# Disposable fixture checks use the real engine, without inventing review/approval. +set -euo pipefail +engine="${SPECSYNC_BIN:-specsync}" +engine="$(command -v "$engine")" +repo="$(pwd)" +tmp="$(mktemp -d)" +trap 'rm -rf "$tmp"' EXIT +export SPECSYNC_BIN="$engine" +git -C "$tmp" init -q +"$engine" init --root "$tmp" >/dev/null +cp .specsync/sdd.json "$tmp/.specsync/sdd.json" +git -C "$tmp" add . +git -C "$tmp" -c user.name=fixture -c user.email=fixture@example.invalid commit -qm 'Empty fixture, no human approval claims' +cd "$tmp" +check() { bash "$repo/scripts/check-specsync-lifecycle.sh" >"$tmp/result" 2>&1; } +fail_for() { + if check; then echo "unexpected pass: $1" >&2; exit 1; fi + grep -F "$1" "$tmp/result" >/dev/null || { cat "$tmp/result"; exit 1; } + echo "PASS negative: $1" +} +check || { cat "$tmp/result"; exit 1; } +echo 'PASS clean fixture (no active change or fabricated acceptance)' +cat > "$tmp/wrong-engine" <<'STUB' +#!/bin/sh +printf 'specsync 6.1.0\n' +STUB +chmod +x "$tmp/wrong-engine" +SPECSYNC_BIN="$tmp/wrong-engine" fail_for 'expected specsync 6.1.1' +for flag in enabled require_change_for_meaningful_files; do + cp "$repo/.specsync/sdd.json" .specsync/sdd.json + python3 - "$flag" <<'PY' +import json,sys +p='.specsync/sdd.json'; d=json.load(open(p)); d[sys.argv[1]]=False; open(p,'w').write(json.dumps(d)) +PY + fail_for "required policy disabled: $flag" +done +for path in Sources/ Tests/ AGENTS.md gdscript/ apps/sculpt/ .agents/; do + cp "$repo/.specsync/sdd.json" .specsync/sdd.json + python3 - "$path" <<'PY' +import json,sys +p='.specsync/sdd.json'; d=json.load(open(p)); d['meaningful_paths'].remove(sys.argv[1]); open(p,'w').write(json.dumps(d)) +PY + fail_for "missing meaningful paths: $path" +done +cp "$repo/.specsync/sdd.json" .specsync/sdd.json +mkdir -p .specsync/changes/unfinished +# An empty orphan directory must also be rejected even when native audit ignores it. +fail_for 'unfinished active workspaces:' +rmdir .specsync/changes/unfinished +mkdir -p .specsync/archive +printf 'Fixture history placeholder; no approval or review asserted.\n' > .specsync/archive/fixture-note.md +check || { cat "$tmp/result"; exit 1; } +echo 'PASS archive-only fixture; authentic review/finalize remain manual' + +# Native audit must independently reject an unapproved meaningful change. +"$engine" change new "Fixture unfinished operation" --kind operations --path scripts/ --no-spec-change --rationale "Disposable negative control" --json > "$tmp/new.json" +mkdir -p scripts +printf '# fixture source change\n' > scripts/fixture.sh +if check; then echo 'unexpected native audit pass' >&2; exit 1; fi +grep -E 'incomplete|not covered|unapproved' "$tmp/result" >/dev/null || { cat "$tmp/result"; exit 1; } +echo 'PASS native audit: unapproved meaningful change' From b8b189111c5d7ce37d8fdcd858d93eb22a51d51f Mon Sep 17 00:00:00 2001 From: corvid-agent Date: Sun, 18 Oct 2026 08:18:04 -0600 Subject: [PATCH 02/19] chore(lifecycle): record adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md verification --- .../state.json | 2 +- .../verification-attempts.json | 16 ++++++++++++++++ .../verification.json | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json index b7e125c4..1118abb4 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "c19963be38ec9843b738c1dc335c53809bb99207", "created_at": 1792331985, - "updated_at": 1792333081, + "updated_at": 1792333084, "affected_specs": [], "affected_paths": [ ".github/workflows/trust.yml", diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json index 8e87f6b3..cc9b8c43 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json @@ -48,6 +48,22 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792333083, + "commit": "bd2f2fcf84a7f0bbd5d843a4c14b77c29d509db2", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "ccc269040799a04a143ccd782cb735ce11e66b320b34b931fb48d50d1a6221b3", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json index 98c2753c..9eccb6b3 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json @@ -1,6 +1,6 @@ { - "timestamp": 1792333080, - "commit": "c19963be38ec9843b738c1dc335c53809bb99207", + "timestamp": 1792333083, + "commit": "bd2f2fcf84a7f0bbd5d843a4c14b77c29d509db2", "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", "workspace_digest": "ccc269040799a04a143ccd782cb735ce11e66b320b34b931fb48d50d1a6221b3", From d4a1fbf2b61ac113a8e7bcd1dd6aa0cb1c03a52b Mon Sep 17 00:00:00 2001 From: corvid-agent Date: Sun, 18 Oct 2026 08:23:06 -0600 Subject: [PATCH 03/19] chore(lifecycle): materialize adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md --- .../implementation-observations.md | 14 ++++++++++++++ .../state.json | 2 +- .../verification-attempts.json | 16 ++++++++++++++++ .../verification.json | 6 +++--- scripts/test-specsync-lifecycle.sh | 8 ++++++++ 5 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/implementation-observations.md diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/implementation-observations.md b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/implementation-observations.md new file mode 100644 index 00000000..78c67ac9 --- /dev/null +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/implementation-observations.md @@ -0,0 +1,14 @@ +# Implementation observations and pending qualification + +Observed: native audit inspects archived state enough to reject an invented archive directory lacking state.json. Correction: tests use an empty clean fixture and archive-only note, explicitly not a fabricated accepted/finalized change. Genuine human-review/finalization remains manual. Evidence: initial control failure and final 3md-controls.log; this does not prove authentic finalized-delivery positive behavior. +Observed: placing an enforcing archive guard before existing Trust would skip existing checks when inherited debt fails. Correction: append independent always() guard/control steps after the unchanged Trust invocation. Evidence: workflow diff; hosted execution has not run. +Observed: approved definition tasks remain incomplete; scoped verification refuses them. Preserve approval-bound artifacts and record results externally pending a supported safe runtime-update path or exact amendment. No self reapproval. +Observed: Linux Sculpt package compilation fails CLzfse/lzfse.h absent. No product change is authorized by this operations migration; resolve build prerequisites separately and rerun. Godot absent; macOS Sculpt lane not runnable on Ubuntu. + +Native change check --strict --commit passed, but rewrites change.md and removes unknown sections. A disposable native check preserved this file byte-exact with the approved digest unchanged (3md-observation-probe.json). Store observations here as supplemental human-readable package context; do not assume the native lesson synthesizer consumes it; this is not a machine approval or review. The original definition/context remain untouched. Checkboxes mean the planned operations and attempts were executed, not that product checks passed. + +Canonical strict100 coverage passed. All 15 lifecycle controls passed, including ignored child-file/subtree regressions exercising the existing reject-all-exclusions policy. Scoped operations evidence is not product evidence. Global audit after scoped verification has exactly nine inherited errors. The archive guard remains blocked. + +Cold full verify timed out at240 seconds after lint/build while Swift tests were running; warm full retry PASSED all eight steps in5m41.827s (exit0): lint/build,315 Swift tests,431 JS tests,115 Rust tests (one existing ignored exhaustive mutant test), nine-pair interchange, element bundle drift and editor grammar checks. Linux Sculpt exit1 missing lzfse.h; Godot missing; macOS lane unavailable. Trust initial invocation could not infer comparison range. The root product lane passed. No Sculpt, Godot, complete Trust pass, hosted CI, human implementation review or finalization is asserted. + +Owners must recover incomplete inherited plans/interviews, REQ-ThreeMD-044 collision and stale verification separately. Provide Linux LZFSE/Godot prerequisites and macOS Sculpt validation; complete product/Trust gates before readiness. diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json index 1118abb4..1275be30 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "c19963be38ec9843b738c1dc335c53809bb99207", "created_at": 1792331985, - "updated_at": 1792333084, + "updated_at": 1792333386, "affected_specs": [], "affected_paths": [ ".github/workflows/trust.yml", diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json index cc9b8c43..9feff066 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json @@ -64,6 +64,22 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792333385, + "commit": "b8b189111c5d7ce37d8fdcd858d93eb22a51d51f", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "0d09b9245c262ec5a6395d131d659753dc4cf8dc377a33bc192f720d945f211d", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json index 9eccb6b3..53ac6c72 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json @@ -1,9 +1,9 @@ { - "timestamp": 1792333083, - "commit": "bd2f2fcf84a7f0bbd5d843a4c14b77c29d509db2", + "timestamp": 1792333385, + "commit": "b8b189111c5d7ce37d8fdcd858d93eb22a51d51f", "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", - "workspace_digest": "ccc269040799a04a143ccd782cb735ce11e66b320b34b931fb48d50d1a6221b3", + "workspace_digest": "0d09b9245c262ec5a6395d131d659753dc4cf8dc377a33bc192f720d945f211d", "passed": true, "commands": [ { diff --git a/scripts/test-specsync-lifecycle.sh b/scripts/test-specsync-lifecycle.sh index c8db0880..87c68bae 100755 --- a/scripts/test-specsync-lifecycle.sh +++ b/scripts/test-specsync-lifecycle.sh @@ -43,6 +43,14 @@ p='.specsync/sdd.json'; d=json.load(open(p)); d['meaningful_paths'].remove(sys.a PY fail_for "missing meaningful paths: $path" done +for ignored in Sources/uncovered.swift Tests/hidden/; do + cp "$repo/.specsync/sdd.json" .specsync/sdd.json + python3 - "$ignored" <<'INNER' +import json,sys +p='.specsync/sdd.json'; d=json.load(open(p)); d['ignored_paths']=[sys.argv[1]]; open(p,'w').write(json.dumps(d)) +INNER + fail_for 'unexpected ignored paths' +done cp "$repo/.specsync/sdd.json" .specsync/sdd.json mkdir -p .specsync/changes/unfinished # An empty orphan directory must also be rejected even when native audit ignores it. From 3a750aa55c4b09e0525dec1044d026b16b517f1f Mon Sep 17 00:00:00 2001 From: corvid-agent Date: Sun, 18 Oct 2026 08:23:09 -0600 Subject: [PATCH 04/19] chore(lifecycle): record adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md verification --- .../state.json | 2 +- .../verification-attempts.json | 16 ++++++++++++++++ .../verification.json | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json index 1275be30..67c2bb9e 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "c19963be38ec9843b738c1dc335c53809bb99207", "created_at": 1792331985, - "updated_at": 1792333386, + "updated_at": 1792333388, "affected_specs": [], "affected_paths": [ ".github/workflows/trust.yml", diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json index 9feff066..1b52e3e0 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json @@ -80,6 +80,22 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792333387, + "commit": "d4a1fbf2b61ac113a8e7bcd1dd6aa0cb1c03a52b", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "0d09b9245c262ec5a6395d131d659753dc4cf8dc377a33bc192f720d945f211d", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json index 53ac6c72..8aa12a60 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json @@ -1,6 +1,6 @@ { - "timestamp": 1792333385, - "commit": "b8b189111c5d7ce37d8fdcd858d93eb22a51d51f", + "timestamp": 1792333387, + "commit": "d4a1fbf2b61ac113a8e7bcd1dd6aa0cb1c03a52b", "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", "workspace_digest": "0d09b9245c262ec5a6395d131d659753dc4cf8dc377a33bc192f720d945f211d", From 827abb0c6a1209fe8a2dc30649c6a8e611d08dd1 Mon Sep 17 00:00:00 2001 From: corvid-agent Date: Sun, 18 Oct 2026 08:29:37 -0600 Subject: [PATCH 05/19] chore(lifecycle): materialize adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md --- .github/workflows/trust.yml | 29 +++++++++++++++++-- .../implementation-observations.md | 9 ++++++ .../state.json | 2 +- .../verification-attempts.json | 16 ++++++++++ .../verification.json | 6 ++-- 5 files changed, 56 insertions(+), 6 deletions(-) diff --git a/.github/workflows/trust.yml b/.github/workflows/trust.yml index f388f05c..c6d3bb8c 100644 --- a/.github/workflows/trust.yml +++ b/.github/workflows/trust.yml @@ -81,9 +81,34 @@ jobs: run: | grep -q "CorvidLabs trust toolchain: BEGIN" AGENTS.md - # Independent results: inherited lifecycle debt must not skip existing Trust checks. + # Archive readiness is a separate status: product Trust can complete before human + # implementation review and same-PR finalization. Both statuses remain required. + archive-readiness: + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install checksum-verified SpecSync 6.1.1 + shell: bash + run: | + set -euo pipefail + archive="$RUNNER_TEMP/specsync-macos-aarch64.tar.gz" + checksum="$archive.sha256" + base="https://github.com/CorvidLabs/spec-sync/releases/download/v6.1.1" + curl -fsSL "$base/specsync-macos-aarch64.tar.gz" -o "$archive" + curl -fsSL "$base/specsync-macos-aarch64.tar.gz.sha256" -o "$checksum" + expected="$(awk '{print $1}' "$checksum")" + actual="$(shasum -a 256 "$archive" | awk '{print $1}')" + test "$actual" = "$expected" + mkdir -p "$RUNNER_TEMP/specsync-bin" + tar -xzf "$archive" -C "$RUNNER_TEMP/specsync-bin" + mv "$RUNNER_TEMP/specsync-bin/specsync-macos-aarch64" "$RUNNER_TEMP/specsync-bin/specsync" + chmod +x "$RUNNER_TEMP/specsync-bin/specsync" + echo "$RUNNER_TEMP/specsync-bin" >> "$GITHUB_PATH" + - name: Lifecycle regression controls - if: ${{ always() }} run: bash scripts/test-specsync-lifecycle.sh - name: Active lifecycle and archive gate diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/implementation-observations.md b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/implementation-observations.md index 78c67ac9..ea9c6609 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/implementation-observations.md +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/implementation-observations.md @@ -12,3 +12,12 @@ Canonical strict100 coverage passed. All 15 lifecycle controls passed, including Cold full verify timed out at240 seconds after lint/build while Swift tests were running; warm full retry PASSED all eight steps in5m41.827s (exit0): lint/build,315 Swift tests,431 JS tests,115 Rust tests (one existing ignored exhaustive mutant test), nine-pair interchange, element bundle drift and editor grammar checks. Linux Sculpt exit1 missing lzfse.h; Godot missing; macOS lane unavailable. Trust initial invocation could not infer comparison range. The root product lane passed. No Sculpt, Godot, complete Trust pass, hosted CI, human implementation review or finalization is asserted. Owners must recover incomplete inherited plans/interviews, REQ-ThreeMD-044 collision and stale verification separately. Provide Linux LZFSE/Godot prerequisites and macOS Sculpt validation; complete product/Trust gates before readiness. + +Final workflow review: even always() steps in the same job make product Trust status red +until archive finalization. Moved only the new lifecycle controls/guard into an independent +archive-readiness job with checksum-verified6.1.1 installation. Existing canonical, product, +risk, provenance and Trust-block steps remain unchanged in the original trust job. Neither +job depends on the other; readiness still requires both, without forcing human finalization +before product evidence is available. YAML structure and fixture controls validate the split. +The prior explicit-range Trust run was interrupted for user-requested cleanup (exit15), not +a pass; a disk-monitored exact-candidate rerun is pending. diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json index 67c2bb9e..80621aba 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "c19963be38ec9843b738c1dc335c53809bb99207", "created_at": 1792331985, - "updated_at": 1792333388, + "updated_at": 1792333776, "affected_specs": [], "affected_paths": [ ".github/workflows/trust.yml", diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json index 1b52e3e0..7250bd6a 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json @@ -96,6 +96,22 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792333776, + "commit": "3a750aa55c4b09e0525dec1044d026b16b517f1f", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json index 8aa12a60..886d8ec4 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json @@ -1,9 +1,9 @@ { - "timestamp": 1792333387, - "commit": "d4a1fbf2b61ac113a8e7bcd1dd6aa0cb1c03a52b", + "timestamp": 1792333776, + "commit": "3a750aa55c4b09e0525dec1044d026b16b517f1f", "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", - "workspace_digest": "0d09b9245c262ec5a6395d131d659753dc4cf8dc377a33bc192f720d945f211d", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", "passed": true, "commands": [ { From aa35d5cff5df3eeac55f69dba538026e6c9da2a6 Mon Sep 17 00:00:00 2001 From: corvid-agent Date: Sun, 18 Oct 2026 08:29:39 -0600 Subject: [PATCH 06/19] chore(lifecycle): record adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md verification --- .../state.json | 2 +- .../verification-attempts.json | 16 ++++++++++++++++ .../verification.json | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json index 80621aba..15932b16 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "c19963be38ec9843b738c1dc335c53809bb99207", "created_at": 1792331985, - "updated_at": 1792333776, + "updated_at": 1792333779, "affected_specs": [], "affected_paths": [ ".github/workflows/trust.yml", diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json index 7250bd6a..ee3f3d1b 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json @@ -112,6 +112,22 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792333778, + "commit": "827abb0c6a1209fe8a2dc30649c6a8e611d08dd1", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json index 886d8ec4..c722dfd2 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json +++ b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json @@ -1,6 +1,6 @@ { - "timestamp": 1792333776, - "commit": "3a750aa55c4b09e0525dec1044d026b16b517f1f", + "timestamp": 1792333778, + "commit": "827abb0c6a1209fe8a2dc30649c6a8e611d08dd1", "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", From ca5e27054aa7007b429bd7926b009e9024289ce7 Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 09:02:07 -0600 Subject: [PATCH 07/19] chore(lifecycle): archive adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md --- .../accepted-state.json | 44 +++++++ .../approvals.json | 7 ++ .../change.md | 2 +- .../context.md | 0 .../design.md | 0 .../finalization.json | 12 ++ .../implementation-observations.md | 0 .../lesson-bundle.md | 85 +++++++++++++ .../plan.md | 0 .../review-attempts.json | 21 ++++ .../review.json | 16 +++ .../state.json | 4 +- .../tasks.md | 0 .../testing.md | 0 .../verification-attempts.json | 112 ++++++++++++++++++ .../verification.json | 112 ++++++++++++++++++ .../verification.json | 16 --- 17 files changed, 412 insertions(+), 19 deletions(-) create mode 100644 .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/accepted-state.json rename .specsync/{changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md => archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md}/approvals.json (91%) rename .specsync/{changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md => archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md}/change.md (98%) rename .specsync/{changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md => archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md}/context.md (100%) rename .specsync/{changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md => archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md}/design.md (100%) create mode 100644 .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/finalization.json rename .specsync/{changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md => archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md}/implementation-observations.md (100%) create mode 100644 .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/lesson-bundle.md rename .specsync/{changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md => archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md}/plan.md (100%) create mode 100644 .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/review-attempts.json create mode 100644 .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/review.json rename .specsync/{changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md => archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md}/state.json (97%) rename .specsync/{changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md => archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md}/tasks.md (100%) rename .specsync/{changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md => archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md}/testing.md (100%) rename .specsync/{changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md => archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md}/verification-attempts.json (52%) create mode 100644 .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json delete mode 100644 .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json diff --git a/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/accepted-state.json b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/accepted-state.json new file mode 100644 index 00000000..6db0364b --- /dev/null +++ b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/accepted-state.json @@ -0,0 +1,44 @@ +{ + "schema_version": 1, + "workflow_version": 2, + "workflow_origin_version": 2, + "id": "adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md", + "slug": "adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md", + "title": "Adopt verified SpecSync 6.1.1 approval review learning and archive lifecycle for 3md", + "description": "Adopt verified SpecSync 6.1.1 approval review learning and archive lifecycle for 3md", + "kind": "operations", + "state": "accepted", + "canonical_applied": true, + "base_commit": "c19963be38ec9843b738c1dc335c53809bb99207", + "created_at": 1792331985, + "updated_at": 1792335718, + "affected_specs": [], + "affected_paths": [ + ".github/workflows/trust.yml", + ".specsync/sdd.json", + "AGENTS.md", + "scripts/check-specsync-lifecycle.sh", + "scripts/test-specsync-lifecycle.sh", + ".codex/skills/spec-sync/SKILL.md", + ".cursor/skills/spec-sync/SKILL.md", + ".gemini/skills/spec-sync/SKILL.md", + ".claude/skills/spec-sync/SKILL.md" + ], + "no_spec_change": true, + "no_spec_change_rationale": "Operations-only CI and agent governance migration; product APIs and canonical module contracts remain unchanged.", + "acceptance_criteria": [ + "Exact 6.1.1 writer and action inputs; required meaningful source/test/governance coverage; genuine human definition approval before implementation; separate current scoped human review of the implementation; actual product tests distinct from canonical checks and active-workspace audit; same-PR finalize/archive before merge; read prior lessons and record observed findings with evidence and limits. Preserve all stronger existing checks, risk thresholds, signer policies, archives and unrelated work. A non-mutating lifecycle guard fails for a wrong engine, disabled policy, uncovered meaningful path or unfinished active workspace and passes a clean finalized fixture. No fabricated approvals or inherited-history repairs. Human review and finalization remain pending until they actually happen." + ], + "selected_artifacts": [ + "context", + "plan", + "testing", + "design", + "tasks" + ], + "dependencies": [], + "answers": { + "architecture_risk": "no", + "public_contract": "no" + } +} diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/approvals.json b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/approvals.json similarity index 91% rename from .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/approvals.json rename to .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/approvals.json index d95087ad..fa39260c 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/approvals.json +++ b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/approvals.json @@ -37,6 +37,13 @@ } }, "approved_delta_digests": {} + }, + { + "gate": "finalization", + "actor": "specsync:finalization", + "timestamp": 1792335718, + "digest": "2e7a0a12464b78d7981563784042c7568a56f8af00e88ff28e08544df43dd875", + "note": "Same-PR finalization closing digest" } ], "reopenings": [] diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/change.md b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/change.md similarity index 98% rename from .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/change.md rename to .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/change.md index 4363b1a7..cd406cfa 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/change.md +++ b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/change.md @@ -1,6 +1,6 @@ --- id: adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md -state: implementing +state: archived type: operations base_commit: c19963be38ec9843b738c1dc335c53809bb99207 --- diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/context.md b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/context.md similarity index 100% rename from .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/context.md rename to .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/context.md diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/design.md b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/design.md similarity index 100% rename from .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/design.md rename to .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/design.md diff --git a/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/finalization.json b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/finalization.json new file mode 100644 index 00000000..47dc17d4 --- /dev/null +++ b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/finalization.json @@ -0,0 +1,12 @@ +{ + "schema_version": 2, + "change_id": "adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md", + "implementation_commit": "aa35d5cff5df3eeac55f69dba538026e6c9da2a6", + "implementation_tree": "84c232b8572dc0369729cf549a8884607982eae1", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "closing_digest": "2e7a0a12464b78d7981563784042c7568a56f8af00e88ff28e08544df43dd875", + "review_digest": "ae3e073ba73b3cd80e83182032c89271c7ff67a6d5cfb341389335eb3a04c5e8", + "finalization_digest": "128ed5764be5ced507882d619d3f61a1a4443d52867717796efdd1ca5c72c779", + "timestamp": 1792335718 +} diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/implementation-observations.md b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/implementation-observations.md similarity index 100% rename from .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/implementation-observations.md rename to .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/implementation-observations.md diff --git a/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/lesson-bundle.md b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/lesson-bundle.md new file mode 100644 index 00000000..bf112416 --- /dev/null +++ b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/lesson-bundle.md @@ -0,0 +1,85 @@ +# Lesson bundle — adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md + +Material for folding this change's lessons into each affected module's lesson file. +Synthesise from what actually happened below; do not restate the change description. + +## What this change was + +- **Title**: Adopt verified SpecSync 6.1.1 approval review learning and archive lifecycle for 3md +- **Kind**: Operations +- **Paths**: .github/workflows/trust.yml, .specsync/sdd.json, AGENTS.md, scripts/check-specsync-lifecycle.sh, scripts/test-specsync-lifecycle.sh, .codex/skills/spec-sync/SKILL.md, .cursor/skills/spec-sync/SKILL.md, .gemini/skills/spec-sync/SKILL.md, .claude/skills/spec-sync/SKILL.md +- **Acceptance**: Exact 6.1.1 writer and action inputs; required meaningful source/test/governance coverage; genuine human definition approval before implementation; separate current scoped human review of the implementation; actual product tests distinct from canonical checks and active-workspace audit; same-PR finalize/archive before merge; read prior lessons and record observed findings with evidence and limits. Preserve all stronger existing checks, risk thresholds, signer policies, archives and unrelated work. A non-mutating lifecycle guard fails for a wrong engine, disabled policy, uncovered meaningful path or unfinished active workspace and passes a clean finalized fixture. No fabricated approvals or inherited-history repairs. Human review and finalization remain pending until they actually happen. + +## Evidence + +- Verification commit: `aa35d5cff5df3eeac55f69dba538026e6c9da2a6` +- Base commit: `c19963be38ec9843b738c1dc335c53809bb99207` +- Verified by: `specsync check (no spec in scope)` + +## From the change's context.md + +# Context + +## Status + +Prepared by agent:codex using the authenticated corvid-agent GitHub account. Proposed interview answers are agent drafting from the user request, not a new human decision. Definition approval: pending. Implementation acceptance/review: pending. No approve, review, check, finalize, push or PR publication was performed for this change. + +Exact base: `c19963be38ec9843b738c1dc335c53809bb99207` on `main`; isolated branch `codex/specsync-611-definition`. + +## Ownership + +PR #98 (0xLeif) owns element bundle cleanup/fledge.toml. Preserve element/dist and historical archives. Linux checks do not establish macOS Sculpt UI acceptance. + +Host-Mac _notes #69 comment 6245284491 owns Bot policy; Raven #418 is merged and excluded. Site #537 is closed unmerged. The 197-repository audit is not this target list. + +## Evidence-backed observations + +The isolated official Linux aarch64 6.1.1 archive passed its published SHA-256 check and reports specsync 6.1.1. The global PATH writer is 6.1.0 and must not write these records. Arcsite Trust 1.2.0 action.yml supports specsync-version. Broad rollout permission does not approve these newly written definitions. + +## Learning plan + +Read the existing instruction/spec context and cited lessons before implementing. Record observed failure, fix, command/evidence, applicability limits and remaining question in this change context. Promote only reusable supported findings; do not claim a new product lesson from an unrun test. Preserve historical lesson bundles. + +- .specsync/archive/changes/2026-10-10-record-viewer-navigation-verification-evidence-for-the-approved-archive/lesson-bundle.md +- .specsync/archive/changes/2026-10-10-repair-blurry-cubes-and-slice-canvases-after-view-and-display-size-changes-while-retaining-the-webgl-context-and-camera/lesson-bundle.md + +## Resume + +Use the isolated 6.1.1 binary with `change status adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md`. Definition approval and implementation review remain separate human decisions. + +## From the change's design.md + +# Design + +## Operations design + +Pin the installed lifecycle writer and Trust selector to 6.1.1, retain Trust 1.2.2 and Fledge pins. Extend root meaningful paths to gdscript/, apps/sculpt/ and .agents/. Root lifecycle owns Sculpt operations; preserve nested specs and the existing Linux Sculpt and macOS app lanes. Do not invent a nested SDD policy or change its hashes. + +The guard runs separately from canonical validation and product tasks to avoid recursive verification. It checks exact engine, required flags and native strict active audit, then refuses unfinished active workspaces. It never changes state, signs evidence, or repairs archives. Inherited debt is a blocker rather than a baseline exemption. + +Learning stays in native change context/lesson bundles and applicable existing skills. Stronger risk and provenance controls remain unchanged. + +## From the change's testing.md + +# Testing + +## Planned local tests (not run) + +- `fledge lanes run verify` +- `swift test --package-path apps/sculpt --no-parallel --skip deterministicPortableInterchangeFixtures` +- `fledge run gdscript` +- `fledge lanes run sculpt (macOS only)` + +Run the exact pinned writer: `specsync --version` must report 6.1.1. Run `specsync check --force --strict`, `specsync change audit --strict`, then scoped `specsync change check adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md --strict` only after definition approval and implementation. The operations no-spec check alone is not product testing. Preserve current coverage thresholds. Run the repository Trust gate where configured and qualified; report missing prerequisites or provenance failures without weakening them. + +## Lifecycle regression controls + +In disposable fixture repositories, compare an unchanged-policy clean finalized case against uncovered source/test/governance changes, wrong 6.1.0 engine, disabled flags and active/unfinalized workspaces. Each negative control must fail for the intended reason. Verify existing checks still execute and an archive-only follow-up can pass without creating an approval/review record. No human identity is invented for fixtures; controls needing authentic human acceptance remain manual. + +## Baseline versus candidate + +Baseline command outputs and exit codes live outside this repository in the rollout evidence directory at exact base c19963be38ec9843b738c1dc335c53809bb99207. They are not implementation validation. Re-run baselines after any base update. New failures belong to this candidate; inherited failures remain owner debt. No product tests have run in this preparation. + +## Where these lessons go + +This change declared no affected specs, so there is no module context to fold into. diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/plan.md b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/plan.md similarity index 100% rename from .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/plan.md rename to .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/plan.md diff --git a/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/review-attempts.json b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/review-attempts.json new file mode 100644 index 00000000..9d2e2ad5 --- /dev/null +++ b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/review-attempts.json @@ -0,0 +1,21 @@ +{ + "schema_version": 1, + "reviews": [ + { + "schema_version": 2, + "change_id": "adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md", + "reviewer": "0xLeif", + "provenance": { + "schema_version": 1, + "provider": "github_actions_check", + "required_check": "SpecSync scoped review" + }, + "verdict": "pass", + "implementation_commit": "aa35d5cff5df3eeac55f69dba538026e6c9da2a6", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "timestamp": 1792335709 + } + ] +} diff --git a/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/review.json b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/review.json new file mode 100644 index 00000000..172d96c3 --- /dev/null +++ b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/review.json @@ -0,0 +1,16 @@ +{ + "schema_version": 2, + "change_id": "adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md", + "reviewer": "0xLeif", + "provenance": { + "schema_version": 1, + "provider": "github_actions_check", + "required_check": "SpecSync scoped review" + }, + "verdict": "pass", + "implementation_commit": "aa35d5cff5df3eeac55f69dba538026e6c9da2a6", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "timestamp": 1792335709 +} diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json similarity index 97% rename from .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json rename to .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json index 15932b16..62ff1566 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json +++ b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/state.json @@ -7,11 +7,11 @@ "title": "Adopt verified SpecSync 6.1.1 approval review learning and archive lifecycle for 3md", "description": "Adopt verified SpecSync 6.1.1 approval review learning and archive lifecycle for 3md", "kind": "operations", - "state": "verifying", + "state": "archived", "canonical_applied": true, "base_commit": "c19963be38ec9843b738c1dc335c53809bb99207", "created_at": 1792331985, - "updated_at": 1792333779, + "updated_at": 1792335727, "affected_specs": [], "affected_paths": [ ".github/workflows/trust.yml", diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/tasks.md b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/tasks.md similarity index 100% rename from .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/tasks.md rename to .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/tasks.md diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/testing.md b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/testing.md similarity index 100% rename from .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/testing.md rename to .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/testing.md diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json similarity index 52% rename from .specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json rename to .specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json index ee3f3d1b..2ba4d3f9 100644 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json +++ b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification-attempts.json @@ -128,6 +128,118 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792333778, + "commit": "aa35d5cff5df3eeac55f69dba538026e6c9da2a6", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "acceptance_input_digest": "a1bbb3e74d51f87df3cd64c3babc354e051f00d66cf3b96d3ec50bb16103a3a0", + "acceptance_manifest": { + "schema_version": 1, + "entries": [ + { + "path": ".claude/skills/spec-sync/SKILL.md", + "kind": "file", + "mode": 33188, + "payload_digest": "66a97759c8da2c056c2beb26594d265583bd81765b6f07d0ba4c237841032f95", + "entry_digest": "91ab160a5d83c5bed48fe771877350681d391d4d54b7e8adb8936464f0362420", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": ".codex/skills/spec-sync/SKILL.md", + "kind": "file", + "mode": 33188, + "payload_digest": "66a97759c8da2c056c2beb26594d265583bd81765b6f07d0ba4c237841032f95", + "entry_digest": "41b37b48b47b62fd2d66d355699e3f5a9caa00cc746e75f2ef8d1998ee8fd6a0", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": ".cursor/skills/spec-sync/SKILL.md", + "kind": "file", + "mode": 33188, + "payload_digest": "66a97759c8da2c056c2beb26594d265583bd81765b6f07d0ba4c237841032f95", + "entry_digest": "59fdbdcd08d493598b9eefb730aa7ea7434260edd1d072d55dd7ee6f4fbd1e32", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": ".gemini/skills/spec-sync/SKILL.md", + "kind": "file", + "mode": 33188, + "payload_digest": "66a97759c8da2c056c2beb26594d265583bd81765b6f07d0ba4c237841032f95", + "entry_digest": "6337d445e66aaaec5694fc794237d8e94616c721326e1e5ca9875811643178f4", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": ".github/workflows/trust.yml", + "kind": "file", + "mode": 33188, + "payload_digest": "c5c25748ca08106cca8c48c91645ad5e6e157321595819ecde537e8ca75acb25", + "entry_digest": "13431b6496ff1df4d55cc505634792a56b4dcc982df77679525f444193d2f3f3", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": ".specsync/sdd.json", + "kind": "file", + "mode": 33188, + "payload_digest": "206e1970201061e0369048d2d21c5df92701599e0d447feed7aeb7565a7cddfd", + "entry_digest": "6059c927ed6e85afc15d36e9063311e48a33aeca320e2c3843e90694e4cab465", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": "AGENTS.md", + "kind": "file", + "mode": 33188, + "payload_digest": "5bb0b879f9f4c752bd03756414b46e54a7f96632fdfa8f25ca976e6daf10edc0", + "entry_digest": "6b2b1e367cefa6997127b42060dbc5a3eee822523860c9834eb2e980bcde5f9a", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": "scripts/check-specsync-lifecycle.sh", + "kind": "file", + "mode": 33261, + "payload_digest": "3acbc9319778c72cab469e18781a36f90ab57d205c8ee84daa7b3b33cf922837", + "entry_digest": "4159e847b5ed9dfbb71a0b7e6afb3b73592282a193d7108a5f337e36d15ff1d7", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": "scripts/test-specsync-lifecycle.sh", + "kind": "file", + "mode": 33261, + "payload_digest": "dae06c6dbeb43cb28f5e440cd27707383cc9b978c1b551fcb2ba491a2afc28f7", + "entry_digest": "802c3c8b07753c81230d0234c94c41d92b89a3c5b516abf723d0c32f93194311", + "owners": [ + "@exact:delivery" + ] + } + ] + }, + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json new file mode 100644 index 00000000..f1fc4c72 --- /dev/null +++ b/.specsync/archive/changes/2026-10-18-adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json @@ -0,0 +1,112 @@ +{ + "timestamp": 1792333778, + "commit": "aa35d5cff5df3eeac55f69dba538026e6c9da2a6", + "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", + "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "acceptance_input_digest": "a1bbb3e74d51f87df3cd64c3babc354e051f00d66cf3b96d3ec50bb16103a3a0", + "acceptance_manifest": { + "schema_version": 1, + "entries": [ + { + "path": ".claude/skills/spec-sync/SKILL.md", + "kind": "file", + "mode": 33188, + "payload_digest": "66a97759c8da2c056c2beb26594d265583bd81765b6f07d0ba4c237841032f95", + "entry_digest": "91ab160a5d83c5bed48fe771877350681d391d4d54b7e8adb8936464f0362420", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": ".codex/skills/spec-sync/SKILL.md", + "kind": "file", + "mode": 33188, + "payload_digest": "66a97759c8da2c056c2beb26594d265583bd81765b6f07d0ba4c237841032f95", + "entry_digest": "41b37b48b47b62fd2d66d355699e3f5a9caa00cc746e75f2ef8d1998ee8fd6a0", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": ".cursor/skills/spec-sync/SKILL.md", + "kind": "file", + "mode": 33188, + "payload_digest": "66a97759c8da2c056c2beb26594d265583bd81765b6f07d0ba4c237841032f95", + "entry_digest": "59fdbdcd08d493598b9eefb730aa7ea7434260edd1d072d55dd7ee6f4fbd1e32", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": ".gemini/skills/spec-sync/SKILL.md", + "kind": "file", + "mode": 33188, + "payload_digest": "66a97759c8da2c056c2beb26594d265583bd81765b6f07d0ba4c237841032f95", + "entry_digest": "6337d445e66aaaec5694fc794237d8e94616c721326e1e5ca9875811643178f4", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": ".github/workflows/trust.yml", + "kind": "file", + "mode": 33188, + "payload_digest": "c5c25748ca08106cca8c48c91645ad5e6e157321595819ecde537e8ca75acb25", + "entry_digest": "13431b6496ff1df4d55cc505634792a56b4dcc982df77679525f444193d2f3f3", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": ".specsync/sdd.json", + "kind": "file", + "mode": 33188, + "payload_digest": "206e1970201061e0369048d2d21c5df92701599e0d447feed7aeb7565a7cddfd", + "entry_digest": "6059c927ed6e85afc15d36e9063311e48a33aeca320e2c3843e90694e4cab465", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": "AGENTS.md", + "kind": "file", + "mode": 33188, + "payload_digest": "5bb0b879f9f4c752bd03756414b46e54a7f96632fdfa8f25ca976e6daf10edc0", + "entry_digest": "6b2b1e367cefa6997127b42060dbc5a3eee822523860c9834eb2e980bcde5f9a", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": "scripts/check-specsync-lifecycle.sh", + "kind": "file", + "mode": 33261, + "payload_digest": "3acbc9319778c72cab469e18781a36f90ab57d205c8ee84daa7b3b33cf922837", + "entry_digest": "4159e847b5ed9dfbb71a0b7e6afb3b73592282a193d7108a5f337e36d15ff1d7", + "owners": [ + "@exact:delivery" + ] + }, + { + "path": "scripts/test-specsync-lifecycle.sh", + "kind": "file", + "mode": 33261, + "payload_digest": "dae06c6dbeb43cb28f5e440cd27707383cc9b978c1b551fcb2ba491a2afc28f7", + "entry_digest": "802c3c8b07753c81230d0234c94c41d92b89a3c5b516abf723d0c32f93194311", + "owners": [ + "@exact:delivery" + ] + } + ] + }, + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] +} diff --git a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json b/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json deleted file mode 100644 index c722dfd2..00000000 --- a/.specsync/changes/adopt-verified-specsync-6-1-1-approval-review-learning-and-archive-lifecycle-for-3md/verification.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "timestamp": 1792333778, - "commit": "827abb0c6a1209fe8a2dc30649c6a8e611d08dd1", - "contract_digest": "4b677788851f857f7d93e23e3714c3cf931ecd0466d9572fa311e130946ad877", - "execution_digest": "a38f609153cb422e57d5d60a455f7e836d8116bbce3ed1506ceaaa635c661665", - "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", - "passed": true, - "commands": [ - { - "command": "specsync check (no spec in scope)", - "success": true, - "exit_code": 0 - } - ], - "requirement_ids": [] -} From a195271afbd752fa3455baff360554dd143000d7 Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 09:34:49 -0600 Subject: [PATCH 08/19] chore(lifecycle): materialize document-viewer-examples-and-supported-file-folder-and-github-opening-workflows --- .../plan.md | 16 +++++++++++++++ .../plan.md | 20 +++++++++++++++++++ .../state.json | 3 ++- .../state.json | 2 +- .../verification-attempts.json | 16 +++++++++++++++ .../verification.json | 6 +++--- .../plan.md | 20 +++++++++++++++++++ .../state.json | 3 ++- .../plan.md | 20 +++++++++++++++++++ .../plan.md | 20 +++++++++++++++++++ 10 files changed, 120 insertions(+), 6 deletions(-) diff --git a/.specsync/changes/add-a-structured-binary-document-payload-kind-2-to-threemd-2-1-in-swift-typescript-and-rust-with-fast-checksums-cli/plan.md b/.specsync/changes/add-a-structured-binary-document-payload-kind-2-to-threemd-2-1-in-swift-typescript-and-rust-with-fast-checksums-cli/plan.md index a7cba63e..45bf606c 100644 --- a/.specsync/changes/add-a-structured-binary-document-payload-kind-2-to-threemd-2-1-in-swift-typescript-and-rust-with-fast-checksums-cli/plan.md +++ b/.specsync/changes/add-a-structured-binary-document-payload-kind-2-to-threemd-2-1-in-swift-typescript-and-rust-with-fast-checksums-cli/plan.md @@ -419,3 +419,19 @@ Leif's veto: uncompressed container must fit `Emax`. 7. **Integration.** WP3 to WP5 land together with WP6 in one integration merge. 8. **CLI tests.** They stay in `Tests/ThreeMDTests`; no test target is added, so `Package.swift` is not touched. + +## Approach + +Execute the existing WP0–WP12 plan above for ThreeMD 2.1.0 (SPEC 1.2) across Swift, TypeScript and Rust, preserving the shared fixtures and nine-pair interchange integration point. + +## Out of scope + +No individual work package merges, tags or publishes on its own. Existing ground rules and declared directory ownership remain binding; this heading normalization adds no delivery scope or approval. + +## Steps + +Follow the existing Order graph and WP0–WP12 sections above, including integration verification before release readiness. Their detailed work and outstanding evidence remain unchanged. + +## Constraints consulted + +This normalization uses this plan's Ground rules, Owners and directory ownership, Order and Risks sections. Keep the original pinned-tool historical requirements and explicit prohibition on weakening lifecycle, contract, risk or provenance gates; no claim is made that deferred work is complete. diff --git a/.specsync/changes/add-gdscript-as-a-fourth-supported-threemd-language-a-godot-4-addon-that-parses-serializes-stores-composes-and-edits/plan.md b/.specsync/changes/add-gdscript-as-a-fourth-supported-threemd-language-a-godot-4-addon-that-parses-serializes-stores-composes-and-edits/plan.md index 3038a3db..7a06442f 100644 --- a/.specsync/changes/add-gdscript-as-a-fourth-supported-threemd-language-a-godot-4-addon-that-parses-serializes-stores-composes-and-edits/plan.md +++ b/.specsync/changes/add-gdscript-as-a-fourth-supported-threemd-language-a-godot-4-addon-that-parses-serializes-stores-composes-and-edits/plan.md @@ -14,3 +14,23 @@ artifact: plan 7. Trust verify. No publish, tag, or merge in this change. The grammar, envelope, and profile stay as they are. Sculpt is out of scope. `element/dist` is not rebuilt. + +## Approach + +Implement the existing numeric/NFC, text, storage, composition/editing, helper and interchange stages in the numbered plan, preserving parity with the other three languages. + +## Out of scope + +The grammar, envelope and composition profile remain unchanged. Sculpt and element/dist rebuilds are outside this change; no publication, tag or merge is authorized by this plan. + +## Steps + +Follow the seven existing numbered steps above; retain the shared conformance checks and 16 writer/reader-pair target. + +## Risks + +Existing context records differences in Godot numeric conversion, NFC and integer division. LZFSE is explicitly unsupported; file access belongs only to the separate game helper. + +## Constraints consulted + +This format normalization uses this record's existing plan.md and context.md and the constraints answer sourced from those artifacts. It adds no human approval, completed-test claim or historical acceptance. diff --git a/.specsync/changes/add-gdscript-as-a-fourth-supported-threemd-language-a-godot-4-addon-that-parses-serializes-stores-composes-and-edits/state.json b/.specsync/changes/add-gdscript-as-a-fourth-supported-threemd-language-a-godot-4-addon-that-parses-serializes-stores-composes-and-edits/state.json index ca55c37d..5e0ff267 100644 --- a/.specsync/changes/add-gdscript-as-a-fourth-supported-threemd-language-a-godot-4-addon-that-parses-serializes-stores-composes-and-edits/state.json +++ b/.specsync/changes/add-gdscript-as-a-fourth-supported-threemd-language-a-godot-4-addon-that-parses-serializes-stores-composes-and-edits/state.json @@ -10,7 +10,7 @@ "state": "draft", "base_commit": "773d927edb1e80d0561c4d8a1d155127c7e4d156", "created_at": 1791472582, - "updated_at": 1791472649, + "updated_at": 1792337634, "affected_specs": [ "ThreeMD" ], @@ -39,6 +39,7 @@ "dependencies": [], "answers": { "architecture_risk": "yes", + "constraints": "Existing plan/context constraints: preserve text grammar, binary envelope and composition profile; Godot 4.7, explicit unsupported LZFSE, no library file/network IO, separate game helper; interchange protocol 3md-interchange-1 with 16 pairs. Sculpt and element/dist rebuilds are out of scope. Preserve trust policy; no publish, tag, merge or invented definition approval. Recorded from the existing artifacts during authorized manual repair, not a new human decision.", "public_contract": "yes" } } diff --git a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json index f5780033..d97c0294 100644 --- a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json +++ b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "e1beb0954c62328c56d451d7c12087cf732fb337", "created_at": 1791659613, - "updated_at": 1791660493, + "updated_at": 1792337689, "affected_specs": [ "ThreeMDViewer", "ThreeMD" diff --git a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json index 77a3ebc6..b9d61bb3 100644 --- a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json +++ b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json @@ -32,6 +32,22 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792337688, + "commit": "ca5e27054aa7007b429bd7926b009e9024289ce7", + "contract_digest": "15696a49a060f43344e43fcc830ce7413d265cda61d9031e33750ef073f6d590", + "execution_digest": "ab68f592a2d69ad1942dd3acb8ad6cf063006bcdcc5900342d30ce7ce10c2c4f", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "passed": true, + "commands": [ + { + "command": "specsync check --spec ThreeMD --spec ThreeMDViewer --strict", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json index b769ac48..891b3e24 100644 --- a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json +++ b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json @@ -1,9 +1,9 @@ { - "timestamp": 1791660489, - "commit": "d6cd08dd6a48c1029757b3701502f71f435d16ff", + "timestamp": 1792337688, + "commit": "ca5e27054aa7007b429bd7926b009e9024289ce7", "contract_digest": "15696a49a060f43344e43fcc830ce7413d265cda61d9031e33750ef073f6d590", "execution_digest": "ab68f592a2d69ad1942dd3acb8ad6cf063006bcdcc5900342d30ce7ce10c2c4f", - "workspace_digest": "f3c38cdceac07b6d4d38fd1bf4cf269931e5da1e16aac737e77d28fb378c2e21", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", "passed": true, "commands": [ { diff --git a/.specsync/changes/remove-the-absolute-storage-size-ceilings-so-a-1-gb-5-gb-or-any-document-the-process-can-hold-is-parsed-and-saved-in/plan.md b/.specsync/changes/remove-the-absolute-storage-size-ceilings-so-a-1-gb-5-gb-or-any-document-the-process-can-hold-is-parsed-and-saved-in/plan.md index ffee2797..b3dbd4b1 100644 --- a/.specsync/changes/remove-the-absolute-storage-size-ceilings-so-a-1-gb-5-gb-or-any-document-the-process-can-hold-is-parsed-and-saved-in/plan.md +++ b/.specsync/changes/remove-the-absolute-storage-size-ceilings-so-a-1-gb-5-gb-or-any-document-the-process-can-hold-is-parsed-and-saved-in/plan.md @@ -13,3 +13,23 @@ artifact: plan 6. Update SPEC.md, the module spec, the README, the migration note, the linked-file contract, and the test-plan notes. Remove the README chart that says decoding stops at 64 MiB. 7. Prove a real 1 GB text and kind-2 round trip locally. Do not commit that allocation and do not add it to CI. 8. Run the focused Swift, Bun, and Rust tests, then `fledge trust verify`. Definition approval stays with the user. Do not tag `v2.1.0`. + +## Approach + +Use host-supported storage limits and wider length/count integers while preserving explicit caller lower limits and existing small-file encodings. + +## Out of scope + +Composition profile ceilings and edit budgets remain unchanged. Coordinates retain four-byte integers. This repair does not authorize a tag, merge or publication. + +## Steps + +Follow the eight existing numbered steps above. Keep the real 1 GB round-trip check local and out of CI, and record its actual evidence separately. + +## Risks + +The existing context records host-integer limits near 2 GiB on 32-bit processes, JavaScript safe-integer bounds and possible memory exhaustion. Do not run a large allocation without sufficient host memory. + +## Constraints consulted + +This format normalization uses this record's existing plan.md and context.md and the constraints answer sourced from those artifacts. It adds no human approval, completed-test claim or historical acceptance. diff --git a/.specsync/changes/remove-the-absolute-storage-size-ceilings-so-a-1-gb-5-gb-or-any-document-the-process-can-hold-is-parsed-and-saved-in/state.json b/.specsync/changes/remove-the-absolute-storage-size-ceilings-so-a-1-gb-5-gb-or-any-document-the-process-can-hold-is-parsed-and-saved-in/state.json index bb67ec1b..c097a695 100644 --- a/.specsync/changes/remove-the-absolute-storage-size-ceilings-so-a-1-gb-5-gb-or-any-document-the-process-can-hold-is-parsed-and-saved-in/state.json +++ b/.specsync/changes/remove-the-absolute-storage-size-ceilings-so-a-1-gb-5-gb-or-any-document-the-process-can-hold-is-parsed-and-saved-in/state.json @@ -10,7 +10,7 @@ "state": "draft", "base_commit": "d5f0730696b5da6da8f4e6181b1c4f24485cfcf4", "created_at": 1791388600, - "updated_at": 1791388625, + "updated_at": 1792337634, "affected_specs": [ "ThreeMD" ], @@ -50,6 +50,7 @@ "dependencies": [], "answers": { "architecture_risk": "yes", + "constraints": "Existing plan/context constraints: retain optional caller lower positive limits and reject non-positive limits; retain four-byte coordinate integers and minimal small kind-2 encoding; composition profile ceilings and edit budgets remain. Respect host integer and JavaScript safe-integer bounds. Real 1 GB round-trip evidence is local only, never a CI allocation. No tag, merge, publication or invented definition approval. Recorded from existing artifacts during authorized manual repair.", "public_contract": "yes" } } diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/plan.md b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/plan.md index 753c940e..f83962ad 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/plan.md +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/plan.md @@ -13,3 +13,23 @@ artifact: plan 5. Repair the startup failure/event gap and partial-resource initialization under the existing loss-suspension contract; verify actual Safari and import the tested follow-up in the site. 6. Reproduce the main Linux Slice gesture failures, synchronize helpers with deferred drawing and the virtual grid, verify repeated and full Linux/macOS suites, and publish a feature CI repair without another site import. + +## Approach + +Confine repair to browser drawables and scheduling: defer observer drawing, bound the Slice bitmap to the viewport, and latch context loss until restoration. + +## Out of scope + +Native camera mathematics, editing semantics, parser/storage and trust policies remain unchanged, as stated in context.md. + +## Steps + +Follow the six existing steps above. Retain exact edit/Undo assertions and runtime bytes while synchronizing gesture-test readiness with deferred drawing and the virtual grid. + +## Risks + +As recorded in context.md, null/already-lost contexts before event delivery and resource creation without null guards can break startup. Stale or empty rendered metadata can misdirect synthetic gestures; testing.md records the readiness checks and evidence limits. + +## Constraints consulted + +This normalization uses the existing plan.md, context.md and testing.md. It preserves the existing loss-suspension/restoration contract and adds no camera, loader, format or trust-policy scope, test result or review claim. diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/plan.md b/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/plan.md index d4a3ddcd..d04b137e 100644 --- a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/plan.md +++ b/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/plan.md @@ -11,3 +11,23 @@ artifact: plan 4. Add `apps/sculpt/pathmap/SculptSources.spec.md` so Atlas at the repository root can see `apps/sculpt/Sources`. The Rook specs stay the behavioral contract and keep paths relative to `apps/sculpt`. 5. Update the public docs and regenerate `docs.3md` and `web/docs.3md`. Widen the pages workflow so a coverage-input change republishes the badge. 6. The corrected definition is recorded as `user:0xLeif` on 2026-10-08. The root canonical spec is ThreeMD only. The Linux shim stays on the app spec as `REQ-RookSculpture-046`. Closing approval is still open. Do not self-approve it. + +## Approach + +Keep root SpecSync on the format libraries and retain Sculpt's Rook behavioral contracts; correct Atlas root-relative coverage and public documentation according to the existing numbered plan. + +## Out of scope + +Do not treat compact .3mdb as an upstream ThreeMD standard, rewrite historical adoption receipts, or edit the separate in-progress Godot work, as context.md requires. + +## Steps + +Follow the six existing steps above, preserving the ThreeMD-only root canonical scope and the app shim's REQ-RookSculpture-046 contract. Closing approval remains open. + +## Risks + +Atlas matches paths from the repository root while Rook specs use apps/sculpt-relative paths. Root-anchored exclusions can accidentally count nested tests, docs, manifests and interchange harnesses; context.md records that mismatch. + +## Constraints consulted + +This normalization uses the existing plan.md and context.md, including the recorded hi/docs.md and hi/coverage.md intent references and the separate apps/sculpt/hi/ scope. It adds no approval or completion claim. From 03bddee2198a9ed95db69ba8605eee3f180184bd Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 09:34:51 -0600 Subject: [PATCH 09/19] chore(lifecycle): record document-viewer-examples-and-supported-file-folder-and-github-opening-workflows verification --- .../state.json | 2 +- .../verification-attempts.json | 16 ++++++++++++++++ .../verification.json | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json index d97c0294..6eb8383f 100644 --- a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json +++ b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "e1beb0954c62328c56d451d7c12087cf732fb337", "created_at": 1791659613, - "updated_at": 1792337689, + "updated_at": 1792337691, "affected_specs": [ "ThreeMDViewer", "ThreeMD" diff --git a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json index b9d61bb3..f99cbf75 100644 --- a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json +++ b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json @@ -48,6 +48,22 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792337690, + "commit": "a195271afbd752fa3455baff360554dd143000d7", + "contract_digest": "15696a49a060f43344e43fcc830ce7413d265cda61d9031e33750ef073f6d590", + "execution_digest": "ab68f592a2d69ad1942dd3acb8ad6cf063006bcdcc5900342d30ce7ce10c2c4f", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "passed": true, + "commands": [ + { + "command": "specsync check --spec ThreeMD --spec ThreeMDViewer --strict", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json index 891b3e24..2bfd6c63 100644 --- a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json +++ b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json @@ -1,6 +1,6 @@ { - "timestamp": 1792337688, - "commit": "ca5e27054aa7007b429bd7926b009e9024289ce7", + "timestamp": 1792337690, + "commit": "a195271afbd752fa3455baff360554dd143000d7", "contract_digest": "15696a49a060f43344e43fcc830ce7413d265cda61d9031e33750ef073f6d590", "execution_digest": "ab68f592a2d69ad1942dd3acb8ad6cf063006bcdcc5900342d30ce7ce10c2c4f", "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", From 744b58fb17ec1b89df88f2c8f43ffe16cd17e3e1 Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 09:34:55 -0600 Subject: [PATCH 10/19] chore(lifecycle): materialize stabilize-viewer-canvas-resizing-and-webgl-context-recovery --- .../state.json | 2 +- .../verification-attempts.json | 18 ++++++++++++++++++ .../verification.json | 8 ++++---- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json index 4d285043..8e9af1b8 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "fc4944c134a8f351f3073bf4febcdebb87df2f81", "created_at": 1791664278, - "updated_at": 1791674266, + "updated_at": 1792337695, "affected_specs": [ "ThreeMDViewer" ], diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json index fd3ba315..412d21b0 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json @@ -144,6 +144,24 @@ "requirement_ids": [ "REQ-ThreeMDViewer-004" ] + }, + { + "timestamp": 1792337694, + "commit": "03bddee2198a9ed95db69ba8605eee3f180184bd", + "contract_digest": "5a8d804bd8dfc53eff71bfb3730f3f1d2d69f478fa86df116d24bb2ba58727d4", + "execution_digest": "e5e872baf0ee8b5c31792cd0828ed0e9c33b2b5618b8133b83528676ffdf74b3", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "passed": true, + "commands": [ + { + "command": "specsync check --spec ThreeMDViewer --strict", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [ + "REQ-ThreeMDViewer-004" + ] } ] } diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json index 85ae46a8..b0b48b43 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json @@ -1,9 +1,9 @@ { - "timestamp": 1791674262, - "commit": "a8d44c98cbfb37b698dcfedd79f8e7ce4a8f1bbb", + "timestamp": 1792337694, + "commit": "03bddee2198a9ed95db69ba8605eee3f180184bd", "contract_digest": "5a8d804bd8dfc53eff71bfb3730f3f1d2d69f478fa86df116d24bb2ba58727d4", - "execution_digest": "a9d0e55787398e55789e1c53fd78961550829b38e5a77d178af3b25bc23b5b81", - "workspace_digest": "06c7afec6136b3c7293a454a7f565fc12ffb22f5edf7a57481d3b1518ce3806d", + "execution_digest": "e5e872baf0ee8b5c31792cd0828ed0e9c33b2b5618b8133b83528676ffdf74b3", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", "passed": true, "commands": [ { From 48ff62f8e44f4b6cced9e35c984085764659c282 Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 09:35:00 -0600 Subject: [PATCH 11/19] chore(lifecycle): record stabilize-viewer-canvas-resizing-and-webgl-context-recovery verification --- .../state.json | 2 +- .../verification-attempts.json | 18 ++++++++++++++++++ .../verification.json | 4 ++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json index 8e9af1b8..758c377a 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "fc4944c134a8f351f3073bf4febcdebb87df2f81", "created_at": 1791664278, - "updated_at": 1792337695, + "updated_at": 1792337700, "affected_specs": [ "ThreeMDViewer" ], diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json index 412d21b0..4f2d3e06 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json @@ -162,6 +162,24 @@ "requirement_ids": [ "REQ-ThreeMDViewer-004" ] + }, + { + "timestamp": 1792337699, + "commit": "744b58fb17ec1b89df88f2c8f43ffe16cd17e3e1", + "contract_digest": "5a8d804bd8dfc53eff71bfb3730f3f1d2d69f478fa86df116d24bb2ba58727d4", + "execution_digest": "e5e872baf0ee8b5c31792cd0828ed0e9c33b2b5618b8133b83528676ffdf74b3", + "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "passed": true, + "commands": [ + { + "command": "specsync check --spec ThreeMDViewer --strict", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [ + "REQ-ThreeMDViewer-004" + ] } ] } diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json index b0b48b43..fc38b62a 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json @@ -1,6 +1,6 @@ { - "timestamp": 1792337694, - "commit": "03bddee2198a9ed95db69ba8605eee3f180184bd", + "timestamp": 1792337699, + "commit": "744b58fb17ec1b89df88f2c8f43ffe16cd17e3e1", "contract_digest": "5a8d804bd8dfc53eff71bfb3730f3f1d2d69f478fa86df116d24bb2ba58727d4", "execution_digest": "e5e872baf0ee8b5c31792cd0828ed0e9c33b2b5618b8133b83528676ffdf74b3", "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", From 27bd3b1b11617dae61864177584c5a1f1e390c24 Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 10:12:27 -0600 Subject: [PATCH 12/19] chore(lifecycle): materialize retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot --- .../approvals.json | 37 ++++++++++++++++++ .../change.md | 24 ++++++++++++ .../context.md | 12 ++++++ .../design.md | 8 ++++ .../plan.md | 21 ++++++++++ .../research.md | 8 ++++ .../state.json | 39 +++++++++++++++++++ .../tasks.md | 17 ++++++++ .../testing.md | 8 ++++ .../verification-attempts.json | 21 ++++++++++ .../verification.json | 16 ++++++++ .../2026-10-18-superseded-docs/README.md | 5 +++ .../2026-10-18-superseded-docs/manifest.json | 23 +++++++++++ .../approvals.json | 0 .../change.md | 0 .../context.md | 0 .../deltas/ThreeMD.md | 0 .../docs.md | 0 .../plan.md | 0 .../requirements.md | 0 .../state.json | 0 .../tasks.md | 0 .../testing.md | 0 .../verification-attempts.json | 0 .../verification.json | 0 25 files changed, 239 insertions(+) create mode 100644 .specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/approvals.json create mode 100644 .specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/change.md create mode 100644 .specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/context.md create mode 100644 .specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/design.md create mode 100644 .specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/plan.md create mode 100644 .specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/research.md create mode 100644 .specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json create mode 100644 .specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/tasks.md create mode 100644 .specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/testing.md create mode 100644 .specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json create mode 100644 .specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json create mode 100644 .specsync/retired/2026-10-18-superseded-docs/README.md create mode 100644 .specsync/retired/2026-10-18-superseded-docs/manifest.json rename .specsync/{changes => retired/2026-10-18-superseded-docs}/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/approvals.json (100%) rename .specsync/{changes => retired/2026-10-18-superseded-docs}/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/change.md (100%) rename .specsync/{changes => retired/2026-10-18-superseded-docs}/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/context.md (100%) rename .specsync/{changes => retired/2026-10-18-superseded-docs}/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/deltas/ThreeMD.md (100%) rename .specsync/{changes => retired/2026-10-18-superseded-docs}/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/docs.md (100%) rename .specsync/{changes => retired/2026-10-18-superseded-docs}/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/plan.md (100%) rename .specsync/{changes => retired/2026-10-18-superseded-docs}/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/requirements.md (100%) rename .specsync/{changes => retired/2026-10-18-superseded-docs}/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/state.json (100%) rename .specsync/{changes => retired/2026-10-18-superseded-docs}/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/tasks.md (100%) rename .specsync/{changes => retired/2026-10-18-superseded-docs}/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/testing.md (100%) rename .specsync/{changes => retired/2026-10-18-superseded-docs}/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/verification-attempts.json (100%) rename .specsync/{changes => retired/2026-10-18-superseded-docs}/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/verification.json (100%) diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/approvals.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/approvals.json new file mode 100644 index 00000000..eb9c8f65 --- /dev/null +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/approvals.json @@ -0,0 +1,37 @@ +{ + "approvals": [ + { + "gate": "definition", + "actor": "0xLeif", + "timestamp": 1792339854, + "digest": "78dd8a85470b23c0c75b01814080fceaf927af491b80277e469fb4383d82f067", + "note": null, + "approved_scope": { + "schema_version": 1, + "change_id": "retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot", + "title": "Retire the superseded ThreeMD 2.1 documentation workspace as an unchanged historical snapshot", + "description": "Retire the superseded ThreeMD 2.1 documentation workspace as an unchanged historical snapshot", + "kind": "operations", + "affected_specs": [], + "affected_paths": [ + ".specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/", + ".specsync/retired/" + ], + "no_spec_change": true, + "no_spec_change_rationale": "The 2.1 documentation delta was superseded by canonical 2.2.0 and 2.2.1 release documentation. Preserve its current workspace bytes and verifying state as non-finalized history; do not replay its stale delta or change living specs.", + "acceptance_criteria": [ + "Preserve every file and original verifying state of the superseded 2.1 documentation workspace byte-for-byte under a dated .specsync/retired snapshot with SHA-256 manifest and explicit non-finalized label. Preserve canonical/source tree, prior approvals and archives. Do not reapply obsolete 2.1 requirements. Keep all other unresolved active work and strict policy audit failures visible. Verify manifest, unchanged trees and scope; current retirement operation requires actual definition approval and current human review before native finalization. No merge, release, deployment or engine change." + ], + "dependencies": [], + "supersedes": [], + "answers": { + "architecture_risk": "yes", + "constraints": "Only the public-docs/coverage workspace is selected. Its REQ-ThreeMD-044 was superseded by fe20a18 and 4e718b4 release documentation. Other records, especially incomplete structured-binary scope, remain active. Bot retirement is a reference only, not authority. This new definition has no approval yet; do not move files before actual approval or claim prior exact-head review covers it.", + "public_contract": "no" + } + }, + "approved_delta_digests": {} + } + ], + "reopenings": [] +} diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/change.md b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/change.md new file mode 100644 index 00000000..9d355760 --- /dev/null +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/change.md @@ -0,0 +1,24 @@ +--- +id: retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot +state: implementing +type: operations +base_commit: 48ff62f8e44f4b6cced9e35c984085764659c282 +--- + +# Retire the superseded ThreeMD 2.1 documentation workspace as an unchanged historical snapshot + +## Intent + +Retire the superseded ThreeMD 2.1 documentation workspace as an unchanged historical snapshot + +## Affected Canonical Specs + +- None + +## Acceptance Criteria + +- Preserve every file and original verifying state of the superseded 2.1 documentation workspace byte-for-byte under a dated .specsync/retired snapshot with SHA-256 manifest and explicit non-finalized label. Preserve canonical/source tree, prior approvals and archives. Do not reapply obsolete 2.1 requirements. Keep all other unresolved active work and strict policy audit failures visible. Verify manifest, unchanged trees and scope; current retirement operation requires actual definition approval and current human review before native finalization. No merge, release, deployment or engine change. + +## No-spec Rationale + +The 2.1 documentation delta was superseded by canonical 2.2.0 and 2.2.1 release documentation. Preserve its current workspace bytes and verifying state as non-finalized history; do not replay its stale delta or change living specs. diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/context.md b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/context.md new file mode 100644 index 00000000..2876f19a --- /dev/null +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/context.md @@ -0,0 +1,12 @@ +--- +change: retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot +artifact: context +--- + +# Context + +The public-docs/coverage record remains verifying with a 2.1.0 ADDED delta. Canonical REQ-ThreeMD-044 now states published 2.2.1 facts from commit 4e718b4 (PR84), following fe20a18 (PR80). Replaying the old delta would revert living release facts. Native check rejects it. Retirement preserves original evidence without claiming successful acceptance. The user requested manual archival; this concrete retirement definition remains unapproved. + +## Observed retirement results + +All 12 source files and the original verifying state are preserved exactly under .specsync/retired/2026-10-18-superseded-docs/. The SHA-256 manifest identifies source commit 48ff62f8e44f4b6cced9e35c984085764659c282. All 2256 tracked non-lifecycle files are unchanged. Filesystem negative fixtures reject missing, altered and extra files and an invented archived state. Canonical strict validation and lifecycle regression controls pass. The strict active audit still reports the policy coverage issue; no diagnostic is suppressed. All five other inherited records remain active. Human implementation review and finalization of this retirement operation are pending. diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/design.md b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/design.md new file mode 100644 index 00000000..8e8f06f4 --- /dev/null +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/design.md @@ -0,0 +1,8 @@ +--- +change: retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot +artifact: design +--- + +# Design + +Use .specsync/retired/2026-10-18-superseded-docs/ with the original workspace name and bytes, plus a sibling manifest and explanation explicitly saying verifying historical snapshot, not accepted/finalized. Do not place an unfinalized record in the native verified archive namespace. Exact manifest creation and movement occur only after definition approval. diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/plan.md b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/plan.md new file mode 100644 index 00000000..98ba30bd --- /dev/null +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/plan.md @@ -0,0 +1,21 @@ +--- +change: retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot +artifact: plan +--- + +# Plan + +## Approach +Preserve the one superseded documentation package as raw historical evidence outside the active roster. + +## Out of scope +Do not retire other packages, claim completion, edit source/specs, modify policy, change the engine or merge. + +## Steps +Inventory and hash every current source package file; record original state and manifest. After actual definition approval, move the exact directory to dated .specsync/retired history and verify every byte. Compare canonical/source trees, run scoped verification and strict audit, expose remaining errors, obtain current human review and finalize only this operation when eligible. + +## Risks +Retiring an unresolved requirement could hide work. Limit this operation to the superseded release-documentation delta; keep the incomplete structured-binary and other five packages active. A retired snapshot is not an authenticated completed archive. + +## Constraints consulted +Read root AGENTS, the native spec-sync skill, the old documentation package, current canonical requirements, and pinned Bot retirement artifacts. Bot authority does not transfer. Preserve the trusted-base audit and existing approval ledgers. diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/research.md b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/research.md new file mode 100644 index 00000000..fdc8e7e1 --- /dev/null +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/research.md @@ -0,0 +1,8 @@ +--- +change: retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot +artifact: research +--- + +# Research + +Pinned Bot commit 6652d332 uses .specsync/retired for unchanged snapshots with manifests and original states. It has its own approved operation and repository guidance. In 3md, current canonical REQ-ThreeMD-044 and commits fe20a18/4e718b4 demonstrate the older 2.1 public-docs delta is superseded. This evidence does not establish that all other work is obsolete. diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json new file mode 100644 index 00000000..86c6aa79 --- /dev/null +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json @@ -0,0 +1,39 @@ +{ + "schema_version": 1, + "workflow_version": 2, + "workflow_origin_version": 2, + "id": "retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot", + "slug": "retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot", + "title": "Retire the superseded ThreeMD 2.1 documentation workspace as an unchanged historical snapshot", + "description": "Retire the superseded ThreeMD 2.1 documentation workspace as an unchanged historical snapshot", + "kind": "operations", + "state": "verifying", + "canonical_applied": true, + "base_commit": "48ff62f8e44f4b6cced9e35c984085764659c282", + "created_at": 1792338305, + "updated_at": 1792339947, + "affected_specs": [], + "affected_paths": [ + ".specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/", + ".specsync/retired/" + ], + "no_spec_change": true, + "no_spec_change_rationale": "The 2.1 documentation delta was superseded by canonical 2.2.0 and 2.2.1 release documentation. Preserve its current workspace bytes and verifying state as non-finalized history; do not replay its stale delta or change living specs.", + "acceptance_criteria": [ + "Preserve every file and original verifying state of the superseded 2.1 documentation workspace byte-for-byte under a dated .specsync/retired snapshot with SHA-256 manifest and explicit non-finalized label. Preserve canonical/source tree, prior approvals and archives. Do not reapply obsolete 2.1 requirements. Keep all other unresolved active work and strict policy audit failures visible. Verify manifest, unchanged trees and scope; current retirement operation requires actual definition approval and current human review before native finalization. No merge, release, deployment or engine change." + ], + "selected_artifacts": [ + "context", + "plan", + "testing", + "research", + "design", + "tasks" + ], + "dependencies": [], + "answers": { + "architecture_risk": "yes", + "constraints": "Only the public-docs/coverage workspace is selected. Its REQ-ThreeMD-044 was superseded by fe20a18 and 4e718b4 release documentation. Other records, especially incomplete structured-binary scope, remain active. Bot retirement is a reference only, not authority. This new definition has no approval yet; do not move files before actual approval or claim prior exact-head review covers it.", + "public_contract": "no" + } +} diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/tasks.md b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/tasks.md new file mode 100644 index 00000000..f9a7998b --- /dev/null +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/tasks.md @@ -0,0 +1,17 @@ +--- +change: retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot +artifact: tasks +--- + +# Tasks + +- [x] Record actual approval of the exact definition. +- [x] Inventory and hash the selected package and source/spec tree. +- [x] Preserve the exact raw snapshot and verify missing/altered/extra/state-change negative controls. +- [x] Run canonical validation, lifecycle regression controls and strict audit; report remaining errors honestly. + +Native scoped verification follows this implementation checklist as its own gate. + +## Pending human review and finalization + +Current human implementation review has not occurred. This retirement operation remains active until genuine review and supported finalization; definition approval does not grant acceptance. diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/testing.md b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/testing.md new file mode 100644 index 00000000..9533b041 --- /dev/null +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/testing.md @@ -0,0 +1,8 @@ +--- +change: retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot +artifact: testing +--- + +# Testing + +Require SHA-256 equality for every moved file and identical original state/approval bytes. Compare all tracked source and canonical spec bytes before/after. Assert exactly the selected workspace leaves the active roster and all other packages remain. Run canonical strict check, scoped strict verification and active strict audit. The policy failure must remain visible; retirement is not an audit exemption. Negative controls reject missing, altered or extra snapshot files and any claimed archived/accepted state conversion. No human review or acceptance is supplied by these tests. diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json new file mode 100644 index 00000000..87aa28a5 --- /dev/null +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json @@ -0,0 +1,21 @@ +{ + "schema_version": 1, + "attempts": [ + { + "timestamp": 1792339946, + "commit": "48ff62f8e44f4b6cced9e35c984085764659c282", + "contract_digest": "78dd8a85470b23c0c75b01814080fceaf927af491b80277e469fb4383d82f067", + "execution_digest": "f8632faf9e82fc45b1c732db6fbdddcc6ef440212aca5337e11cc1025ce68131", + "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] + } + ] +} diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json new file mode 100644 index 00000000..8bd3981a --- /dev/null +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json @@ -0,0 +1,16 @@ +{ + "timestamp": 1792339946, + "commit": "48ff62f8e44f4b6cced9e35c984085764659c282", + "contract_digest": "78dd8a85470b23c0c75b01814080fceaf927af491b80277e469fb4383d82f067", + "execution_digest": "f8632faf9e82fc45b1c732db6fbdddcc6ef440212aca5337e11cc1025ce68131", + "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] +} diff --git a/.specsync/retired/2026-10-18-superseded-docs/README.md b/.specsync/retired/2026-10-18-superseded-docs/README.md new file mode 100644 index 00000000..1d7aad04 --- /dev/null +++ b/.specsync/retired/2026-10-18-superseded-docs/README.md @@ -0,0 +1,5 @@ +# Superseded documentation history + +This directory preserves the old ThreeMD 2.1 documentation workspace as an unchanged historical snapshot. Its original state is verifying. It is not an accepted, finalized or authenticated completed archive. Every original file, including approval history, is retained byte-for-byte; manifest.json records the source commit and SHA-256 values. + +Canonical release documentation superseded its 2.1.0 wording with 2.2.0 and 2.2.1 facts in commits fe20a18 and 4e718b4. The obsolete delta must not be reapplied to current specifications. The retirement operation has separate lifecycle records. All other unresolved work remains active. diff --git a/.specsync/retired/2026-10-18-superseded-docs/manifest.json b/.specsync/retired/2026-10-18-superseded-docs/manifest.json new file mode 100644 index 00000000..4792c998 --- /dev/null +++ b/.specsync/retired/2026-10-18-superseded-docs/manifest.json @@ -0,0 +1,23 @@ +{ + "schema_version": 1, + "classification": "retired historical snapshot, not accepted or finalized", + "source_commit": "48ff62f8e44f4b6cced9e35c984085764659c282", + "source_path": ".specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100", + "snapshot_directory": "update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100", + "original_state": "verifying", + "file_count": 12, + "files_sha256": { + "state.json": "39fd4a45197a4fd9a669da2162a26e1d98ed927cfd60e507cca9f6480afad6a3", + "verification-attempts.json": "70e0ab334593273cb638533863594c43c46e89f26a87fc46b8504318b600e39d", + "verification.json": "69fffd5759f32e9be4e9809134efb46c6182b3aa02ca92b418a81d40425eb777", + "tasks.md": "700763447fe42cda6f481d6e787a0baeffdfda6d483e45b5b547bfc0909ef391", + "testing.md": "f37efa695019b83775ac13dc7ee7c8102637d77725bc54225cb33450a98a91ed", + "plan.md": "dbf769b2a03c7a52943ea51c044fd38965f8ccbfa11cda5169023cc9d309b2ec", + "context.md": "730535d0f92e4750c4aae6456672bb67212d74820b7a002d526649bf6f065ade", + "requirements.md": "1d1974a3a41246ef54c03a08d5a5d85c04808e9755452863d23a2c123f3dd535", + "approvals.json": "6d9c110c2a73f752b1fcc7e831e6cfdffaba11bfdff651eabbe650b5eb79ab21", + "change.md": "f98b38d15cba4f2dd784c93b348787889aa6e2301fabbae255bf637e498e5bc6", + "docs.md": "a21196dc9b52024401d32caa907e0824f6af39d6399bd0071f48ff97634af5a1", + "deltas/ThreeMD.md": "d61c5cabbff5d5151bc668496e43f708565c384982576c8316524a5fb125666b" + } +} diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/approvals.json b/.specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/approvals.json similarity index 100% rename from .specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/approvals.json rename to .specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/approvals.json diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/change.md b/.specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/change.md similarity index 100% rename from .specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/change.md rename to .specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/change.md diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/context.md b/.specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/context.md similarity index 100% rename from .specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/context.md rename to .specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/context.md diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/deltas/ThreeMD.md b/.specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/deltas/ThreeMD.md similarity index 100% rename from .specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/deltas/ThreeMD.md rename to .specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/deltas/ThreeMD.md diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/docs.md b/.specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/docs.md similarity index 100% rename from .specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/docs.md rename to .specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/docs.md diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/plan.md b/.specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/plan.md similarity index 100% rename from .specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/plan.md rename to .specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/plan.md diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/requirements.md b/.specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/requirements.md similarity index 100% rename from .specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/requirements.md rename to .specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/requirements.md diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/state.json b/.specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/state.json similarity index 100% rename from .specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/state.json rename to .specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/state.json diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/tasks.md b/.specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/tasks.md similarity index 100% rename from .specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/tasks.md rename to .specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/tasks.md diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/testing.md b/.specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/testing.md similarity index 100% rename from .specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/testing.md rename to .specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/testing.md diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/verification-attempts.json b/.specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/verification-attempts.json similarity index 100% rename from .specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/verification-attempts.json rename to .specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/verification-attempts.json diff --git a/.specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/verification.json b/.specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/verification.json similarity index 100% rename from .specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/verification.json rename to .specsync/retired/2026-10-18-superseded-docs/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/verification.json From 4738ab87756df8b367cbe05d68dbb51c1db9d1bb Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 10:12:29 -0600 Subject: [PATCH 13/19] chore(lifecycle): record retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot verification --- .../state.json | 2 +- .../verification-attempts.json | 16 ++++++++++++++++ .../verification.json | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json index 86c6aa79..74deacc4 100644 --- a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "48ff62f8e44f4b6cced9e35c984085764659c282", "created_at": 1792338305, - "updated_at": 1792339947, + "updated_at": 1792339949, "affected_specs": [], "affected_paths": [ ".specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/", diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json index 87aa28a5..d4f26a7b 100644 --- a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json @@ -16,6 +16,22 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792339948, + "commit": "27bd3b1b11617dae61864177584c5a1f1e390c24", + "contract_digest": "78dd8a85470b23c0c75b01814080fceaf927af491b80277e469fb4383d82f067", + "execution_digest": "f8632faf9e82fc45b1c732db6fbdddcc6ef440212aca5337e11cc1025ce68131", + "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json index 8bd3981a..2351e24a 100644 --- a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json @@ -1,6 +1,6 @@ { - "timestamp": 1792339946, - "commit": "48ff62f8e44f4b6cced9e35c984085764659c282", + "timestamp": 1792339948, + "commit": "27bd3b1b11617dae61864177584c5a1f1e390c24", "contract_digest": "78dd8a85470b23c0c75b01814080fceaf927af491b80277e469fb4383d82f067", "execution_digest": "f8632faf9e82fc45b1c732db6fbdddcc6ef440212aca5337e11cc1025ce68131", "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", From 507f63d6cecce32e34efb59ec9039e67bd2f1ea7 Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 10:13:00 -0600 Subject: [PATCH 14/19] chore(lifecycle): materialize document-viewer-examples-and-supported-file-folder-and-github-opening-workflows --- .../state.json | 2 +- .../verification-attempts.json | 16 ++++++++++++++++ .../verification.json | 6 +++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json index 6eb8383f..06b65568 100644 --- a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json +++ b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "e1beb0954c62328c56d451d7c12087cf732fb337", "created_at": 1791659613, - "updated_at": 1792337691, + "updated_at": 1792339980, "affected_specs": [ "ThreeMDViewer", "ThreeMD" diff --git a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json index f99cbf75..e639ab4a 100644 --- a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json +++ b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json @@ -64,6 +64,22 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792339980, + "commit": "4738ab87756df8b367cbe05d68dbb51c1db9d1bb", + "contract_digest": "15696a49a060f43344e43fcc830ce7413d265cda61d9031e33750ef073f6d590", + "execution_digest": "ab68f592a2d69ad1942dd3acb8ad6cf063006bcdcc5900342d30ce7ce10c2c4f", + "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", + "passed": true, + "commands": [ + { + "command": "specsync check --spec ThreeMD --spec ThreeMDViewer --strict", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json index 2bfd6c63..b44f087e 100644 --- a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json +++ b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json @@ -1,9 +1,9 @@ { - "timestamp": 1792337690, - "commit": "a195271afbd752fa3455baff360554dd143000d7", + "timestamp": 1792339980, + "commit": "4738ab87756df8b367cbe05d68dbb51c1db9d1bb", "contract_digest": "15696a49a060f43344e43fcc830ce7413d265cda61d9031e33750ef073f6d590", "execution_digest": "ab68f592a2d69ad1942dd3acb8ad6cf063006bcdcc5900342d30ce7ce10c2c4f", - "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", "passed": true, "commands": [ { From e782f09a7c1cd0dbd9491953586b6929e1f08e12 Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 10:13:02 -0600 Subject: [PATCH 15/19] chore(lifecycle): record document-viewer-examples-and-supported-file-folder-and-github-opening-workflows verification --- .../state.json | 2 +- .../verification-attempts.json | 16 ++++++++++++++++ .../verification.json | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json index 06b65568..13c1cdd6 100644 --- a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json +++ b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "e1beb0954c62328c56d451d7c12087cf732fb337", "created_at": 1791659613, - "updated_at": 1792339980, + "updated_at": 1792339982, "affected_specs": [ "ThreeMDViewer", "ThreeMD" diff --git a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json index e639ab4a..845bc1e6 100644 --- a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json +++ b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification-attempts.json @@ -80,6 +80,22 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792339982, + "commit": "507f63d6cecce32e34efb59ec9039e67bd2f1ea7", + "contract_digest": "15696a49a060f43344e43fcc830ce7413d265cda61d9031e33750ef073f6d590", + "execution_digest": "ab68f592a2d69ad1942dd3acb8ad6cf063006bcdcc5900342d30ce7ce10c2c4f", + "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", + "passed": true, + "commands": [ + { + "command": "specsync check --spec ThreeMD --spec ThreeMDViewer --strict", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json index b44f087e..dec5658e 100644 --- a/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json +++ b/.specsync/changes/document-viewer-examples-and-supported-file-folder-and-github-opening-workflows/verification.json @@ -1,6 +1,6 @@ { - "timestamp": 1792339980, - "commit": "4738ab87756df8b367cbe05d68dbb51c1db9d1bb", + "timestamp": 1792339982, + "commit": "507f63d6cecce32e34efb59ec9039e67bd2f1ea7", "contract_digest": "15696a49a060f43344e43fcc830ce7413d265cda61d9031e33750ef073f6d590", "execution_digest": "ab68f592a2d69ad1942dd3acb8ad6cf063006bcdcc5900342d30ce7ce10c2c4f", "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", From fb27fb90e882f66be7f83b828513d8b8a2789d1e Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 10:13:06 -0600 Subject: [PATCH 16/19] chore(lifecycle): materialize stabilize-viewer-canvas-resizing-and-webgl-context-recovery --- .../state.json | 2 +- .../verification-attempts.json | 18 ++++++++++++++++++ .../verification.json | 6 +++--- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json index 758c377a..4c2134ed 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "fc4944c134a8f351f3073bf4febcdebb87df2f81", "created_at": 1791664278, - "updated_at": 1792337700, + "updated_at": 1792339986, "affected_specs": [ "ThreeMDViewer" ], diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json index 4f2d3e06..9d7c5083 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json @@ -180,6 +180,24 @@ "requirement_ids": [ "REQ-ThreeMDViewer-004" ] + }, + { + "timestamp": 1792339985, + "commit": "e782f09a7c1cd0dbd9491953586b6929e1f08e12", + "contract_digest": "5a8d804bd8dfc53eff71bfb3730f3f1d2d69f478fa86df116d24bb2ba58727d4", + "execution_digest": "e5e872baf0ee8b5c31792cd0828ed0e9c33b2b5618b8133b83528676ffdf74b3", + "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", + "passed": true, + "commands": [ + { + "command": "specsync check --spec ThreeMDViewer --strict", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [ + "REQ-ThreeMDViewer-004" + ] } ] } diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json index fc38b62a..3c355143 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json @@ -1,9 +1,9 @@ { - "timestamp": 1792337699, - "commit": "744b58fb17ec1b89df88f2c8f43ffe16cd17e3e1", + "timestamp": 1792339985, + "commit": "e782f09a7c1cd0dbd9491953586b6929e1f08e12", "contract_digest": "5a8d804bd8dfc53eff71bfb3730f3f1d2d69f478fa86df116d24bb2ba58727d4", "execution_digest": "e5e872baf0ee8b5c31792cd0828ed0e9c33b2b5618b8133b83528676ffdf74b3", - "workspace_digest": "647da28121b9f545f3246bdecbb1abebb6d92a801f682f57ba85f1f0d7c8ef24", + "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", "passed": true, "commands": [ { From dd1ccf5ab931d4b07e635f35912b5cf924f777fb Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 10:13:09 -0600 Subject: [PATCH 17/19] chore(lifecycle): record stabilize-viewer-canvas-resizing-and-webgl-context-recovery verification --- .../state.json | 2 +- .../verification-attempts.json | 18 ++++++++++++++++++ .../verification.json | 4 ++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json index 4c2134ed..65d5820d 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "fc4944c134a8f351f3073bf4febcdebb87df2f81", "created_at": 1791664278, - "updated_at": 1792339986, + "updated_at": 1792339989, "affected_specs": [ "ThreeMDViewer" ], diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json index 9d7c5083..d59023a6 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification-attempts.json @@ -198,6 +198,24 @@ "requirement_ids": [ "REQ-ThreeMDViewer-004" ] + }, + { + "timestamp": 1792339988, + "commit": "fb27fb90e882f66be7f83b828513d8b8a2789d1e", + "contract_digest": "5a8d804bd8dfc53eff71bfb3730f3f1d2d69f478fa86df116d24bb2ba58727d4", + "execution_digest": "e5e872baf0ee8b5c31792cd0828ed0e9c33b2b5618b8133b83528676ffdf74b3", + "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", + "passed": true, + "commands": [ + { + "command": "specsync check --spec ThreeMDViewer --strict", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [ + "REQ-ThreeMDViewer-004" + ] } ] } diff --git a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json index 3c355143..71a73b3a 100644 --- a/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json +++ b/.specsync/changes/stabilize-viewer-canvas-resizing-and-webgl-context-recovery/verification.json @@ -1,6 +1,6 @@ { - "timestamp": 1792339985, - "commit": "e782f09a7c1cd0dbd9491953586b6929e1f08e12", + "timestamp": 1792339988, + "commit": "fb27fb90e882f66be7f83b828513d8b8a2789d1e", "contract_digest": "5a8d804bd8dfc53eff71bfb3730f3f1d2d69f478fa86df116d24bb2ba58727d4", "execution_digest": "e5e872baf0ee8b5c31792cd0828ed0e9c33b2b5618b8133b83528676ffdf74b3", "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", From 08a799eecd8856b556ea1d043eccc157457e27f7 Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 10:13:11 -0600 Subject: [PATCH 18/19] chore(lifecycle): materialize retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot --- .../context.md | 2 ++ .../state.json | 2 +- .../verification-attempts.json | 16 ++++++++++++++++ .../verification.json | 6 +++--- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/context.md b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/context.md index 2876f19a..547a257c 100644 --- a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/context.md +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/context.md @@ -10,3 +10,5 @@ The public-docs/coverage record remains verifying with a 2.1.0 ADDED delta. Cano ## Observed retirement results All 12 source files and the original verifying state are preserved exactly under .specsync/retired/2026-10-18-superseded-docs/. The SHA-256 manifest identifies source commit 48ff62f8e44f4b6cced9e35c984085764659c282. All 2256 tracked non-lifecycle files are unchanged. Filesystem negative fixtures reject missing, altered and extra files and an invented archived state. Canonical strict validation and lifecycle regression controls pass. The strict active audit still reports the policy coverage issue; no diagnostic is suppressed. All five other inherited records remain active. Human implementation review and finalization of this retirement operation are pending. + +The first post-move audit also marked the two viewer verification records stale because retired files enter the project-input digest. Both viewer records were refreshed successfully with native strict check/commit. This refresh records automated evidence only; human review remains pending. diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json index 74deacc4..b83a6ea7 100644 --- a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "48ff62f8e44f4b6cced9e35c984085764659c282", "created_at": 1792338305, - "updated_at": 1792339949, + "updated_at": 1792339991, "affected_specs": [], "affected_paths": [ ".specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/", diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json index d4f26a7b..2c14eaed 100644 --- a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json @@ -32,6 +32,22 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792339990, + "commit": "dd1ccf5ab931d4b07e635f35912b5cf924f777fb", + "contract_digest": "78dd8a85470b23c0c75b01814080fceaf927af491b80277e469fb4383d82f067", + "execution_digest": "d3592b775f5bed29ce865e94495dbea55b0b0ebd0b57865b44f2dbdc811526e8", + "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json index 2351e24a..2a6d33a1 100644 --- a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json @@ -1,8 +1,8 @@ { - "timestamp": 1792339948, - "commit": "27bd3b1b11617dae61864177584c5a1f1e390c24", + "timestamp": 1792339990, + "commit": "dd1ccf5ab931d4b07e635f35912b5cf924f777fb", "contract_digest": "78dd8a85470b23c0c75b01814080fceaf927af491b80277e469fb4383d82f067", - "execution_digest": "f8632faf9e82fc45b1c732db6fbdddcc6ef440212aca5337e11cc1025ce68131", + "execution_digest": "d3592b775f5bed29ce865e94495dbea55b0b0ebd0b57865b44f2dbdc811526e8", "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", "passed": true, "commands": [ From c831767200fa16ea92454184037f34cc61bcfb70 Mon Sep 17 00:00:00 2001 From: corvid-agent <95454608+corvid-agent@users.noreply.github.com> Date: Sun, 18 Oct 2026 10:13:13 -0600 Subject: [PATCH 19/19] chore(lifecycle): record retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot verification --- .../state.json | 2 +- .../verification-attempts.json | 16 ++++++++++++++++ .../verification.json | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json index b83a6ea7..64def417 100644 --- a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/state.json @@ -11,7 +11,7 @@ "canonical_applied": true, "base_commit": "48ff62f8e44f4b6cced9e35c984085764659c282", "created_at": 1792338305, - "updated_at": 1792339991, + "updated_at": 1792339993, "affected_specs": [], "affected_paths": [ ".specsync/changes/update-the-public-docs-for-the-2-1-monorepo-and-make-repository-spec-coverage-100/", diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json index 2c14eaed..548db6b1 100644 --- a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification-attempts.json @@ -48,6 +48,22 @@ } ], "requirement_ids": [] + }, + { + "timestamp": 1792339992, + "commit": "08a799eecd8856b556ea1d043eccc157457e27f7", + "contract_digest": "78dd8a85470b23c0c75b01814080fceaf927af491b80277e469fb4383d82f067", + "execution_digest": "d3592b775f5bed29ce865e94495dbea55b0b0ebd0b57865b44f2dbdc811526e8", + "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6", + "passed": true, + "commands": [ + { + "command": "specsync check (no spec in scope)", + "success": true, + "exit_code": 0 + } + ], + "requirement_ids": [] } ] } diff --git a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json index 2a6d33a1..cc63ab36 100644 --- a/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json +++ b/.specsync/changes/retire-the-superseded-threemd-2-1-documentation-workspace-as-an-unchanged-historical-snapshot/verification.json @@ -1,6 +1,6 @@ { - "timestamp": 1792339990, - "commit": "dd1ccf5ab931d4b07e635f35912b5cf924f777fb", + "timestamp": 1792339992, + "commit": "08a799eecd8856b556ea1d043eccc157457e27f7", "contract_digest": "78dd8a85470b23c0c75b01814080fceaf927af491b80277e469fb4383d82f067", "execution_digest": "d3592b775f5bed29ce865e94495dbea55b0b0ebd0b57865b44f2dbdc811526e8", "workspace_digest": "19f8e1584958db8fb185453046a406c84fe8af2f79f59aa05fcb8a0d37173bf6",