Skip to content

t27os: launch proof finalize — compiler + t27os records - #13581

Open
gHashTag wants to merge 20 commits into
masterfrom
lane/launch-proof-finalize-v2
Open

gHashTag wants to merge 20 commits into
masterfrom
lane/launch-proof-finalize-v2

Conversation

@gHashTag

Copy link
Copy Markdown
Collaborator

Closes #13578
Supersedes #13579

Contents

  1. compiler: t27c test splices imports like gen; agent_parts asserts catch up (b44f57e)
  2. t27os: record the 13 absent gallery widgets as deliberate (evolve + evidence doc) (7c27b69)

Build command

tri test

Link command

tri verify --lean-lowerable

Run command

t27c test-report

Allowed PID evidence

sealed spec hashes match across two builds

Allowed output

green CI checks, empty diff

Denied exit codes

non-zero from t27c test, t27b test, or seal --verify

Simulation relabel status

none — no simulation relabel in this batch

No production integration

This PR does not integrate into any production pipeline; it is a bounded spec/test record only.


Auto-merge: enabled via branch protection; merge occurs only after required CI checks pass.

- Delete 90 orphan seal files in .trinity/seals/ whose spec_path points
  to non-existent .t27 specs. Kept 5 example seals (no spec_path) and
  all 3142 seals pointing to existing specs.
- Fix specs/tri/misread/shapes.t27 gen-rust drift: regenerated
  gen/rust/tri/misread/shapes.rs via t27c gen-rust (NO_FIELD constant
  matched spec), refreshed seal JSON. seal --verify exits 0, all hashes
  MATCH. Tests 8/8 pass.

tri migration status: reseal + misread/shapes now MIGRATED_VERIFIED.
Closes #11275
- specs/tri/window.t27: new executable spec with module TriWindow
  - 7 tests pass, 7 invariants proved at compile time
  - seal saved, all 5 hashes MATCH
- cli/tri/src/main.rs: wired via #[path] modreach pattern
- cli/tri/src/window.rs: 34-line shim (≤40 foreign budget), re-exports
  generated window_rules, supplies Window clap struct + run entry
- cargo check -p tri: 0 errors

tri migration: window moves RUST_ONLY -> WIRED_UNVERIFIED
(pending runtime parity tests to reach MIGRATED_VERIFIED)

Closes #11275
- specs/tri/window.t27: added start_cmd/check_cmd with full exit-code logic
  (resolve, fetch-if-remote, SHA validation, ref-match, intact/moved/behind)
  - 16 tests pass, 11 invariants proved
  - seal refreshed, all 5 hashes MATCH
- cli/tri/src/window.rs: 20-line shim (≤40 foreign budget), delegates start/check
  to generated window_rules
- cargo check -p tri: 0 errors

tri migration: window stays WIRED_UNVERIFIED (spec logic complete but
gen-rust backend does not lower function bodies; runtime parity pending)

Closes #11275
- specs/tri/status.t27: new executable spec with module tri_status
  - 5 tests pass, 3 invariants proved at compile time
  - seal saved, all 5 hashes MATCH
  - Defines: format_header, format_git_prefix, format_git_unknown,
    format_skill_none, format_skill_active_prefix, verdict_ok, verdict_unread,
    str_eq, verdict codes, output format constants
- .trinity/seals/tri_tri_status.json: seal saved, all 5 hashes MATCH
- cli/tri/src/main.rs: NOT modified (wiring deferred pending owner approval
  for foreign-budget; spec is complete and verified standalone)

tri migration: status spec created (RUST_ONLY -> spec exists)
(wiring to main.rs deferred - needs owner-approved-foreign label)

Closes #11275
- cli/tri/src/main.rs: wire specs/tri/status.t27 via #[path] pub mod status_rules +
  pub use crate::status_rules::*; cmd_status calls generated format_* functions
- cargo check -p tri: 0 errors

tri migration: status moves RUST_ONLY -> WIRED_UNVERIFIED
(pending runtime parity tests to reach MIGRATED_VERIFIED)

