Skip to content

spec(t27f): petal N PULSE -- timeline, chart and badge from domain_pulse.t27 (Closes #12334, Refs #12173) - #12337

Merged
github-actions[bot] merged 1 commit into
masterfrom
claude/viz-petal-pulse
Oct 25, 2026
Merged

github-actions[bot] merged 1 commit into
masterfrom
claude/viz-petal-pulse

Conversation

@gHashTag

Copy link
Copy Markdown
Collaborator

Closes #12334
Refs #12173

What

Petal N PULSE, row N of specs/t27f/petal_viz_plan.t27. It answers: "Which of the 27 domains is moving, which is quiet, which is blocked?"

One new file, specs/t27f/petal_pulse_viz.t27. It is written against viz_contract.t27 in the order of the reference petal S and follows docs/nona-03-manifest/VIZ-PETAL-GUIDE.md (#12282).

  • Source, not copies. The rules come from specs/t27os/domain_pulse.t27:

    Shown Source
    Class of a domain at a tick (active, warm, quiet, blocked) status_of, status_text
    Age bucket of the last commit bucket_of, BUCKETS
    Commit times read from a log rec_next, rec_time
    Day and week cut-offs DAY, WEEK
  • Views. A timeline (a row per sample domain, a cell per tick, each the domain's class at that tick), a chart (how many domains are in each class at the current tick) and a badge (the same counts, how many are moving, and the truth label), all over one VizState. Every input goes through viz_apply.

  • Inputs. The tick stepper (0..4) and one choice: c in 1..6 adds one recorded commit to domain c - 1 at tick 1. Example: c = 3 at tick 1 moves (active, warm, quiet, blocked) from (1, 2, 2, 1) to (2, 2, 1, 1), moves domain 2's age bucket from 7 to 0, and drops the badge from VERIFIED to DEMO through viz_may_claim. One test recomputes that answer by calling status_of and bucket_of directly.

  • Plan. The reps are 1792 (timeline + chart + badge), equal to row N of the plan, and viz_plan_ok holds. The plan is not edited.

Glue the petal owns, called out

  • Sample and logs. The source's whole-log, red-list and name readers reach per-domain tables of other specs that t27c gen cannot splice into another module (they print as unresolved). So the petal records six sample domains (the menu petals A, D, J, N, U, Ti), one commit log per domain in the source's own record format, and the ticks at which a domain is red, since the source keeps no red list to read. The rules applied to that data are the source's. The header says so.
  • Clock. Tick t is T0 plus two days per tick.
  • Walkers and layout. The log walkers, the layout and hit tests, and the highlight linking are the petal's. The oracle tables in the tests are read by hand, not computed by the code under test.
  • Not used. The table readers (scan, commits_24h, last_active, spark, ...), for the reason above. No host draws this petal yet.

Checks

  • t27c test-report specs/t27f/petal_pulse_viz.t27 --specs-dir specs: 29 tests, 29 pass, 0 fail, 0 vacuous, 1 invariant.
  • python3 tools/dupe_scan.py: no new duplicate body.
  • ASCII only, no home paths, one file changed.

🤖 Generated with Claude Code

…lse.t27 (Closes #12334, Refs #12173)

Petal N, row N of specs/t27f/petal_viz_plan.t27: which domains are
moving, which are quiet, which are blocked.

Six sample domains (the menu petals A, D, J, N, U, Ti) over five ticks
are drawn as a timeline (a row per domain, a cell per tick), a chart of
the class counts at the tick and a badge. Every class is status_of of
specs/t27os/domain_pulse.t27, every age bucket is bucket_of, and the
logs are cut and timed by its rec_next and rec_time. The choice adds
one recorded commit to one domain: at tick 1 domain 2 moves the counts
from (1,2,2,1) to (2,2,1,1) and the badge drops from VERIFIED to DEMO;
one test recomputes that answer by calling the source directly.

The source's whole-log, red-list and name readers reach tables that
t27c gen cannot splice into another module, so the sample domains,
their logs, the red ticks and the clock are petal-side data, stated in
the header. The rules applied to them are the source's.

Reps 1792 = timeline + chart + badge, equal to row N of the plan.

test-report: 29 tests, 29 pass, 0 fail, 0 vacuous, 1 invariant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-25 08:03:05 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 22
PRs with All Checks Green 28
READY 18
FAILING 22
PENDING 0
NO CHECKS YET 0

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

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=55c0f1b1b32d != 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 25, 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 df4c09b. Nothing was generated, built or run. A pass means the file is well formed, not that it is right.

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

Read by the model

This PR adds a new visualization petal (petal_pulse_viz.t27) that renders a timeline, chart, and badge showing the pulse status of 27 domains (active, warm, quiet, blocked) over time, driven by rules from domain_pulse.t27. It implements row N of the viz plan with 1792 reps and 29 passing tests.

Worth a look

  • specs/t27f/petal_pulse_viz.t27 (entire file): The petal embeds six sample domains and their commit logs directly rather than reading from the source tables used by domain_pulse.t27 (which the description notes "print as unresolved" under t27c gen). If the source domain data or red-list logic changes, this petal's hardcoded samples and red-tick tables will drift silently. The tests verify behavior against hand-written oracle tables, not against the live source.

  • specs/t27f/petal_pulse_viz.t27 (tick/clock logic): Ticks are defined as T0 + 2 days per tick, but domain_pulse.t27 uses DAY and WEEK cutoffs for bucketing. If the source's DAY/WEEK constants differ from the petal's 2-day tick spacing, the age buckets shown in the timeline won't match what the source would compute for real domains.

  • specs/t27f/petal_pulse_viz.t27 (input c semantics): The description says c in 1..6 adds a commit to domain c-1 at tick 1. If the UI or test harness ever passes c=0 or c>6, the behavior is unspecified — the diff doesn't show bounds checks on this input.

  • specs/t27f/petal_pulse_viz.t27 (badge claim logic): The badge drops from VERIFIED to DEMO via viz_may_claim when a commit is added. The description doesn't explain what conditions viz_may_claim checks; if it depends on global state or other petals, the badge could flip unexpectedly in a composed view.

  • Diff incomplete: The full 1486-line file was not shown in the diff. The above points are inferred from the PR description; actual code may reveal additional issues (e.g., hardcoded magic numbers, missing viz_apply calls on some paths, or layout/hit-test assumptions that break at different viewport sizes).


Read: 1 files, +1486 -0, the whole diff up to 60000 characters (the rest was not read). Head df4c09b. Model: openai-compatible/nvidia/nemotron-3-ultra-550b-a55b. Commands: @t27-bees review | summary | help | pause | resume. Free for every repository.

This was referenced Oct 25, 2026
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.

spec(t27f): petal N PULSE interactive visualization (petal_pulse_viz.t27)

1 participant