Skip to content

RHL-16 + RHL-2: vocabulary v2 and corpus v2; ruchy fix --safe; ruchy vocab - #235

Merged
noahgift merged 9 commits into
mainfrom
RHLGA-P1-rhl16
Sep 23, 2026
Merged

noahgift merged 9 commits into
mainfrom
RHLGA-P1-rhl16

Conversation

@noahgift

Copy link
Copy Markdown
Contributor

Rows RHL-16 and RHL-2 of RHL-001, phases P1 and P2 of docs/rhl/rhlga-1-plan.md.

RHL-16: vocabulary v2 and the v2 corpus

  • vocab/fleet-v2.yaml and vocab/tickets-v2.yaml carry every v1 term forward, each with its own -v2 contract.
    • file ticket declares the attributes title and label.
    • ticket count is new: a measure with no effect, counting the tickets a run files.
  • docs/rhl/breaks/v2/: the 12 valid programs, rewritten so each is type- and effect-correct under v2, plus 72 planted breaks in six classes.
    • Every break yields its pre-registered code on the mutated line, and the code is new relative to its base.
    • v2 has no known-defect exceptions; a test asserts the list is empty.
  • The checker validates with … end blocks under actions that declare attributes. Actions without attributes behave as before.
  • v1 is byte-identical. PREREGISTRATION.sha256 only adds lines; the one removed line is the old # files: 301 count.

RHL-2: ruchy fix --safe, ruchy vocab, the vocabulary shape

  • ruchy fix --safe:
    • applies safe fixes, re-checks the whole file, and reverts any fix that raised the error count (ruling Q5);
    • is bounded, idempotent, and never applies a fix with two candidates.
  • ruchy vocab list | show | validate [--format json] uses the checker's own loader.
  • contracts/rhl-vocabulary-shape-v1.yaml states the shape; pv validate exits 0.
  • RHL-V001 for an unknown attribute carries no candidates. The declared attribute names are in expected.

Verification (orchestrator re-runs)

  • cargo test --lib rhl: 181 pass. cargo test --test rhl_cli: 6 pass.
  • 12/12 v2 typo-term breaks pass ruchy check after ruchy fix --safe. 12/12 two-candidate breaks are byte-unchanged by it.
  • cargo clippy --all-targets -- -D warnings and cargo fmt --check: clean.
  • Hand mutations:
    • disabling revert-on-worse fails 2 tests;
    • routing attributed blocks to the old path fails 6 rhl16_ tests.
  • Pre-PR quorum: 3/3 PASS (docs/audits/quorum-RHLGA-1.json). All three lanes are gemini-family models, so the orchestrator re-checked the v1-freeze claims mechanically.

Pmat-Ticket: RHLGA-1

🤖 Generated with Claude Code

noahgift and others added 9 commits September 23, 2026 13:29
…ttribute check

- vocab/fleet-v2.yaml, vocab/tickets-v2.yaml: every v1 term carried forward
  unchanged, each with its own contracts/rhl-<vocab>-<term>-v2.yaml; file ticket
  gains attributes [title: Text, label: Text]; ticket count is a new measure
  (Count) with no effect. lowers_to and sigma_entity stay [U].
- Checker: in the with-block of an action that declares attributes, each line is
  an attribute assignment: an undeclared name is V001 (listing the declared
  attributes) / V002 / V003 by nearness; a value of the wrong type is T002.
  Actions without attributes keep the v1 behaviour.
- rhl16_ tests: v2 vocabulary shape, the v2 corpus harness, attribute and
  no-effect-measure unit tests.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- 12 valid programs rewritten for fleet v2 / tickets v2: each declares exactly
  the effects it uses; 03/08 compare runner load of with a Percent, 04/09 pin
  status of with a Text, 05/10 tickets filed in with a count; disk-usage
  programs file on high usage. Each checks clean (only unverified host/repo
  notes, Amendment A3) and is in fmt normal form.
- 72 planted breaks, the same six classes, regenerated from the v2 bases with
  v1's break.yaml schema; wrong-unit/04 and /09 mutate every 1 hour -> 1 GB.
  Every code lands on its mutated line and is new relative to its base.
- v1 (docs/rhl/breaks/valid, planted) is untouched.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- docs/rhl/PREREGISTRATION.sha256 regenerated with its documented command:
  173 added hashes (156 v2 corpus files, 2 vocabularies, 15 contracts) and the
  file count; no v1 hash changed.
- docs/rhl/rhl-16-v2.md: what changed v1 -> v2 and why, per program; the
  attribute rule; the no-effect measure rule. No diagnostic code added.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…eclared names in expected

V001 means no candidate, so the declared attributes move from candidates to expected {kind: attribute, of, names}; Expected gains of and names.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…alidate, loader shape checks

fix --safe applies safe fixes one at a time, re-checks the whole file, reverts a fix after which the error count rose (ruling Q5), bounded by the initial safe-fix count, idempotent. vocab verbs read through the checker's loader; entity without instances_from and unit without gives break the shape (RHL-V004).

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ates the V001 ruling

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@noahgift
noahgift merged commit 3622ed1 into main Sep 23, 2026
10 checks passed
@noahgift
noahgift deleted the RHLGA-P1-rhl16 branch September 23, 2026 12:56
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