Harness Intelligence Wiki
SpecsCLIIssue 215 — Manifest-Driven Update

Issue 215 Manifest-Driven Update Implementation Notes

Implementation Notes

Parent-owned execution record for the approved direct plan. Issue #215 is the context issue; T1-T12 remain planning-only execution identities and do not map to provider Tasks.

Execution and Reconciliation

TaskTask Result and input identitiesParent Task GateReconciliationSummary blocker / next actionArchitecture CheckpointFinal acceptanceCode Review
T18686550f; repaired Task Result from /root/t1_shared_planning; pinned Bun 1.3.5passedcompleteT9 must retain ResolvedScaffoldOutputPlan invocation-locally and supply fresh managed/relevant-input evidenceA1 / RAC-1 metpendingpending
T28686550f; repaired Task Result from /root/t2_safe_candidate; pinned Bun 1.3.5; runtime correlation hi-215-alias-lloY2UpassedcompleteT8 may consume the typed complete-or-fail candidate inventory; T10 retains actual macOS proofA1 / RAC-2 metpendingpending
T38686550f; Task Result from /root/t3_local_cache; pinned Bun 1.3.5; runtime correlation hi-t3-runtime-wGjusmpassedcompleteT7 supplies remote adapter; T8/T9 own runtime use and diagnosticsA1 / RAC-3 metpendingpending
T48686550f; Task Result from /root/t4_output_contract; task-owned files and pinned Bun 1.3.5 checks currentpassedcompleteAggregate A1 typecheck waits for concurrent T3 correction; no T4 diagnosticA1 / RAC-4 task-local proof metpendingpending
T58686550f; Task Result from /root/t5_turbo_identity; Turbo 2.9.14, pinned Bun 1.3.5, Node 24.19.0passedcompleteAuthenticated remote attribution remains T11A1 / RAC-5 identity portion metpendingpending
T68686550f; Task Result from /root/t6_cache_trust; pinned Bun 1.3.5 and Node 24.19.0passedcompleteProvider capabilities, canonical slug/ID correspondence, writer membership, and runner isolation remain T11 proof, not T6 claimsA1 / RAC-5 trust-policy portion metpendingpending
T7A1-approved T3 contract; Task Result from /root/t3_local_cache; pinned Bun 1.3.5; runtime correlation hi-t7-runtime-9AVw2HpassedcompleteT9 selects the adapter at composition; T11 proves authenticated provider compatibilityA2 / RAC-6 met task-locallypendingpending
T8A1-approved T2/T3 contracts; repaired Task Result from /root/t2_safe_candidate; pinned Bun 1.3.5passedcompleteT9 must bind checkLiveReadiness, cache policy/codecs, and map additive facts without treating hits as adoption evidenceA2 / RAC-7 met task-locallypendingpending
T9A2-approved T1/T4/T7/T8 contracts; Task Result from /root/t9_update_integration; pinned Bun 1.3.5; production fixture receipt 1bb46b1a…d2de8epassedcompleteT10/T11 may consume the production composition; warm warning replay and provider restoration remain their public proof obligationsA3 / RAC-8 metpendingpending
T10Exact repair commit 3928e1de91c7ec4539a5e0fed04d1f83f764b512; final built CLI SHA-256 e1c9bdf97ce2e502492794e1a91c98e074799c2dbe913185077b50ddb60f931apassedfocused lifecycle and merge-tree-equivalent Behavior Contract evidence completeBehavior Contract 35185839490 passed root static, trusted affected verification, and stable aggregateRAC-9 evidence met; A4 awaits only the post-merge/local↔CI matrixpendingpending
T11Cache Witness 35185839278, a PR merge tree identical to head 3928e1de91c7ec4539a5e0fed04d1f83f764b512, all four jobs successfulpassedPR producer/consumer/later-run witness completeActual main/release and authenticated local↔CI matrix remain pending; local authentication-missing is not a substituteRAC-10 PR proof met; A4 otherwise blocked only on that matrixpendingpending
T122026-09-17 source-runbook/generated-mirror evidence; empty migration ledgerpasseddocumentation completeDocs-ingest verified no-op: no SPEC.md; ingestion fields and wiki log/routes/meta unchanged. A5 follows A4; no release/publication claimRAC-11 documentation/ledger scope metpendingpending

Summary

