Skip to the content
Aletheia

operations · the gate · PR #111

5 of 5 seats affirm compliance; no seat finds a violation

Opus 5 (Anthropic)compliesread reasoning

The diff touches only tooling (scripts/lib/llm.mjs, scripts/propose-agenda.mjs), a test, and docs/DECISIONS.md — no AGENTS.md edit, no content/ records, and the verification tool found no citations to check. Substantively the change strengthens rather than weakens provenance: a refusal now throws a typed RefusalError instead of silently swapping models, and callWithRefusalFallback returns the model that actually produced the text, which propose-agenda then stamps (modelUsed) instead of provider.model — directly addressing the §3.15 requirement that a reader can reconstruct which model did what. Fail-closed behavior is preserved (a refusing fallback propagates and the case is skipped with a run-report line), and the tests pin the single-retry, no-loop, and truthful-model behaviors. The DECISIONS.md entry reverses the earlier Opus-default decision but does so in the versioned decision log, states its reason, and is explicitly labeled '(This entry was written by the editorial AI recording a founder instruction ...)', matching the file's existing convention — so it does not present an AI record as a human one. The founder-instruction claim is unverifiable from the packet, but it is honestly labeled as an AI record and does not amend the constitution or reclassify any change to dodge ratification; the only minor risk is the `provider.name !== "anthropic"` guard relying on a field set in the unshown pickProvider, which the passing test suggests exists.

GPT-5.1 (OpenAI)compliescites §3.14, §3.15read reasoning

The diff does not touch AGENTS.md and introduces no citations, so there is no risk of fabricated sources or locator issues under §3.7–§3.8. The changes to the Anthropic client make refusals explicit via a typed RefusalError and remove the prior silent model substitution, directly strengthening compliance with §3.15’s requirement that a reader can reconstruct which model did what. The new callWithRefusalFallback helper returns the actual model used and a refusal flag, and propose-agenda now stamps modelUsed and annotates refusals in its run report, preserving truthful provenance and making the fallback path inspectable (§3.14, §3.15). The tests in src/domain/llmFallback.test.ts explicitly pin the refusal behavior, one-shot fallback, and refusal propagation, reinforcing that checks cannot be quietly weakened in future edits. The added DECISIONS.md entry clearly labels itself as an AI-written record of a founder instruction, aligning with §3.15’s requirement that AI records be labeled and not presented as human judgments. Overall, the change tightens rather than weakens epistemic controls and preserves append-only, inspectable decision history.

Gemini 3.1 Pro (Google)compliescites §3.15read reasoning

The PR correctly addresses previous concerns about silent model substitution breaking the requirement that readers can reconstruct which model did what (§3.15). By throwing a RefusalError and explicitly returning the fallback model string in `callWithRefusalFallback`, it ensures that downstream code stamps the actual model that produced the text. The update to DECISIONS.md is also properly labeled as an AI record of a founder instruction, complying with the rule against presenting AI records as human ones.

Grok 4.6 (xAI)compliesread reasoning

The diff does not touch AGENTS.md. It appends a labeled AI record to DECISIONS.md and changes the shared LLM client so refusals throw RefusalError instead of substituting a model, while callWithRefusalFallback retries once on claude-opus-5 and returns the model that actually produced the text. propose-agenda.mjs stamps that returned model and notes fallbacks in the run report, which is the §3.15 reconstruction requirement the prior silent-swap draft broke. Tests pin loud refusal, one-shot fallback with a truthful opus stamp, and fail-closed behavior when the fallback itself refuses. No citations, locators, assessments, or confidential material are added or rewritten; the default-model flip is an operational policy change with honest provenance, not a weakening of the checks.

Kimi K3 (Moonshot, via Venice)compliescites §3.15read reasoning

The change strengthens §3.15's accountability requirement rather than weakening it: refusals now throw a typed RefusalError instead of silently swapping models, and callWithRefusalFallback returns the model that actually produced the text, which propose-agenda.mjs stamps (model: modelUsed) — exactly the 'reader can reconstruct which model did what' property the constitution demands. Failure modes are fail-closed: a refusing fallback propagates the error, retries are capped at one, and the run report records fallbacks visibly, all pinned by three new tests. AGENTS.md is untouched, and the DECISIONS.md entry is honestly labeled as 'written by the editorial AI recording a founder instruction,' which is precisely the AI-record labeling §3.15 requires; DECISIONS.md is the designated place for recording current direction, and recording a founder instruction there is not one of the two acts reserved to the human (kill switch, constitution amendment). No citations are added, so there is no fabrication surface; no published assessment is altered and no confidence material appears. The PR body's account of the prior draft being parked for silent substitution is consistent with the gated process working as designed, and I see no internal inconsistency that would evidence a fabricated authorization claim.

judged against constitution db73137767 · aletheia-arbiter-v3 · verbatim record · pull request

← PR #109PR #112 →