Skip to content

Pin the frozen semantic corpus by its blob id, not a rewritten-away commit - #31

Closed
Parad0x-Labs wants to merge 1 commit into
mainfrom
mission/semantic-corpus-blob-pin
Closed

Parad0x-Labs wants to merge 1 commit into
mainfrom
mission/semantic-corpus-blob-pin

Conversation

@Parad0x-Labs

Copy link
Copy Markdown
Owner

What failed

tests/semantic_phase0/test_semantic_differential_eligibility.py — 3 cases red in the main
CI census (run 35570948370) and every PR run since; deterministic locally since the public
root:

  • test_the_corpus_is_a_pinned_artifact_the_candidate_does_not_compute
  • test_loader_refuses_a_trusted_object_that_disagrees_with_the_digest_pin
  • test_candidate_files_and_import_shadows_have_zero_corpus_authority

Root error: git show c23257da…:ops/semantic_phase0_frozen_corpus.json exits 128 —
CorpusIntegrityError: the immutable frozen corpus object is unavailable.

Root cause

Same genus as the legacy-migration fixture (PR #21): the differential driver froze its turn
universe at a specific commit (c23257da…), a commit that no longer exists in the public
tree — the repository's history was rewritten at migration (public root 78f818b). The
loader correctly refuses closed, so the whole eligibility proof has been unavailable on
every public clone.

Repair — same content-addressed guarantee, rewrite-proof anchor

The corpus is now pinned by its blob object id
(c606c81b7b7b95abea94731c361037473df109a6) instead of <commit>:<path>:

  • the loader still reads the trusted repository's object database, never the candidate
    worktree, never a worktree path, symlink, or import helper;
  • a tampered corpus committed anywhere mints a different blob id — the pin refuses it
    (the original sabotage property is preserved);
  • any commit carrying the exact artifact resolves the blob — the anchor survives future
    history rewrites that a commit-scoped pin cannot;
  • the pinned sha256 digest and turn-count checks are unchanged.

The eligibility test's constant pin and its git show read are updated to the same blob-id
semantics (the test's sabotage assertions — AST scan for candidate replay_texts calls,
digest tampering, worktree/symlink/shadow attacks — are unchanged and still pass).

Validation

  • Target suite: 3 failed → 30 passed (whole file).
  • Cumulative: test_nonconsuming_policy_preview + the repaired file in one process:
    35 passed (the one failure is that file's own pre-existing CI-baseline case).
  • Whole tests/semantic_phase0/ package: 630 passed, 4 failed = exactly the pre-existing
    replay-equivalence (2) / shadow-equivalence (1) / nonconsuming-preview (1) CI-baseline
    clusters
    — none in this PR's scope.
  • ruff check . clean (pinned 0.16.7).

Base: main 8153a96. Two files changed: scripts/semantic_phase0_base_differential.py
(pin + loader read), tests/semantic_phase0/test_semantic_differential_eligibility.py
(constant + read, assertions unchanged).

…ommit

The differential driver froze its turn universe as
git show c23257da...:ops/semantic_phase0_frozen_corpus.json -- a commit
that no longer exists in the public tree (history rewritten at
migration, public root 78f818b). Every public clone exited 128 and the
loader correctly refused, failing the three eligibility cases in CI
since the root. The corpus is now addressed by its content-addressed
BLOB id: the loader still reads the trusted repository's object
database, never the candidate worktree, a tampered corpus committed
anywhere mints a different blob id that the pin refuses, and the pinned
sha256 digest and count checks are unchanged. 3 CI failures
(35570948370) -> 30 passed; the package's remaining 4 failures are the
pre-existing replay/shadow/nonconsuming baseline clusters.
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