CI provenance correction: workflows 35185839278 and 35185839490 checked out PR merge commit a223bdb4602ad70d7aa15f158d872b60ec86d339, whose tree 0eb4a6d09f989fa0278cb4b968977f1e6bfe9a5a is identical to head commit 3928e1de91c7ec4539a5e0fed04d1f83f764b512. Their retained results are therefore merge-tree-equivalent evidence, not exact-head execution. Provider-retained artifacts are Cache Witness IDs 10482585836, 10482252258, 10482242221, and 10482197428, plus Behavior Contract tree artifact 10483835411.

  • Earlier trusted runs 35169090936 and 35169496396 remain historical producer/consumer evidence under evidence/cache and evidence/cli; their own executable identities and conclusions are retained, not relabeled as final-build evidence.

  • The historical full local suite (67/68 files, 722/723 tests, and 75/76 portfolio tests; SHA-256 8710300cc46295cb7263e8cbc88d99ee1066a91f2228206fc699585e5d80fe40) is diagnostic only. Exact repair commit 3928e1de91c7ec4539a5e0fed04d1f83f764b512 produced final CLI SHA-256 e1c9bdf97ce2e502492794e1a91c98e074799c2dbe913185077b50ddb60f931a.

  • The repaired 10-sample lifecycle proof /tmp/issue215-lifecycle-cacheoff-repair.json has SHA-256 a2f793ef714bf23536680caefd44230144aede428ab46cf310726c5019dcd215, failures: [], and cleanup: true.

  • The final repair fails executable-config inputs closed as uncontrolled-validation-inputs, so lint runs fresh rather than reusing an under-represented result. Candidate children strip cache/signing/publication credentials while retaining required package-manager registry/Git authentication; package-manager/executable identity is content/capability based, not raw-PATH based.

  • Cache Witness 35185839278 is terminal merge-tree-equivalent success on 3928e1de91c7ec4539a5e0fed04d1f83f764b512: all four jobs passed, downloaded artifacts confirm the final CLI digest and final macOS evidence, and the later consumer recorded 44 Linux and 13 macOS GETs. Behavior Contract 35185839490 is also terminal success on that head; root static, trusted affected verification, and stable aggregate all passed.

  • Delivery resumed cold from approved commit 8686550f4a342a9ebfbec5325fbc9b3216307706.

  • Implementation branch: team/stefan/issue-215-manifest-driven-update.

  • No provider-task lifecycle mutation applies; no product release or publication is authorized by this plan.

  • T4's post-GREEN simplify pass derived JSON-mode state once and narrowed progress rendering without changing behavior; its focused suite and aggregate typecheck remained green.

  • T6's post-GREEN simplify pass ordered readiness denials and consolidated single-line validation; its 8-test policy suite remained green.

  • T1 initially exposed only reconciliation reuse; parent review kept its gate open. The repair added desired-output reuse before planScaffoldOutput, with independent settings, topology, managed-state, relevant-input, and generation-option invalidation. Its post-GREEN simplify pass consolidated snapshot hashing/freezing.

  • T3's post-GREEN simplify pass merged duplicate cache-port signatures and extracted structural identity comparison; filesystem and policy checks remained green.

  • T5's post-GREEN simplify pass consolidated fixture cleanup and removed an unused CI subprocess wrapper; identity and restoration checks remained green.

  • T2 initially proved bounded copying but still accepted arbitrary executable-config I/O and could under-represent a contained directory symlink. Parent review held the gate open. The repair now accepts only a bounded declarative lint-config subset, rejects unproven executable behavior before subprocess execution, and reports required directory symlinks as typed unsupported inputs. Its post-GREEN simplify pass factored the bounded parser operations.

  • T7 added a provider-neutral signed v8 transport using the pinned Turbo 2.9.14 HMAC contract and the updater's own envelope/hash domain. The adapter fails closed on authority, redirect, signature, digest, inventory, transfer-bound, timeout, and interruption problems; local/cold fallback remains feature policy. Its post-GREEN simplify pass consolidated response classification and the bounded transfer lifecycle.

  • T8 initially reused complete validation but keyed it partly by raw PATH and executable locations; parent review held the gate. The repair uses executable-content/runtime capability identity, preserves semantic CI/NODE_ENV/TZ, and keeps dynamic environment-driven configurations fresh. Candidate children preserve dependency registry/Git authentication while cache/signing/publication credentials are excluded. Its post-GREEN simplify pass centralized credential filtering and removed duplicate restoration state.

  • A3 built-runtime evidence exposed two bounded candidate gaps after T8's original gate. The repair now inventories complete contained directory-link targets (including generated .claude/skills aliases), keeps missing/escaping/cyclic/special targets typed failures, and emits phases only at actual candidate execution boundaries. A second focused repair accepts grouped trusted-preset expressions such as (core.ignorePatterns ?? []) through the existing depth-bounded declarative grammar while grouped calls, ambient reads, dynamic imports, and I/O remain blocked. The repaired four-suite surface passed 114 tests in worker evidence; the parent cumulative run later covered the same behaviors.

  • T1's A3 repair moved generation-input evidence collection out of update/run.ts and into the shared scaffold boundary. The bounded collector observes nested authored scopes, configuration/lock inputs, local assets, and contained generated links; unclosed evidence disables reuse. Invocation-local reuse removes repeated generation/materialization while retaining the metadata observation needed to detect new nested guidance.

  • T4's A3 contract repair adds a fixed-code local updater cache-clear fact to progress and final results. It reports scope: local, namespace: updater, and explicitly retains remote artifacts without exposing provider diagnostics.

  • T9 now composes the shared resolved plan, fresh managed/generation witnesses, filesystem cache, optional signed remote transport, cache bypass/clear, and readonly live-tool readiness through the existing platform boundary. It rechecks live evidence immediately before validation, avoids install/bootstrap on ready unchanged runs, forwards actual phase events even when legacy output is disabled, and preserves recovery, adoption, and receipt authority.

  • T9's production fixture adopted 389 planned / 386 completed file operations, wrote a successful 335-entry receipt, repaired controlled prompt drift, then produced a zero-change repeat with no install or lint phases. Local cache clear emitted one matching event/result while explicitly retaining remote artifacts. The fixture receipt SHA-256 was 1bb46b1af77f184b4b49b0596fef3bc6a0418428ed3b8284d648cc6d84d2de8e.

  • T10's final Linux evidence uses the retained immutable baseline and a fresh built CLI. Identical warm inputs preserve findingCount=903, all 20 published diagnostics, truncation and warnings while executing zero install, lockfile, patch or lint operations. Source/configuration/lock/settings/workspace changes validate fresh; matching corruption rebuilds; configured remote failure reports transport-unavailable and safely executes two installs/two lints.

  • A4 local proof exposed and repaired bounded integration defects without weakening acceptance: precise required-special-file diagnostics, irrelevant delivery/cache pruning, canonical-root pinning, separate configuration references, runtime prepared-installation envelope decoding and limits, and exact allowlisted propagation of TURBO_API, TURBO_TOKEN, TURBO_TEAM, and TURBO_REMOTE_CACHE_SIGNATURE_KEY without outputting values.

  • T11's local witness and policy surface passed 19 tests / 212 assertions. Provider metadata confirms actor dev-6868, canonical team slug dev-punks, team id team_0QvyOroTH1I7k8hWMqSRCOqH, OWNER membership, and remote caching enabled. Local capability remains authentication-missing; only trusted PR CI may close provider restoration and macOS proof.

