v0.8.0-alpha.3 — Auditable Promotion and Stop Discipline
Pre-releasev0.8.0-alpha.3 — Auditable Promotion and Stop Discipline
E1 infrastructure: READY
Live E1 / DSH re-scan: NOT RUN
Outcome value / multi-client portability: NOT PROVEN
This prerelease closes correctness gaps found during the alpha.2 evidence audit. It adds no second adapter and performs no paid or live model run.
What changed
- Canonical state must be sealed.
doctorno longer accepts a.project-cognition/state.jsonwithout a validstate_hash. - The CLI now mechanically supports and guards the artifact transition
draft → diff → seal --out → install; owner review remains an external repository-governance step, not an authenticated CLI event. Install accepts only the sealed artifact, binds the reviewed current hash, requires the exact next revision, and uses best-effort rollback for in-process state/projection write failures.doctordetects active/stale governance locks and a missing or mismatched canonical state/projection pair; it does not enumerate every temp/backup file, perform crash recovery, or claim cross-file power-loss atomicity. - Goal decisions are recomputed from the preceding evidence. A logged terminal label cannot override the reducer; baseline and observation revision labels must stay aligned.
goal status --format markdowngives a shared stopping card: MUST/gate state, attempts remaining, no-progress streak, time/tokens, and a single next action. Terminal cards explicitly say to stop polishing.- Goal approval rejects unknown/superseded invariant references and orphaned local revisions.
- The E1 scorer now distinguishes valid conformance failures from passes. A complete failing bundle is
FAIL_UNDER_TRUSTED_HOST, never a causal PASS. - Raw E1 bundle bytes can receive a cryptographic commitment and an optional external Ed25519 signature. Verification proves that the private key corresponding to the supplied public key signed those bytes; it does not identify the key holder, prove DSH ran, show that the signer is honest, authenticate a TTY user, or establish outcome value.
- The scorer accepts one self-contained bundle directory only; split
--runmanifest and--artifactsroots are rejected. Existing path components for bundle, key, attestation, and output paths must not traverse symlinks or junctions, and evidence files must not be hard-linked. - Release artifacts now include the package tarball,
SHA256SUMS, and a machine-readable package manifest. A--require-cleanbuild computes Git blob object IDs directly from working bytes (allowing only an equivalent CRLF checkout representation of an LF blob), disables replace-object aliases, and reconstructs its source from the verified HEAD blobs in an isolated directory; ignored files, arbitrary clean filters, replace refs, and local package-control files therefore cannot silently alternpm pack. CI runs once per main commit/PR across Windows and Linux at Node22.12.0and current LTS.
Upgrade from alpha.2
npx -y github:TLNing260310/dsh-researcher#v0.8.0-alpha.3 --force
--force replaces the two installed preset directories under DSH_HOME; hand edits inside those preset directories are not preserved. It does not run project-cognition init and does not modify repository-local .project-cognition/state.json, approved goals, or verifier registry. Existing canonical state therefore remains in place. An old editable cognition draft is not installable directly under alpha.3: copy the intended changes into a newly generated unique draft and review the new machine diff before sealing.
Canonical cognition migration
Installing an editable draft directly is intentionally no longer supported:
project-cognition cognition draft --root . --out <unique-review-dir-outside-repo>/state.r<N>.draft.json
project-cognition cognition diff <unique-review-dir-outside-repo>/state.r<N>.draft.json --root .
# owner reviews the exact diff and base.state_hash
project-cognition cognition seal <unique-review-dir-outside-repo>/state.r<N>.draft.json --out <unique-review-dir-outside-repo>/state.r<N>.sealed.json
project-cognition cognition install <unique-review-dir-outside-repo>/state.r<N>.sealed.json --root . --replace --expect-current-hash <reviewed-base-state-hash>
project-cognition doctor .
Each review path must be unique because the CLI refuses overwrite and install does not clean review artifacts. Keep draft/sealed files outside the repository; if policy requires a workspace-local review directory, make it explicitly gitignored. Never place them in .project-cognition/, commit them, or include them in a package. --expect-current-hash prevents stale or concurrent replacement; it is not proof of reviewer identity.
Optional E1 bundle signature
npm run eval:e1:attest -- create --run <bundle> --private-key <external-private.pem> --out <external-attestation.json>
npm run eval:e1:score -- --run <bundle> --attestation <external-attestation.json> --trusted-public-key <external-public.pem>
The key and attestation must stay outside the evidence bundle. The top-level scorer-generated score.json is the only file excluded from the signed commitment.
Reproduce the offline release gate
npm run check
git rev-parse HEAD
npm run release:artifacts -- --out <empty-directory-outside-repo> --expected-version 0.8.0-alpha.3 --expected-revision <full-git-object-id-from-above> --require-clean
Run this only after the final commit. The builder disables Git replace-object aliases, verifies HEAD/index consistency, independently computes each working file's Git blob object ID without invoking clean filters, and permits only exact bytes or the reversible CRLF checkout form of an LF blob. It then reconstructs an isolated source tree directly from the bound HEAD blobs, samples revision and cleanliness again after offline npm pack, validates required/forbidden package entries and npm integrity, and records the source revision plus clean status in the manifest. It writes the tarball, checksums, and manifest; it does not install or start DSH.
Goal boundary limitation
Goal Contract v1 freezes in_scope, out_of_scope, and do_not_touch as semantic strings. The generic Goal Core/DSH runtime does not compile them into a filesystem allowlist or independently detect changed paths. E1 alone has a frozen machine path contract through manifest allowed_changes, enforced by its dedicated runner/scorer. Generic hard path scope remains a schema v2 and adapter-conformance requirement; alpha.3 does not claim it.
Evidence boundary
Repository tests and preflight establish mechanical behavior only. This release did not run DSH or a real model, so the current candidate has not closed the DSH-dependent parts of Gate 0. The next evidence work is to complete those checks and then run live E1 as defined solely by the frozen Goal Governor Evaluation Protocol; pilot, E2, a second adapter, and E3 remain gated behind it.