Implementation Notes: Lean Pull-Request Verification and Evidence-Gated Publication
Implementation Notes
Post-closeout policy amendment
On 2026-08-19, the supported external-fork workflow and fork cache mode were removed. Current behavior supports only same-repository trusted verification. An external-fork pull request skips the trusted job, Stable Aggregate fails, and no Candidate Evidence is retained. Candidate Evidence authority still independently rejects fork provenance.
Fork-lane descriptions in the original task logs and superseded pre-merge matrix below are retained only as historical evidence of the completed IP-373 implementation. External-fork validation is no longer a pending execution gate.
Summary
- Execution started from committed plan
2311f624dbdb8dac456939bb5d5059f1d9b66cfbon recorded branchmain. - Delivery landed through squash-merged PRs #145, #146, and #147; the plan's Branch/Base Intent remained
Not applicable. - Architecture waves A1 through A4 are complete for the available local and hosted scenarios. The retained portfolio, affected Turbo graph, named drift, cache boundary, low-signal cull, minimal Candidate Evidence, exact authority, and protected no-mutation publication path are green.
- The final CLI suite passes 9 files/72 tests; check, typecheck, and the focused OIDC fail-closed test pass. Latest implementation and standards reviews are PASS, and the CI/CD security verdict is
SAFEwith no P1/P2 finding. - The strict TDD cull removed 14 pure-static files plus static portions of mixed files. Pure deletion required no replacement witness; the final review-fix affected graph and fresh CLI suites are green.
- PR #145 run
32256807550passed the trusted graph and Stable Aggregate at 55/55 with 49 cached, and retained Candidate Evidence for treee87222547b4b20adbf75a27c43a950e10048d5f5;32256389904proves superseded-revision cancellation. The macOS witness passed in32254400362. - PRs #146 and #147 repaired fail-closed squash-provenance and empty-history defects exposed by release runs
32257146346and32258817830. Exact non-product ownership proof permitted the one-time lightweight anchor atbb4dcb27cedcd7ee11237de13955cab88c41e289. Protected release32259491112then completed evidence, plan, and Production for anoneentry without npm, baseline, GitHub release, or anchor mutation. - Manual npm OIDC witness
32259801134passed withresult: observedandnpmTokenReceived: true; publication jobs were skipped. Earlier RED32257389157is superseded because its HTTP 201 response was rejected only by an undocumentedexpiresassumption.
Deviations From the Plan
- Task-local hosted validation for T2, T3, T4, T6, and T7 was consolidated into T9. This removes an impossible branch/dependency cycle while retaining one required integrated runtime gate with every named scenario.
- User steering moved residual low-signal CI/release cleanup into W2 as T7A. T6 now depends on it because stale deleted-test references made the repository behavior-contract suite fail before workflow integration.
- T9 repair moved only the npm OIDC manual witness from
external-drift.ymltorelease.yml. npm Trusted Publishing binds one exact workflow per package, so keeping a second exchange workflow made the hosted witness fail even though its token claims and endpoint were otherwise valid. The macOS schedule/manual witness remains inexternal-drift.yml.
Surprises and Decisions
Stable Aggregate Checkis merge-facing status, not publication authority. T6 sends its tree-named Candidate Evidence through the exported authority adapter; immutable authority runs before checkout/setup/install/credentials, the checkout is rebound to the validated tree, and the trusted PR lane has no OIDC.- The old
cache-trust.test.tsimports a runner deleted by T1. T4 owns prerequisite witness maintenance, then must capture the intended trust-matrix RED before adding cache behavior. - T2's runbook required deterministic wiki projection before the outward check could pass; the parent generated that projection immediately.
- T5 deliberately left M4 bounded: its minimal evidence decoder no longer supports the legacy
release.ymlconvergence envelope. T6 replaced the composition path locally, including paginated artifact lookup and invocation-cwd-correct GitHub adapter construction; T9 runtime evidence remains before an integrated publication claim. - The executable packaged-product validator was not pure test deletion. Its real command supplied the RED/GREEN proof before obsolete product-suite replay was removed.
- Historical release trees never receive production credentials. Their only role is credentialless plan construction with lifecycle scripts disabled. The current-tree adapter alone owns provider mutation after exact authority and tree binding.
- Publication refuses to start without the exact remote lightweight
release-authority/v1/<commit>tag. The one-time operational seed must identify a reconciled first-parent commit;RELEASE_PROVIDER_ANCHOR_COMMITalone does not grant authority and must not be advanced past an incomplete release. - Squash merges can change commit provenance while retaining the reviewed tree. Release evidence resolves that merge provenance explicitly; it still fails closed when the tested tree, repository, producer, or retained artifact does not match.
- The one-time anchor seed was allowed only after exact ownership classified
bb4dcb27cedcd7ee11237de13955cab88c41e289as non-product.release-authority/v1/bb4dcb27cedcd7ee11237de13955cab88c41e289remains the sole durable authority tag after the protectednonerun. - Baseline provider HTTP reads deny redirects and require the configured safe origin/HTTPS boundary. Archive validation rejects absolute, parent-traversal, symlink, and hardlink members before extraction. Every npm install/pack/publish boundary uses
--ignore-scripts. - Removed the broken
release:reconcileandrelease:attestlegacy replay entrypoints. The supported release boundary isrelease:publication plan|apply.
Sanity Checks
| Check | Result | Notes |
|---|---|---|
hi check --json | Passed | Scaffold, settings, pack, and managed-file drift were clean before planning. |
| T1 built-process portfolio | Passed | 2 files, 17 tests; every displayed command uses an isolated temporary repository; actual hi/hint executable parity and three Safety Invariants pass. |
| T2/T3 static policy suite | Historical; culled | 12 tests/244 assertions were recorded before strict TDD culled configuration-shape tests; final evidence is Turbo/lint-format plus adapter and hosted-runtime seams. |
| Turbo affected dry-run | Passed | 63 applicable tasks; no configured package-qualified task has a missing command. |
| Deterministic root-policy replay | Passed | Two identical //#check:repo runs restored from local cache as FULL TURBO. |
| T4 executable cache policy | Passed | cache-trust.test.ts: 4 tests; trusted signing-secret whitespace is normalized into GITHUB_ENV, embedded multiline input is refused, and required team/signing authority fails closed. The removed cache interface has no lane selector. |
| T5 Candidate Evidence | Passed | 12 focused decoder/authority tests plus typecheck; exact seven-field receipt and newest-valid exact-tree authority pass. |
| T6 authority composition | Passed | PR #145 emitted exact-tree evidence; fail-closed release REDs exposed and drove squash-provenance and empty-history repairs; protected release 32259491112 accepted the repaired exact authority path. |
| T7A residual cull | Passed | Packaged-product validator exited 0; historical full behavior-contract count was 140 tests/963 assertions; later strict-TDD cull removed obsolete configuration-shape witnesses. |
| T7 publication boundary | Passed | Full CLI: 9 files/72 tests; check and typecheck pass. Protected release 32259491112 completed a none plan without provider mutation; OIDC witness 32259801134 received a token without publishing. Real product convergence was not run because no reviewed release was ready. |
| T8 documentation ingestion | Passed | Authoritative runbook, plan, notes, generated wiki projection, and wiki log reflect same-repository-only verification, operational anchor seeding, and exact named-witness workflow ownership. |
| T9 hosted closeout | Passed with conditional gate | Current PR, cancellation, macOS, protected none, and manual npm OIDC paths are hosted green. External-fork verification is unsupported; real product mutation remains conditional on a separately ready reviewed release. Latest reviews are PASS/SAFE with no P1/P2. |
| Final review-fix exact graph | Passed locally | Current exact affected command: 55/55 across 13 packages, remote caching disabled, 44 locally cached, 39.796 seconds. The earlier pre-review run remains historical at 55/55, 0 cached, 58.463 seconds. |
| Wiki inherited formatting | Repaired locally | The three inherited wiki formatting failures reached by hosted run 32135355624 were fixed mechanically before the final local affected pass. |
git diff --check | Passed | No whitespace errors. |
Skill Application Evidence
| Task | Skill | Status | How/where | Not-applicable reason and assessment location |
|---|---|---|---|---|
| T1 | tdd | not_applicable | Deletion/consolidation changed no production behavior; exact built-process suite, absence scans, and fixture-clean proof are the alternative verification. | T1 tdd_status and diff contain test/fixture/runner changes only. |
| T1 | codebase-design | applied | behavioral-portfolio.test.ts uses built executables, public arguments, temporary repositories, exit/output/filesystem results, and a loopback provider; no private test hook. | |
| T1 | quality-types | applied | Built CLI structured output is decoded into explicit valid states; the low-signal inventory/test was later culled. | |
| T1 | simplify | applied | Removed obsolete title/source/version/native/duplicate/tarball witnesses and only their orphaned test helpers and fixtures. | |
| T2 | turborepo | applied | Package scripts, turbo.json global inputs/outputs/dependencies, --affected, and //#check:repo make Turbo the only selection seam. | |
| T2 | tdd | applied | Recorded legacy workflow/task-graph RED/GREEN during implementation; the configuration-shape witnesses were subsequently culled, leaving Turbo and runtime seams as final proof. | |
| T2 | codebase-design | applied | GitHub YAML composes one Turbo command and aggregate result; it owns no path taxonomy or release meaning. | |
| T2 | audit-cicd-security | applied | The aggregate has no publication authority. T6 distinguishes a credential-free fork lane from a same-repository trusted lane that receives required signed-cache inputs and pinned remote-cache OIDC. | |
| T3 | tdd | applied | Historical workflow-policy RED/GREEN was recorded, then culled as configuration-shape coverage; adapter preflight and T9 runtime are final proof. | |
| T3 | audit-cicd-security | applied | SHA-pinned Actions, least permissions, exact runtime/JWT claims, POST exchange, and no token logging or mutation remain adapter and runtime concerns. | |
| T3 | verify-behavior | applied | The macOS and npm OIDC named observations passed in their owning hosted workflows. | |
| T4 | turborepo | applied | One deterministic task identity is independent of trust lane; dry-run reports 63 tasks and matching cacheable hash matrices. | |
| T4 | tdd | applied | Five executable policy tests cover trusted-secret normalization through GITHUB_ENV, embedded multiline refusal, fork credential refusal, isolated writes, and compatible restore. | |
| T4 | audit-cicd-security | applied | Fork mode refuses remote credentials; trusted mode requires team and signing key; only key/mode outputs cross the composite boundary. | |
| T5 | tdd | applied | Decoder, authority, release-state refusal, and newest-valid selection were driven by focused public RED/GREEN slices. | |
| T5 | quality-types | applied | Candidate Evidence has one exact seven-field type and authority returns explicit accepted/refused states. | |
| T5 | codebase-design | applied | One exported decoder/selector owns evidence meaning; workflow composition remains downstream. | |
| T5 | audit-cicd-security | applied | Repository, run, PR, head, fork, conclusion, artifact, freshness, duplicate, and tree provenance fail closed. | |
| T5 | simplify | applied | Removed package, build, classification, intent, and credential transport from Candidate Evidence. | |
| T6 | turborepo | applied | Composed the T4 cache adapter in trusted/fork PR lanes without changing the declared Turbo task identity. | |
| T6 | tdd | applied | Static workflow-policy and both provider-simulation tests were culled. The production adapter remains; hosted authority behavior is verified in T9 instead of by retained provider simulation. | |
| T6 | audit-cicd-security | applied | Candidate Evidence is untrusted until the exported authority adapter validates origin, freshness, conclusion, and exact tree; pagination, least privilege, and authority-before-execution repairs are green. | |
| T6 | verify-behavior | applied | T9 proved trusted artifact production, fail-closed repair, and protected exact-authority acceptance. External-fork behavior remains a named hosted execution gate. | |
| T7A | tdd | applied | Pure low-signal deletion needed no replacement; the changed packaged-product operator command used its actual missing-test RED and successful command GREEN. | |
| T7A | simplify | applied | Deleted obsolete topology/package-shape tests, orphan runners/cache fixtures, and exact source/order assertions without replacement registration tests. | |
| T7 | tdd | applied | Full CLI passes 9 files/72 tests. Historical trees remain credentialless, and only the fixed current-tree adapter can mutate providers. | |
| T7 | quality-types | applied | The immutable publication plan and authority inputs are decoded into explicit accepted/refused states before Production obtains mutation capability. | |
| T7 | codebase-design | applied | release-plan owns deterministic historical classification and artifact production; Production owns static plan validation and provider application without replaying classification. | |
| T7 | audit-cicd-security | applied | Read authentication is limited to anchor/evidence acquisition then scrubbed to a local origin. Historical evidence, authenticated exact tags, provider preflights, registry failures, and anchor advancement fail closed. | |
| T7 | simplify | applied | Removed legacy reconcile/attest replay entrypoints and retained one release:publication plan|apply boundary. |
Architecture Conformance Evidence
| Architecture wave id | Target ownership topology and observed state | Declared dependency graph and observed state | Due criterion ids, evidence, and prior-met regression status | Public seam delta | Migration ledger delta, expiry waves, and final empty-ledger status | Validation evidence | Verdict or exact drift |
|---|---|---|---|---|---|---|---|
| A1 | $show-me: Verification portfolio -> built hi/hint; package tasks -> Turbo; Turbo result -> PR composition; named registry -> owning workflow. macOS routes through external drift; npm OIDC routes through the protected release workflow. No release/cache credential moved into the portfolio. | portfolio -> package task -> Turbo -> CI; each external observation is a separate named schedule/manual leaf. The release workflow's manual OIDC leaf cannot enter its push-only evidence, plan, or Production jobs. No CI-to-suite, schedule-to-portfolio, or witness-to-release-classification edge remains. | RAC-1: 2 files/17 built-process tests. RAC-2: 63-task dry-run, cacheable CLI build, FULL TURBO replay. RAC-3: two named drift adapters. Historical static workflow policy assertions were culled; workflow runtime is T9. | Added stable package task names, Stable Aggregate Check, and two individually named witness results. Built CLI behavior is unchanged. | M1 removed by root delegation. M2 removed by PR-only portfolio and named drift schedule. M3 advanced pending A2/T4. M4/M5 unchanged. | T1 exact suite; Turbo affected dry-run; repeated root-policy cache restore; adapter checks; wiki content check; git diff --check; independent review. | PASS locally. No static configuration witness is retained; cancellation/skip and drift execution remain T9. |
| A2 | Cache policy owns trust capability without changing task identity; Candidate Evidence authority owns the exact seven-field receipt and newest-valid provenance decision; verification portfolio owns the completed low-signal cull. | Turbo identity -> cache policy; Stable Aggregate producer -> minimal receipt -> authority selector. No fork-to-signed-cache, receipt-to-release-state, or deleted-test-to-validator edge remains. | RAC-2: matching 63-task hash matrix. RAC-4: trusted signing/fork refusal executable policy. RAC-5: decoder/selector refusal matrix and exact-tree authority. | Added executable cache policy and Candidate Evidence JSON v1; removed obsolete topology/test registration seams. | M3 removed. M4 is locally composed by T6; M5 unchanged. | Packaged-product validator; retained executable cache/evidence suites; CLI check/typecheck; 63-task Turbo dry-run; orphan scan; diff check; independent security review. | PASS for A2. Hosted cache scope and artifact authority remain T9; T6 no longer blocks A3 progression. |
| A3 | Candidate Evidence authority owns exact tested-tree admission; scrubbed-local-origin release-plan owns historical build/pack/classification; the fixed current-tree Production adapter owns independent plan validation and provider mutation. | exact current/historical authority -> local-origin plan -> exact tree bind -> independent evidence/static plan validation -> first-incomplete apply -> provider readback -> complete-product anchor advance. No credential-to-historical-tree or Production-to-classification-replay edge exists. | RAC-5 exact authority remains green. AC-023 to AC-031 have 9 files/69 full CLI tests and 2 files/35 focused publication/dispatcher tests; hosted Production/OIDC and real provider convergence remain T9. | Added historical evidence binding, authenticated tag/provider preflights, fail-closed repair, and release:publication plan|apply; removed legacy replay entrypoints. | M4 removed locally by exact authority composition. M5 removed locally by deterministic plan/apply recovery; hosted convergence evidence remains T9. | Full CLI 9 files/69 tests; focused publication/dispatcher 2 files/35 tests; clean local docs checks. | PASS locally. No hosted Production/OIDC or real provider mutation is claimed before T9. |
UI Evidence Links
No user-interface implementation is in scope; no before/after pair applies.
Runtime Validation Evidence
| Scenario | Durable evidence | Result | Status |
|---|---|---|---|
| Latest PR tree and cancellation | PR #145 runs 32256807550 and 32256389904 | Trusted lane and Stable Aggregate passed 55/55 with 49 cached; exact artifact tree e87222547b4b20adbf75a27c43a950e10048d5f5; superseded revision cancelled. | PASS |
| Named macOS drift | 32254400362 | Atomic rename, symlink, hardlink, mode, and FIFO observed; hosted volume reported caseSensitive: false; cleanup passed. | PASS |
| Fail-closed release repair | PR #145 merge bd01736e, release 32257146346; PR #146 merge bb4dcb27, release 32258817830; PR #147 merge c37a7d71 | Squash provenance and empty-history metadata defects surfaced before mutation and were repaired. PR validation runs 32258617884 and 32259308638 passed. | PASS |
| Durable anchor seed | release-authority/v1/bb4dcb27cedcd7ee11237de13955cab88c41e289 | Exact ownership proof classified the seed as non-product. The lightweight tag remains the sole durable authority tag. | PASS |
| Protected no-mutation release | 32259491112 | Evidence, plan, and Production passed from anchor bb4dcb27 to current c37a7d71; only entry was releaseKind: none, products {}, firstIncomplete: null, status: complete. No provider or anchor mutation. | PASS |
| Named npm OIDC exchange | 32259801134 | result: observed, npmTokenReceived: true; release-evidence, release-plan, and Production skipped. Earlier 32257389157 is superseded because HTTP 201 was rejected only by an undocumented expires assumption. | PASS |
| External-fork cache isolation | Superseded by the 2026-08-19 policy amendment | External-fork verification and fork cache mode are unsupported and removed; no hosted execution claim is required. | SUPERSEDED |
| Real npm or baseline convergence | No separately ready reviewed product release | Mutation was correctly not triggered merely for validation. Existing npm 3.2.2 and baseline 2026.08.18 predate the protected no-mutation run. | CONDITIONAL EXTERNAL EXECUTION GATE |
Superseded pre-merge snapshot
The following matrix is retained as the diagnostic state that drove PRs #145 through #147. Its blocked labels are historical. The external-fork rows are superseded by the post-closeout policy amendment; only conditional real-release evidence remains current.
| Task | Scenario and target | Public action | Correlation or provenance | Expected result | Observed result and durable evidence | Cleanup | Status or exact blocker |
|---|---|---|---|---|---|---|---|
| T9 (T2/T4/T6) | PR #145 trusted lane and Stable Aggregate | Actions run 32250607984; no provider mutation | Run 32250607984; trusted job 96060485172; Stable Aggregate 96060734876; head 4de794bc73a2730da789e7de8aec91163aecf687; tested tree 4050feaffa9ee7ea6669e20fa8f9c52a4dc44bda | Latest PR tree completes the affected graph and emits exact-tree Candidate Evidence | Trusted lane 55/55 successful with FULL TURBO; Stable Aggregate succeeded; artifact release-candidate-tree-4050feaffa9ee7ea6669e20fa8f9c52a4dc44bda downloaded and retained through 2026-09-02 | Artifact retention is durable; no provider state touched | PASS for trusted PR path; current fork/cancel/authority gates remain blocked |
| T9 (T2) | Executed and skipped paths | Actions run 32250607984 | Trusted job 96060485172; same-repository fork job 96060486459; aggregate 96060734876 | Stable Aggregate remains present for executed and graph-skipped lanes | Trusted job executed and passed; fork job was skipped because PR #145 is same-repository; aggregate executed and passed. No independent graph-skipped aggregate path was observed | No external state | Partial: skip is observed, but it is not an external-fork proof |
| T9 (T2) | Superseded-revision cancellation | Current behavior-contract runs and historical cancelled run 31781590427 | Current PR #145 behavior-contract runs all completed; historical run 31781590427 is an older workflow | A newer PR revision cancels the previous behavior-contract run | No current PR behavior-contract run has conclusion cancelled; historical cancellation occurred in superseded workflow 31781590427 during old CLI verification and is diagnostic only | No cancellation or provider state to clean | BLOCKED: current-workflow cancellation witness is absent |
| T9 (T4) | Trusted signed cache write and restore for one task identity | Cache-write run 32245567317, restore run 32246376097, and current run 32250607984 | Runs 32245567317, 32246376097, 32250607984; trusted cache keys/logs; same task graph on PR lane | Trusted lane can write signed cache output and reuse it without changing task identity | 32245567317: 0/7 cached then cache saved; 32246376097: 49/55 cached; 32250607984: 55/55 and FULL TURBO; signing key remained masked | Cache entries are remote deterministic outputs; no provider release mutation | PASS trusted write/restore; fork safe-lane evidence is blocked |
| T9 (T4) | External-fork restore-only and isolated writes | No fork/extra PR dispatched per scope; same-repository PR #145 run is the available public seam | Fork job 96060486459 skipped; no external-fork run or artifact | Fork restores eligible default-branch data without trusted signing/write capability and isolates writes | Only the same-repository fork job skip is observed; no external-fork restore/write observation exists | No fork state created or cleaned | BLOCKED: cannot promote local policy or a skipped job to hosted fork proof |
| T9 (T3) | macos-filesystem-capabilities | Manual witness run 32254400362 | Run 32254400362; job 96072634759; main 9b113dbf7b892e2b1a8b4033c611bd33e5590605; macos-14 | Observe atomic rename, symlink, hardlink, mode, case, and FIFO capabilities and clean up | Job passed; durable JSON: {"witness":"macos-filesystem-capabilities","result":"observed","observations":{"atomicRenameReplacement":true,"symlink":true,"hardlink":true,"mode":true,"caseSensitive":false,"fifo":true}} | Witness removed its temporary root; no provider state | PASS; caseSensitive:false is the hosted observation, not a failure |
| T9 (T3) | npm-trusted-publisher-oidc-exchange | Manual witness run 32254400786 | Run 32254400786; job 96072642472; main 9b113dbf7b892e2b1a8b4033c611bd33e5590605; Production and id-token: write | Exchange the GitHub OIDC token for npm trusted-publisher proof without publishing | Checkout/setup succeeded; script failed at scripts/external-drift/npm-trusted-publisher-oidc-exchange.mjs:87 with Error: npm OIDC exchange failed with HTTP 404; no npm publish ran. The request came from external-drift.yml, but npm trusts @punks/cli through exact workflow release.yml. Repair moves only this manual witness to release.yml, keeps all publication jobs push-only, and passes focused test 1/1 with 3 expectations plus syntax, YAML/JSON parse, lint, format, and diff checks | No package/tag/release/provider mutation; hosted repair run pending until push | REPAIRED LOCALLY / BLOCKED: do not infer hosted OIDC pass until the routed witness succeeds |
| T9 (T6) | Exact-tree 14-day Candidate Evidence and authority/refusal paths | PR artifact run 32250607984 and historical release guard run 31781590442 | Artifact name above; tested tree 4050feaffa9ee7ea6669e20fa8f9c52a4dc44bda; historical run 31781590442 | Current exact-tree receipt is accepted only from newest same-repository success; direct-main and mismatched-tree inputs refuse before Production | Current PR artifact is exact-tree and durable; no current main authority acceptance or direct/mismatch refusal run. Historical guard exercised refusal tests on superseded code only | Artifact retained; no authority/provider state mutated | PARTIAL: receipt production PASS; current authority/refusal acceptance BLOCKED |
| T9 (T7) | Protected none, authority refusal, package dry-run, OIDC, and conditional release preflight | Supported release planning command; no release workflow dispatch | RELEASE_PROVIDER_ANCHOR_COMMIT=25ab1104a40c4a8b50dd2c0e726653f016944dc5; supported plan preflight exit 1; remote authority tags 0 | Classify prospective merge as none, recovery, baseline, npm, or mixed before any provider mutation; real convergence only for separately ready reviewed release | Preflight failed closed before classification: No durable release provider anchor exists; seed an exact remote anchor tag first. No separately ready release exists, so protected publication, package dry-run, OIDC, and readback were not run | No provider mutation; no release/tag/baseline/npm cleanup required | BLOCKED external authority gate; classification is unavailable, not none/recovery/baseline/npm/mixed |
| T9 (local) | Final review-fix affected graph | Supported Turbo affected command | Current origin/main merge base and HEAD, portless API URL, deterministic CI env, remote cache disabled | Every affected task succeeds | 55/55 across 13 packages, 44 locally cached, 39.796 seconds; full CLI 9 files/69 tests; publication/dispatcher 2 files/35 tests | No external state | PASS locally; does not replace hosted authority/provider evidence |
Behavior Verification Evidence
| Story and criterion | Ref | Channel | Scenario | Status | Durable evidence or exact blocker |
|---|---|---|---|---|---|
| T9 hosted matrix, US-001 to US-006 / AC-001 to AC-033 | T9/RAC-1..RAC-8 | Public GitHub Actions runs; no user-facing UI is in scope | Inspect PR, cancellation, named drift, protected release, and OIDC witness evidence | Verified for supported hosted scenarios | Current PR/tree, cancellation, cache reuse, Candidate Evidence, macOS, fail-closed authority repair, protected none, and npm OIDC are green. External-fork verification is unsupported; conditional real product convergence remains unexercised. |
Skill application: verify-behavior | T9/verify-behavior | GitHub Actions is the public behavior seam | Correlate durable run, tree, plan, mutation, and skipped-job outputs | PASS with one conditional external gate | No UI proof is inferred. The hosted evidence proves the supported paths. A real product mutation still requires a separately ready reviewed release. |
Acceptance Criteria Status
| Criterion | Status | Notes |
|---|---|---|
| AC-001 to AC-010 | implemented | Built-process portfolio, three Safety Invariants, deletion proof, and final CLI 9 files/72 tests are green. |
| AC-011 to AC-017 | implemented | Turbo ownership, affected selection, remote-cache reuse, Stable Aggregate, and current-workflow cancellation are proven. |
| AC-032 to AC-033 | implemented | Only the named macOS and npm OIDC witnesses remain; both are hosted green in their owning workflows. |
| AC-018 to AC-019 | superseded | Trusted hosted reuse remains green. The post-closeout policy removes external-fork verification and its cache mode. |
| AC-020 to AC-022 | implemented | Exact-tree artifact production, fail-closed repair runs, and protected exact-authority acceptance are hosted green. |
| AC-023 to AC-031 | implemented | Protected none and npm OIDC are hosted green without publication. Real product convergence remains conditional on a separately ready reviewed release. |
Manual Review Checklist
| Area | Check | How to perform | Expected result |
|---|
Pre-existing Issues
- The three inherited wiki formatting failures exposed by hosted run
32135355624were fixed mechanically and the final local affected graph passed.
Out of Scope Observations
- None recorded.
Remaining Work
- T1 through T9 and T7A remain complete for the supported paths. External-fork verification is unsupported and is not a remaining gate. Real npm or baseline convergence remains conditional on a separately ready reviewed product release. No product publication occurred during the original validation.
Steering
| Date | Feedback | Changes |
|---|---|---|
| 2026-08-18 | Execute all steps with full parallelism; Terra high for code writing and Luna max only for live E2E. | Plan-derived write waves use Terra high workers; runtime validation is reserved for Luna max, without code edits. |
| 2026-08-18 | Apply the updated TDD rule and clean low-signal tests during the refactor. | Re-read the revised skill, replaced static cache checks with executable policy behavior, culled residual CI/release topology tests and orphan runners, and required real RED/GREEN only for the changed packaged-product operator command. |
| 2026-08-18 | Apply strict TDD cull to CI/workflow configuration witnesses. | Deleted T2/T3/T6 task-graph/workflow-shape tests; retained executable cache and release-authority adapters, Turbo/lint-format validation, and T9 runtime evidence. |
| 2026-08-18 | Keep GitHub CI disabled; do not run PR Actions or external providers. | Stopped hosted work after four diagnostic runs, recorded all four locally repaired causes, ran only the final local affected graph and docs checks, and left T9/publication explicitly open. Linear items were reconciled to In Progress without claiming Done. |
| 2026-08-19 | Re-enable CI and finish T9 without publishing merely for validation. | Collected hosted PR/cache/Candidate Evidence and macOS proof. Preserved npm OIDC run 32254400786 as mutation-free RED, repaired its exact-workflow routing locally, and left hosted OIDC GREEN plus other external gates explicit. |
| 2026-08-19 | Finish T9 after the hosted repairs and no-mutation release proof. | Reconciled PRs #145 through #147, current cancellation and exact-tree evidence, macOS and npm OIDC witnesses, the sole durable anchor, protected none completion, and explicit external-fork/conditional-release gates. |
| 2026-08-19 | Remove the external-fork path after closeout. | Removed the fork workflow/cache mode, retained same-repository trust and aggregate refusal, and reclassified the unexecuted external-fork proof from a pending gate to superseded historical evidence. |