Deviations From the Plan

  • The implementation worktree was detached at the approved commit while the prior planning branch remained checked out in another worktree. A new isolated branch with the exact plan-authorized name was created here; no commit or user change was reset.

Surprises and Decisions

  • The available Bun runtime is 1.4.0 rather than the plan discovery observation of 1.3.5. The lockfile install is frozen; runtime identity must remain part of cache evidence and cross-runtime reuse must miss unless equivalence is proved.

Sanity Checks

CheckResultNotes
bun install --frozen-lockfile in current and immutable baseline worktreespass1,037 packages installed in each; postinstall patch completed
bun run --cwd apps/cli build in current and immutable baseline worktreespassbundled baseline assets and CLI distribution built successfully
node apps/cli/dist/index.js --help in current and immutable baseline worktreespassboth command atlases rendered successfully
bun run --cwd apps/cli test src/scaffold/output-root-materialization.test.tspass5 tests passed
bun run --cwd apps/cli check-typespassrepository-pinned native TypeScript completed without diagnostics
bun run --cwd apps/cli checkpre-existing failurelint completed with warnings; format check reports existing formatting drift in scripts/classify-release-impact.mjs, scripts/staged-verification-selector.mjs, and src/cli/command-registry.ts. This is readiness evidence, not behavioral RED.
Baseline identitypassrevision 1ee7f8b72f8fe116ad74aa15923238d3b985c751; entrypoint /tmp/issue215-baseline.CgRBlx/apps/cli/dist/index.js; distribution SHA-256 6503971a37c6768e03b3c1a1d68f6d2494f52b9b7ea7e3472f33e50b86f84ac5
Baseline disposable update invocationexpected product rejectionOn /tmp/issue215-g0-fixture.EI43qz, update --check --baseline bundled --json exited 1 with validation-failed for the absent Scaffold Manifest; first output 262.20 ms, total 281.82 ms, 189 stdout bytes, zero stderr bytes. The fixture was isolated from the user checkout.
T4 exact GREEN under pinned Bun 1.3.5pass4/4 command and presenter tests, including real subprocess streams through a pinned PATH shim. A subsequent aggregate typecheck was temporarily invalidated by active T3 edits, with its sole diagnostic in T3 ownership.
W1 cumulative focused suitespassParent run under pinned Bun 1.3.5: 12 CLI files / 119 tests and 3 root behavior-contract files / 27 tests passed. After the T2 repair, its exact 3-file suite passed 81 tests and the pinned CLI typecheck plus git diff --check remained green.
A3 cumulative focused suitespassParent run under pinned Bun 1.3.5: 16 CLI files / 243 unique tests and 3 root behavior-contract files / 27 tests passed. The 59 updater cases were verified with exact-name one-test reports because the monolithic file exceeded 30 minutes; interrupted, duplicate, and ENOSPC-pressure attempts were excluded, and isolated retries passed. CLI typecheck, fresh build, scoped lint/format, import-direction/TODO inspection, and git diff --check passed.

