Skip to content

fix(failure-memory): drop the akms release from fingerprints; re-freeze the pack - #42

Merged
SOSOVSKI merged 1 commit into
mainfrom
fix/consumer-pack-refreeze
Nov 1, 2026
Merged

SOSOVSKI merged 1 commit into
mainfrom
fix/consumer-pack-refreeze

Conversation

@SOSOVSKI

Copy link
Copy Markdown
Contributor

The published consumer-contract pack failed its own verify_pack.py: its lessons.json, the six generated lesson nodes and both recording files had been edited for publication, and verify_pack.py reformatted, without re-freezing their digests. Nothing caught it because test_consumer_contract skipped the whole suite unless akms.version was 0.6.1, and it could not simply be re-frozen: toolchain_sha256 hashed the installed akms release, so the pinned fingerprints moved on every lockstep release.

  • provider: the installed akms release version is no longer a toolchain_sha256 input. akms_schema_version and PROVIDER_VERSION still capture contract changes, and the version a project pins in its own [toolchain] table still counts through config_sha256.
  • test_consumer_contract: the version gate is gone, so all 28 conformance tests run on every release; EXPECTED_PACK_SHA256 is the new digest.
  • tests/refreeze_consumer_pack.py: maintainer script that recompiles generated/, recomputes every pinned value the way the suite checks it, and rewrites the manifest checksums. Deterministic: a second run changes nothing.
  • Pack re-frozen (pack revision amendment-2, digest bd1c2dc3...). Only digests and the generated source-hash header lines moved; behaviours, requests and lessons are unchanged. The manifest's pack_root and documented commands now use the public layout.

Consumers that pin the pack must update to the new digest.

…ze the pack

The published consumer-contract pack failed its own verify_pack.py: its
lessons.json, the six generated lesson nodes and both recording files had
been edited for publication, and verify_pack.py reformatted, without
re-freezing their digests. Nothing caught it because test_consumer_contract
skipped the whole suite unless akms.__version__ was 0.6.1, and it could not
simply be re-frozen: toolchain_sha256 hashed the installed akms release, so
the pinned fingerprints moved on every lockstep release.

- provider: the installed akms release version is no longer a
  toolchain_sha256 input. akms_schema_version and PROVIDER_VERSION still
  capture contract changes, and the version a project pins in its own
  [toolchain] table still counts through config_sha256.
- test_consumer_contract: the version gate is gone, so all 28 conformance
  tests run on every release; EXPECTED_PACK_SHA256 is the new digest.
- tests/refreeze_consumer_pack.py: maintainer script that recompiles
  generated/, recomputes every pinned value the way the suite checks it,
  and rewrites the manifest checksums. Deterministic: a second run changes
  nothing.
- Pack re-frozen (pack revision amendment-2, digest bd1c2dc3...). Only
  digests and the generated source-hash header lines moved; behaviours,
  requests and lessons are unchanged. The manifest's pack_root and
  documented commands now use the public layout.

Consumers that pin the pack must update to the new digest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@SOSOVSKI
SOSOVSKI force-pushed the fix/consumer-pack-refreeze branch from 3b87411 to 4dfa68e Compare November 1, 2026 18:35
@SOSOVSKI
SOSOVSKI merged commit a84bd68 into main Nov 1, 2026
14 checks passed
@SOSOVSKI
SOSOVSKI deleted the fix/consumer-pack-refreeze branch November 1, 2026 20:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant