Wiki · Evidence & Verdicts
/lab-team-review MERGED VERDICT (v2, post-fix) — C-C2 uni_self_audit
[redacted: category] — 1 operator path. Nothing else was altered. The document is otherwise exactly as it is written in the repository, and the sha256 below is of the original, so what was ingested stays checkable.How to read this page
Three ways to read this page. Precise is the document itself, exactly as it is written in the repository. Plain and Clear were written for this website to help you meet that document — they are about it. They are not it, and they are not evidence.
Eighty-seven dated pages: receipts, pre-registrations, handoffs, validation records and review verdicts. A receipt is written at the moment a piece of work was checked. It names what was claimed, the commit and the seed, what was actually run, and the outcome in one of a small set of controlled words. Then it names what the work did not achieve. That last part is what makes it a receipt rather than an announcement. A pre-registration is the same discipline run in advance: the conditions that would count as a pass and the conditions that would falsify the claim are written down before the run, so neither can be adjusted once the numbers arrive.
That is why so many small dated stubs are an audit trail rather than noise. No one of them is meant to be a good read. The value is in the sequence and in the dates, because you can watch a prediction be registered, then the run happen, then the verdict land — sometimes against the prediction. Pages here record a falsified result, a rejected fix, a retracted overclaim, and a green receipt that turned out not to be reproducible from the commit that carried it. A record that carried only successes would be worth a good deal less than this one.
A gentle way in is to read a pre-registration first, so the shape becomes familiar, then a result page, then one of the corrections. This section sits off the main navigation on purpose: it is the record you check the rest of the site against, not the place to begin.
What it is not: documentation, and not a summary. Nothing here has been tidied in hindsight. Every entry reads as of its date, a later entry may overturn an earlier one, and the presence of a page is not a claim that its result stood.
Your browser cannot switch reading levels, so the document itself is shown.
Precise — the source document
This is the document. Rendered from the repository at the commit above, with nothing rewritten for the web. A gate re-renders it on every deploy and fails the build if a single byte differs.
verdict: PASS evidence_class: C supersedes: docs/receipts/lab_team_review_85b0e8c.md
/lab-team-review MERGED VERDICT (v2, post-fix) — C-C2 uni_self_audit
- Base SHA:
85b0e8c(working tree, spec-correction pass applied on top, uncommitted) - Mode: real (5 independent persona agents re-reviewing the corrected spec)
- Files reviewed:
production\mcp\SPEC_uni_self_audit.mdproduction\mcp\SPEC_uni_public_mcp.md
Fix summary (what changed before this re-review)
Both target files are corrected. The other modified files in the working tree predate this session and were not touched by me (I only opened/edited the two files named in the task).
Summary
I re-verified every finding against the live repo at [redacted: operator-path]\repos\UNI.MineCraft (HEAD 85b0e8c, matching the review receipt) before writing. All 13 findings' citations checked out against current code — nothing had drifted since the review. Full details of what I found while re-verifying are in the "What changed" section I wrote into the spec itself; key points:
production\mcp\SPEC_uni_self_audit.md — rewritten in full (not patched):
- on_chip/jit_flavor —
on_chipnow matchesOnChip.info/0's real 4 keys (on_chip.ex:20-28);jit_flavorreplaced byjit_active(bool), sourced explicitly fromOnChip.jit?/0(on_chip.ex:15-17). - kins[] sourcing —
active_organsre-sourced toGenome.active_organs(brain.dna)(genome.ex:497) via a named in-processRegistry.lookup+:sys.get_stateprobe;novelty_gainkept with the exact mechanism named (COLLECTOR_RCON_BRIEF.md:176-186) plus its blocking-cost tradeoff stated explicitly;genome_lineagedropped from v1 with a named two-part prerequisite (agent.ex:106-111, 208-217);memory_bin_pathcorrected to the real per-agent convention (colony.ex:99-109,21) with an explicit relativization step. - Claim-fence leak — added a binding field-level allowlist; also structurally avoided since the redesigned transport never reads
Mind.of/2's fields at all. - envelope.schema.json — reframed as aspirational/future (matches the real flat
metadata()shape, server.py:91-118), not claimed as conformant. - Transport — named exactly: new
GET /internal/self_auditon the existingSpUiWebPhoenix router (ui/lib/sp_ui_web/router.ex:27), same BEAM VM asSP.Runtime.*(verified viaSP.Show/HealthControlleralready calling in-process), full behavior specified. - board_snapshot_hash — canonicalization named (
:erlang.term_to_binary(kins, [:deterministic])), scope named (redactedkins[]only), determinism test added. - memory_bin_sha256 — rescoped best-effort/eventually-consistent (
mc.ex:552-554's non-atomic write named), flip + degraded-mode tests added. - Signature —
@mcp.tool(structured_output=True)+@_threaded. - Registration — explicit 3-step checklist (server.py:928-932 literal set + help.py entry).
- Rate limit — reconciled to 1 req/source/5s in both files.
- Test coverage — rewritten to field-provenance, flip, degraded-source (per dependency), cross-check, and hash-determinism/degraded-mode tests.
- FALSIFIES — added per CLAUDE.md science-gate discipline #4.
- Framing — "the being narrates its own state" → "machine-readable state attestation" throughout.
production\mcp\SPEC_uni_public_mcp.md — minimal, scoped edit: get_self_audit()'s rate limit changed from 30s to 5s (now agrees with SPEC_uni_self_audit.md and this file's own server-wide default/red-team test), with a cross-reference note explaining the prior three-way contradiction.
One self-correction caught during writing: my first draft of the active_organs sourcing cited runs/probe_colony.exs:4 for the Registry.lookup+:sys.get_state pattern — that script only does bulk Board.all/0, not per-agent state reads. The correct citation is runs/probe_curiosity.exs:30-32 (via docs/observability/COLLECTOR_RCON_BRIEF.md:173-181). Fixed before finalizing.
Nothing from the 13 findings was left unresolved. The two genuinely-new-work items (the /internal/self_audit Phoenix endpoint, and genome_lineage's storage prerequisite) are named as NEW work with exact behavior/signature per the task's instructions, not invented as existing citations — neither requires touching .ex/.py source in this pass, consistent with the spec-only scope. board_snapshot_hash's scope decision (kin-filtered subset, not full Board.all/0) and the transport choice (Phoenix HTTP route over distributed-Erlang RPC) were genuine design decisions I made explicitly and documented the reasoning for, as instructed ("pick one, name it exactly").
Persona verdicts (re-review)
math-breaker (Falsifier), lab-team-review panel — docs/lab_team/01_math_breaker.md. Independent re-review of the rewritten production/mcp/SPEC_uni_self_audit.md + production/mcp/SPEC_uni_public_mcp.md against the REVISE verdict at docs/receipts/lab_team_review_85b0e8c.md.
- Verdict: SIGN_WITH_CHANGES
- Rationale: Re-ran the gauntlet against the ACTUAL rewritten spec with the actual source files it now cites, independently, not trusting the spec's own citations. Verdict: earn SIGN — mostly earned, three named gaps keep it at SIGN_WITH_CHANGES.
What checks out, verified byte-for-byte against live source (not the prior receipt's word):
- on_chip: SP.Runtime.OnChip.info/0 (on_chip.ex:20-28) returns exactly {emu_flavor, schedulers_online, logical_processors, dirty_cpu_schedulers} — the spec's new example now matches this precisely, and jit_active is correctly re-sourced to the real OnChip.jit?/0 (on_chip.ex:15-17), a boolean, kept separate from emu_flavor. Finding 1: RESOLVED, exact match.
- kins[]: Board.all/0 (board.ex:29-34) really does carry none of the claimed per-kin metadata — confirmed via Agent.publish/1 (agent.ex:398-417, verified) which Map.merges SP.Runtime.Mind.of/2's output (mind.ex:15,19-31, verified: context/stress/emotion/confidence/focus/intent/report) with only username/kin/mode/senses/action/count/phase. active_organs is correctly re-sourced to Genome.active_organs(brain.dna) (genome.ex:497, verified) via a named in-process Registry.lookup(SP.Runtime.Registry, u) + :sys.get_state(pid) probe — I independently confirmed the Registry really is started under that exact global name (supervisor.ex:20,51) and that this exact two-step pattern is the real, already-used mechanism (runs/probe_curiosity.exs:30-32, COLLECTOR_RCON_BRIEF.md:176-186, both verified verbatim) modulo the correct in-process-vs-distributed-Erlang distinction the spec draws (verified: ui/mix.exs:32 makes
stratified_palimpsesta path dependency of the Phoenix app, so SP.Runtime./SP.Brain. really do run in the SAME BEAM VM as the router — this is the load-bearing architectural fact behind the whole new transport design, and it's true). novelty_gain's exact read (Map.get(brain.dna, :novelty_gain, 0.0)) matches the real probe site verbatim, including the honest blocking-cost callout. genome_lineage's drop is correctly grounded (agent.ex:106-111, 208-217, 210, all verified verbatim). memory_bin_path's real convention (colony.ex:99-110, 21, verified verbatim: Path.join(@repo_root, "runs/colony/#{username}.bin")) and its relativization step are both correct and complete. Finding 2: RESOLVED, exact match on every field. - Claim-fence leak: Mind.of/2's fields and Awareness.report/1's literal 'feel:#{b.emotion}' (awareness.ex:52-54, verified) are correctly named as the real leak surface, the new transport structurally avoids it (kins[] never touches Board.all/0's Mind-merged fields), and the binding allowlist is explicit. Finding 3: RESOLVED.
- envelope.schema.json: correctly reframed as aspirational against the real, verified metadata() shape (server.py:91-118) and the real, verified envelope.schema.json requirement (nested {schema_version,envelope,result}, additionalProperties:false at both levels, envelope.schema.json:6-46). Finding 4: RESOLVED for THIS file, but see concern 1 — the sibling public spec was not reconciled.
- Transport: GET /internal/self_audit on the real SpUiWeb router (router.ex:27, verified) modeled on the real /producer/health route (health_controller.ex:11-19, verified, calls SP.Show.status/0 in-process with zero RPC) is architecturally sound and grounded in the real supervision story (show.ex:9-12, verified verbatim) plus the real cross-app dependency (ui/mix.exs) that makes in-process access actually possible. Finding 5: RESOLVED.
- board_snapshot_hash: :erlang.term_to_binary(kins, [:deterministic]) is a real OTP≥21 feature giving byte-identical output independent of map key insertion order; scope (redacted kins[] only) is named; a determinism test (including a reordered-map case) is specified. Finding 6: RESOLVED (a caveat on external reproducibility is soft, not blocking — evidence_class C is command-output, not independently-reproduced class A per docs/GATES.md's own taxonomy, so this isn't held to that bar).
- memory_bin_sha256: MC.save/2's real non-atomic File.write! (mc.ex:552-554, verified verbatim) is correctly named as the reason the hash is rescoped best-effort/eventually-consistent, with a flip + degraded-mode test added. Finding 7: RESOLVED.
- Signature (@_threaded), Registration (3-step: tool + read_only literal set at server.py:928-932 + help.py TOOL_HELP bijection at help.py:4-5,55-56), rate-limit reconciliation to 1/5s in both files, the FALSIFIES clause, and the framing cleanup (no 'narrate'/'being'/'feel' language anywhere in the current file) — all verified present and accurately cited against live server.py/help.py. Findings 8, 9, 10, 12, 13: RESOLVED. Finding 11 (test coverage): substantially resolved (field-provenance, flip, degraded-source-per-dependency, cross-check, two determinism tests) — good-faith, matches or exceeds what was asked, modulo the new timeout-path gap in concern 2.
This is not a fundamental math violation and there is no FE term being smuggled, ungrounded, or left without a decay/falsifier proof — this tool is Class C plumbing, as the original review itself said, and the plumbing is now honestly and almost completely traced to real code. The three concerns above are narrow, named, and each individually fixable without a rewrite: one cross-file contradiction (envelope conformance) the fix pass didn't propagate to its sibling spec, one newly-introduced concurrency/latency design decision left open with no bound and one missing test, and one trivial headcount. None require reopening the Sources section that was the real substance of the original REVISE. SIGN_WITH_CHANGES: land once those three are named and closed.
- Concerns:
- SPEC_uni_public_mcp.md:21 still reads 'Every tool returns an envelope conforming to production/schemas/envelope.schema.json v1' with no exception carved out — but SPEC_uni_self_audit.md's own 'Public-surface exposure' section (lines 326-327) states get_self_audit() returns 'the SAME field allowlist above and the SAME flat metadata()-shaped result,' and SPEC_uni_self_audit.md's own 'Result shape' section (lines 46-56) already proves that flat metadata() shape (server.py:91-118, verified live) is structurally incompatible with envelope.schema.json's required nested {schema_version, envelope, result} / additionalProperties:false shape (envelope.schema.json:6-46, verified live). This fix pass edited SPEC_uni_public_mcp.md for the rate-limit reconciliation (its own get_self_audit() section, lines 70-78) but left the blanket conformance claim at line 21 standing directly above the tool list that includes the one tool it now demonstrably fails for. This is the exact class of checkably-false provenance/conformance claim finding #4 targeted — SPEC_uni_self_audit.md resolved it locally but the sibling file's blanket claim was never reconciled to match, so the two specs under review still directly contradict each other on the one topic (envelope conformance) this whole finding was about. Fix: add an explicit exception to SPEC_uni_public_mcp.md:21/get_self_audit() naming SPEC_uni_self_audit.md's aspirational-schema framing, or name a real wrapper that converts metadata() into the nested envelope shape before get_self_audit() ships.
- The corrected transport design (new since the reviewed REVISE draft, which named no transport at all) introduces an unresolved latency-budget gap. kins[] now costs one blocking :sys.get_state probe per live agent, each with a named 500ms per-kin timeout (SPEC_uni_self_audit.md ~lines 172-180), but whether probes run 'sequentially or parallelized' is explicitly left an open choice in the same sentence, and no total-request latency budget is named anywhere in the spec. Colony scale is verified live at colony.ex:23 (@max_kin 9, spawn_agent/2 guards kin in 0..@max_kin) — up to ~10 live kin rows. Sequential worst case is therefore ~5s from :sys.get_state probes alone, BEFORE the colony_gate subprocess shell-out, the phoenix HTTP GET, and per-kin .bin file hashing are added on top — which can meet or exceed the tool's own public rate-limit window of 1 req/source/5s (reconciled in both specs). The 'bounded' claim in the spec's own text ('a handful of live generations each ... this is bounded') is not actually bounded by any stated number, and the Test coverage section's degraded-mode test only covers a missing/unreadable .bin file (item 3, 4th bullet) — there is no test for the distinct failure mode this same section just introduced: an unresponsive Agent process forcing a kin's active_organs/novelty_gain to degrade to null via the 500ms timeout. Name the probe concurrency strategy (parallelize via Task.async_stream with an overall deadline, not sequential) and add the missing timeout-degradation test case.
- Minor headcount drift in the envelope-conformance argument: SPEC_uni_self_audit.md's Result-shape section states 'none of the 25 existing tools in production/mcp/server.py produce it today.' A live count of @mcp.tool(structured_output=True)-decorated functions in production/mcp/server.py (grepped and enumerated by name: get_show_state, list_sources, list_scenes, list_clips, list_segments, list_guests, caption_status, approvals_pending, approvals_status, cut_to, set_music_volume, duck, narrate, set_overlay, roll_clip, start_segment, set_layout, panic, open_session, close_session, command, remove_guest, admit_guest, schedule, start_broadcast, stop_broadcast) is 26, not 25 — the '9 existing read-only tools' sub-claim is correct (verified against server.py:424-539), but the '25' total is off by one against the live file. Low severity (doesn't change the conformance argument's validity) but a self-attestation spec's own numeric claims about its host file should be exact; fix the count or say 'every existing tool' instead of a stale number.
aif-core-theorist (docs/lab_team/02_aif_core_theorist.md)
- Verdict: SIGN_WITH_CHANGES
- Rationale: Re-reading production/mcp/SPEC_uni_self_audit.md against the live repo (lib/sp/runtime/on_chip.ex, lib/sp/runtime/agent.ex, lib/sp/runtime/mind.ex, lib/sp/brain/awareness.ex, lib/sp/brain/genome.ex, lib/sp/brain/colony.ex, lib/sp/brain/mc.ex, lib/sp/runtime/board.ex, lib/sp/runtime/supervisor.ex, ui/lib/sp_ui_web/router.ex + health_controller.ex, ui/mix.exs, production/mcp/server.py, production/mcp/help.py, production/schemas/envelope.schema.json, production/schemas/claim_fence.json), the load-bearing claim-fence work this fix pass was supposed to do genuinely holds up. The highest-severity prior finding -- kins[] leaking Mind.of/2's raw
reportfield containing the literal 'feel:#{emotion}' string (confirmed verbatim at lib/sp/brain/awareness.ex:53 and lib/sp/runtime/mind.ex:22-30) straight to a public proxy -- is now closed two ways at once: a binding, explicit field-level allowlist (id/kin/active_organs/novelty_gain/memory_bin_*), AND a structural redesign where the new /internal/self_audit controller never reads Board.all()/Mind.of() for anything beyond username/kin in the first place (verified: it instead reaches brain.dna via an in-process Registry.lookup/2 + :sys.get_state/1 read, which I confirmed is architecturally sound because ui/mix.exs declares{:stratified_palimpsest, path: ".."}-- SP.Runtime.* runs in the SAME BEAM VM as the Phoenix controllers, so no distributed-Erlang bridge is needed, unlike the off-node probe_curiosity.exs precedent it correctly distinguishes itself from). The 'being narrates its own state' framing overclaim is also genuinely gone, replaced with 'machine-readable state attestation' throughout, and the Purpose section now states the claim-fence rule explicitly and I verified its CLAUDE.md citation (Heavy science-gate discipline §1, 'Do not surface gland/precision/store floats as felt states') is verbatim accurate. on_chip's four-key shape and kins[]'s real per-field sourcing (including the honest blocking-cost tradeoff for the :sys.get_state probe, the relativization step for memory_bin_path against colony.ex:108/21, and the named two-part prerequisite for dropping genome_lineage) all check out exactly against the live code I re-read myself -- these are not spec-says-so claims, I traced every cited line. board_snapshot_hash's canonicalization (:erlang.term_to_binary/2 with :deterministic) and memory_bin_sha256's best-effort rescoping against mc.ex:552-554's real non-atomic write are equally solid. Where the fix pass fell short is in the seams the aggregated punch-list didn't explicitly cover: SPEC_uni_public_mcp.md's own blanket envelope-conformance claim (line 21) was left contradicting the honest fix made one file over, one illustrative example (active_organs) was 'corrected' into a still-fabricated value that the cited real function can never produce, and my own persona's guarded failure mode about novelty_gain shipping raw to the public with no interpretive guard -- flagged by this exact persona last round -- was never addressed. None of these require reopening the architecture; each is a small, named, mechanical correction. SIGN_WITH_CHANGES: land once (1) SPEC_uni_public_mcp.md:21's blanket claim is scoped to exclude get_self_audit() (or reworded to match SPEC_uni_self_audit.md's honest aspirational framing), (2) the active_organs example is replaced with real organ atoms (e.g. metabolism/homeostat/motor_cortex), and (3) novelty_gain carries an inline note identifying it as a Dirichlet information-gain term, not a felt/preference signal -- or is dropped from the public proxy. - Concerns:
- CROSS-FILE FALSE CONFORMANCE CLAIM SURVIVES THE FIX: production/mcp/SPEC_uni_public_mcp.md:21 still says 'Every tool returns an envelope conforming to production/schemas/envelope.schema.json v1,' but that same file's own get_self_audit() section (lines 70-78) says the tool returns 'the SAME flat metadata()-shaped result' as uni_self_audit. SPEC_uni_self_audit.md now correctly (and honestly) documents that this flat {ok,tool,data,evidence_class,provenance,help,docs} shape does NOT conform to envelope.schema.json's real nested {schema_version,envelope,result} + additionalProperties:false requirement -- verified myself against production/mcp/server.py:91-118 (metadata()) and production/schemas/envelope.schema.json:6-46. Fix item #4 corrected the claim in SPEC_uni_self_audit.md but never touched the blanket claim in its sibling file, so SPEC_uni_public_mcp.md now ships a checkably-false conformance claim for this one tool -- the exact defect class (unfounded envelope-conformance claim) that was a headline REVISE reason last round, just relocated one file over.
- FABRICATED EXAMPLE VALUE RECURS IN THE CORRECTED SPEC: SPEC_uni_self_audit.md line 74's example
"active_organs": ["metabolism", "hormones", "motor_control"]contains atoms that do not exist anywhere in the real organ registry. I verified lib/sp/brain/genome.ex's full @modalities/growth_plan universe (genome.ex:49-129, 226-359): :interoception, :chemotaction, :proprioception, :vision, :social_sense, :camera_control, :locomotion, :strategist, :sight_cortex, :motor_cortex, :metabolism, :homeostat -- there is no :hormones organ (SP.Brain.Hormones is a stress-computation module, not a growth_plan organ) and no :motor_control organ (the real one is :motor_cortex). Genome.active_organs/1 (genome.ex:497,repair(dna).growth_plan) -- the exact function this spec correctly cites as the Source -- can never emit either value. The spec's own illustrative example is not producible by the source it cites, a small-scale repeat of 'the spec cannot produce its own example payload from the sources it cites,' which was math-breaker's core REVISE rationale last round. - MY OWN PERSONA'S GUARDED FAILURE MODE #2 IS STILL UNRESOLVED: novelty_gain (a Dirichlet parameter-information-gain / epistemic-value term -- CLAUDE.md hard invariant #4's 'W' / monotonic-decay information term) ships raw and unlabeled to anonymous public callers via get_self_audit() (SPEC_uni_self_audit.md's 'Public-surface exposure' section reuses 'the SAME field allowlist' with no added annotation). This is precisely my persona's documented guarded failure mode ('Conflating novelty with preference. A parameter-information-gain term is information, not C.') and was explicitly raised by aif-core-theorist in the prior review (docs/receipts/lab_team_review_85b0e8c.md, concern 5: 'novelty_gain EXPOSED RAW ON THE PUBLIC SURFACE WITH NO GUARD ... the spec should either annotate the field's meaning inline or exclude it from the public variant'). The corrected spec's 'What changed' item 2 fixes the field's sourcing mechanism/cost but adds no interpretive annotation and does not exclude it from the public proxy. A bare
"novelty_gain": 0.83handed to a stranger with zero context is exactly the kind of number that gets reported as 'UNI's curiosity was measured at 0.83' -- an overclaim the mechanical claim_fence.json regex families (which only match word-tokens like feel/aware/conscious) cannot catch because it's a bare numeric field name, not narrative prose.
systems-architect
- Verdict: SIGN_WITH_CHANGES
- Rationale: All 13 findings from the prior REVISE verdict (docs/receipts/lab_team_review_85b0e8c.md) are genuinely, precisely resolved -- I independently re-verified every file:line citation in the corrected SPEC_uni_self_audit.md against the live repo rather than trusting the spec's own re-verification claim, and they check out to the exact line in every case I sampled: on_chip.ex:15-17/20-28 (jit?/0, info/0 real 4-key shape), mind.ex:19-31 (Mind.of/2's real 7 keys incl. the literal 'feel:#{emotion}' at awareness.ex:52-54, claim_fence.json:27), agent.ex:132,136 and :208-217 (active_organs call sites, the literal 'homeostat_colony' string that is matched-but-never-stored), colony.ex:21,99-109 (the real absolute memory_bin_path convention and its UNI-9-2.bin naming), mc.ex:552-554 (the real non-atomic File.write!), server.py:91-118/396-406/922-945/928-932 (metadata(), _threaded, and the literal 9-entry read_only set matching the 9 actual @_threaded tools 1:1), help.py:4-5,55-56 (the bijective TOOL_HELP contract), and envelope.schema.json:6-46 (the real nested/additionalProperties:false shape, correctly framed as aspirational for this tool). Most importantly, I independently traced the central architectural fix for the missing-transport finding (#5) end-to-end through the OTP supervision tree -- ui/lib/sp_ui/application.ex starts SP.Show.Supervisor directly under UNI_AUTOSTART=1 in the SAME SpUi.Supervisor tree as SpUiWeb.Endpoint; SP.Show.Supervisor starts SP.Brain.Colony; Colony calls SP.Runtime.Supervisor.ensure_started/1, which starts Registry/Board/agent shards -- confirming that a new Phoenix controller really can call Registry.lookup + :sys.get_state in-process with zero RPC, exactly as claimed. This is a genuinely rigorous, well-grounded rewrite, a clear step up from the reviewed draft. The residual issues I found (a real cross-file envelope-conformance contradiction between the two spec files, and an under-specified/untested directory-depth risk in the new controller's path arithmetic, plus a related death-race gap in the new per-kin GenServer probe) are concrete and fixable with a few named sentences and tests -- they don't undermine the now-solid transport/claim-fence/registration/test-plan architecture, so this clears the SIGN-WITH-CHANGES bar rather than REVISE.
- Concerns:
- Cross-file contradiction not caught by this fix pass: SPEC_uni_public_mcp.md:21 ("Every tool returns an envelope conforming to production/schemas/envelope.schema.json v1") is contradicted by SPEC_uni_self_audit.md:326-328 ("the SAME flat metadata()-shaped result") combined with SPEC_uni_self_audit.md:48-56's own statement that this flat shape does NOT conform to envelope.schema.json. Same class of issue as the already-fixed rate-limit inconsistency (prior finding #10) -- needs the same reconciliation treatment (either carve out get_self_audit() in SPEC_uni_public_mcp.md's Tools-section header, or drop the blanket claim).
- memory_bin_path absolute-path computation is under-specified and directory-depth-fragile: colony.ex:21's
@repo_root = Path.expand("../../..", __DIR__)is a private, unexported module attribute correct only for a file 3 levels below repo root (lib/sp/brain/colony.ex). The new controller (modeled on ui/lib/sp_ui_web/controllers/health_controller.ex, 4 levels below repo root) cannot call it and has no shared helper to reuse; the spec's instruction to 'compute using the SAME convention SP.Brain.Colony already uses' invites copy-pasting the identical '../../..' expression into a file at a different depth, which resolves one directory short of repo root. Because the spec elsewhere treats a missing .bin file as an expected soft-null case (not an error), this bug would silently degrade every kin's memory_bin_sha256/memory_bin_size_bytes/last_saved_utc to null rather than failing loudly. Name either an exported SP.Brain.Colony.repo_root/0-style helper both sites call, or the corrected relative-path expansion for the new controller's actual location. - Related wording risk in the same bullet: 'read the relativized file (if it exists)' should explicitly state the stat/hash read happens against the ABSOLUTE path, with relativization applied only to the value placed in the JSON response -- as worded it reads as operating on the relative string itself, whose resolution depends on the Phoenix process's cwd (not guaranteed to equal repo_root under the documented
cd ui && iex -S mix phx.serverlaunch). - No Elixir-side test is named anywhere in 'Test coverage the plan owes' for /internal/self_audit's real path/file-IO/probe behavior -- all listed tests stub the Elixir HTTP response as a Python fixture, so the path-depth risk above has zero test surface named in this spec.
- The per-kin :sys.get_state(pid) probe (New Elixir/Phoenix work, kins[] bullet) names a 500ms timeout degrade path but not the routine case where the target Agent process dies between Registry.lookup returning a pid and the :sys.get_state call reaching it (agent.ex:356-361's terminate/2 calls Board.drop on ordinary death, and Board.all/0 is snapshotted before each kin's own probe runs, so a kin can be live in the snapshot and dead by probe time). Extend the already-promised 'degrade this kin's fields to null, keep the row' treatment to this case explicitly, isolate each per-kin probe (e.g. individual Task + rescue) so one dead agent can't crash the whole /internal/self_audit call, and add a matching test alongside the existing missing-.bin-file test.
- Minor/non-blocking: 'none of the 25 existing tools in production/mcp/server.py produce it today' undercounts -- grep confirms 26 @mcp.tool(structured_output=True) registrations live in server.py, not 25. Doesn't change the substance of the claim (none conform either way), but this rewrite otherwise re-verified every citation to the exact line, so this number is worth tightening too.
red-experimentalist
- Verdict: SIGN_WITH_CHANGES
- Rationale: Every one of the 13 prior REVISE findings is genuinely and verifiably resolved -- I independently re-read each cited file:line against the live repo (on_chip.ex, agent.ex, board.ex, mind.ex, awareness.ex, genome.ex, colony.ex, mc.ex, supervisor.ex, router.ex, health_controller.ex, application.ex, server.py, help.py, envelope.schema.json, claim_fence.json, COLLECTOR_RCON_BRIEF.md/probe_curiosity.exs) and found no fabrication: OnChip.info/0's real 4-key shape, the genome-level novelty_gain probe mechanism (matching the actual COLLECTOR_RCON_BRIEF/probe_curiosity.exs precedent, not the model-sub-struct field), the claim-fence allowlist correctly avoiding the real 'feel:' leak in Awareness.report/1, the relativization of colony.ex's genuinely-absolute path, the @_threaded pattern and 3-step registration checklist matching server.py verbatim, and the rate-limit now reconciled to 5s in both spec files. The corrected Sources/transport/allowlist sections are sound, buildable, and grounded -- this is not a REVISE. But per this persona's specific mandate (testability against a fabricated-but-schema-valid implementation + a named FALSIFIES per the science-gate discipline), the FALSIFIES and its exercising cross-check test only cover the two UNCHANGED sources (colony_gate/phoenix); the brand-new on_chip/kins[]/board_snapshot_hash data path -- sourced through a controller that doesn't exist yet and is the sole enforcement point of the claim-fence allowlist -- has no analogous falsifier, no cross-check, and no Elixir-side test at all. That is a real, concrete, fixable gap in Test coverage/FALSIFIES completeness, not a Sources-level defect, so SIGN_WITH_CHANGES: land once these three named test/falsifier additions are made.
- Concerns:
- FALSIFIES is scoped too narrowly (production/mcp/SPEC_uni_self_audit.md:273-284): it only names a falsifier for colony_gate/phoenix, the two PRE-EXISTING unchanged sources. on_chip, kins[], and board_snapshot_hash -- the entirely NEW data this spec introduces via the not-yet-built GET /internal/self_audit endpoint (spec lines 133-217) -- have zero named falsifier or cross-check against independent ground truth. That's exactly the surface most exposed to a fabricated-but-schema-valid implementation, since (unlike colony_gate, checked against viewer/verify_colony.cjs) nothing else in this repo already serves as ground truth for it. Required change: add a named cross-check for on_chip (e.g. assert against a direct :erlang.system_info/1 read) and for kins[] (assert active_organs/novelty_gain from the response matches an independently-run Registry.lookup+:sys.get_state probe against the same fixture/mock host).
- No Elixir-side test is named anywhere for the new GET /internal/self_audit controller (spec's Test coverage section, lines 286-322, names only test/production/mcp/uni_self_audit_test.py, a Python file). That controller is the SOLE enforcement point of the binding claim-fence field allowlist (spec lines 219-239: id/kin/active_organs/novelty_gain/memory_bin_* only, Mind fields context/stress/emotion/confidence/focus/intent/report explicitly excluded -- verified for real against lib/sp/runtime/mind.ex:19-31 and lib/sp/brain/awareness.ex:52-54, which literally emits 'feel:#{emotion}'), the memory_bin_path relativization (colony.ex:99-109's absolute Path.join must be relativized before ever leaving the controller), and the per-agent 500ms probe-timeout-degrades-to-null behavior. The Python field-provenance test (#1, lines 292-295) necessarily hand-writes a 'clean' HTTP fixture for /internal/self_audit -- it structurally cannot detect a real controller implementation that later leaks a Mind field, forgets to relativize the path, or ignores the timeout. Required change: name at least one Elixir test (e.g. a new test/sp_ui_web/controllers/self_audit_controller_test.exs) asserting a Board row containing Mind fields never surfaces in the controller's JSON, that an absolute memory_bin_path is relativized before serialization, and that a probe exceeding 500ms degrades that kin's fields to null without failing the whole endpoint.
- The flip test (Test coverage #2, spec lines 296-298) is described via a single worked example ('e.g. bump the stubbed rcon_players by 1') rather than explicitly 'one flip test per source family' the way #1 (field-provenance, 'one per source') and #3 (degraded-source, 'one per external dependency') are made explicit. Given the fabricated-but-schema-valid concern above, this should be made explicit per field family (on_chip, at least one kins[] field, board_snapshot_hash, colony_gate, phoenix) -- not left as a single illustrative example a literal implementer could read as sufficient once, anywhere.
embodiment-designer (docs/lab_team/05_embodiment_designer.md)
- Verdict: SIGN_WITH_CHANGES
- Rationale: Independent re-read of every file:line this corrected spec cites, against the live repo, confirms the fix pass did the real work: SP.Runtime.OnChip.info/0 (on_chip.ex:20-28) and jit?/0 (on_chip.ex:15-17) now match exactly (4-key shape, boolean jit_active); the kins[] Sources section is now correctly grounded -- active_organs via Genome.active_organs(brain.dna) (genome.ex:497, confirmed) reached by an in-process Registry.lookup + :sys.get_state probe (supervisor.ex:20's @registry confirmed; the exact pattern named at runs/probe_curiosity.exs:30-32 and COLLECTOR_RCON_BRIEF.md:173-186, both confirmed verbatim), with the blocking-cost tradeoff named explicitly instead of the old false O(1)-board-read framing; genome_lineage is honestly dropped from v1 with the real two-part prerequisite (agent.ex:106-111/208-217, confirmed no lineage-name string is retained on Agent state today); memory_bin_path's absolute-host-path fact is correctly derived from colony.ex:21,99-109 (@repo_root construction confirmed byte-for-byte) and paired with an explicit relativization requirement. The critical embodiment-designer question -- is there now a real field-level allowlist, and does the sourcing avoid the claim-fence leak -- checks out structurally: I independently traced agent.ex:404-416's publish/1 and mind.ex:19-31's Mind.of/2 and confirmed the real board row DOES merge report/context/stress/emotion/confidence/focus/intent (with the literal 'feel:#{emotion}' string at awareness.ex:52-54), and confirmed the redesigned kins[] sourcing genuinely never reads those fields -- it pulls only username/kin off Board.all() and everything else off a separate dna-level probe. The transport claim (a new in-process Phoenix route, not a separate BEAM node) is also independently verified sound: ui/mix.exs declares
{:stratified_palimpsest, path: \"..\"}, so ui/'s Phoenix app and SP.Runtime./SP.Brain. genuinely compile into one release, making the no-:rpc.call claim correct. envelope.schema.json's actual nested shape and server.py's actual flat metadata() shape (server.py:91-118, confirmed) are both read correctly, and the rate-limit reconciliation (5s in both files) is confirmed via git diff. So the ORIGINAL embodiment-designer REVISE is genuinely resolved on its own terms. What remains is narrower than a design failure: two testing/enforcement gaps in the mechanisms this fix itself introduced (an under-specified, depth-fragile relativization path with a documented Elixir footgun that fails by silently leaking the exact absolute path the spec forbids, and a 'binding' allowlist with no test guarding it) plus one pre-existing cross-file envelope-conformance contradiction this pass didn't touch. None of these require re-architecting the spec -- they are named, testable additions -- so SIGN_WITH_CHANGES, not REVISE. - Concerns:
- memory_bin_path relativization names WHERE the value comes from but not HOW the new controller derives an equivalent @repo_root, and the one existing convention it points to is location-dependent. Verified: colony.ex:21, director.ex:14, lineage.ex:25, and overlay_publisher.ex:23 ALL define
@repo_root Path.expand("../../..", __DIR__)and ALL live at the identical depthlib/sp/<subdir>/(exactly 3 directory levels below repo root, so 3..segments land correctly). SPEC_uni_self_audit.md's new controller is specified to live underui/lib/sp_ui_web/controllers/(verified viafind ui/lib/sp_ui_web-- a different sub-project, one directory level deeper: 4 levels below repo root, not 3). A literal copy of the 'same convention' idiom into that file computesui/as @repo_root, not the true repo root -- Path.join(wrong_root, "runs/colony/...") builds a path that doesn't exist, and worse, Elixir's Path.relative_to/2 silently RETURNS ITS INPUT UNCHANGED (no error) when the given prefix doesn't actually match -- so a depth-mismatched @repo_root would silently leak the raw absolute host path through exactly the field the Non-goals section swears never leaks it ('Does NOT return an absolute host filesystem path under any field, ever'; 'never by the public get_self_audit() proxy'). None of the 7 named tests in Test coverage (field-provenance, flip, degraded-source x4, cross-check, board_snapshot_hash determinism, memory_bin_sha256 degraded-mode, boot test) assert that the returned memory_bin_path is actually relative / does not start with a drive letter or absolute-path marker. Required before landing: name the concrete, depth-independent mechanism the controller uses to get the true repo root (e.g. a shared public function instead of a copy-pasted directory-relative literal), and add a test asserting memory_bin_path is never absolute. - The claim-fence field allowlist -- this fix's own centerpiece, explicitly called 'binding' (SPEC_uni_self_audit.md:219-239) -- is stated only in prose with no enforcement test. None of the 7 named tests assert that a kins[] row contains ONLY the 8 allowlisted keys (id/kin/active_organs/novelty_gain/memory_bin_path/memory_bin_sha256/memory_bin_size_bytes/last_saved_utc), or that report/context/stress/emotion/confidence/focus/intent (the literal 'feel:#{emotion}' string proven at lib/sp/brain/awareness.ex:52-54, verified) never appear even if a future edit to /internal/self_audit re-merges Board.all()'s Mind-derived fields, as the spec itself warns could happen ('if a future change adds a Mind-derived field to kins[], that is a claim-fence review, not a routine edit'). As written the allowlist is a promise, not a falsifier -- add a test that constructs a kins[] row from a fixture Board row carrying report/emotion/etc. and asserts those keys are absent from the tool's output.
- Cross-file, adjacent to but within the public-surface-exposure lane: SPEC_uni_public_mcp.md:21 ('Every tool returns an envelope conforming to production/schemas/envelope.schema.json v1') is UNCHANGED by this revision (confirmed via
git diff HEAD -- production/mcp/SPEC_uni_public_mcp.md, which shows only the rate-limit paragraph touched) and now directly contradicts SPEC_uni_self_audit.md's own corrected framing that get_self_audit() returns 'the SAME flat metadata()-shaped result' and explicitly does NOT conform to envelope.schema.json (verified against the real metadata() at server.py:91-118, which matches the spec's flat-shape description, and against envelope.schema.json's actual nested {schema_version,envelope,result} + additionalProperties:false requirement). This is the same class of unresolved two-file inconsistency as the rate-limit contradiction (prior finding #10, which this revision correctly fixed in both files) -- the envelope-shape one was missed. Needs one sentence in SPEC_uni_public_mcp.md scoping get_self_audit() (and, by the same logic, every other tool on that surface, since none of the 25 existing production/mcp/server.py tools produce the schema's shape either) as matching the same aspirational/future framing SPEC_uni_self_audit.md now states plainly.
- memory_bin_path relativization names WHERE the value comes from but not HOW the new controller derives an equivalent @repo_root, and the one existing convention it points to is location-dependent. Verified: colony.ex:21, director.ex:14, lineage.ex:25, and overlay_publisher.ex:23 ALL define
MERGED VERDICT
SIGN_WITH_CHANGES
(Merge rule: the worst verdict wins.)
Honesty note
This is a v2 receipt following a spec-correction pass driven by the v1 review's own findings. It supersedes docs/receipts/lab_team_review_85b0e8c.md (v1, MERGED VERDICT REVISE) for the same spec -- v1 is left in place, not deleted, per this repo's append-dont-mutate ledger discipline. No FE source code (.ex/.exs/.py/.cjs) was written or modified by either the fix pass or this review -- only spec/schema/policy documents. If this verdict is SIGN or SIGN_WITH_CHANGES, implementation may proceed through this repo's normal ship gate; if REVISE or REJECT, further spec work is needed before any code diff.
Addendum — named changes applied (pass 3)
This is a direct-apply pass, not a fresh persona re-review. One agent worked through every
concern listed under all 5 personas' "Concerns:" bullets above (the MERGED VERDICT was
SIGN_WITH_CHANGES, meaning land-it-but-close-these-first, not ship-as-is) and applied fixes directly
to production/mcp/SPEC_uni_self_audit.md and production/mcp/SPEC_uni_public_mcp.md. Every
file:line citation touched by a fix was re-read against the live repo at the same HEAD
(85b0e8c-working-tree / commit 8c1a557) before editing, not trusted from the prior receipt's
word — see the specific verification notes below. This addendum is an implementer's changelog, not
an independent sixth-persona verdict; nothing here should be read as a fresh review.
math-breaker
- Cross-file envelope-conformance contradiction (SPEC_uni_public_mcp.md:21) -- FIXED: added an
explicit named exception for
get_self_audit()at the top of "Tools" inSPEC_uni_public_mcp.md, plus a matching cross-reference paragraph in that file'sget_self_audit()section, both pointing atSPEC_uni_self_audit.md's aspirational-schema framing rather than leaving the blanket conformance claim standing uncontested. - Probe concurrency left open ("sequentially or parallelized") + no total-latency budget + no
timeout-degradation test -- FIXED:
SPEC_uni_self_audit.md's "New Elixir/Phoenix work" section now namesTask.async_stream/3for parallel per-kin probes, a 500ms per-kin timeout, and an explicit 1500ms overallkins[]fan-out deadline (chosen to stay under the tool's own 5s public rate-limit window even stacked withcolony_gate/phoenix); Test coverage item 3 gained an explicit timeout-degradation case. - "25 existing tools" headcount -- FIXED: corrected to 26, re-verified live via
grep -n '@mcp\.tool(structured_output=True)' production/mcp/server.pyagainst the current repo (26 decorations, not counting the doc-comment mention at server.py:7), with the full tool-name list inlined in the spec so the count is self-checking against drift.
aif-core-theorist
- Cross-file envelope-conformance contradiction -- FIXED: same fix as math-breaker #1 above (one fix, independently flagged by both personas).
- Fabricated
active_organsexample (["metabolism", "hormones", "motor_control"], atoms that do not exist) -- FIXED: re-verified live againstgenome.ex's@prereqsmap (genome.ex:19-39) -- confirmed:hormonesis not an organ at all and the real motor atom is:motor_cortex, not:motor_control. Replaced the example with the real, live-verifiedgrowth_planof thehomeostat_colony/0lineage (genome.ex:353-363, the lineage literally named atagent.ex:210) -- all 10 atoms confirmed present in@prereqs-- plus an explicit, honest order caveat: the exact array order was NOT re-derived by executing the code (no Elixir runtime was available to this pass), so the spec now requires field-provenance/flip tests to assertactive_organsas a set (MapSet.equal?/2), never an exact-order list compare. novelty_gainshipping raw/unlabeled to the public surface -- FIXED: added a binding "novelty_gainfield semantics" paragraph toSPEC_uni_self_audit.md's "Public-surface exposure" section naming it a Dirichlet parameter-information-gain term, not a felt/preference signal, and requiring both tools'helptext to state this inline. Chose annotate-in-place over the rationale's other named option (drop from the public proxy) since dropping would remove real information a legitimate caller needs; this is a named design decision, not a dodge.
systems-architect
- Cross-file envelope-conformance contradiction -- FIXED: same fix as above.
memory_bin_pathdirectory-depth-fragile relativization (new controller one level deeper thancolony.ex/director.ex/lineage.ex/overlay_publisher.ex's private@repo_rootidiom) -- FIXED: independently re-verified live --ui/lib/sp_ui_web/controllers/health_controller.ex(the model for the new controller) sits atui/lib/sp_ui_web/controllers/, confirmed one directory level deeper thanlib/sp/brain/colony.exet al., so the "same convention" idiom really would resolve one directory short. Named the fix as new work (not a live-code edit by this pass): export a new publicSP.Brain.Colony.repo_root/0, and have the new (not-yet-built)SpUiWeb.SelfAuditControllercall it instead of copy-pasting"../../..".- Related wording risk (relativized-path read vs absolute-path read) -- FIXED:
memory_bin_path's spec text now explicitly states the stat/hash read happens against the ABSOLUTE path; only the JSON response value is relativized -- and names thecd ui && iex -S mix phx.servercwd risk the concern raised. - No Elixir-side test named for
/internal/self_audit's real path/file-IO/probe behavior -- FIXED: added Test coverage item 8, a newtest/sp_ui_web/controllers/self_audit_controller_test.exswith explicit path-relativization, claim-fence-allowlist-enforcement, and timeout/dead-process assertions against the real (future) controller, not a Python-side fixture stand-in. - Per-kin probe process-dies-between-lookup-and-probe race -- re-verified live:
agent.ex:357-359confirmsterminate/2callsBoard.drop/1on ordinary death, andboard.ex:29-34confirmsBoard.all/0is a point-in-time ETS read taken once before any per-kin probe runs -- the race is real. FIXED: extended the degrade-to-null treatment explicitly to this case, named per-kinTaskisolation +try/rescuearound theRegistry.lookup/2+:sys.get_state/1pair, and added a matching degraded-source test case (Test coverage item 3) distinct from the plain-timeout case. - "25" headcount (minor, same class as math-breaker #3) -- FIXED: same fix as above.
red-experimentalist
- FALSIFIES scoped too narrowly (only named a falsifier for
colony_gate/phoenix;on_chip,kins[],board_snapshot_hashhad none) -- FIXED for the two explicitly "Required change" items: re-verifiedon_chip.ex:15-28live (it wraps exactly the four:erlang.system_info/1calls the new FALSIFIES clause names) and added two new FALSIFIES clauses --on_chip/jit_activevia a direct:erlang.system_info/1re-read, andkins[]'sactive_organs/novelty_gainvia an independently-runRegistry.lookup+:sys.get_stateprobe -- plus matching cross-check test entries (Test coverage item 4).board_snapshot_hashwas named in the concern's rationale paragraph but not in its own explicit "Required change" list; FIXED via inheritance rather than a fourth standalone falsifier: the spec already scopesboard_snapshot_hashto be a pure hash of the samekins[]term the newkins[]falsifier now covers, and the existing determinism test (item 5) already asserts the hash is a faithful, order-independent function of that term -- oncekins[]is falsifiable and the hash function is proven deterministic, there is no remaining independent ground truthboard_snapshot_hashcould diverge from that the other two checks don't already catch. - No Elixir-side test for the new controller (allowlist enforcement, relativization, timeout-degrade) -- FIXED: the same Test coverage item 8 added for systems-architect #4 covers this concern directly (both personas independently asked for the same missing surface).
- Flip test not explicit per source family -- FIXED: Test coverage item 2 rewritten from one
illustrative example into 5 named sub-cases (
on_chip,kins[],board_snapshot_hash,colony_gate,phoenix), each its own required case.
embodiment-designer
memory_bin_pathdepth-fragile relativization (same class as systems-architect #2, with the added ask of a never-absolute test) -- FIXED: sameSP.Brain.Colony.repo_root/0fix as above, plus Test coverage item 8's explicit "Path relativization" sub-case (assertmemory_bin_pathis never absolute and resolves, joined againstrepo_root/0, to the file actually hashed).- Claim-fence allowlist stated only in prose, no enforcement test -- FIXED: Test coverage item
8's "Claim-fence allowlist enforcement" sub-case: construct a fixture
Boardrow carryingMind.of/2-merged fields (report/context/stress/emotion/confidence/focus/intent) and assert none appear in akins[]row the controller emits, plus an only-8-allowlisted-keys assertion. - Cross-file envelope-conformance contradiction -- FIXED: same fix as above (raised independently by all 5 personas; one fix closes all five mentions).
Scope note (not a new finding -- restating what was already out of scope before this pass)
SP.Brain.MC.save/2's non-atomic File.write! (mc.ex:552-554, the root cause of
memory_bin_sha256's best-effort/torn-read scoping) was already correctly named as a pre-existing,
out-of-scope prerequisite in the spec's Non-goals section BEFORE this v2 review round -- no persona
in this round re-raised it as a new concern, and this pass made no change to that scoping beyond
what was already there. No concern in this round required editing already-live, already-running
.ex/.exs/.py/.cjs source to resolve: the memory_bin_path/repo_root fix and the entire
/internal/self_audit controller are NEW, not-yet-built work this spec specifies (consistent with
the spec's pre-existing "New Elixir/Phoenix work this spec introduces" section), not edits to code
that runs today. Nothing from this round was pushed into a new "pre-existing gap" prerequisite note.
Files changed: production/mcp/SPEC_uni_self_audit.md, production/mcp/SPEC_uni_public_mcp.md.
No .ex/.exs/.py/.cjs source was written or modified by this pass.
sha256 45faa0b919e0fc82 — of the original file, so what was ingested stays checkable.
Plain — written for this website, not the source document
The follow-up to a review that had come back needing changes. The specification was rewritten rather than patched, every earlier finding was re-verified against the live code before anything was written, and this second round comes back passing. Two things stand out. One field was dropped rather than invented, with the prerequisite for adding it later named plainly, so it is not yet available. And the author caught and corrected one of their own citations before finalising, and recorded that correction on the page.
Plain · written 2026-08-01 by claude-opus-5 · not yet checked by a person · about the document whose sha256 is 45faa0b919e0fc82
Clear — written for this website, not the source document
A second review round over a corrected specification, superseding an earlier receipt — the file recording what was run — with a passing verdict. Five reviewers read it again, and the page names both files reviewed and the state they were read against.
The fix summary is the substance of the page. Every finding from the first round was re-verified against the live code before anything was rewritten, and all of those citations still held, which is stated rather than assumed.
The corrections are listed one by one, and their shape is instructive. Fields are re-sourced against what the code actually returns, with the mechanism named rather than gestured at, including a heavier probe whose blocking cost is stated openly. One field is dropped instead of invented, with a named two-part prerequisite for adding it later. A path convention is corrected to the real one, with an explicit step to make it relative.
A leak is closed twice over: an allowlist is added at the level of individual fields, and the redesigned transport avoids the risk structurally by never reading the offending source at all. A conformance claim that had been false is reframed as aspirational, rather than quietly kept or quietly deleted. The transport itself is named exactly, down to the route and the process it runs inside, with the evidence that this is possible drawn from callers that already do it.
Two quantities get proper treatment. One gains a named single agreed form, a stated scope and a determinism test. The other is rescoped as best-effort and eventually consistent, with the underlying non-atomic write named as the reason, and tests added for both the ordinary case and the degraded one.
A contradiction between two documents about the same limit is reconciled, with a note explaining the earlier three-way disagreement rather than silently picking a winner. And the framing is changed throughout, from language implying something narrates itself to a plain description of a machine-readable attestation, which is exactly the kind of change this project's limit on wording exists to force.
One self-correction gets its own paragraph. A first draft cited the wrong script for a pattern, because that script did not actually do the thing claimed, and the correct citation was found and fixed before finalising.
The remaining findings in this round are listed with their fixes. One was raised independently by all five reviewers, and a single change closes every mention. In another, a rule that existed only in prose gains an enforcement test, constructing a fixture and asserting the forbidden fields never appear in the output.
A closing scope note is careful about what was not done. One pre-existing issue was already out of scope before this round and stays out, and no reviewer re-raised it. Nothing here required editing code that runs today, because the parts being specified are proposed new work rather than changes to running behaviour. The page ends by naming exactly which two files changed and stating that no source code was written or modified.
Clear · written 2026-08-01 by claude-opus-5 · not yet checked by a person · about the document whose sha256 is 45faa0b919e0fc82