Review round 4: F1* absorbed (lied-size boundary), acceptCons_sound, kit reproducibility
Round-3 verdicts: GPT-5.6 conditionally approves (blockers closed, one
portability finding); the Claude reviewer's Socratic addendum produced
F1*, the strongest finding of the series — deployed verify_consistency
and mechanized ConsRec are NOT extensionally equal. Reproduced exactly
(witness verify_consistency(1,3,R2,R3,P(2→3))=True vs ConsRec reject;
3,405 divergences n<60; strictly one-sided; power-of-two seeding
mechanism confirmed in source).
- KNOWN-GAPS gap 14: witness, mechanism, one-sidedness, and the
pinned-pair side condition under which Theorem 3 transfers to the
deployed verifier (pacta's pin-store flow supplies it by
construction). No pacta code change; deployed behavior matches
upstream RFC 9162 implementations.
- fidelity: lied-size family — 73,573 boundary cases, 3,867 expected
divergences PINNED, one-sided direction asserted per case. Banner
rescoped: agreement over pinned families, not extensional equality.
- Theorem3.lean: acceptCons_sound (F2) — soundness over the named
acceptCons predicate, n₀=0 discharged from the non-prefix premise,
size bound derived from acceptance via new consRec_some_le. Cones
read from #print axioms; CONES/AxiomCheck/allowlist updated
(218 → 222 constants, diff = the two theorems + two generated
auxiliaries).
- F3/GPT§7: verification/lean-toolchain pin + run_bare.sh (reviewer's
standalone runner, plain public lean — verified green: 61 cones, 222
constants, gate green) + AENEAS_ENV override in check.sh and
selftest_audit.sh.
- F4: awk field-equality replaces regex-with-dots in Phase 3b.
- F5: git-tracked .pyc removed (worse than reported — it was in the
repo, not just the kit); __pycache__ gitignored; round-4 kit ships a
corpus MANIFEST.sha256 + pinned commit (also GPT's governance
condition).
check.sh exit 0, ATTESTATION GREEN; selftest exit 0, 9/9 + control.
Live LTL untouched (12 leaves, bcd15f9d…); attestation still gated on
ePrint decision + author review + explicit operator order.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 13:07:57 +00:00
|
|
|
|
# Response to reviewers — round 4
|
|
|
|
|
|
|
|
|
|
|
|
Corpus: `ltl-accumulator-verified`. Round-3 reviews received against the
|
|
|
|
|
|
round-3 freeze `9972ab4`: GPT-5.6 (conditional approval, one portability
|
|
|
|
|
|
finding) and the round-3 Claude reviewer's Socratic addendum (one new
|
|
|
|
|
|
confirmed finding, four reinstated ones). Every claim was independently
|
|
|
|
|
|
re-verified by the operator before any change. This round contains ONE
|
|
|
|
|
|
new theorem, one harness family, and packaging/scoping fixes. No
|
|
|
|
|
|
existing theorem statement or proof changed.
|
|
|
|
|
|
|
|
|
|
|
|
## The headline: F1* (Claude addendum) — CONFIRMED and absorbed
|
|
|
|
|
|
|
|
|
|
|
|
The addendum demonstrated that the deployed `verify_consistency` and
|
|
|
|
|
|
the mechanized `ConsRec` acceptance are **not extensionally equal**:
|
|
|
|
|
|
the deployed RFC 9162 iterative verifier accepts honest proofs under
|
|
|
|
|
|
lied size claims (witness: `verify_consistency(1, 3, R2, R3, P(2→3)) =
|
|
|
|
|
|
True`; ConsRec rejects). Reproduced exactly on the operator machine
|
|
|
|
|
|
against deployed pacta: same witness, same 3,405 divergences for
|
|
|
|
|
|
n < 60, same strictly one-sided direction (the mechanized model is the
|
|
|
|
|
|
stricter; inclusion diverges nowhere under identical abuse), same
|
|
|
|
|
|
power-of-two seeding mechanism in the deployed source.
|
|
|
|
|
|
|
|
|
|
|
|
Absorbed as follows:
|
|
|
|
|
|
|
|
|
|
|
|
- **KNOWN-GAPS gap 14**: full statement — witness, mechanism,
|
|
|
|
|
|
one-sidedness, and the soundness-transfer side condition (the
|
|
|
|
|
|
consumer's `(n₀, r₀)` is an authentic pinned pair and `n₁` is the
|
|
|
|
|
|
authentic size behind `r₁`), which pacta's pin-store flow supplies by
|
|
|
|
|
|
construction. No exploitability against that flow is claimed or ruled
|
|
|
|
|
|
out; that assessment belongs to the signature/STH layer (gap 4).
|
|
|
|
|
|
- **Harness**: new lied-size family — 73,573 boundary cases (lied old
|
|
|
|
|
|
size exhaustive for n < 60, lied new size sampled), 3,867 expected
|
|
|
|
|
|
divergences PINNED, and the one-sided direction asserted on every
|
|
|
|
|
|
case: a single `lean=True / deployed=False` instance fails the run.
|
|
|
|
|
|
These families would have caught F1* in round 1; now they guard it
|
|
|
|
|
|
forever.
|
|
|
|
|
|
- **Banner**: `FIDELITY GREEN` now reads "agreement over the pinned
|
|
|
|
|
|
case families (not extensional equality; KNOWN-GAPS gap 14)". The
|
|
|
|
|
|
STATEMENT-MAP fidelity row and Theorem-3 row carry the same scoping.
|
|
|
|
|
|
- **No pacta code change.** The deployed behavior matches upstream
|
|
|
|
|
|
RFC 9162 implementations; the consumer flow enforces the side
|
|
|
|
|
|
condition (`n₀` comes from the consumer's own pin, never from the
|
|
|
|
|
|
peer; `(n₁, r₁)` arrive together in one signed head). pacta also
|
|
|
|
|
|
remains change-frozen during paper processing.
|
|
|
|
|
|
|
|
|
|
|
|
## F2 — `acceptCons` routed through zero theorems (CONFIRMED, fixed)
|
|
|
|
|
|
|
|
|
|
|
|
New theorem `acceptCons_sound` (Theorem3.lean): soundness stated over
|
|
|
|
|
|
the named `acceptCons` predicate the harness tests — the consistency
|
|
|
|
|
|
twin of round-2's `acceptIncl_sound`. The `n₀ = 0` disjunct is
|
|
|
|
|
|
discharged from the non-prefix premise; the size bound `n₀ ≤ n₁` is
|
|
|
|
|
|
derived from ConsRec acceptance itself via the new lemma
|
|
|
|
|
|
`consRec_some_le` (the `n₀ > n` branch returns `none`), so the caller
|
|
|
|
|
|
owes nothing beyond acceptance + wrong-prefix. Cones (read from
|
|
|
|
|
|
`#print axioms`, as always): `consRec_some_le` = [propext,
|
|
|
|
|
|
LTLAcc.sha256, Quot.sound]; `acceptCons_sound` = [propext,
|
|
|
|
|
|
Classical.choice, LTLAcc.sha256, Quot.sound]. Both are in CONES,
|
|
|
|
|
|
AxiomCheck, and the inventory allowlist (218 → 222 constants; the diff
|
|
|
|
|
|
is exactly the two theorems plus their two generated auxiliaries).
|
|
|
|
|
|
|
|
|
|
|
|
## F3 — Lean-side kit reproducibility (CONFIRMED, fixed)
|
|
|
|
|
|
|
|
|
|
|
|
`verification/lean-toolchain` now pins `leanprover/lean4:v4.30.0-rc2`,
|
|
|
|
|
|
and `verification/run_bare.sh` is the reviewer's standalone runner:
|
|
|
|
|
|
plain public `lean`, no lake, no Aeneas checkout — compile all modules,
|
|
|
|
|
|
print all cones, run the inventory gate. Verified green on this machine
|
|
|
|
|
|
(under the operator's memory-cap discipline): 61 cone lines, 222
|
|
|
|
|
|
constants, gate green. check.sh remains the operator's button.
|
|
|
|
|
|
|
|
|
|
|
|
## F4 — regex metacharacters in Phase 3b (CONFIRMED, fixed)
|
|
|
|
|
|
|
|
|
|
|
|
The `PINNED BUT NOT INVENTORIED` check now uses awk field equality
|
|
|
|
|
|
instead of a regex containing the constant name; the module-manifest
|
|
|
|
|
|
greps were already `-F`. Dots no longer act as wildcards anywhere in
|
|
|
|
|
|
the gate.
|
|
|
|
|
|
|
|
|
|
|
|
## F5 — kit hygiene (CONFIRMED, fixed; one sharpening)
|
|
|
|
|
|
|
|
|
|
|
|
The stray `.pyc` was worse than reported: it was **git-tracked**, which
|
|
|
|
|
|
is why `git archive` shipped it. Untracked; `__pycache__/`/`*.pyc`
|
|
|
|
|
|
gitignored. The round-4 kit gives the corpus tarball the same treatment
|
|
|
|
|
|
as the pacta target: `MANIFEST.sha256` over every file in the archive
|
|
|
|
|
|
plus the pinned public commit and repo URL — this also implements
|
|
|
|
|
|
GPT's governance condition (publish hashes of the audit-critical
|
|
|
|
|
|
files; they are all in the archive the manifest covers).
|
|
|
|
|
|
|
|
|
|
|
|
## GPT §7 — hard-coded toolchain bootstrap (CONFIRMED, fixed)
|
|
|
|
|
|
|
|
|
|
|
|
`AENEAS_ENV` override with a clear FATAL message in both check.sh and
|
|
|
|
|
|
selftest_audit.sh, exactly as recommended; default unchanged for the
|
|
|
|
|
|
operator. Together with F3 this closes the "reviewer-friendly
|
|
|
|
|
|
push-button" gap: reviewers get `run_bare.sh`, operators keep the
|
|
|
|
|
|
guarded button.
|
|
|
|
|
|
|
|
|
|
|
|
## GPT §9 — paper-language conditions
|
|
|
|
|
|
|
|
|
|
|
|
Adopted into the paper-cycle queue verbatim (they overlap the queue
|
|
|
|
|
|
built across rounds 1–3), plus F1*'s two additions: the fidelity
|
|
|
|
|
|
sentence must say "finite differential testing over pinned families,
|
|
|
|
|
|
extensional equality is false for consistency (one-sided)", and
|
|
|
|
|
|
Theorem 3's deployment claim must carry the pinned-pair side condition.
|
|
|
|
|
|
The paper is edited in its own cycle, not in this corpus.
|
|
|
|
|
|
|
|
|
|
|
|
## Reviewer-process note (kept, per this project's candor convention)
|
|
|
|
|
|
|
|
|
|
|
|
The round-3 Claude reviewer's self-analysis (Q1–Q7) found its own
|
|
|
|
|
|
"confirmed/verified" inflations and then did what the drill demands:
|
|
|
|
|
|
applied constructive-witness standards to its own strongest doubt and
|
|
|
|
|
|
produced F1*. Its round-3.5 addendum is the strongest single review
|
|
|
|
|
|
artifact this corpus has received. The operator re-verified every claim
|
|
|
|
|
|
in it anyway — trust nothing, including good news.
|
Review round 3: environment-derived audit surface, self-contained kit
Round-2 external reviews (GPT-5.6 + second Claude) converged on the
coverage gate being evadable (H1/NEW-1); GPT additionally proved the
kit's fidelity target could not run (H2) and the namespace-collision
attack that defeats any source-regex fix. This round adopts GPT's
required correction in full:
- Proofs/Inventory.lean: declaration inventory read from the compiled
Lean environment — every constant of every corpus module, fully
qualified, unfiltered (compiler auxiliaries and _private mangles
pinned too), with kind and axiom cone; own cone walker cross-checked
in-process against core collectAxioms (hard error on divergence).
- verification/inventory-allowlist.txt: all 218 constants pinned.
- inventory_gate.sh: fail-closed diff both directions (UNCLASSIFIED /
STALE), INV-COUNT truncation guard, exactly-one-axiom invariant.
- check.sh Phase 3b rewritten around the gate + manifest⇔inventory
drift checks + CONES⇔inventory cone cross-check (two independent
computations must agree). EXCLUDE table gone (sha256/Bytes are
ordinary audited entries now).
- selftest_audit.sh: 9 adversarial cases against the production gate
(attributed/indented/private/instance, namespace collision, smuggled
axiom, deleted decl, unmanifested Proofs/ and gen/ modules) + positive
control — all defeated (GPT release condition 2).
- M1: recursive orphan-olean guard (caught a stray dev artifact on its
first run), gen/ dead-file check, corpus-wide single-axiom pin.
- L1/NEW-2: acceptIncl_sound drops the redundant hm (derived from
hacc.1); cone unchanged.
- M2/M3: STATEMENT-MAP counts 230,271/230,016; non-vacuity guard
wording narrowed to what the guards actually certify.
- README layer table: stale L4/pin-store rows fixed (missed by both
round-2 reviewers AND the round-2 revision — found in self-review).
- KNOWN-GAPS 12 (audit-gate lineage + residual limits), 13 (round-2 kit
target not self-contained); gap 2 count fixed.
- RESPONSE-TO-REVIEWERS.md: round-3 disposition of every finding.
Kit round 3 additionally ships the complete stdlib-only import closure
of pacta.transparency (content-addressed vs pacta 3d81d53), the
clean-extraction fidelity transcript (exit 0, 230,271+230,016, zero
mismatches), the ATTESTATION GREEN check.sh transcript, and the
self-test transcript.
The live LTL remains untouched (12 leaves, root bcd15f9d…);
attestation stays blocked pending ePrint decision + author review +
explicit operator order.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 22:32:18 +00:00
|
|
|
|
|
|
|
|
|
|
## What did NOT change
|
|
|
|
|
|
|
Review round 4: F1* absorbed (lied-size boundary), acceptCons_sound, kit reproducibility
Round-3 verdicts: GPT-5.6 conditionally approves (blockers closed, one
portability finding); the Claude reviewer's Socratic addendum produced
F1*, the strongest finding of the series — deployed verify_consistency
and mechanized ConsRec are NOT extensionally equal. Reproduced exactly
(witness verify_consistency(1,3,R2,R3,P(2→3))=True vs ConsRec reject;
3,405 divergences n<60; strictly one-sided; power-of-two seeding
mechanism confirmed in source).
- KNOWN-GAPS gap 14: witness, mechanism, one-sidedness, and the
pinned-pair side condition under which Theorem 3 transfers to the
deployed verifier (pacta's pin-store flow supplies it by
construction). No pacta code change; deployed behavior matches
upstream RFC 9162 implementations.
- fidelity: lied-size family — 73,573 boundary cases, 3,867 expected
divergences PINNED, one-sided direction asserted per case. Banner
rescoped: agreement over pinned families, not extensional equality.
- Theorem3.lean: acceptCons_sound (F2) — soundness over the named
acceptCons predicate, n₀=0 discharged from the non-prefix premise,
size bound derived from acceptance via new consRec_some_le. Cones
read from #print axioms; CONES/AxiomCheck/allowlist updated
(218 → 222 constants, diff = the two theorems + two generated
auxiliaries).
- F3/GPT§7: verification/lean-toolchain pin + run_bare.sh (reviewer's
standalone runner, plain public lean — verified green: 61 cones, 222
constants, gate green) + AENEAS_ENV override in check.sh and
selftest_audit.sh.
- F4: awk field-equality replaces regex-with-dots in Phase 3b.
- F5: git-tracked .pyc removed (worse than reported — it was in the
repo, not just the kit); __pycache__ gitignored; round-4 kit ships a
corpus MANIFEST.sha256 + pinned commit (also GPT's governance
condition).
check.sh exit 0, ATTESTATION GREEN; selftest exit 0, 9/9 + control.
Live LTL untouched (12 leaves, bcd15f9d…); attestation still gated on
ePrint decision + author review + explicit operator order.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 13:07:57 +00:00
|
|
|
|
All pre-existing theorem statements and proofs; the axiom boundary
|
|
|
|
|
|
(single opaque `sha256`); the 230,271/230,016 family pins; the live
|
|
|
|
|
|
transparency log (12 leaves, root `bcd15f9d…`); deployed pacta.
|
|
|
|
|
|
Attestation remains blocked pending the ePrint decision, the author's
|
|
|
|
|
|
read, and an explicit operator order.
|