Skip to content

spec(t27f): live_mode -- live SSE event to painted frame, M4 of T27F Live (Closes #11778) - #11787

Merged
gHashTag merged 1 commit into
masterfrom
lane/t27f-live-mode-11778
Oct 23, 2026
Merged

gHashTag merged 1 commit into
masterfrom
lane/t27f-live-mode-11778

Conversation

@gHashTag

Copy link
Copy Markdown
Collaborator

M4 of T27F Live (epic #10266), issue #11778. ONE new spec: specs/t27f/live_mode.t27.

  • FR-001 structural: live_frame goes through the same work_graph apply_event -> display_list flatten path as the M3 replay; the fixture proves live-frame-by-frame equals batch replay byte- and sha-equal per frame and by final digest. No second renderer.
  • Coalescing without loss: a burst of 10 events across two windows paints once; the graph stays byte-identical to one-by-one replay; all 10 action nodes present.
  • FR-002: MeasureRecord (seq/emitted_at/painted_at/latency) full rows; p50/p99 constants 50/150 ms stated; a run past the p99 budget is REFUSED (error, never silent).
  • Order discipline per live_stream: out-of-order / repeat / gap seq refused.
  • Honest scope: the headless-browser lab measurement is NOT CLAIMED; LAB_RUN_DONE=false asserted (the T27 OS lab contract is t27os specs/os/lab.t27, infra: the lab leaves Railway -- run drive-in and receipts re-homed to T27 OS (github-actions executor, t27os runs/ publisher) #11781).

8/8 tests pass, 0 vacuous; sealed (all hashes MATCH, re-sealed with the current-source t27c); dupe ledger blessed in the same commit (the deliberate node_of local copy). Reuses apply_event/flatten_into/stream_empty -- nothing restated.

phi^2 + 1/phi^2 = 3 | TRINITY

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-23 11:23:18 UTC

Summary

Status Count
Total Open PRs 19
PRs with Failing Checks 17
PRs with All Checks Green 2
READY 1
FAILING 17
PENDING 0
NO CHECKS YET 0

These columns do not partition: 1 + 17 + 0 + 0 = 18, and there are 19 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=5aec047d42ec != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@tri-claw

tri-claw Bot commented Oct 23, 2026

Copy link
Copy Markdown

Summary by t27-bees

Checked by the t27 compiler

t27c parse, parse-complete and typecheck on each changed .t27 file at a890ce6. Nothing was generated, built or run. A pass means the file is well formed, not that it is right.

  • specs/t27f/live_mode.t27: parses and typechecks.

Read by the model

This spec adds M4 live mode: a single SSE event flows through work_graph::apply_event → display_list::flatten_into (the same path as M3 replay), with coalescing (one paint per frame window, no graph drops), per-event latency measurement, and strict order/budget gates. The seal shows 8/8 tests passing, 0 vacuous.

Worth a look

  • specs/t27f/live_mode.t27:123 — Local copy of node_of duplicates work_graph.t27's private function because queen::actors.t27 exports a different node_of. If work_graph changes its lookup (scan order, return value, node kinds), this copy silently diverges; the FR-001 test (digests_equal(graph_digest(&ga), graph_digest(&gb))) would catch it, but the duplication is a maintenance hazard.

  • specs/t27f/live_mode.t27:197 — fixture_scene asserts agents <= SCENE_AGENT_CAP (20). This is a pub function; if called with a graph holding >20 agents (e.g., from a future test or integration), it crashes rather than returning an error code. The comment says "never truncated" but the assert makes it a hard crash.

  • specs/t27f/live_mode.t27:221-222 — paint_frame resets st.n = 0; st.ops = 0 before calling flatten_into. If flatten_into returns an error, the caller's stream is already cleared (bytes zeroed). The comment claims "a refusal before this point leaves the caller's stream byte-identical", but the reset happens at this point.

  • specs/t27f/live_mode.t27:285 — percentile takes a slice a: []u32 and sorts it in place (via sort_u32), mutating the caller's data. run_within_budget copies to a local buffer first, but the function signature doesn't signal mutation.

  • specs/t27f/live_mode.t27:36 — MAX_NODES = 32 is a faithful copy of scene.t27's cap, pinned here because spec_graph.t27 declares a different MAX_NODES (1024) in the same import closure. If scene.t27 changes its cap, this constant and the test at line 106 (apply_op refuses 33rd node) must be updated manually; the duplicate-bodies baseline now tracks node_of but not this constant.


Read: 3 files, +877 -0, the whole diff. Head a890ce6. Model: openai-compatible/nvidia/nemotron-3-ultra-550b-a55b. Commands: @t27-bees review | summary | help | pause | resume. Free for every repository.

@gHashTag
gHashTag merged commit a059416 into master Oct 23, 2026
20 of 29 checks passed
@gHashTag
gHashTag deleted the lane/t27f-live-mode-11778 branch October 26, 2026 03:47
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