| T10 local built-command proof | pass locally | 2 Issue 215 portfolio tests, 7 preservation/safety tests, 16 before/current samples, 10 lifecycle samples, 3 platform samples, and 8 final recovery samples passed. Final post-team-ID-repair build SHA-256 28f905b551b7906d782283a43de2b28534923124c1e7952f63ec35e5e618e850; trusted macOS readback is retained in run 35169090936. | | T11 local witness proof | pass locally | Witness, cache identity, and trust surfaces passed 19 tests / 212 assertions. Local capability is explicitly authentication-missing; no provider artifact restoration is claimed before trusted PR CI. |

Skill Application Evidence

Worker Task Results populate one row per unchanged implementation_skill_guidance entry before the corresponding Task Gate can pass.

TaskSkillStatusHow/whereNot-applicable reason and assessment location
T4tddappliedDeterministic application barrier proved no initial output at RED; command/presenter suite proved early human and JSON stderr progress at GREEN.
T4codebase-designappliedCommand owns initial emission, presenter owns formatting, and the scaffold-update feature exports the event/result seam.
T4quality-typesappliedDiscriminated progress events, validated cache mode, additive result facts, and subprocess stream outcomes.
T4effectappliedPinned Effect v4 source informed Deferred synchronization and scoped cleanup without timing sleeps.
T4effect-backend-structureappliedExisting feature orchestration and composition ownership were retained; transport gained no cache policy or I/O.
T6tddappliedReal policy subprocess first failed on absent readiness output, then RED/GREEN slices covered denied authority and canonical identity handling.
T6codebase-designappliedThe existing cache-policy CLI/environment boundary owns redacted readiness; no provider client was introduced.
T6quality-typesappliedBoundary inputs and YAML mappings are validated, readiness outcomes are finite, and real temporary files/subprocesses exercise the contract.
T6turborepoappliedOne signed trusted authority is preserved while Actions archive keys remain a distinct transport optimization and provider capability stays explicitly unverified.
T1tddappliedMixed-workspace planning and both reconciliation/output snapshot behaviors were driven through genuine public-seam RED/GREEN cycles.
T1codebase-designappliedShared generation stays behind resolveScaffoldOutput; reconciliation remains its existing seam, and no update-only ownership scanner was added.
T1quality-typesappliedImmutable resolved-plan contracts carry literal invalidation reasons and fresh filesystem evidence identities.
T3tddappliedBehavioral RED proved absent cross-root reuse before cache implementation; vertical slices covered policy and real filesystem failure paths.
T3codebase-designappliedA small injected validation-cache interface hides storage lifecycle; the feature owns policy and the filesystem adapter owns mechanics.
T3quality-typesappliedEligibility, read, and publication are discriminated outcomes, with validated immutable envelopes and real-process tests.
T3backend-domain-structureappliedCache identity/policy remains in the scaffold-update feature while filesystem authority remains in the integration adapter.
T3backend-recoverable-actionsappliedPrivate staging, atomic publication, optional independent remote failure, corruption recovery, and interrupted-producer cleanup are explicit and tested.
T5tddappliedReal Turbo subprocess RED/GREEN slices covered local/CI identity, measured runtimes, host capability, policy selection, and restored outputs.
T5codebase-designappliedOne thin launcher centralizes semantic identity before delegating package-owned work to turbo run.
T5quality-typesappliedCapability outcomes are explicit and filesystem/process fixtures prove identities and restored bytes.
T5turborepoappliedPackage tasks remain owners, repository-policy tests use the narrow root-task exception, outputs/inputs are declared, and restoration is proven rather than inferred from hit totals.
T2tddappliedPublic REDs proved unrelated special-file traversal, arbitrary executable-config I/O, raw environment-derived loader paths, and under-represented directory symlinks before the complete-or-fail repair.
T2codebase-designappliedCandidate inventory and closure policy remain behind the existing runCandidateLintPreview seam; execution and cleanup remain in runtime orchestration.
T2quality-typesappliedInput resolution uses typed incomplete/unsupported/escape outcomes and real filesystem/process fixtures; subprocess facts are bounded and redacted.
T2backend-recoverable-actionsappliedPreparation rejects incomplete candidates before dependent execution; cleanup is independently proven across clean, failed, signalled, and unsafe-config runs.
T7tddappliedBehavioral RED/GREEN slices covered signed restoration, signer/team/digest mismatch, transfer failures, publication, and canonical-team resolution.
T7codebase-designappliedThe signed provider implementation stays behind one CacheTransport seam; network and authority mechanics remain private to the adapter.
T7quality-typesappliedUnknown envelopes and inventories are validated into typed miss/hit outcomes with real HTTP and filesystem fixtures.
T7backend-domain-structureappliedProvider mechanics remain in integrations; cache origin and fallback policy remain in the feature-owned cache contract.
T7backend-recoverable-actionsappliedBounded streaming, preflight validation, complete publication, interruption cleanup, and independent fallback are explicit and tested.
T8tddappliedWarning replay, semantic relocation, changed executable content, timezone-only validation, credential isolation, malformed evidence, and readiness ordering were driven through public RED/GREEN slices.
T8codebase-designappliedRuntime consumes injected cache policy/codecs and an injected live-readiness check behind runCandidateLintPreview; no concrete provider enters runtime.
T8quality-typesappliedExisting schemas decode cached findings; additive typed reuse/timing/count facts preserve complete warning replay and explicit miss reasons.
T8backend-domain-structureappliedCandidate runtime owns execution, feature cache owns eligibility/origin, adapters own storage/network mechanics, and T9 retains production composition ownership.
T8backend-recoverable-actionsappliedOperational failures are never cached; publication occurs only after candidate cleanup and live-input witnesses; partial materialization falls back through one cleanup boundary.
T9tddappliedPublic no-change, managed-drift, failure-ordering, cache-mode, receipt, and recovery cases drove vertical integration; all 59 unique updater cases passed exact-name accounting.
T9codebase-designappliedrunUpdate retains sequencing/adoption, platform composition owns concrete adapters, and shared scaffold/cache/runtime seams remain small and acyclic.
T9quality-typesappliedPlanned/completed operations, cache origin/miss/clear, bootstrap, progress, and receipt outcomes remain discriminated and are exercised through real filesystem/process fixtures.
T9backend-domain-structureappliedUpdate policy remains in orchestration, adapter construction remains in platform composition, and provider/filesystem mechanics remain behind public ports.
T9effectappliedExisting Effect workflows preserve typed failures, scoped cleanup, and real event ordering without timing sleeps.
T9effect-backend-structureappliedRequirements propagate to the owning platform layer; the feature does not import concrete cache adapters.
T9effect-service-designappliedNo unnecessary service was introduced; deterministic planning evidence stays value-based and resource authority remains at existing composition seams.
T9backend-recoverable-actionsappliedPreparation, independent completion, validation, adoption, receipt publication, cache publication, and cleanup retain distinct failure and recovery boundaries.

