Skip to content

Rosetta to green: cause-first batch plan + multi-session coordination (child of #2560) #2669

Description

@squid-protocol

Child of epic #2560. Full assessment with the cell-family breakdown: https://claude.ai/code/artifact/9bc0a5a3-5268-4e6a-8d2c-ea8924a45889

This issue is the handoff surface. Every session (any model, any vendor) working rosetta reads
this issue top to bottom including comments before touching anything, claims one item by
comment, and leaves a status comment when it stops. The per-language issues (#2561#2607) are
not the work queue; they get a scripted status comment after each batch's regen (Batch E).

Session start protocol (every session, every time)

  1. gh issue view <this> --comments — the last comment per item is its true state.
  2. Re-bless check (replaces the pin check, retired by Cross-repo choreography is circular, and every way it broke today failed green — drop the ENGINE_REF dance, machine-check the invariants #2682/ci: rosetta-audit without pins -- baseline-classified, refuses to no-op (#2682) #2699): gh issue list --repo squid-protocol/keyword-rosetta --search "corpus owes a re-bless against engine main" in:title --state open. If that issue is open, the corpus is behind engine main and the first job is the re-bless it lists. There is no pin to compare any more (KEYWORD_ROSETTA_REF deleted 2026-09-04).
  3. Read docs/bias_data.json / docs/bias_report.md from keyword-rosetta mainbias-history.yml regenerates it on every corpus push and nightly against engine main, and the report header names the engine SHA. Do not regenerate locally to triage; regenerate only to verify a change before a PR.
  4. Claim: comment claiming <item id> — <model> — branch <name>. One item per session unless the
    item says "fan-out".
  5. Stop: comment status <item id>: <done|blocked|partial> — <branch/PR> — <what remains>.
    Unfinished branches are pushed, never left local.
  6. Never mix layers in one PR (rule regex | slicer/DAG | scoring). One Closes #N per line in PR bodies — a comma-list closes only the first (yaml: missing "ownership" rule — action.yml author: / OpenAPI info.contact: idiom uncaptured #2646/yaml: missing "cleanup" rule — shell-embedded teardown verbs (rm -rf <path>, docker rm/down, kill) inside run:/script: blocks uncaptured #2647 stayed open for a day because of it).
  7. From Batch F on, claim a family, not a language or a batch (F.5 is the one fan-out).

Model tiers

tier use for why
T1 — Fable / Opus classification across languages, writing fix shapes, ledger verdicts, attributing regen movers, every golden-master bless review, Batch D judgment work; the failure mode is a plausibly-explained wrong number baked into a baseline
T2 — Sonnet implementing a filed fix shape + strict tests, the regen/PR mechanics after a T1 review, tools scripting in Batch E, resolver fix in C bounded tasks with a machine gate (verify_language.py, pytest, crucible_check.py)
T3 — Haiku / Gemini flash-class the 32 per-language decoy edits (fan-out), #2660's 11 per-language anchor checks (fan-out), capstone prose from the template templated, one language at a time, each self-checked by the verifier before it can be wrong

Rule of thumb: a T3 item must have a mechanical pass/fail the model runs itself; a T2 item must
have a written fix shape from T1; T1 owns anything that ends in a manifest number or a bless.

Batch 0 — unblock the gate owner: repo admin tier: none

  • 0.1 gh api -X PATCH repos/squid-protocol/gitgalaxy/actions/variables/KEYWORD_ROSETTA_REF -f value=<corpus main sha> then gh workflow run rosetta-audit.yml --ref main → green. (Run 33657474420 proved the stale state: 13 languages fail = PR Update README with improved mapping description #29's set.)
  • 0.2 Process: add "bump KEYWORD_ROSETTA_REF" as the last checklist line of the engine-PR template's Cross-repo section.

Batch A — corpus only (keyword-rosetta), one PR, one regen

  • A.1 fan-out, T3 — decoy migration per rosetta#17 template (PR test(security): add comprehensive test suite for security and complia… #23 is the worked example) for: ada apex c cpp csharp dart dockerfile embedded_python go groovy haskell java javascript kotlin livecode lua m4 makefile matlab objective-c perl php powershell ruby scala scheme shell solidity swift tcl typescript zig. Done criterion per language: verify_language.py <lang> --report shows exactly +1 high_risk_execution from the new literal and no other delta vs the current manifest except removed decoy hits. Each language = one commit on the shared branch corpus/decoy-migration-wave2.
  • A.2 T2 — css/html empty probe bodies: plant css doc/globals/ownership/safety_bypasses and html cleanup/telemetry per SPEC.md; ~20 cells.
  • A.3 T2 — authoring fixes: perl =cut; apex Type.forName chain (gives apex a DAG); agc CA-register args; header @author swaps apex/agc/fortran; yaml single doc plant (drop one of name:/description:); cobol *> @return line (cobol: doc rule's AUTHOR-vs-ownership collision needs a corpus-side doc line planted before the engine fix (#2659 follow-up) #2661 step 1). Plus the four languages A.1's list missed — abap, assembly, cobol, sqlite still carry the retired shared sentence translated into their own vocabulary ('IF TRUNCATE FAILS TRY SELECT AGAIN', "if jmp fails try syscall again", 'IF ALTER FAILS TRY OPEN AGAIN', 'IF UPDATE FAILS TRY SELECT AGAIN'): same rosetta#17 template, same per-language gate, and screen the keyword against the risk_* inputs and the filler words too (see A.1's status comment for what that catches).
  • A.4 T1 — ledger: extend Tier-2 args-morphology entry to css/html/yacc/yaml/makefile/dockerfile/sqlite (not agc — A.3's CA A plant already took it to the median); normalise every entry's signal to |-joined metric names (needed by E.1).
  • A.5 T1 — regen (bias_report.py), attribute every mover, manifest notes, PR with Cross-repo section. Expect branch/io/safety medians to move; say so in the body. → keyword-rosetta#32 (Batch A). Pin bump owed after merge.

Batch B — engine batch 3 (gitgalaxy), one PR + one corpus rebless + pin bump

Batch C — graph layer (gitgalaxy), parallel with A/B

Batch D — design pass (gitgalaxy) tier: T1 only blocked on A, B, C merged

Batch E — bookkeeping

Batch F — the last 152, one cause family per session approved 2026-09-04

Plan: https://claude.ai/code/artifact/0f9f00d4-818e-4895-9e52-7ceb5fa4fc4d. State at approval: bias_report.py --gate unexplained = 152 (444 → 224 → 175 → 152), corpus main 6d26261 vs engine a334839. The regen is free and automatic now, so the unit of work is a cause family, not a batch-and-regen. Each session ends with one number here: unexplained before → after, read from corpus main the next morning.

Order is by cells closed per decision: F.1+F.2 (one PR, → ~95) → F.3 (→ ~75) → F.4 (→ ~45) → F.5 (→ ~0), F.6 throughout. Housekeeping done at approval: #2544 + #2558 closed (shipped in #2677, comma-list Closes), keyword-rosetta#17 closed (40/40 migrated), KEYWORD_ROSETTA_REF variable deleted.

Stacking rules (unchanged from GATING.md, restated so no session has to rediscover them)

  • Commit corpus edits before verifying (census walks tracked files only).
  • Every manifest number cites a validated ledger entry; unexplained delta = stop.
  • One layer per engine PR; one corpus rebless PR per engine PR, opened against engine main after the engine PR merges (label the engine PR rosetta:rebless-owed when it moves the corpus). No ENGINE_REF, no pin.
  • Scoped-diff check before every bless; unrelated movers are attributed to a named merged PR or the bless waits.
  • Worktrees outside any path containing a tmp component.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    core-engineModifications to the central physics and parsing engineepicLarge-scale architectural milestone or multi-issue initiativemetricsHeuristics, risk exposures, and topological math updates

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions