Repository navigation
Spec: the Console, a web page for each machine's Commands - #842
Open
JacobStephens2 wants to merge 79 commits into
Open
JacobStephens2 wants to merge 79 commits into
JacobStephens2 wants to merge 79 commits into
Conversation
Keep CI watch and Self-merge waiting lines active
Show Silent and Slow Runs with repository Usual ranges
Show the machine’s Inbox in thirdshift status
The copied executable could fail to spawn with ETXTBSY when a concurrent test child inherited fs::copy's write handle. Copy in a separate cp process, as the existing replacement-test helper does, and wait for it to finish before launching the Console. Validated the exact failure with a forced inherited-writer reproduction before the fix and its passing result after it; cargo test, cargo fmt --check, and cargo clippy --all-targets -- -D warnings pass.
Serve the localhost Console Inbox with Focus
Add Console log inventory and live conversation readers
Preserve the live Inbox alongside the Console log inventory and readers. Keep stable row identities, heartbeat observations, CLI route parity, and shutdown of both Inbox and log streams during binary replacement. Validated with cargo check --locked, cargo test --locked, cargo fmt --check, cargo clippy --all-targets -- -D warnings, and all 14 Console browser tests.
Set Console passwords by email code
Preserve Console Stop and Requeue alongside email-code password setup. Register both sets of routes and HTTP tests, retaining shared-path CLI parity accounting. Validation: cargo test --locked; cargo clippy --all-targets -- -D warnings; cargo fmt --check; all 27 Console browser tests.
Add Console service and proxy installation scripts
Preserve the Console installation entry alongside the expanded Console Stop implementation and test references.
Ask about the Console during Setup
Stop live Commands from the Console
Preserve the Theme routes and authenticated Stop routes. Use the shared Command watcher for Inbox, time-page and peek updates, retaining Theme activity and polling recovery. Apply the saved Pause motion preference on the Stop page and cover it alongside reduced motion. Validated with cargo test --locked --quiet, cargo clippy --all-targets -- -D warnings, cargo fmt --check, and all 32 Console browser tests.
Add Console Themes, saved look settings and activity motion
Add custom Console Themes and local fonts
JacobStephens2
marked this pull request as ready for review
October 20, 2026 15:56
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #776
Each machine now serves its own authenticated Console. The seven pages and CLI share Command observations, Inbox grouping, Silent/Slow health, stage Usual ranges and exact log ownership. CI watch and Self-merge emit waiting lines; Setup offers the Console and an owner-run installation script.
Includes live conversation readers for Claude/Codex, keyboard navigation and peeks, authenticated Stop/Requeue, durable accounts and email password codes, the Console log, six built-in Theme families, custom Theme import/export and confined local fonts. Assets are embedded; the release build needs no Node or CDN. Console updates re-exec the replaced binary. The page writes only Stop, its own look and Theme files.
Evidence
Seams under test:
The CLI binary reading fixture Command records and logs, with observable status JSON and text.
The running Console over HTTP, including authenticated actions and appended log batches.
The Console in Playwright, including DOM preservation and recovery when streaming fails.
Before: a ready Run dispatched by a Pass had no top-level Ready for review row. After: the retained CLI/HTTP reproduction passes; the complete Pass tree remains in History and
show.Before: a Session reader stayed frozen for the reproduction's 12-second wait when SSE failed. After: finite offset-based polling appends lines while preserving existing DOM nodes. Both recovered-SSE and pending-poll overlap reproductions changed from two copies of a line to one.
Before: the seven-page header reproduction failed on Logs. After: shared
PageContextand header markup keep the machine and other-Console links on all seven pages, log readers and Stop.Removed source-regex parity and invented-markup CSS checks, retaining registered-router parity and served-page coverage.
Validation: 35/35 Console Playwright tests, ready/header reproductions, three standalone streaming regressions, formatting and Clippy pass. The full Rust run passed units (1,081 passed, two ignored) and all binaries before status, then found one outdated row-count assertion. After correcting it and checking the promoted child tree, all 26 status tests and the four remaining binaries passed; Clippy passed again. The full command was not restarted after this test-only correction.
Unaddressed findings
Standards
console/tests/accounts.test.cjs:12,console/tests/logs.test.cjs:14and the per-test custom-Theme setup own different authentication, process/log and configuration lifetimes. The implementation decision is to keep those fixture owners explicit rather than introduce a generic lifecycle interface. No behavioral defect was asserted; the independent followup accepted this rationale.src/logs/reading/inbox.rs:109computes readiness/cause for grouping;src/logs/status/inbox.rs:92computes repository/outcome filters;src/logs/status/time.rspreserves unknown historical stage evidence. These policies remain with their presenters. The ready-row fix reuses the existingObservationinterface where behavior is shared. The independent followup accepted this rationale.The page-context/data-clump judgment was addressed with
PageContextandheader.html. A universal HTML base remains optional: shared nav/chrome already own controls; Inbox's htmx/attention head and time/log heads load different resources and metadata.Spec
needs-triage.python3 console/reproductions/codex-edit-diff.pywas run and failed because real retained Codex file-change events contain only path/kind, not old/new text.src/console/conversation.rspreserves the event and explicitly says the patch is unavailable. Issue Decide Codex patch evidence retention for Console edit diffs #854 records the finding, evidence and originating PR Add Console log inventory and live conversation readers #853; this whole-Spec review raises the same gap on Spec: the Console, a web page for each machine's Commands #842. Choosing genuine patch capture, retention format and historical behavior changes the recording contract and belongs to the Day shift. The reproduction remains; this requirement is incomplete.Security review outcome
Review coverage
Both independent reviewers inspected all 153 original changed paths across the whole Spec, including vendor text, licenses and lockfiles. The 15 WOFF2 assets received metadata inspection; font outlines were not source-reviewed. No generated-output exclusions were taken.
Standards also read all three added review-fix files. The independent Spec reviewer did not inspect
src/console/header.htmlandconsole/reproductions/header-machines.py: these two paths remain unread on that axis. Both were read by Standards and the primary reviewer, and their served-page reproduction passes. No other changed path remains unread. Final files-read inventories and dispositions are written to.thirdshift-review-C0SjsM/standards.mdand.thirdshift-review-C0SjsM/spec.mdin the review workspace.Merge Danger
Door: two-way
The binary can be rolled back. Accounts, Console log and custom Themes persist beside the User config. Stop interrupts real Commands and changes issue labels.
Blast Radius: machine
Adds a persistent Console behind the owner's proxy and changes machine-wide status grouping, health, Setup and waiting-line behavior.
Built with codex · gpt-6.1-sol · high
Tickets