Architecture Conformance Evidence

A1 boundaries (T1-T6) -> A2 cache execution (T7-T8) -> A3 composition (T9)
  -> A4 public/provider proof (T10-T11) -> A5 documented closure (T12)
Architecture wave idTarget ownership topology and observed stateDeclared dependency graph and observed stateDue criterion ids, evidence, and prior-met regression statusPublic seam deltaMigration ledger delta, expiry waves, and final empty-ledger statusValidation evidenceVerdict or exact drift
G0Approved topology loaded; implementation not startedW1 scopes verified disjointnone duenoneno temporary seams plannedreadiness checks aboveready for W1 dispatch
A1Shared planning stays in scaffold-state/scaffold; candidate resolution stays in runtime; cache policy stays in features/scaffold-update/validation-cache; filesystem mechanics stay in integrations; CLI presentation and Turbo/trust scripts retain their declared owners.Production direction is command/presenter → feature contracts, runtime → candidate resolver/cache ports, and cache adapter → public cache contract. No production feature imports a concrete cache adapter; the only feature→filesystem adapter import is test composition.RAC-1…RAC-5 met. Parent reran the 119-test CLI W1 surface and 27-test root policy surface; repaired T2 reran 81 tests, pinned CLI typecheck, and diff check. Prior-met task-local evidence remains green.Declared additive seams only: ResolvedScaffoldOutputPlan, candidate inventory/failure facts, validation-cache ports, progress/result facts, Turbo identity launcher, and trust readiness outputs.No temporary seam, compatibility alias, dual cache authority, or migration entry observed; ledger remains empty through A1.Focused suites, typecheck, import-direction inspection, stale/TODO scan, and git diff --check passed.passed; W2 unblocked
A2Candidate cache execution remains in runtime; cache eligibility/origin remains in the validation-cache feature; filesystem and signed HTTP provider mechanics remain separate integrations.Runtime consumes cache ports/codecs only; feature production code imports no concrete adapter; integrations consume the public contract and do not own adoption policy.RAC-1…RAC-7 met. Parent cumulative pinned run passed 13 CLI files / 147 tests and 3 root policy files / 27 tests; typecheck and diff check passed.Compatible refinements: truthful hit origin, additive cache/timing/count facts, injected cache codecs/policy, and pre-lookup live-readiness check.No temporary seam, path-keyed compatibility identity, dual cache authority, or concrete-provider edge observed; ledger remains empty through A2.Cumulative focused suites, typecheck, import-direction scan, stale/TODO scan, and git diff --check passed.passed; W3 unblocked
A3Update sequencing and adoption remain in runUpdate; concrete local/remote adapter selection and readonly readiness remain in platform composition; shared planning and candidate execution keep their prior owners.Production composition depends on shared resolved output, public validation-cache ports, and runtime candidate validation; no feature imports a concrete provider and cache evidence never authorizes adoption.RAC-1…RAC-8 met. Parent cumulative pinned run passed 16 CLI files / 243 unique tests and 3 root files / 27 tests; the production fixture proved adoption, drift repair, no-change, cache-clear, and successful receipt behavior.Compatible additions are limited to readonly tool readiness, shared generation-input witnesses, and the typed local updater-cache clear fact.No temporary seam, duplicate planner, provider-policy leak, or migration entry observed; ledger remains empty through A3.Exact-name updater accounting, cumulative focused suites, typecheck, fresh build, scoped lint/format, import-direction/TODO scan, runtime fixture, and git diff --check passed.passed; W4 unblocked

