repo-harness 0.11.0
Changed
checks/latest.jsonis now materialized exclusively from the
EvidenceEventledger (D7 selection predicate: exact worktree + subject +
admitted trust class, last accepted event wins). Every prior direct
authoring path is deleted in the same package that replaced it:
verify-sprint.sh'scpontochecks/latest.json, the
workflow_ensure_harness_surface{}bootstrap, and
mutation-observed.ts's continuous contract-verification cascade (now
redirected to a dedicated.ai/harness/checks/contract-verify.latest.json,
never the acceptance-evidence path).- Recovery views (
handoff/current.md,handoff/resume.md) render from one
standalone materializer, single-hop from the EPC-06 checkpoint plus
minimal live workflow context. The independent bashworkflow_write_handoff
content assembly,codex-handoff-resume.sh's elaborate-resume assembly,
prepare-codex-handoff.sh's Node/Python global-packet splice, and
workflow_ensure_harness_surface's handoff/resume placeholder bootstrap
are all retired same-package; the three bash entrypoints are now thin
invokers of one standalone CLI (scripts/recovery-view-cli.ts). - The SessionStart Context Packet's resume-availability check
(resumeAvailable()) now resolves from the canonical checkpoint-backed
evidence reader (resolveRecoveryEvidence) instead of re-deriving
availability by string-scanningresume.mdfor a legacy marker/header. - Evidence-ledger redaction gained a typed-field exemption: a whole-value
declared hash (sha256:-prefixed or bare 40/64-hex) or a declared/inferred
safe repo-relative path is exempt from high-entropy redaction, so a
realistic long contract slug or asha256:-prefixed field now survives
materialization byte-identical instead of being partially hash-mangled.
The secret-value denylist still runs unconditionally over every field,
exempted or not. - PostBash-observed command results and manual/external attested acceptance
receipts now import into the sameEvidenceEventledger (observedand
external_attested/human_acceptancetrust classes respectively),
feeding the materializers above under the frozen D4 trust matrix.
Removed
-
Skill surface discovery convergence (public cutover, next-minor breaking
change).assets/skill-commands/manifest.jsonv2 is now the runtime
discovery authority for Skill package classification and host/profile
projection. Rule owners converge from 25 Skill-like sources to 10 canonical
packages (repo-harness,repo-harness-setup,repo-harness-plan,
repo-harness-product,repo-harness-check,repo-harness-ship,
repo-harness-architecture,repo-harness-cross-review,merge-gate
classification-only,repo-harness-chatgpt); the 19 retired names below are
deleted (no directories, no generated aliases, no compatibility shims) and
recorded only as migration metadata in the manifest'sretiredPackages
array:Retired name Replacement repo-harness-initrepo-harness-setup(adopt-init mode)repo-harness-migraterepo-harness-setup(migrate mode)repo-harness-upgraderepo-harness-setup(upgrade mode)repo-harness-repairrepo-harness-setup(repair mode)repo-harness-scaffoldrepo-harness-setup(scaffold mode)repo-harness-capabilityrepo-harness-setup(capability mode)repo-harness-reviewrepo-harness-plan(review mode)repo-harness-prdrepo-harness-product(PRD mode)repo-harness-sprintrepo-harness-product(Sprint mode)repo-harness-goalrepo-harness-product(Goal mode)repo-harness-handoffroot repo-harness(handoff action +references/handoff.md)repo-harness-deployrepo-harness-check(deploy-readiness reference)repo-harness-autoplanretired, no successor; root executealready follows Effective State through the existing plan -> contract -> worktree -> verify -> ship chain. Its Reusable Workflow Packaging Rubric survives alone asreferences/workflow-packaging-rubric.mdrepo-harness-gptprorepo-harness-chatgpt(consult/continue modes)repo-harness-gptpro-setuprepo-harness-chatgpt(setup mode)codex-reviewrepo-harness-cross-review(Codex provider mode)claude-reviewrepo-harness-cross-review(Claude provider mode)repo-harness-chatgpt-bridge(static.agents/skills/copy)repo-harness-chatgpt(bridge reference); the generated runtime projection identityrepo-harness-chatgpt-bridgeis unchangedrepo-harness-chatgpt-browser(static.agents/skills/copy)repo-harness-chatgpt(continue reference); the underlyingsrc/cli/chatgpt-browserCLI engine is unaffectedTarget discovery matrix:
minimal->repo-harnessonly;standard->
addsrepo-harness-planandrepo-harness-check;product-planning->
addsrepo-harness-product;strict->repo-harness-plan,
repo-harness-check,repo-harness-ship, host-aware
repo-harness-cross-reviewon both hosts, andmerge-gateonly on its
gatekeeper host.repo-harness-chatgptis explicit-setup only and never
implied byproduct-planningor any other profile.
Notes (accepted intermediate states -- operator guidance)
- Downstream adopters that installed via the packaged CLI (not this source
checkout) do not yet receive the ledger/materializer tooling
(emit-verify-evidence.tsand friends are source-repo-only, never
registered in the distributed helper manifest);checks/latest.jsonstays
structurally absent in those repos until the next release ships this
cutover. This is a pre-existing condition, not a regression introduced
here. - A globally installed
repo-harnessCLI published before this cutover is a
live legacy writer until refreshed. Operator guidance: refresh with the
standard install profile (repo-harness update --profile standard, or
install --profile standardfor a fresh install) to pick up the
materializer-only behavior; until then, invokebash scripts/verify-sprint.sh
directly in a self-hosted worktree rather thanrepo-harness run verify-sprint, so the stale global binary's own retiredcppath cannot
silently re-clobberchecks/latest.jsonwith old-schema content. - The guarded, only-if-absent
{}seeds inscripts/plan-to-todo.shand
scripts/ensure-task-workflow.sh(project-genesis scaffolding for a
brand-new adopted repo, gatedif [[ ! -f ... ]]) remain non-ledger
first-writers by design -- fail-closed, never overwriting real
materialized content, and out of scope for this cutover.
Verification
- Added a cross-package projection-drift suite
(tests/evidence-projection-drift.test.ts): the checkpoint machine/human
views, the recovery views, materializedchecks/latest, and tracked
tasks/current.mdall recompute byte/hash-identically from their declared
sources, both on a fixture ledger and (where live state exists) against
this worktree's own published evidence. - Added a deprecation-residue scan (
tests/evidence-residue-scan.test.ts)
consuming a checked-in retired-surfaces list
(evals/harness/epc-retired-surfaces.json, the union of every EPC-05/07/08
deletion) -- zero unexcepted hits acrosssrc/,scripts/,.ai/hooks/,
assets/. - A matched post-EPC benchmark run was attempted at the post-EPC-08 subject
under the frozen VGBR-R protocol (one authoritative invocation, no
--profile/--scenario/--regrade-existing). The attempt
(post-epc-196e787a-20260723-a01) self-classifiedfailed_during_run:
twoadaptive-litearms failed inside the runner's own isolated per-arm
sandboxes (a provider tool-exec fault and a harness-guard-blocked agent
turn -- seedocs/researches/20260723-epc-program-closeout.research.md
for the full evidence). No report was produced and none was promoted. Per
the sprint's own frozen attempt discipline, one protocol-clean failed
attempt is sufficient to trigger row 13's cannot-execute fallback -- no
second attempt was made, and no automatic rerun or--regrade-existing
backfill occurred. Fallback applied: the pre-EPC baseline triplet
(27/27 arms,evals/harness/reports/profile-comparison.*, bytes
untouched) is now designated "descriptive pre-EPC baseline only".
This release closeout claims no benchmark improvement over the pre-EPC
baseline.