Skip to content

RAV-1703: Agentropy v1.0.1 — verify Overmier review claim-by-claim, patch paper and code, response dossier - #3

Open
nwalker85 wants to merge 12 commits into
mainfrom
release/v1.0.1
Open

RAV-1703: Agentropy v1.0.1 — verify Overmier review claim-by-claim, patch paper and code, response dossier#3
nwalker85 wants to merge 12 commits into
mainfrom
release/v1.0.1

Conversation

@nwalker85

Copy link
Copy Markdown
Owner

Why

Kurt Overmier's open technical review of v1.0.0 (received 2026-08-22, verdict major revision) asked for factual corrections, misread intent, disagreements in the author's own words, and post-v1 work clearly distinguished. This PR is the verification, the patch, and the dossier the author response is written from. It does not contain the author response — that is Nate's byline.

Linear: RAV-1703.

What is in it

Verification (docs/reviews/2026-08-22-overmier-v1.0.0/) — every claim in the review's eleven sections and every row of the 23-row evidence matrix has a verdict and a file:line or script receipt. Run against the bytes downloaded from Zenodo (md5 match; 25/25 files sha256-identical to tag v1.0.0 = main@91df6c0). Kurt's harness reproduced byte-identically under Python 3.14 / cryptography 46.0.4, 3.10 / 50.0.1, and 3.10 / 3.4.8 (his exact version). All five demos and the 50,000-agent scale run reproduced.

Verdict Count
CONFIRMED 31
OVERSTATED 2 (regeneration is a one-tick offset, not absent; Appendix C already defers the "law of life" claim)
NUANCE 3
NOT-REPRODUCED 0

New finding beyond the review: the IoT mass-gate floor (512,000 B) is ~5× the heaviest agent the demo can build (94,461 B), so load-shedding cannot occur in the reported experiment at all.

