test(versioning): strict changelog lane, reporting parity lane, auto-file census records, zero changelog headings (f05fe292) - #159
Conversation
…changelog headings (f05fe292) Changelog lane is STRICT (option b'): KNOWN_CHANGELOG_MISMATCHES deleted, assertion is expect(mismatches).toEqual([]). The release lane writes the CHANGELOG.md heading in the same commit as the version bump; a fresh mismatch is a defect in the landing commit. KNOWN_RUNTIME_MISMATCHES kept (catalog 0.2.0/0.1.0, treasury 0.1.1/0.1.0 — verified still firing). Parity lane is a REPORTING lane (option a): KNOWN_NPM_DRIFT deleted; live drift find-or-creates a reconcile task keyed on the exact fingerprint title 'Reconcile @hasna/<pkg> main <m> vs npm <r>' (todos task upsert, idempotent), prints the two-sided report with task ids, and never fails. One-time zeroing (option d, once): 10 CHANGELOG.md headings written at the live package versions (accounts 0.2.44, calendar 0.3.1, conversations 0.6.2, instructions 0.4.35, loops 0.5.1, machines 0.2.26, mementos 0.14.84, repos 0.1.48, secrets 0.2.22, signatures 0.1.14). Standard suite gets the same (a) treatment for census exception records (contracts conformance + four-surface WARNs auto-file + report); the contracts-manifest/kitVersion hard gates and the recorded-exception-must-still-fail direction are UNCHANGED. skills' stale SDK exception entry deleted (member now ships ./sdk). Refs: f05fe292 (design memo), supersedes the #94 record-refresh lineage. Agent: agent-ea
…eout (f05fe292) The two reporting-lane tests spawn one `todos task upsert` subprocess per violation; a full census (26 violations measured at this main) exceeds bun's default 5000ms per-test timeout, which killed the spawn mid-flight and left a machine conformance task NOT FILED. Declared 300s on the two tests. Agent: agent-ea
…ign-seat; bound the surfaces auto-file test timeout (f05fe292) P2/P3 remediation for PR #159 review: - surfaces.test.ts: the WARN auto-filing test spawns one 'todos task upsert' subprocess per new gap and declared no timeout; both contracts.test.ts auto-file tests bound at 300_000 (conformance measured 7855ms > 5s default). Apply the identical per-test bound (third argument, not a global mask). - census.ts + versioning.test.ts: created reconcile tasks carried agent_id 'fleet' while the READMEs document agent-ea. 'todos task upsert' supports --assign/--assign-seat; pass agent-ea (env-overridable, --assign-seat because agent-ea is a durable seat) so attribution matches the docs and is independent of an ambient TODOS_AGENT_ID. READMEs updated to match. Agent: agent-ea
…s-reporting-f05fe292 Resolves the PR #159 conflict (base moved past the branch point): merged current origin/main (405f585). Resolution: test/versioning/versioning.test.ts kept the branch's strict changelog lane (KNOWN_CHANGELOG_MISMATCHES exception map deleted by design — the PR's core fix); main's only delta in that file was the map census block, superseded by the strict gate. bun.lock and all CHANGELOG.md unions auto-merged (hooks/machines/skills releases), verified by bun install --frozen-lockfile rc=0. Agent: agent-ea
…odos CLI is absent (f05fe292) test-suites lane (first CI run at the merged head, run 31880383695): both contracts auto-file tests failed with an uncaught 'Executable not found in $PATH: "todos"' — Bun.spawn THROWS at spawn time for a missing executable instead of exiting non-zero, and GitHub runners have no todos CLI. The suite's documented contract is 'NOT FILED and pass' (census.ts comment, README); the throw violated it. Wrap the spawn in try/catch in both reconcile-task creators (standard suite + versioning parity lane) returning null -> NOT FILED. Reproduced the CI condition locally (PATH without a todos binary): suite 18 pass / 0 fail, probe returns null with the 'unavailable ... NOT FILED' line. Agent: agent-ea
|
Cycle-1 remediation complete (task f05fe292, New head:
All four CI lanes SUCCESS at the exact head (run 31881631924, sha bb275ba):
(First run at the merged head 4168b96: 3/4 green, test-suites red on the ENOENT throw only — fixed in-branch, not weakened.) Local gates at the final head: frozen install rc=0; P3 measured live: parity lane auto-created reconcile task Not merged — left for the coordinator/reviewer per the bounded-review cycle. |
…ntracts 0.11.0 queue) Release preparation clearing the drift backlog: changesets for @hasna/emails 1.3.15 and @hasna/secrets 0.3.0 (package.json + VERSION constant + changelog headings), @hasna/contracts 0.11.0 queued for the next registry publish, instructions + loops changelog headings aligned. The record-clearing half is superseded by the strict lane (#159) — resolved toward main. Reviewer: GO (re-review @ 87eb40a); all five CI lanes green at the exact head; changeset lane two-sided verified. Agent: agent-ea
What
Implements the f05fe292 design memo (supersedes the #94 record-refresh lineage, which stays non-mergeable per the bounded-review cap).
KNOWN_CHANGELOG_MISMATCHESdeleted; assertion isexpect(mismatches).toEqual([]). The release lane writes the CHANGELOG.md heading in the same commit as the version bump; a fresh mismatch is a defect in the landing commit.KNOWN_RUNTIME_MISMATCHESkept (catalog/treasury verified still firing).KNOWN_NPM_DRIFTdeleted; live drift find-or-creates a reconcile task keyed on the exact fingerprint titleReconcile @hasna/<pkg> main <m> vs npm <r>(todos task upsert, idempotent), prints the two-sided report with task ids, and never fails. Opt-in (VERSIONING_NPM_PARITY=1), not in CI.Gates (all rc=0)
bun install --frozen-lockfile— 0bun test test/versioning(offline strict) — 7 pass / 1 skip / 0 failVERSIONING_NPM_PARITY=1 bun test --timeout 300000 test/versioning— 8 pass / 0 fail, run twice (idempotence: run 1 created hooks+machines tasks, run 2 found all existing)bun test tooling/ci/tests/standard— 18 pass / 0 failbun run check— 0git diff --cached --check— 0Reconcile tasks created/found by the parity lane (project 5e44770b)
Standard suite auto-filed (existing): telephony -> e9724296, loops -> 48abfc64, machines -> 1a6dbe12.
Not done
DO NOT merge, DO NOT publish. The release lane's heading-in-bump contract (option b') is specified in the memo for the owning lane; the reconcile tasks are its working queue.
Refs: f05fe292 (design memo), supersedes #94.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.