Skip to content

t27f: add kit_text + kit_container, extend storybook to 35 stories - #13429

Merged
gHashTag merged 17 commits into
masterfrom
claude/t27os-ui-kit-ring1
Nov 9, 2026
Merged

gHashTag merged 17 commits into
masterfrom
claude/t27os-ui-kit-ring1

Conversation

@gHashTag

@gHashTag gHashTag commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Adds kit_text(variant) and kit_container(dir) to specs/t27f/ui_kit.t27
  • KIT_COMPONENT_COUNT 6 → 8
  • New tests: text_graph, container_graph; updated no_orphans, builders_validate, kit_counts_match_the_variant_and_state_enums
  • Extends vf_storybook.t27: SB_COUNT 32 → 35, SC_COUNT 7 → 9; stories 32–34 for text-heading, text-body, container-row
  • All array signatures and affected tests updated for the new sizes

Boundary

  • specs/t27f/ui_kit.t27
  • specs/t27f/vf_storybook.t27

Closes #13427

🤖 Generated with Claude Code

gHashTag and others added 17 commits November 8, 2026 22:08
…3251)

Owner order START_T27OS_UI_KIT_NOW, ring 1.

- specs/t27os/win_layout.t27 (new, T27osWinLayout): the window's regions
  (title, sidebar, toolbar, content, inspector) computed once from the window
  size; half-open rects so a shared edge has one owner; the inspector reserves
  its width instead of covering the content; region_at is the one hit test;
  tool_btn/new_btn are the rects both the draw and the hit test read;
  page_split puts a page inspector beside the scene or under it, never over it.
  10 tests, 2 negative controls.