A1 ownership and dependency view

CLI command/presenter ──> scaffold-update public contracts
                                │
              ┌─────────────────┴─────────────────┐
              v                                   v
  scaffold-state + scaffold/output      runtime/scripts
        shared desired plan                 │       │
                                            │       └──> Validation Candidate resolver
                                            └──> validation-cache ports
                                                        ^
                                                        │ public contract only
                                      filesystem adapter┘

Turbo identity launcher ──> package-owned tasks
trusted cache action ──────> signed provider boundary (access proof remains T11)

A2 delta: runtime ──> cache ports <── filesystem adapter / signed remote adapter
          candidate children exclude cache/signing/publication credentials

A3 delta: runUpdate ──> shared resolved plan + fresh witnesses
          platform ──> local cache / optional signed remote / readonly readiness
          completed operations ──> adoption ──> receipt publication

Conclusion: A1–A3 match the approved ownership topology and dependency direction; no undeclared seam or migration blocks the recorded local/PR proof.

Architecture wave idCurrent closeout stateExact blocker / dependency
A4RAC-9 built CLI evidence and the T11 PR producer/consumer/later-run witness are complete. Behavior Contract 35185839490 and Cache Witness 35185839278 are merge-tree-equivalent successes.Blocked only on post-merge actual main/release and authenticated local↔CI matrix readback.
A5Documentation and the migration ledger are complete; the ledger is empty. Docs-ingest is a verified no-op because the direct-plan folder has no SPEC.md.Follows A4 only. ingested: false and last_ingested: null remain unchanged; no wiki log, route, or meta change was made. No publication is claimed.

No UI surface is changed by this CLI/cache plan.

Runtime Validation Evidence

TaskScenario and targetPublic actionCorrelation or provenanceExpected resultObserved result and durable evidenceCleanupStatus or exact blocker
T4Effect CLI command boundary and captured streamsExecute update through real command parser with a barrier-backed operationT4 command test, branch team/stefan/issue-215-manifest-driven-update, Bun 1.3.5Human progress precedes the barrier; JSON defaults to one final stdout document and emits progress only to stderr when opted in4/4 tests pass; ordered Starting, PhaseStarted, and PhaseCompleted stderr events; final stdout parses onceBarrier released in finalizer, captured stream destroyed, interception restored, child exitedmet
T6Signed cache trust-policy boundaryRun the policy subprocess for trusted and denied GitHub contextsGITHUB_SHA=t6-runtime-proof; Bun 1.3.5; Node 24.19.0Report configuration readiness without leaking credentials or claiming provider access8 tests / 158 assertions pass; trusted output records team_fixture, present-unverified, signing configured, and provider access unverified; denial cases export nothingTemporary GitHub environment/output fixtures removed in finally; standalone report created no filesmet; authenticated provider restoration remains T11
T3Filesystem cache concurrency and private restorationRun two independent producers, clear after an immutable read, and patch one restored installationhi-t3-runtime-wGjusm; PIDs 1851908/1851909; installation identity 500020e8ff0a4be935feef8190f8f21ef753960f0e56659e387cd028805e228cReaders never see incomplete entries; active snapshots survive clear; private mutation does not alter stored bytesBoth producers exited 0; payload digest 36726f71d2f82f4e62684d892a9777970b32cfa0df8b2c62f1400b3608d7f9e1; subsequent restoration unchanged/tmp/hi-t3-runtime-wGjusm absence verified; interrupted-writer fixture rebuilt and removed stagingmet
T5Turbo identity and local restorationRun isolated Turbo 2.9.14 worktrees through the root launcher with equivalent and changed contextsLocal/CI hash 8f0172567b4afc20; pinned Bun 1.3.5; Node 24.19.0Equivalent semantic contexts share; host changes miss host tasks; restored bytes match fresh executionHost-tool identity changed 36301bb9dbd3233c to 6fe34d373c837f2e; restored/fresh SHA-256 375c027715824d8c68c9faa50228dbcc03d8b23a0921965c7eddbb5c67f66377Disposable repos/worktrees/refs/probes/caches removed and absence assertedmet locally; authenticated remote proof remains T11
T2Complete, contained Validation Candidate and subprocess factsRun runCandidateLintPreview through clean, lint-failure, SIGTERM, and unsafe executable-config cases using a canonical aliashi-215-alias-lloY2U; Bun 1.3.5; Node 24.19.0; live hash 2cf4670a140dacbb135417b54ce92a064e056d6168796b8bfbed16afdeebb04aRequired inputs execute privately; incomplete/uncontained inputs stop before dependent execution; diagnostics retain phase/code/signal; live state is unchangedClean/failure/SIGTERM cases retained exact process facts; unsafe config returned typed input-resolution/incomplete with zero additional subprocess calls; parent exact suite passed 81 testsAll four candidates, live/staged roots, and alias independently verified absentmet; actual macOS alias proof remains T10
T7Signed updater remote transportPUT, verified GET, and tampered GET against a real loopback HTTP provider using pinned Turbo 2.9.14 signing semanticshi-t7-runtime-9AVw2H; http://127.0.0.1:36109; artifact hash 8727226eca011f29527add2a7443568a39fd6db9da94a60f4dc49a86ddb21c6cCorrect authority/signature/digest/inventory returns immutable bytes; tampering and transport failures become reasoned misses without invalidating successful local workRestored digest b0f4b2e7996a5f4f315bdbc6233973376144870ecd6524e417c05c36dde88745; tampering returned signature-invalid; parent combined cache suites passed 18 testsListener closed, outstanding streams aborted/cancelled, fixture root absence verifiedmet locally; authenticated provider compatibility remains T11
T9Production updater compositionRun built update on a disposable real scaffold through adoption, unchanged repeat, controlled managed drift, and local cache clearbranch team/stefan/issue-215-manifest-driven-update; Bun 1.3.5; receipt SHA-256 1bb46b1a…d2de8eOne shared plan drives truthful planned/completed facts; ready no-change skips install/lint; drift repairs safely; cache clear reports local scope while retaining remote artifactsInitial adoption reported 389 planned / 386 completed with 335 receipt entries; unchanged repeat reported zero operations and no install/lint phases; controlled drift repaired; cache-clear event/result matchedDisposable runtime fixture /tmp/hi-t9-runtime-dSuEfg removed; immutable baseline retained for T10met; public before/current and provider proof remain T10/T11

