Conversation
…nance seams Snapshot of the RQGM branch work-in-progress (previously all uncommitted, including the entire ari-core/ari/rqgm/ subsystem). See CHANGELOG.md "Unreleased - Constitutional ARI-RQGM" for the full per-task record. Latest batch - the governance mechanisms are now connected to the LIVE paths, not merely defined: - #76 the epoch's FROZEN utility_policy now drives real scoring: bind_evaluator + _apply_epoch_policy_to_scoring re-sync the LLMEvaluator composite/axis_weights and cfg.bfts at each epoch open (frozen within an epoch, evolves at boundaries). - #77 the boundary RE-SCORES the surviving tree under the new criterion: FrontierRepairEngine.repair(new_utility_policy=...) re-weights each retired- policy node from its stored _axis_scores under the new composite/axis_weights (a deliberate, scoped reversal of "invalidate never re-weight"; empty axis_weights is a valid equal-weight re-score - the common composite_swap case; fail-closed to invalidation). - #78a the governance judge recuses on self-adjudication (adjudicator != target). - #78b the judiciary (auditor/evidence_clerk/governance_judge) are now FOUNDING components and therefore impeachable; new events.GOVERNANCE_ACTOR_ROLES third role category; governance_judge added to the capability matrix (CONSTITUTION_HASH 6643c12a510e -> 2edf93776904, re-pinned). - #79 CK-REG-101 authority-non-expansion now compares candidate vs INCUMBENT on the live adoption path (RTE attaches the incumbent; the stateless kernel reads it and also fires on flag/target entries). Verification: ari-core suite 4766 passed, scripts/tests 104 passed (incl. check_docs_source_sync). A 6-epoch codex e2e confirms #76/#77/#78b fire live (#77's boundary re-score was found broken live - empty axis_weights fail-close - and fixed, re-verified: policy_rescored=5, invalidated=[]). #78a/#79 are wired and unit-tested but structurally unreachable by the default emergent governance (exploration adversaries implicate no role; mutators never widen authority) - they require paper mode or a seeded precondition to exercise live. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Selective erasure was enforced only at expansion. `select_best_node` never read `_valid_for_frontier`, so an erased node — its score produced under a retired policy or prompt — could still become the paper candidate, the archive seed, and the lineage grounding the paper's claims. The RQGM paper gets this for free by deleting records; ARI erases logically for auditability, which silently converted that guarantee into a per-consumer filtering obligation. Plan 10 §3 recorded the obligation as an open question that "must not be silently dropped". It was. Closing it surfaced four more defects of the same class, and adversarial review of the fixes caught three regressions I introduced while fixing them. Selection and grounding - `select_best_node` hard-excludes erased nodes; all-erased yields no winner rather than falling back to contaminated evidence. - `build_verified_context` drops erased ancestors from the lineage (erasure does not propagate to descendants, so a valid winner can carry an erased parent), and `write_verified_context` deletes a stale artifact whose winner or lineage changed — the paper reads the file, not the fresh build. - The working-context injection, `build_best_nodes_context`, the stagnation window, `build_lineage_state`, the run-best GUI cards, the score-jump parent lookup, and the skill-side winner resolvers all read the sentinel. Paper-candidate escalation was never observational - A judge-validated attack applies the bounded utility penalty, and every downstream re-selection sees it, so a penalized candidate could be replaced by a node that never received its own L3 round. Selection now runs to a fixpoint. - The penalty lived only in memory while the round marker suppressed re-runs, so the same checkpoint produced different winners across invocations. `replay_utility_penalties` restores it deterministically from the durable records, skipping any the repair chain formally reversed. - The pre-flight moved into the dispatch all three CLI entries share, so `ari run`/`ari resume` reach it. It is gated on the paper evidence existing: the one-shot marker spent on an empty bundle would permanently suppress the artifact-grounded round, so it defers to after the pipeline. Memory - `ari-skill-memory` reads the published erasure rollup itself: entries from an erased node come back labelled, not hidden — erasure withdraws the standing of a judgment, not the measurements — while grounded claim lists exclude. A cross-package test pins the field name, schema version and writer path, so a rename cannot turn the reader into dead code. Governance wiring - `_change` carries declared capabilities on succession edges, so CK-REG-101's incumbent comparison is reachable from the live adoption path; the transient kernel attachments are stripped from the audit event. - The governance judge's self-adjudication recusal gets its first test. - `paper_archive_state.json` journals a changed seed instead of leaving a silently stale record. Repo state - 504 README descriptions written from the actual sources. - 24 docs re-verified against their declared sources: 82 corrections, including a guide that told users to use two config files that do not exist and a stage key the driver never reads. - The complexity ratchet was failing unconditionally with 73 findings outside its baseline; refrozen, with the worst functions named rather than buried. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Quality Report
Checkers
Areas
Dead code
|
The evidence commit added the registration models, schema, config fixtures, and test without extending the per-directory Contents listings, so the readme-sync gate failed on four READMEs. Regenerated with scripts/readme_sync.py --write; the change is purely additive. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Why
Exploration previously had no single deterministic boundary guaranteeing that paper authoring received all applicable evidence, negative results, omissions, and assurance state. This change makes the exploration-to-publication handoff explicit, digest-bound, resumable, and fail-closed under enforce while preserving byte-compatible default-off behavior.
Impact
The feature is opt-in through
manuscript.mode = off|audit|enforce; the default remainsoff. Existing RQGM, paper archive, Provider, and Harness ownership boundaries remain separate.Validation
712ea52bbbab4081d97ab1793608fdfb73b6340a: all 9 checks passed,release_eligible=truesha256:dce4924ee33eeea7163c1049411725a809543db027223924f176c6ba64353a58The
manuscript-completeworkflow reruns the closed four-topology / 13-failure-family manifest and retains the revision-bound report and logs as a 90-day Actions artifact.