- specs/t27os/win_material.t27 (new, T27osWinMaterial): three theme rows
  (Dark = today's built-in levels, Light, opaque) over the hot_reload THV
  order, next_theme, th_fill, the NSAppearance and NSVisualEffectView material
  per theme, and WCAG contrast of white text over each surface. Dark bare
  ground measures 4.11:1, below 4.5 (recorded, not hidden). 8 tests.
- specs/t27os/glass_window.t27: hand constants and side_w/content_x/
  content_right replaced by imports from win_layout (SIDE_W from t27os::dash,
  its one home); toolbar hit tests use rect_has on the same rects the drawing
  uses; K_THEME kit slot; Cmd+Shift+L steps the theme and sets the window
  appearance and material; a live reload keeps the chosen theme; tests that
  the Dark row equals the built-in levels, with a negative control.

The material is NSVisualEffectView vibrancy, not Liquid Glass. Seals for the
two new specs and the glass_window re-save follow from a master-built t27c.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#13251)

- replay_mode.t27 (new): the effect gates a replay or dev run checks
  (FX_WEB, FX_SHELL, FX_TASK, FX_FETCH, FX_PANE_LINK, defaults, open URL).
- glass_window.t27: the integrated ring-1 window. The heat-bench card is
  removed from the home (owner, 2026-11-08). A new test,
  the_theme_shows_only_on_the_docked_glass, records why a Light switch shows
  nothing in the full window: the opaque-black rule of 2026-10-23 holds, and
  Light stays glass-only (owner, 2026-11-09).
- win_material.t27, live_data.t27, win_layout.t27, identity_table.t27,
  gnn_work_graph_viz.t27: the theme rows, live levels, toolbar row helpers,
  id_key_at, and the agent map that the window imports.
- DSH panel stage 1 (dash.t27 dsh_url, put_dsh_log_path, glass_type;
  glass_window.t27 dsh_open on Cmd+Shift+D). The panel is a WKWebView on a
  non-persistent data store, and its first line is the FX_WEB replay guard.
  One hunk was placed by hand after the NSHomeDirectory extern was renamed
  to ns_home.

Checked with t27c check only: 0 errors in glass_window.t27 (74 warnings,
the same set as before) and dash.t27 (2 warnings). Not tested, built or
sealed here. The dash.t27 seal is stale until it is re-saved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(Refs #13251)

- glass_window.t27, title bar: the brand had a centred box that reached
  past the GOD MODE pill in the docked window (400 pt). The control now
  wins over the label: brand_room_l/brand_room_r/brand_fits/brand_x keep
  the brand between the back box and the pill (HDR_GAP from statusbar),
  the TRINITY word is dropped when it does not fit, and on_home_button
  uses the same room, so a click on the pill never goes home.
- glass_window.t27, theme: grounds, plates, cards, panel grounds, viz
  grounds, tile bodies and the dock-change layer tint read the live kit
  levels (surface_alpha_lv, tint_alpha_lv, tile_body_alpha_lv), so the
  Cmd+Shift+L theme now shows on the docked glass. The full window stays
  opaque black (rule of 2026-10-23).
- Tests: the_docked_brand_never_covers_the_god_mode_switch (new, with
  negative controls and a width sweep 400..1200), the docked home point
  in the_title_bar_controls_clear_the_traffic_lights, and the Light vs
  Dark levels in the_theme_shows_only_on_the_docked_glass.
- dash.t27: the CR in the loopback-ready test is written as \x0d; the
  t27c lexer (shared by t27b) has no \r escape.

Checked: t27b test glass_window.t27 121 passed, 0 failed; t27b test
dash.t27 36 passed, 0 failed. A mutation run of the brand clamp made the
new test fail. Dev build 8014, one replay launch: docked title shows the
logo alone clear of the pill; docked Light, Opaque and Dark differ.
Not sealed here: the seals of both specs are stale until re-saved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…outline (Refs #13251)

The home mark takes the website look (gHashTag/trinity TrinityLogo.tsx): every
idle petal is opaque white (IDLE_ALPHA 255, IDLE_RGB white) and every outline is
black at full alpha, 1 px (new OUTLINE_RGB). This replaces the trios look of
2026-10-20 (idle black at 0.22, white outline). The open petal keeps its realm
colour and hover stays a white fill.

- petal_menu.t27: L3 colours, outline_for/outline use OUTLINE_RGB; test
  fills_follow_the_website_mark with a negative control for the old idle fill.
- glass_window.t27: the Dock icon reads fill/outline_for instead of literal
  colours; new test white_petals_part_from_the_docked_glass checks the white
  fill against the docked ground (win_material backing, every theme, desktop
  shade 0..1) at the 3:1 non-text floor, with a negative control.
- petal_glass.t27, petal_menu_wasm.t27: asserts follow the white idle fill.

Tests: petal_menu 12/12, glass_window 122/122, petal_menu_wasm 9/9,
ui_targets 12/12 (t27b); petal_glass FAIL 0 of 6, 0 vacuous (t27c test-report).
Seals not re-saved (prepare-only). No build or launch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… (Refs #13251)

A white hover fill cannot show on a white petal, so the hovered petal (and the
central button) holds the website's peak hover response from TrinityLogo.tsx at
proximity 1: scale 1.15 about its own centre, a lift of 8 website units, and a
white glow at 0.3 cast 4 down with blur 6. It is drawn last so it lies over its
neighbours. LOGO-2 will drive the same numbers by proximity.

- petal_menu.t27: L3 hover constants (WEB_MARK_W, HOVER_SCALE_PERMILLE,
  HOVER_LIFT_WEB, GLOW_*), web_milli, is_hot, hover_scale_permille,
  hover_lift_milli, glow_alpha_permille, draw_order; tests
  the_hovered_petal_holds_the_website_peak and the_hovered_petal_is_drawn_last.
- glass_window.t27: petal_vertex_at / petal_path_at, hole_vertex_at /
  hole_path_at, glow_dy_pt / glow_blur_pt, draw_petal; draw_logo draws in
  draw_order; draw_centre_button takes the same response; tests
  the_hovered_petal_grows_about_its_own_centre,
  the_centre_button_hovers_like_a_petal, the_glow_casts_down_the_screen.

Tests: petal_menu 14/14, glass_window 125/125, petal_menu_wasm 9/9,
ui_targets 12/12 (t27b); petal_glass FAIL 0 of 6, 0 vacuous (t27c test-report).
Not checked on screen: the shadow sign and HiDPI scale; the hit test still uses
the unscaled petal. Seals not re-saved (prepare-only). No build or launch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…13251)

Recovered from 88c71db on lane/t27os-dsh-panel as a hashed patch
(sha256 d5a9d1e6...f9f2). One new file, module T27osUiSnapshot, no
imports, no @extern, no name clash on ring 1. File sha256 cf96b564...8ce7
equals the source blob. t27b 0.1.0 test: 13 passed, 0 failed. No seal yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…3251)

Recovered from 6538c99 + b8f8529 on lane/t27os-dsh-panel as a
hashed patch (sha256 60124a22...faf0): one frame gives snap.txt and
snap.png with build identity and a digest check. One new file, module
T27osObservatoryCapture, no imports, no @extern, no name clash on ring 1.
File sha256 10e56889...ad94 equals the source blob. t27b 0.1.0 test:
5 passed, 0 failed; 1 invariant held. No seal yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…board overlay (Refs #13251)

queen_dash.t27: control surface model (states, evidence, sources, path allowlist, log tail, approval, queue, triptych), view word and view button, fit/hidden/hit geometry, 'not read' texts; 17 tests. glass_window.t27: draw_cs, CONTROL/DASHBOARD toggle in the same overlay, draw dispatch and click branch. No reader wired: every field reads UNKNOWN or not read. t27b test 17/17 and 125/125; types of draw_cs are proven only by make t27os (not run).

Refs #13251

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#13251)

- Header: a [sun | moon] pill between the profile circle and GOD MODE.
  Sun sets TH_LIGHT, moon sets TH_DARK, through theme_apply and
  kit[K_THEME]; Cmd+Shift+L still cycles all three themes.
- Dashboard and control surface: one frosted sheet (inset 6, radius 22),
  cards at radius 14 (concentric), capsule buttons, a round close disc
  and a light edge along the top of each piece. cs_frame now uses
  gl_card; the inline tile frame duplicate in draw_qdash is gone.
- Liquid Glass (NSGlassEffectView) stays unwired (GLASS_WIRED=false);
  this is a CG-drawn frosted style, not a system material.
- t27b test: 127 passed, 0 failed. Negative control GL_CLOSE_R 8 -> 9
  fails exactly the glass test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#13251)

The duplicate-body ratchet (tools/dupe_scan.py) refused the branch:
three local bodies copied bodies that already exist.

- replay_mode.t27: rm_eq removed; the four call sites use
  std::mem::bytes_eq.
- observatory_capture.t27: obs_copy_str_u8 removed (same body as
  obs_copy_str); its two callers call obs_copy_str.
- gnn_work_graph_viz.t27: gna_has removed (same body as t_has in
  specs/widgets/t27c_stages.t27); the tests use
  std::mem::bytes_contains.

t27b test: replay_mode 6/0, observatory_capture 5/0,
gnn_work_graph_viz 57/0. dupe_scan on the committed tree: rc 0,
no new duplicate body, no known group grew.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
spec-guards scored three specs BLOCKED under t27c (zig 0.16.0 refuses
what t27b accepts):

- observatory_capture: obs_populate_record never used its id
  parameter; it now copies id into r.id. t27c 5/5, t27b 5/5.
- glass_window: two inner locals shadowed outer ones (tpk in the
  header sun/moon pill, ws in the accessibility read); renamed to
  thpk and nsws. t27c 127/127, 0 vacuous; t27b 127/127.
- course_hud_wasm: petal_menu_surface compared idle against hover
  fill, which the owner-picked white-petal look makes equal; it now
  checks open against hover and the hover glow. t27c 8/8; t27b 8/8.

Seals for PetalMenu, Dash, IdentityTable, Live and QueenDash come from
the lab run at 76562b8 (master-built t27c). The glass_window seal
follows from the lab after this push.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lab run 42579563096 (Trinity-S-AI-DNA/t27os, master-built t27c
0.5.2+b89c6a356) re-sealed specs/t27os/glass_window.t27: spec_hash and
all four gen hashes, tests 127/127, 0 failed, 0 vacuous. The closure now
lists replay_mode, win_layout and win_material. drift.txt: no twin to
sync (498 twinned specs consistent).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Master brought #13207 (workspace task panes), which grew
glass_window.t27 by 803 lines; the spec merged cleanly. The one
conflict, the glass_window seal, takes master's copy until the lab
re-seals the merged spec. Merged spec: t27c test-report 128/128, 0
vacuous; t27b 128/128.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The master merge took master's glass_window seal; the lab (master-built
t27c, run 42581087205) re-sealed the merged spec. Receipt:
runs/6ac7764f1c3362776a9132a4ae5e8fdb1f87d422.seals in t27os.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The lab (master-built t27c, run 42582635744 in Trinity-S-AI-DNA/t27os)
sealed the five specs this branch adds, at 0d5d56b:
observatory_capture 5/5, replay_mode 6/6, ui_snapshot 13/13,
win_layout 10/10, win_material 17/17. Receipt:
runs/0d5d56b5d0695e963a0ada63401cf818bc06bb3c.seals in t27os.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…loses #13427)

KIT_COMPONENT_COUNT 6 → 8; new tests text_graph and container_graph;
storybook SB_COUNT 32 → 35, SC_COUNT 7 → 9, all parallel arrays extended.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-11-09 11:48:57 UTC

Summary

Status Count
Total Open PRs 43
PRs with Failing Checks 39
PRs with All Checks Green 4
READY 4
FAILING 39
PENDING 0
NO CHECKS YET 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=b882be1e4933 != 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).

@gHashTag
gHashTag merged commit 37ecbba into master Nov 9, 2026
32 of 38 checks passed
@gHashTag
gHashTag deleted the claude/t27os-ui-kit-ring1 branch November 9, 2026 11: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.

ui-kit: add kit_text and kit_container (M0 gap)

1 participant