| T10 | Built hi update lifecycle, safety, recovery and output | Run retained baseline/current CLI against isolated disposable consumers | Baseline SHA-256 6503971a…f84ac5; earlier 28f905b5…e850 reports retain their identity; final CLI SHA-256 e1c9bdf9…f931a | Prove exact outcomes, warning replay, zero-work warm reuse, invalidation, recovery and cleanup without timing thresholds | Focused repaired 10-sample lifecycle has failures: [] and cleanup true; final macOS reports are indexed; merge-tree-equivalent Behavior Contract 35185839490 passed | Owned fixture/cache roots removed; candidate residue empty; retained baseline preserved for comparison | RAC-9 evidence met; A4 blocker is T11 matrix only | | T11 | Shared-cache witness and provider authority | Run harness locally, then trusted same-repository PR producer/consumer/later-run jobs | Cache Witness 35185839278; a PR merge tree identical to head 3928e1de91c7ec4539a5e0fed04d1f83f764b512 | Attribute signed PUT/GET/restoration for Turbo and updater artifacts without exposing credentials | All four jobs passed; downloaded artifacts confirm 44 Linux and 13 macOS GETs plus final CLI/macOS evidence | Isolated local roots removed; provider artifacts rely on retention and are not globally cleared | PR witness complete; actual main/release and authenticated local↔CI matrix pending |

Final evidence corrections

TaskCorrected durable evidenceStatus
T2Executable-config inputs fail closed as uncontrolled-validation-inputs; cache reuse is denied and lint runs fresh. Candidate credential stripping excludes cache/signing/publication secrets while preserving necessary package-manager registry/Git authentication; executable/package-manager identity is content/capability based.met
T10Exact repair commit 3928e1de91c7ec4539a5e0fed04d1f83f764b512; final built CLI SHA-256 e1c9bdf97ce2e502492794e1a91c98e074799c2dbe913185077b50ddb60f931a. Focused 10-sample lifecycle /tmp/issue215-lifecycle-cacheoff-repair.json, SHA-256 a2f793ef714bf23536680caefd44230144aede428ab46cf310726c5019dcd215, reports failures: [] and cleanup: true. New macOS platform/safety reports are indexed in evidence/cli/README.md; older reports keep their own identities. Merge-tree-equivalent Behavior Contract 35185839490 passed.evidence met
T11Cache Witness 35185839278 is terminal success on a PR merge tree identical to head 3928e1de91c7ec4539a5e0fed04d1f83f764b512: all four jobs passed and artifact readback confirms final CLI evidence plus 44 Linux / 13 macOS GETs.PR producer/consumer/later-run witness complete; actual main/release and authenticated local↔CI matrix pending
T12Documentation and empty migration-ledger evidence are complete. Docs-ingest is a verified no-op because there is no SPEC.md; the implementation-notes ingestion fields and wiki log/routes/meta stay unchanged.complete; A5 follows A4; no publication claim

CI readback

WorkflowRunCurrent state
Cache Witness35185839278terminal merge-tree-equivalent success; all four jobs
Behavior Contract35185839490terminal merge-tree-equivalent success; root static, trusted affected verification, and stable aggregate passed

Behavior Verification Evidence

