Repository navigation
Conversation
…5 s (refs #1717) The fleet panel on t27.ai/t27f/live/ showed no live fleet: its headline came from anonymous GitHub REST (3 calls per 150 s = 72/h, over the 60/h per-IP budget, so a shared IP got 403 and "loading..." for good), and the Queen feed of #1743 answers 404. This follows the law of Trinity-S-AI-DNA/t27#12382, specs/t27f/live_fleet.t27: - read https://api.t27.ai/queen/public-activity (public, no credential, CORS-open) every 15 s; on failure wait 30, 60, then at most 120 s; - fold the events in list order: in flight, finished, refused, reviews; - the newest event's age comes from the server's cursor, quiet after 600 s; - only this reading carries the LIVE badge (stale after a success, unavailable before one, offline when offline); the GitHub panels are a second reading, and their open-PR count moves to the PR panel's title; - a "the queen -- live activity" list shows the newest 10 events. Owner-approved foreign edit (2026-10-25), 33 added lines in one file. Refs #1717 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ved (Closes #12382) GLUE_STEPS named finished_count, review_count and freshness_label, which this spec never defines. The fns are kind_count (finished, review) and freshness; the steps now say so. Found while writing the host glue that follows this card (Trinity-S-AI-DNA/trinity#1750). t27c test-report: 8 pass, 0 FAIL, 0 of 8 vacuous. Seal re-saved by the master-built t27c. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One conflict, the graph message line in t27f_live.js: keep main's gxLayout.line prefix and this branch's "the Queen's live activity" wording. Checked on a local serve: the gx layout line and the live headline both show. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The owner asked for #000000 behind every card on /t27f/live/, with no blue-black. Colour literals only, no logic: - index.html: the page tokens --panel and --raised were #0b0d0c and #121614. They are now #000000, so the #live box is black. - t27f_live.js: the FC and C bg tokens were the GitHub navy #0d1117. They are now #000000, which covers the fleet header and all six panels. The two graph boxes and the two button styles had inline #0d1117 / #21262d fills; those are now #000000 too. - Card borders go from the blue-grey #30363d to #333. Text, accent and legend colours are unchanged. The 1px row dividers (#21262d) are not fills and stay. Checked on a local serve: getComputedStyle reads rgb(0, 0, 0) on body, #live and all 10 cards and buttons. The card borders read rgb(51, 51, 51). The only other fills are the five legend dots. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… (refs #1717) The owner asked for /t27f/gnn/ and /t27f/graph/ to follow /t27f/live/: #000000 behind the page and every card, with grey #333 borders. Colour literals only, no logic. gnn: - index.html: theme-color and the --bg, --panel and --raised tokens go from the GitHub navy (#0d1117, #161b22, #21262d) to #000000. --line goes from #30363d to #333. That covers the body, the TOC, the code chips and every figure card. - gnn.js: the hero node boxes and the empty cells of the two matrix figures were filled #161b22. They are now #000000, and the cell strokes go from #30363d to #333. graph: - index.html: --panel and --raised go from #0b0d0c and #121614 to #000000. The #graph card border goes from the green hairline to #333. - The SVG backdrop is not a page colour. The host draws VIEW_BACKDROP from the law, so the law changed first, in Trinity-S-AI-DNA/t27#12408. Here the vendored specs/spec_graph_view.t27 copies that one-line change. spec_graph_view.mjs was regenerated by `t27c gen-js` at t27 master 672aaca7d and not edited by hand: only the VIEW_BACKDROP line differs. Before the change, the same compiler reproduced the committed .mjs byte for byte. t27f.build carries the two new sha256 lines. The wasm is unchanged; it does not use the backdrop. Kept: text, accent, legend and edge colours, and the label fills, which are the T27F label encoding. Checked on a local serve: getComputedStyle reads rgb(0, 0, 0) on the body and on the cards of both pages, and the card borders read rgb(51, 51, 51). The graph SVG backdrop rect fill is #000000. check:t27f (shasum -c on t27f.build) passes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…0, the two clocks (Closes #12382) The bee review of PR #12383 found five gaps. This commit answers them in the spec, with two new tests. - The fold window. The fold fns took [16]u32 while a measured reply holds 120 events. The width is now FOLD_WINDOW, a named usize. New doc text says it is a limit of the fns, not of the feed: a host folds the whole reply with the same rules, as the glue of trinity#1750 does over all 120 events. A host that can only pass a window passes the newest events. On such a prefix the counts never exceed the whole reply's, and the issues in flight can only be undercounted. Test a_window_of_the_newest_events_never_overcounts pins this: the count only grows as the window grows, and an issue decided inside the window keeps its decision. - newest_at_ms. It is the `at` of events[0], the first event in list order, and not the latest time in the list. - queen/views.t27. The presentation rules are used, not copied. A change there is meant to reach this panel, and these tests are how it shows up. - QUIET_S and P_STALE are not two thresholds of one thing. P_STALE has no time threshold: it means the feed failed after a success. F_QUIET means the fleet was idle while the feed answered. Test live_and_quiet_are_independent pins P_LIVE with F_QUIET, and P_STALE with F_FRESH. - "NOT CLAIMED" said the page does not read this card. That was stale: the owner approved one foreign edit of t27f_live.js, and it is Trinity-S-AI-DNA/trinity#1750. The glue repeats these rules and does not call these fns, because gen-js does not lower fn bodies (#10993). t27c test-report (master-built t27c 672aaca): 10/10 pass, 0 vacuous. The two new tests ran 10 and 4 runtime asserts. Re-sealed with the same t27c; the seal has no twin and no home path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Summary by t27-beesChecked by the t27 compilert27c parse, parse-complete and typecheck on each changed .t27 file at
Read by the modelThis PR adds a new "Queen live activity" panel that polls Worth a look
Read: 8 files, +56 -27, the whole diff. Head |
…; row times from the parsed date (refs #1717) The bee review on #1750 pointed out that a missing or malformed "at" gives a NaN age in the header and a garbage time in the row. The feed contract in specs/t27f/live_fleet.t27 says every event carries "at": <ISO>, so a reply with an unparsable "at" is now treated like any other foreign reply (the existing guard already refuses a non-numeric cursor). Row times are printed from the parsed date, so a "+00:00" or fractional-second ISO string still shows HH:MM:SSZ. Still 39 added hand lines in t27f_live.js against main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n/public-activity (Closes #12382) (#12383) * spec(t27f): live_fleet.t27 -- the fleet panel of /t27f/live/ reads /queen/public-activity, as law (Closes #12382) The page shows no live fleet: its Queen feed (/queen/public-feed) is 404, its fallback is a 24-event fixture, and its GitHub panel makes 72 anonymous calls an hour against a budget of 60. The live data is public at api.t27.ai/queen/public-activity (newest event 1 s old, measured 2026-10-25). This card is the panel's law: the source and its measured shape, the in-flight fold (a review decides nothing), the counts, the age from the server cursor, the 15 s poll with backoff to 120 s, the budget proof, and the badge rule through queen/views.t27. 8 tests, 0 vacuous; a planted wrong value fails. The page's glue does not read it yet (only-t27; #10993). Refs #10266 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * spec(t27f): live_fleet GLUE_STEPS name the fns that exist, seal re-saved (Closes #12382) GLUE_STEPS named finished_count, review_count and freshness_label, which this spec never defines. The fns are kind_count (finished, review) and freshness; the steps now say so. Found while writing the host glue that follows this card (Trinity-S-AI-DNA/trinity#1750). t27c test-report: 8 pass, 0 FAIL, 0 of 8 vacuous. Seal re-saved by the master-built t27c. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * spec(t27f): live_fleet names its fold window, the glue of trinity#1750, the two clocks (Closes #12382) The bee review of PR #12383 found five gaps. This commit answers them in the spec, with two new tests. - The fold window. The fold fns took [16]u32 while a measured reply holds 120 events. The width is now FOLD_WINDOW, a named usize. New doc text says it is a limit of the fns, not of the feed: a host folds the whole reply with the same rules, as the glue of trinity#1750 does over all 120 events. A host that can only pass a window passes the newest events. On such a prefix the counts never exceed the whole reply's, and the issues in flight can only be undercounted. Test a_window_of_the_newest_events_never_overcounts pins this: the count only grows as the window grows, and an issue decided inside the window keeps its decision. - newest_at_ms. It is the `at` of events[0], the first event in list order, and not the latest time in the list. - queen/views.t27. The presentation rules are used, not copied. A change there is meant to reach this panel, and these tests are how it shows up. - QUIET_S and P_STALE are not two thresholds of one thing. P_STALE has no time threshold: it means the feed failed after a success. F_QUIET means the fleet was idle while the feed answered. Test live_and_quiet_are_independent pins P_LIVE with F_QUIET, and P_STALE with F_FRESH. - "NOT CLAIMED" said the page does not read this card. That was stale: the owner approved one foreign edit of t27f_live.js, and it is Trinity-S-AI-DNA/trinity#1750. The glue repeats these rules and does not call these fns, because gen-js does not lower fn bodies (#10993). t27c test-report (master-built t27c 672aaca): 10/10 pass, 0 vacuous. The two new tests ran 10 and 4 runtime asserts. Re-sealed with the same t27c; the seal has no twin and no home path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Refs #1717. Follows the law of Trinity-S-AI-DNA/t27#12382 (PR Trinity-S-AI-DNA/t27#12383,
specs/t27f/live_fleet.t27).Owner-approved foreign edit (2026-10-25):
apps/website/public/t27f/live/t27f_live.js, 39 added lines (budget 40), plus one token line inindex.html. ASCII only.Why
On 2026-10-25 the fleet panel of t27.ai/t27f/live/ showed no live fleet:
/queen/public-feed) answers 404, at the legacy host and at api.t27.ai.The live data is public at
https://api.t27.ai/queen/public-activity. It needs no credential and is CORS-open to t27.ai.What changes
In
mountFleet, a new panel, "the queen -- live activity", sits above the GitHub panels. It followslive_fleet.t27:SOURCE, no credentialfetch(ACT, {cache:'no-store'}); no cookie is sent cross-originnext_wait_sin_flight_countkind_count,refused_countnewest_age_s,freshnesscursor - atof the newest event, from the server's clock, never negative; "(quiet)" after 600 s; "no events" when emptypresentation,live_badge_allowedThe panel also lists the newest 10 events: UTC time, kind, state, issue and title. Refused events show in red. Every value is set through
textContent.Verified (local static serve of
apps/website/public, built-in browser, 2026-10-25 10:52..10:57Z)ACTpointed at the dead/queen/public-feed(404), the header read "THE FLEET | activity feed unavailable" with no LIVE badge and no rows, and the second request came 30.3 s after the first. The URL was then restored and live again.gitleaks git --stagedfound no leaks.Not exercised in the browser: the STALE branch (a success then a failure) and the offline branch. They were checked by reading only.
Pure black cards (commit 1167d93)
The owner asked for #000000 behind every card on this page, with no blue-black. The commit changes colour literals only:
--paneland--raisedinindex.htmlgo from #0b0d0c and #121614 to #000000.FCandCbg tokens go from #0d1117 to #000000.Checked on a local serve:
getComputedStyle(...).backgroundColorreadsrgb(0, 0, 0)onbody, on#live, and on all 10 cards and buttons (graph, fleet header, queen activity, pull requests, activity, dispatches, model fleet, footage). Their borders readrgb(51, 51, 51). The only other fills on the page are the five 7 px legend dots./t27f/gnn/ and /t27f/graph/ on pure black too (commit d60d549)
The owner asked for the same black on these two pages. The commit changes colour literals only: gnn.js 5 lines, gnn/index.html 2 lines, graph/index.html 2 lines.
theme-color,--bg,--paneland--raisedgo from the GitHub navy (#0d1117, #161b22, #21262d) to #000000.--linegoes from #30363d to feat(hslm): [D] Ternary Activations — STE quantizer + integer matmul #333.--paneland--raisedgo from #0b0d0c and #121614 to #000000. The#graphcard border goes from the green hairline to feat(hslm): [D] Ternary Activations — STE quantizer + integer matmul #333.VIEW_BACKDROPfrom the law, so the law changed first, in spec(t27f): the graph view backdrop is brand black #000000 (Closes #12406) t27#12408. The vendoredspecs/spec_graph_view.t27copies that one-line change.spec_graph_view.mjswas regenerated byt27c gen-jsat t27 master 672aaca7d, not edited by hand: only theVIEW_BACKDROPline differs. Before the change, the same compiler reproduced the committed.mjsbyte for byte.t27f.buildhas the two new sha256 lines. The wasm is unchanged; it does not use the backdrop.Checked on a local serve:
getComputedStylereadsrgb(0, 0, 0)on the body, the TOC and the figure cards of /t27f/gnn/, and on the body and#graphcard of /t27f/graph/. Their borders readrgb(51, 51, 51). The graph's SVG backdrop rect fill is#000000.check:t27f(shasum -c ont27f.build) passes.Depends on: Trinity-S-AI-DNA/t27#12408 for the law. The copy here is correct whether or not that merges first, but it should not merge if #12408 is refused.
Review fix: an unparsable "at" (commit b0b3a5d)
The bee review pointed out that an event with a missing or malformed
atgave a NaN age in the header and a garbage time in its row. The feed contract inspecs/t27f/live_fleet.t27says every event carries"at": <ISO>. A reply with anatthatDate.parsecannot read is now refused as foreign, the same way the existing guard refuses a non-numericcursor. Row times are printed from the parsed date, so+00:00or fractional-second ISO strings still showHH:MM:SSZ. The file stays at 39 added hand lines; the change folds into two existing lines.After merge
This is live only after the ghashtag.github.io publish run passes.
{ "version": 1, "head_sha": "8dc7307dc140413f16cf8ae8dd542bde7b2c779f", "summary": "The fleet panel of t27.ai/t27f/live/ now reads the live Queen activity feed every 15 seconds, and the live, gnn and graph pages draw every card on pure black with grey borders.", "changes": [ "t27f_live.js gains a queen live activity panel that polls api.t27.ai/queen/public-activity with no credential, following specs/t27f/live_fleet.t27 (39 added lines, owner-approved).", "The fleet header counts issues in flight, finished, refused and review events, and shows STALE, unavailable or offline instead of a false LIVE badge.", "A reply whose events carry an at that does not parse as a date is refused as foreign, and row times print from the parsed date, so the header never shows a NaN age.", "The open pull request count moves from the fleet header to the pull request panel title, so GitHub rate limits no longer blank the header.", "Cards, buttons and page tokens on /t27f/live/, /t27f/gnn/ and /t27f/graph/ go to #000000 with #333 borders; colour literals only.", "The graph SVG backdrop follows VIEW_BACKDROP 0x000000 from the vendored spec_graph_view.t27, with spec_graph_view.mjs regenerated by t27c gen-js and t27f.build hashes updated." ], "tests": [ { "command": "cd apps/website/public/t27f/graph && grep -v '^#' t27f.build | shasum -a 256 -c -", "result": "All six hashed files report OK at the PR head.", "status": "passed", "evidence": "spec_graph_view.mjs, t27f.wasm and the four vendored specs each print OK." }, { "command": "local static serve of apps/website/public, /t27f/live/ in a browser", "result": "The header read THE FLEET, LIVE with 21 in flight, 70 finished, 16 reviews, newest 2s ago.", "status": "passed", "evidence": "Requests came 15.4 to 16.1 s apart; ten event rows rendered while the GitHub panels were rate limited." }, { "command": "same serve with the activity URL pointed at the dead /queen/public-feed route", "result": "The header read activity feed unavailable with no LIVE badge and no rows.", "status": "passed", "evidence": "The second request came 30.3 s after the first, the first backoff step." }, { "command": "getComputedStyle backgroundColor and borderColor on body and cards of /t27f/live/, /t27f/gnn/, /t27f/graph/", "result": "Every page body and card reads rgb(0, 0, 0) with rgb(51, 51, 51) borders.", "status": "passed", "evidence": "Ten cards on live, the TOC and figure cards on gnn, the graph card and SVG backdrop rect fill #000000 on graph." }, { "command": "node --check apps/website/public/t27f/live/t27f_live.js, then a local serve of /t27f/live/ with the guard in place", "result": "The syntax check passes and the header read THE FLEET, LIVE with 16 in flight, 71 finished (71 refused), 16 reviews, newest 60s ago.", "status": "passed", "evidence": "The served script contains the at guard and loaded with 200; event rows print times such as 13:13:57Z." }, { "command": "STALE and offline branches of the activity panel in a browser", "result": "These two branches were checked by reading the glue only.", "status": "not_run", "evidence": "No browser run produced a success followed by a failure, or an offline event." } ], "limitations": [ "The page is live only after this PR merges and the ghashtag.github.io publish run passes.", "The glue repeats the rules of live_fleet.t27 by hand; t27c gen-js does not lower fn bodies yet (gHashTag/t27#10993).", "The legacy /queen/public-feed poll still runs every 15 s and answers 404; removing it is a separate choice.", "The graph backdrop law change waits on Trinity-S-AI-DNA/t27#12408; this PR should not merge if that one is refused." ], "tags": ["t27f", "queen", "fleet", "website"], "blog": { "title": "The t27f live page now shows the real Queen fleet, on pure black", "summary": "The fleet panel on t27.ai/t27f/live/ stopped depending on anonymous GitHub calls that ran out of budget, and now reads the public Queen activity feed every 15 seconds, while three t27f pages move to pure black cards.", "outline": [ "Why the panel showed loading forever: three anonymous GitHub calls every 150 seconds spend the 60 per hour budget of a shared IP address.", "The public Queen activity feed at api.t27.ai needs no credential, is open to t27.ai, and answered 120 events with the newest one second old.", "The rules of the panel live in specs/t27f/live_fleet.t27 with ten tests, and the page glue follows that card line by line in 39 owner approved lines.", "Measured in a browser: polls 15 to 16 seconds apart, a LIVE header with issues in flight, and an honest unavailable state when the feed URL is dead.", "The live, gnn and graph pages now draw every card on pure black with grey borders, and the graph backdrop colour comes from the spec, not the page." ] } }🤖 Generated with Claude Code