Skip to content

Spec: the Fleet in the Console - #1815

Merged
JacobStephens2 merged 25 commits into
mainfrom
issue-1142
Nov 6, 2026
Merged

JacobStephens2 merged 25 commits into
mainfrom
issue-1142

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

Summary

One Console shows its Fleet in the existing Inbox, with machine tags, a URL machine filter, freshness, reachability, Fleet counts and notifications. Remote details open in place; Stop, Dismissal and Undo run on the owning machine with its authorization and Activity log.

CLI pairing → User config entries + Credentials tokens
Console page subscriptions → /api/v1 whoami + Inbox → merged Inbox
Console or CLI action/details → owning Console /api/v1 → local execution

Includes CLI pairing and legacy link migration, Fleet status JSON v2, --machine for status/actions/details, scope-aware controls, remote child Ticket details and bounded log previews, plus the manual and site updates.

Whole-Spec review fixes local-hostname Stop/Dismissal/Undo and details for Fleet aliases matching the caller hostname. Inbox ordering and paired destination lookup now share their owning rules.

Closes #1142

Evidence

Test seams

  • Real CLI commands over isolated fixture homes, including explicit local-host selection for Stop, Dismissal and Undo.
  • Two real Consoles over HTTP for Fleet reads, details, scopes, actions and owner-side Activity logs; browser interaction at desktop and phone widths.

Execution evidence

  • cargo test --test console local_hostname_dismissal_and_undo_use_the_local_command

    • Before: FAILED, unknown Fleet machine (plain Dismissal succeeded).
    • After: ok. 1 passed; 0 failed, including Undo and local CLI attribution.
  • cargo test --test console hostname_alias_details_stay_remote_while_api_and_cli_stay_local

    • Before: owning Console returned 200; caller Peek failed: left: 404, right: 200.
    • After: ok. 1 passed; 0 failed, covering Peek, Waterfall, spans, logs, and local API/CLI selection.
  • The Spec reviewer's two full Python reproductions failed against the reviewed head and exited 0 after the fixes.

  • CARGO_BUILD_JOBS=2 NEXTEST_TEST_THREADS=3 scripts/affected-tests main:

    • Site: 62 passed (106.24s); Console: 147 passed (190.21s); build passed.
    • Full Rust selector stopped early: 728 passed, 1 failed, 3,141 unrun, 91 skipped. The existing failed_run::when_origin_rejects_the_failure_push_the_worktree_and_local_branch_are_kept fixture hit systemd's Unit ... was already loaded or has a fragment file before its intended scenario ran.
    • cargo nextest run took 1209.90s, including 4m18s compilation; test execution was 949.462s. The full selector took 1561.79s on this Linux host. The full Rust suite is not green evidence.
  • cargo test --test failed_run when_origin_rejects_the_failure_push_the_worktree_and_local_branch_are_kept -- --exact: 1 passed on the isolated rerun (2.76s).

  • cargo test --bin thirdshift logs::reading::tests: 43 passed.

  • cargo test --test status: 78 passed, 1 ignored.

Visual evidence

Synthetic Command fixtures, Focus light Theme, same Inbox flow. Before uses main in a temporary detached worktree; After uses the reviewed branch plus fixes. The current base also contains its later Start work controls.

1440×900 desktop:

Before

After

390×844 phone:

Before

After

Unaddressed findings

Standards

None. Both findings addressed: reuse the typed Inbox ordering key and share paired destination/token resolution.

Spec

None. Both reproduced findings fixed: explicit local-hostname actions and hostname-colliding Fleet aliases in browser details.

Security

None. Remote Command details keep an issue or advisory link only when it names the GitHub record shown beside it.

Security review outcome

No unaddressed introduced findings.

Review coverage

Standards: 2 findings. Spec: 2 findings. Each independent reviewer read all 75 changed paths, including generated manual hunks and the hand-written site pages. No generated-output exclusions. No changed file left unread by either axis; all repair edits are within reviewed paths. Reports and final files-read lists: .thirdshift-review-NHJDZz/standards.md and .thirdshift-review-NHJDZz/spec.md; counts in summary.json. No findings were declined or deferred, so no triage issues were needed.

Merge Danger

Door: two-way

Config writes migrate legacy other_consoles to fleet; status JSON advances to version 2. Credentials remain in their owner-only file. Remote actions affect the owning machine's Commands and logs.

Blast Radius: Fleet

Pairing, Console Inbox/details/actions, CLI status/actions/details, and config migration.

Built with codex codex-cli 0.164.0 · gpt-6.1-sol · xhigh

Tickets

JacobStephens2 and others added 24 commits November 6, 2026 00:50
Add Fleet listing and CLI pairing
Show Fleet Inboxes and machine reachability in status
A paired machine's status document can set issue.url independently of
the repository and number that the Inbox shows as the link text. Drop
that href unless it is the same GitHub issue or pull request.
Show the Fleet in the Console Inbox
Fleet: remote Stop, Dismissal and Undo
Preserve in-place Fleet details alongside remote Stop, Dismiss and Undo. Share the viewer identity helper and regenerate the manual from its merged source.
Open remote Fleet Command details in the caller Console
A Fleet document chooses its issue URL and advisory URLs independently of the text beside them. Command details now keeps the issue link only when it names the visible repository and number, and an advisory link only when it is a github.com advisory. The visible text stays either way.
@JacobStephens2
JacobStephens2 marked this pull request as ready for review November 6, 2026 21:00
Preserve Fleet help and documentation alongside upstream Console start and admin features. Reconcile the CLI parity inventory and start-command match, keep Fleet destinations shell-controlled, and use the existing Fleet migration helper in the new config writer.

Validation: 67 site tests and 158 Console browser tests passed; clippy and formatting passed. Focused parity, Fleet migration, API config and CLI config checks passed. The full Rust run stopped with 880 passed and one systemd transient-scope collision; 3038 tests were unrun. The failed merge-run test passed in isolation.
@JacobStephens2
JacobStephens2 merged commit ed30292 into main Nov 6, 2026
16 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1142 branch November 6, 2026 22:02
@JacobStephens2 JacobStephens2 mentioned this pull request Nov 9, 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: the Fleet in the Console

1 participant