v1.0.1 patch — one commit per fix, no new architecture

  • fix(topology): sorted neighbour iteration — seeded runs are now identical across PYTHONHASHSEED (the paper's integers were one process-dependent draw).
  • fix(token-economy): gateway enforces its declared price — interact(max_layers=), insufficient_funds refused before consumption, exactly base_cost layers charged (asserted). Copy-replay of a fully funded agent is not fixed and is documented as a known limitation (v2).
  • fix(marketplace): pools on the simulation clock; nutrient accounting counts only what was accreted (77.3 % → 29.3 %); minted overhead reported, not enforced.
  • fix(iot-demo): one shared topology; requested-vs-decoded table; gate-blocked count.
  • fix(ablation): honest signal/loss for RANDOM (the 1.9× "degradation" was an invented 50/50 split — it is 3.1×); new rate-matched RANDOM-MATCHED control.
  • fix(marketplace-demo): seeded behaviour RNG.
  • test: 31 pytest tests incl. known-limitation tests that pass while the limitation is present; requirements*.txt, pyproject.toml; CI on 3.10/3.12/3.13 plus a cryptography==3.4.8 job.
  • docs(paper): paper/ERRATA-v1.0.1.md (E1–E15, F1–F9) and inline v1.0.1 erratum / v1.0.1 wording marks. "Establishes necessity" → "is consistent with"; "Without Trust" → "Without a Trusted Intermediary for the Arithmetic"; double-spending, key-class secrecy, non-repudiation, bidirectional mapping, carrying capacity / boom-bust / speciation withdrawn or narrowed. Appendix B and C are verbatim (diffed against 91df6c0).

Dossier (docs/review/OVERMIER-RESPONSE-DOSSIER.md) — four buckets matching Kurt's four asks; §3 is twelve questions for Nate with evidence on both sides and no answers; §4 names the paper-λ / grammar-λ collision first, carries every honesty constraint verbatim (Experimental; production not authorized; expires 2026-10-24; D2 narrowed not closed; Vór designed not provisioned; G3-9 absent), corrects the lane brief (mimir-grammar v0.7.0 is PR #4, open, not on main), and maps Kurt's six-layer stack onto the v0.6.1 §3.5 control surface.

docs/review/WHAT-WOULD-TEST-THE-THEORY.md — one page, [CS], not ratified.

Result-changing fixes (flagged, Nate's call — dossier Q9)

Price enforcement moves token-economy survival 45.5 % → 97.5 % and the rich/poor ratio 2.1× → 9.8×. Tables show both columns.

Not in this PR

Merge, tag, Zenodo deposit. Uniqueness/settlement, signing/anchoring, hidden key classes, global mass equation, reproduction, multi-seed intervals — all v2.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NUNbhZicXvn3Ar6ViX8LPQ

nwalker85 and others added 12 commits August 22, 2026 19:22
…ep for v1.0.1

Claim-by-claim verification of the 2026-08-22 draft open technical review
against main@91df6c0 (= v1.0.0). 26/28 items confirmed, 2 overstated
(regeneration clock is a one-tick offset, not absent; the definition-of-life
claim is explicitly deferred in Appendix C), 1 nuance (battery gate exists,
not exercised). Includes the three reproduction scripts, the root cause of
cross-process nondeterminism (set iteration in Topology.reachable_from),
and a scoped fix list + paper-wording list for the v1.0.1 patch.

Working notes only — not the author response.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QaKo4dUDPoqteBphoTjJo3
… review (RAV-1703)

Round 2 against the Zenodo bytes: identity proof (md5 + 25/25 sha256 vs tag
v1.0.0), reviewer's harness run under 3.14/46.0.4, 3.10/50.0.1 and 3.10/3.4.8
(byte-identical JSON), all five demos + 50k scale run reproduced, evidence
matrix mapped row by row. 31 CONFIRMED / 2 OVERSTATED / 3 NUANCE / 0
NOT-REPRODUCED. New finding: the IoT mass gate floor (512,000 B) exceeds the
heaviest demo agent (94,461 B) ~5x, so load-shedding cannot occur in the
reported experiment.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUNbhZicXvn3Ar6ViX8LPQ
…dependent (RAV-1703)

Topology.reachable_from iterated a set[str]; its order depends on
PYTHONHASHSEED and AgentBehavior.choose_node draws over the list in
order, so the same seeded run produced different results in different
processes (paper 2,113 calls / 91 survivors; reviewer 2,090-2,206 /
100-106). One sorted() restores determinism: token demo now 2,574 /
195 under hash seeds 0, 1 and 2; 2,000-agent scale run identical across
seeds. Overmier review, reproducibility section, item 24.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUNbhZicXvn3Ar6ViX8LPQ
interact() and Node.process() gain max_layers (None keeps the v1.0.0
drain-everything behaviour). ToolGateway.process_tool_call now counts
the agent's layers of the tool's class against base_cost: fewer than
the price is rejected as insufficient_funds BEFORE any layer is
consumed; otherwise exactly base_cost layers are stripped and the rest
survive (asserted). Adds LAYER_OVERHEAD = 28 to amt_core as the named
GCM geometry constant. The budget-agent demo's KEY INSIGHT is now
derived from the call log instead of asserted; the scale section
prints calls by outcome.

Closes review items 3, 5, 6, 7, 9 (1-layer payment recorded as success
against a 3-layer price; 12 layers stripped for one call). Does NOT
close item 8: a copied agent that holds the full price still pays
twice — uniqueness needs an authority outside the scheme (v2).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUNbhZicXvn3Ar6ViX8LPQ
…ted nutrients as cycled (RAV-1703)

ResourcePool.last_tick defaulted to wall-clock time.time(), so the
first simulation tick's regeneration was lost (elapsed clamped to 0)
and regenerate(0.0) fell through 'or' to wall-clock. last_tick is now
None until MarketplaceTopology.add_node sets it to simulation time;
the first tick regenerates (0 -> 5 -> 10 -> 15 -> 20 in verify_03).
This was a one-tick offset, not absent regeneration (review item 16,
OVERSTATED); the reviewer's single tick(10) now yields 100.

NutrientCycler.cycle(max_layers=) generates what will be accreted and
counts as cycled only the payload bytes embodied; unused nutrients stay
in the pool; GCM overhead minted per layer is tracked separately and
reported by the scale demo as system-level mass (measured, not
enforced). v1.0.0 counted the whole budget as cycled and accreted three
specs (items 17, 18): the reported 77.3 % recycling rate becomes ~29 %.
Speciation KEY INSIGHT is now stated from the measured survivors and
says 'niche-differential survival', not 'thrive' (item 19).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUNbhZicXvn3Ar6ViX8LPQ
… gate-blocked count (RAV-1703)

demo_6_scale rebuilt the route inside the per-agent loop, so no agent
saw battery another agent had drawn down (review item 13). One topology
is now shared. The demo prints the requested-vs-decoded budget table
(item 12: -9.2 % / +28 % / -9.2 % / -10.1 % / -12.4 %) and states the
survival-distance insight from the measured bins instead of asserting
it (item 15). It also reports the gate-blocked count and, when the
heaviest agent is under the 512,000 B gate floor (it is, by ~5x), says
plainly that load-shedding is not exercised. Interaction and layer
totals are unchanged (750 / 32,486 / 0 violations).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUNbhZicXvn3Ar6ViX8LPQ
…-MATCHED control (RAV-1703)

The RANDOM condition assigned signal = consumed // 2 (review item 21).
Both random variants now derive signal from the real layer geometry
(mass - LAYER_OVERHEAD, 0 for empty layers), exactly as interact()
measures it. With that alone the v1.0.0 'stratification degrades to
1.9x under RANDOM' becomes 3.1x: the degradation was an artifact of the
invented split.

RANDOM (kept for comparability) still removes ~1 layer per environment
key, so its depletion rate is not matched to CONTROL (item 20). The new
RANDOM-MATCHED removes exactly as many layers as CONTROL would have
decrypted, chosen class-blind: stratification 2.9x, niche score 1.00
(identical to CONTROL for pure-class agents by construction), per-class
audit 0 %. The summary interpretation now reads against the measured
rows and stops claiming the fixtures establish necessity.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUNbhZicXvn3Ar6ViX8LPQ
…claims (RAV-1703)

31 tests: conservation identity and layer geometry, bounded interact(),
gateway price enforcement (12 layers = exactly 4 calls), cross-process
determinism under different PYTHONHASHSEED values, marketplace clock and
nutrient accounting, ablation control parity, and a known-limitations
module whose tests PASS while the limitation is PRESENT (copy-replay,
plaintext key_class, mutable public ledger, lossy IoT round trip) so
each is stated in code next to the code. requirements*.txt and
pyproject.toml pin the verified cryptography floor (3.4.8, the
reviewer's version). GitHub Actions runs the suite on 3.10/3.12/3.13
and once more on 3.10 with cryptography==3.4.8. Overmier review,
reproducibility section, item 26; recommendation #10.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUNbhZicXvn3Ar6ViX8LPQ
… reproducible (RAV-1703)

AgentBehavior.choose_node draws from the module-level random, which the
marketplace demo never seeded, so every run differed (reviewer: 0/0 then
2/1 speciation survivors; author: 2/0/1). Seeds it with AMT_SEED (default
42). With the neighbour-order fix the demo is now byte-identical across
PYTHONHASHSEED values apart from wall-clock timing lines.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUNbhZicXvn3Ar6ViX8LPQ
… review (RAV-1703)

Adds paper/ERRATA-v1.0.1.md (E1-E15 corrections, F1-F9 code changes,
v2 scope, and what the review got wrong) and marks every correction
inline as "v1.0.1 erratum" / "v1.0.1 wording" so the deposited v1.0.0
text remains legible. Headline changes: double-spending is not
prevented (E1); the gateway now enforces its price and the token
scenarios/tables are re-reported (E2, E3, E14); key-class presence is
visible (E4); "Without Trust" narrowed to "without a trusted
intermediary for the arithmetic" and non-repudiation withdrawn (E5);
IoT mapping is lossy and the gate cannot bind (E6, E7, E8); marketplace
regeneration is a one-tick offset, recycling is 29.3% not 77.3%, and
the ecological vocabulary is replaced by what a birthless model can
show (E9-E11); the ablation, with controls repaired, is consistent with
rather than establishes necessity, and RANDOM's 1.9x degradation was an
accounting artifact (E12); zero violations is a bookkeeping statement
(E13); threat model stated (E15). Appendix C is unchanged. README and
CITATION.cff bumped to 1.0.1.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUNbhZicXvn3Ar6ViX8LPQ
…" note (RAV-1703)

docs/review/OVERMIER-RESPONSE-DOSSIER.md — the receipts pile Nate writes
the author response from, in Kurt's four buckets: (1) factual
corrections (regeneration is a one-tick offset; Appendix C defers the
"law of life" claim) plus nuances and the author's own findings; (2)
misread intent / threat model, with the paper text he missed quoted;
(3) twelve substantive disagreements framed as questions for Nate, with
evidence on both sides and no answers; (4) post-v1 work with every
honesty constraint attached verbatim, the paper-λ vs grammar-λ
collision named first, the mimir-grammar state corrected (v0.7.0 is PR
#4, open, not on main), and Kurt's six-layer stack mapped stage for
stage onto the v0.6.1 §3.5 control surface. Not a draft of the
response; nothing is addressed to Kurt.

docs/review/WHAT-WOULD-TEST-THE-THEORY.md — one page, [CS], not
ratified: why the CFO standing-office direction (2026-09-04) is the
first place the theory can lose, with a stated falsifier and the
discipline it inherits. No design.

VERIFICATION-NOTES §3.1 now records what shipped, by commit.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUNbhZicXvn3Ar6ViX8LPQ
@coderabbitai

coderabbitai Bot commented Sep 6, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: dd8085c8-9a6d-4ee1-a3f7-e0617ae255ac


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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