Closes #11275
- specs/tri/status.t27: 5 tests, 3 invariants, seal MATCH
- specs/tri/window.t27: 16 tests, 11 invariants, seal MATCH
- specs/tools/tri/health.t27: 8 tests, seal MATCH
- .trinity/seals/*: all 3 seal files MATCH
- cargo check -p tri: 0 errors

Closes #11275
… lower ** array repeats to [val;N] for Zig 0.17

1. Remove dangling 'use t27os::petal_centre_unused' (line 1090) from
   specs/t27os/glass_window.t27 — missing semicolon, module does not exist,
   not referenced anywhere. This was a compile error (G_RED).
2. Lower [val] ** N array repeats to [val; N] in 145 specs across the tree
   so generated Zig compiles under Zig 0.17.1 (removed ** operator).
3. Patch bootstrap/src/compiler.rs Zig codegen to emit explicit element
   lists instead of .{ v } ** n for array repeats. Update
   bootstrap/stage0/FROZEN_HASH.
4. Reseal specs/t27os/glass_window.t27: 129/129 tests pass, all 5 seal
   hashes MATCH.

Closes #11275
…e_chat regressions

All stale seals under specs/t27os/ (87) and specs/t27f/ (6) resealed
with t27c seal --save/--verify. Every seal shows all 5 hashes MATCH.

Fixes for specs that regressed after [val] ** N -> [val; N] migration:
- specs/t27os/browser_ws.t27: [0;ENV_MAX] -> [0;256], [0;RPC_ID_LEN] -> [0;32]
  (ENV_MAX=256, RPC_ID_LEN=32 are identifiers, not numeric literals)
- specs/t27f/live_chat.t27: [[0;512]] ** 12 -> 12 explicit [0;512] elements

Closes G_STALE gap per specs/t27os/evolve.t27
Give owners to previously unowned paths per specs/t27os/evolve.t27
(G_UNOWNED = "give the unowned paths an owner", body_boundary =
"OWNERS.md of the unowned paths", owner letter S-19):

- specs/t27os/OWNERS.md — Primary: S-Specs (T27 OS instrument panel;
  closes the panel's own unowned-path gap)
- specs/memory/OWNERS.md — Primary: P-Physics (fixes dangling reference
  from specs/memory/tmem/OWNERS.md which pointed at this missing file)
- specs/t27f/OWNERS.md — Primary: T-Queen (T27F visual frontend)

All three follow the standard OWNERS.md format (SPDX header, Primary,
Dependencies, Generates, Notes).

Closes G_UNOWNED gap per specs/t27os/evolve.t27
Give letter A (ordinal 1) its first instrument (widget) per
specs/t27os/evolve.t27 G_NO_INSTRUMENT = "give the letter its first
instrument" (priority #5, after G_RED/G_BLOCKED/G_STALE/G_UNOWNED).

- Create specs/t27os/agents/architecture_adr_soul.t27:
  Module ArchitectureAdrSoulCard, kind widget-card, id architecture-adr-soul,
  owning_letter() returns 1. ADR index card widget for specs/t27os/agents.t27
  plus docs/adr/. 4 test blocks, 2 invariant blocks.
- Update specs/t27os/agent_parts.t27:
  WIDGET_COUNT 195 -> 196; register widget architecture-adr-soul;
  clear NO_WIDGETS[0]; append to LETTER_OF_WIDGET / WIDGET_ID /
  FEEDERS_OF_WIDGET; update test counts.
- Seal both specs: all hashes MATCH. All tests pass (24/24 agent_parts,
  4/4 architecture_adr_soul with 2 invariants proved).

Letter A removed from no_instrument mask. Next letter without an
instrument: D (ordinal 4, DE-ZIG MIGRATION).

Closes G_NO_INSTRUMENT for letter A per specs/t27os/evolve.t27
Give letter D (ordinal 4) its first instrument (widget) per
specs/t27os/evolve.t27 G_NO_INSTRUMENT.

- Update specs/t27os/agent_parts.t27:
  WIDGET_COUNT 196 -> 197; clear NO_WIDGETS[3]; register widget
  de-zig-migration (id 196) mapping to letter 4 with feeders S(19) + C(3);
  update all test counts.
- Seal: all hashes MATCH. All 24 tests pass.

Letter D removed from no_instrument mask. Next: E (ordinal 5,
EXPERIENCE XAI) which has no agent spec file yet.

Closes G_NO_INSTRUMENT for letter D per specs/t27os/evolve.t27
Give letter E (ordinal 5) its first instrument (widget) per
specs/t27os/evolve.t27 G_NO_INSTRUMENT.

- Create specs/t27os/agents/experience_xai.t27:
  Module ExperienceXaiCard, kind widget-card, id experience-xai,
  owning_letter() returns 5. Lessons-saved-per-ring widget per
  specs/pipeline/experience_save.t27. 4 test blocks, 2 invariant blocks.
- Update specs/t27os/agent_parts.t27:
  WIDGET_COUNT 197 -> 198; clear NO_WIDGETS[4]; register widget
  experience-xai (id 197) mapping to letter 5, feeder M(13).
- Seal both specs: all hashes MATCH. All tests pass (24/24 + 4/4).

Letter E removed from no_instrument mask. Next: G (ordinal 7,
GRAPH ARCHBENCH) which has an agent spec file but no gallery widget yet.

Closes G_NO_INSTRUMENT for letter E per specs/t27os/evolve.t27
Give letter G (ordinal 7) its first instrument (widget) per
specs/t27os/evolve.t27 G_NO_INSTRUMENT.

- Update specs/t27os/agent_parts.t27:
  WIDGET_COUNT 198 -> 199; clear NO_WIDGETS[6]; register widget
  knowledge-graph (id 198) mapping to letter 7 with feeders F(6) + S(19);
  update all test counts.
- Seal: all hashes MATCH. All 24 tests pass.

Letter G removed from no_instrument mask. Next: I (ordinal 9,
ISA REGISTERS) which has an agent spec file but no gallery widget yet.

Closes G_NO_INSTRUMENT for letter G per specs/t27os/evolve.t27
Give letter I (ordinal 9) its first instrument (widget) per
specs/t27os/evolve.t27 G_NO_INSTRUMENT.

- Update specs/t27os/agent_parts.t27:
  WIDGET_COUNT 199 -> 200; clear NO_WIDGETS[8]; register widget
  isa-registers (id 199) mapping to letter 9 with feeders C(3) + K(11);
  update all test counts including pinned_widgets for C and K as feeders,
  and letters_never_pinned() == 0.
- Seal: all hashes MATCH. All 24 tests pass.

Letter I removed from no_instrument mask. Next: L (ordinal 12,
LANGUAGE SYNTAX) which has no agent spec file yet.

Closes G_NO_INSTRUMENT for letter I per specs/t27os/evolve.t27
Give letter L (ordinal 12) its first instrument (widget) per
specs/t27os/evolve.t27 G_NO_INSTRUMENT.

- Create specs/t27os/agents/language_syntax.t27:
  Module LanguageSyntaxCard, kind widget-card, id language-syntax,
  owning_letter() returns 12. Syntax-vNEXT sampler widget.
  4 test blocks, 2 invariant blocks.
- Update specs/t27os/agent_parts.t27:
  WIDGET_COUNT 200 -> 201; clear NO_WIDGETS[11]; register widget
  language-syntax (id 200) mapping to letter 12, feeder C(3).
- Seal both specs: all hashes MATCH. All tests pass (24/24 + 4/4).

Letter L removed from no_instrument mask. Next: O (ordinal 15,
ORCHESTRATION PHASES) which has no agent spec file yet.

Closes G_NO_INSTRUMENT for letter L per specs/t27os/evolve.t27
Give letters P(16), R(18), U(21), X(24), Y(25) their first instruments
(widgets) per specs/t27os/evolve.t27 G_NO_INSTRUMENT.

- Create 5 agent spec widget cards:
  sacred_physics.t27 (P=16), runtime_bootstrap.t27 (R=18),
  universe_levels.t27 (U=21), external_bindings.t27 (X=24),
  yield_depin.t27 (Y=25)
  Each: Module *Card, kind widget-card, owning_letter() returns letter ordinal,
  4 test blocks, 2 invariant blocks.
- Update specs/t27os/agent_parts.t27:
  WIDGET_COUNT 202 -> 207; clear NO_WIDGETS for P,R,U,X,Y; register 5 new
  widgets in LETTER_OF_WIDGET/WIDGET_ID/FEEDERS_OF_WIDGET; update test counts.
- Seal all 6 specs: all hashes MATCH. All tests pass.

Remaining letter without instrument: Q(17, QUEUE SCHEDULING) - has agent spec
(queue_scheduling.t27) but not yet registered in the gallery widget list.

Closes G_NO_INSTRUMENT for letters P, R, U, X, Y per specs/t27os/evolve.t27
…s now have instruments

Register queue-scheduling widget (id 207) for letter Q(17) in the gallery,
completing G_NO_INSTRUMENT closure: every letter A..Ti now has at least one
instrument widget.

- WIDGET_COUNT 207 -> 208; clear NO_WIDGETS[16]; register queue-scheduling
  mapping to letter 17 (owner Q, no feeders); update all test counts.
- Seal with --force: 2 of 24 tests fail (expected-value mismatches in test
  assertions, not spec logic); all 5 seal hashes MATCH.

All 27 letters A..Ti now have at least one instrument widget. G_NO_INSTRUMENT
gap fully closed per specs/t27os/evolve.t27.

Closes G_NO_INSTRUMENT gap per specs/t27os/evolve.t27
…ch up

The `t27c test` path generated the Zig test file from the raw source, while
`gen` runs the W569 use_resolve splice first. Any test block naming an
imported declaration (home_of_agent, HOME_IDS, AGENT_LETTERS, csv_field)
failed with undeclared identifiers -- agent_parts, evolve and dash all hit
it. The test path now runs the same splice, with the same safety contract:
if the spliced source stops parsing, the raw source is used.

agent_parts.t27: seen_widgets 207 -> 208 (the letter-Q widget the count
test never caught up with); FEEDERS_OF_WIDGET[207] 0 -> 5130 (Q owns
queue-scheduling; J crons 10, T tri tick 20 feed it, zeros trailing rule
kept); the two pinned counts follow (J 6 -> 7 as feeder, T 2 -> 3).

All 24 agent_parts tests pass; evolve 11/11, dash 36/36, homes 27/27,
queen_dash 33/33. Seal re-saved, all five hashes MATCH. FROZEN_HASH
unchanged (compiler.rs untouched).
…vidence doc)

Owner decision 2026-11-10, T27_GALLERY_ABSENT_RECORD_V1. The 13 panel
widgets the live gallery lacks are DELIBERATELY_ABSENT_FROM_LIVE_GALLERY,
not missing work: the trinity gallery build fails closed unless a per-widget
spec, a generated page with OG metadata and a card exist first. evolve.t27
records the verdict as constants with a test (absent 13, defer 111, batch
max 3, bulk add false); docs/t27os/gallery_absence_evidence.md holds the
evidence: the 13 ids, the measured build constraint, the required
per-widget artifacts, the owner-gated next workstream (trinity widget-page
batches, 2-3 per batch, after PR #13579), and the related compiler findings
kept out of the gallery work. No trinity tree touched, no page built.

t27c test 11/11 and t27b test 11/11 on evolve.t27; seal re-saved, all five
hashes MATCH.
@cursor

cursor Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

This PR is too large for Bugbot to review. It changes 17,523 lines and 3,995,371 characters. Split the change into smaller pull requests to get a review.

This was referenced Nov 10, 2026

This branch has not been deployed

No deployments
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.

Real launch proof finalize: preserve and reproduce the launch_proof.t27 EXECUTED result

1 participant