Skip to content

proof: side-build laws can import earlier ones; name clashes degrade honestly#501

Merged
jasisz merged 1 commit into
mainfrom
lane-imports-and-collision-guard
Jun 12, 2026
Merged

proof: side-build laws can import earlier ones; name clashes degrade honestly#501
jasisz merged 1 commit into
mainfrom
lane-imports-and-collision-guard

Conversation

@jasisz

@jasisz jasisz commented Jun 12, 2026

Copy link
Copy Markdown
Owner

Second increment of conditional helper lemmas (plan: prompts/conditional-helper-lemmas-probe.md §8): the plumbing that lets a later law's universal proof build on earlier ones — consumption itself comes next.

  • Imports + hash folding: a side-build module may import source-earlier law modules; dependency edges land in the lane index; the helper's content folds into the consumer's module hash, so editing a helper renames every consumer (stale-olean resurrection impossible — tested).
  • Sabotage propagation: helper fails → every consumer's tolerated build fails in the same run, credits die together (two-module chain test); consumer-only sabotage leaves the helper credited; counted summaries byte-identical throughout.
  • Collision guard: sibling laws named <law>_universal / <law>_prop used to fail the side build and silently strip a neighbor's credit (measured during the previous increment's review, both hazards). Now the colliding law is honestly omitted with a plain-language note in the detail artifact; the neighbor keeps its credit. New fixture + live test.

Gates: json crediting byte-identical (when_universal 5, summaries identical across normal/sabotage/revert); workspace tests green (live proof_spec incl. 3 new lane tests + 4 unit tests); fmt/clippy clean.

Review notes carried to the next increment: the guard parser should also strip @[...] attribute prefixes (not exploitable today), and aux-lemma names join the guarded set when consumers start importing helper namespaces.

🤖 Generated with Claude Code

…honestly

Three pieces of plumbing for proofs that build on previously-proven
conditional laws:

- a side-build module can import source-earlier law modules; the lane
  index records the dependency edges, and an imported helper's content
  folds into the consumer's module hash — editing a helper renames
  every consumer, so a stale compiled artifact can never satisfy the
  credit probe (machinery only; nothing emits imports yet outside the
  test hook);
- sabotage propagates: a failing helper takes every consumer's credit
  down in the same run (two-module chain test), while sabotaging only
  a consumer leaves the helper credited;
- name-collision guard: a sibling law whose name collides with an
  emitted universal-proof theorem (the <law>_universal and <law>_prop
  hazards, both measured) is now honestly omitted with a note in the
  proof detail artifact, instead of failing the side build and
  silently stripping a NEIGHBOR's credit.

json crediting byte-identical (universal credit, counted summaries
across normal/sabotage/revert); full corpus counted builds unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jasisz jasisz merged commit ed07eff into main Jun 12, 2026
5 checks passed
@jasisz jasisz deleted the lane-imports-and-collision-guard branch June 12, 2026 16:46
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