Story and criterionRefChannelScenarioStatusDurable evidence or exact blocker
Complete isolated candidate and fresh validationR1–R6built CLImanifest, ownership, candidate, cache, output, and progress casesmetT1–T10 evidence; executable-config repair is fail-closed uncontrolled-validation-inputs with fresh lint rather than reuse.
Built command and lifecycleR9built CLIfocused repaired 10-sample lifecyclemet/tmp/issue215-lifecycle-cacheoff-repair.json; SHA-256 a2f793ef714bf23536680caefd44230144aede428ab46cf310726c5019dcd215; failures: []; cleanup true.
Signed shared-cache reuseR7, R8, R10–R12trusted same-repo PRproducer → consumer → later runPR proof completeCache Witness 35185839278 succeeded at a PR merge tree identical to head in all four jobs; 44 Linux / 13 macOS GETs. Actual main/release and authenticated local↔CI matrix remain pending.
Trust and publication boundariesR13candidate/runtimecredential stripping and adoption authoritymetCache/signing/publication credentials are stripped from candidate children; cache evidence does not authorize publication, and no publication is claimed.

Visual Evidence Acceptance Map

No visual product evidence applies to this CLI/cache implementation.

Acceptance Criteria Status

CriterionStatusNotes
R1metShared manifest-driven desired-state plan and managed/relevant-input invalidation are evidenced.
R2metScaffold/check/update ownership, verifier preservation, containment, recovery, and truthful completion outcomes are evidenced.
R3metComplete isolated candidates prune irrelevant trees; incomplete/uncontained inputs fail before dependent adoption.
R4metExact input identities, warning replay, fresh validation, and cache miss reasons are evidenced.
R5metJSON/outcome facts preserve existing meanings and report planned/completed work truthfully.
R6metHuman progress and final JSON stdout behavior are evidenced without a timing threshold.
R7PR proof complete; matrix pendingPR producer/consumer/later-run evidence is complete; actual main/release and authenticated local↔CI proof remains.
R8local/PR proof complete; matrix pendingCorruption, fallback, bypass, clear, and cleanup evidence is complete; the remaining cross-context matrix is the T11 gap.
R9metBuilt-command lifecycle work facts and cleanup are recorded; timing remains diagnostic.
R10PR proof complete; matrix pendingCache Witness 35185839278 proves the PR witness; actual post-merge main/release and authenticated local↔CI observations remain.
R11local/PR proof complete; matrix pendingLocal/cold fallback and optional signed remote behavior are proved; the same remaining T11 matrix applies.
R12local/PR proof complete; matrix pendingContent/capability identity and relevant-input invalidation are proved; remaining cross-context observations are pending.
R13metCache does not authorize adoption, receipt, external publication, or credential propagation; no publication claim is made.

Manual Review Checklist

AreaCheckHow to performExpected result
CLI/cache deliveryRe-run the final command and cache matricesUse the exact commands and fixture identities recorded here after implementationPublic outcomes, receipts, reuse/miss reasons, and cleanup match the accepted plan without secret-bearing evidence.

Pre-existing Issues

  • Historical readiness failures from planning did not reproduce: the current and retained pre-change CLI distributions both built.
  • A pre-PR secret scan found expired tracked JWT fixtures in apps/api/.tmp/api-production.env and apps/backoffice/.tmp/backoffice-production.env. Both files are byte-identical to base 1ee7f8b7, so Issue #215 neither introduced nor changes them; their values were not printed.

Out of Scope Observations

  • The inherited expired JWT fixtures remain repository security hygiene outside Issue #215.

Superseded closeout snapshot

  • T12 documentation is complete: source runbooks describe the manifest-driven update contract, isolated candidates, cache modes/clear scope, progress, trusted-witness boundaries, and inherited hook limitations. Exact wiki runbook mirrors were regenerated from those sources. Documentation does not close parent architecture evidence.
  • The later trusted run 35169496396 selected producer 35169090936, made zero PUTs, performed 44 isolated-Linux and 13 isolated-macOS GETs, matched exact artifact/output digests, and retained normalized evidence. The parent must now perform cumulative A4/A5 architecture, requirements/standards, graph, migration-ledger, and release-classification review. Closeout remains without publication unless separately authorized.

Remaining Work

  • A4 is blocked only on the actual post-merge main/release and authenticated local↔CI matrix after completed PR producer/consumer/later-run proof. Cache Witness 35185839278 already succeeded on the exact repair head in all four jobs.
  • Behavior Contract 35185839490 is terminal merge-tree-equivalent success; no PR-head behavior gate remains.
  • A5 documentation and migration-ledger work is complete and follows A4. Docs-ingest remains a verified no-op because this folder has no SPEC.md; ingested: false and last_ingested: null remain unchanged, and no wiki log/routes/meta change is needed.
  • Closeout includes no release or publication claim.

Steering

DateFeedbackChanges
2026-09-16Implement the approved PLAN from implementation onward using Astra xhigh subagents.Activated delivery implementation, reconciled the detached worktree, and prepared G0.
2026-09-17Proceed with no more Astra subagents; use Terra subagents.Interrupted the remaining Astra monitor and routed all subsequent delegated review and repair work to Terra.

On this page