You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
make a view in thirdshift console web ui which lets you see by repository which host in the fleet runs which cronjob / which type of thirdshift run on schedule #1969
The requested combined view is absent on the selected Base branch, main at 9eea88c.
Confirmed evidence:
src/cronjobs.rs:11-20 exposes jobs containing only schedule and command; repository and Command kind are not associated with individual entries. src/console/openapi.rs:235 documents that same shape.
src/console/cronjobs.rs:30-56 loads either the local inventory or one selected machine's /cronjobs endpoint. src/console/cronjobs.html:11 renders a flat crontab listing. There is no combined repository-to-machine schedule view.
src/launch_directories.rs:60-150 already resolves readable GitHub checkout origins and parses literal cd-based cron invocations without executing shell text. src/console/start_controls.rs:150 onward already parses some scheduled Pass arguments. These are reuse opportunities, not complete inventory classification: unparseable entries must remain visible.
pass_starts is observed execution evidence, separate from configured schedules. The page explicitly says manual launches and skipped Passes are included and that starts do not identify the scheduler.
Proposed split
Reuse open enhancement Separate the cronjobs view by repository #1825, Separate the cronjobs view by repository, for machine-local repository association, grouping, CLI/API representation and unresolved-entry handling. Its body already describes this work and contains unanswered design choices; no Trusted-account comments were returned. Do not create another issue for this portion.
ADR 0009 keeps scheduling with the operating system. ADR 0026, Each Console serves an API, requires CLI parity and keeps owning-machine APIs local; implement aggregation through an explicit Fleet client/view rather than allowing API callers to borrow saved Fleet credentials.
After the Day shift settles the split and scope, shape the implementation briefs and dependency. Validation should cover two machines scheduling the same repository, multiple repositories and Command kinds, unresolved shell commands, partial Fleet failures, read-scope/person restrictions, and CLI/page/API agreement. Relevant tests are tests/console/cronjobs.rs, Console Fleet tests and console/tests/cronjobs.test.cjs. Update docs/guide.md, generated manual, OpenAPI and affected hand-written site descriptions.
Validation: cargo test --test console cronjobs:: -- --test-threads=3 could not start because cargo is unavailable. scripts/affected-tests main succeeded with 'No changed files; no affected tests.' Source and Git history remain unchanged.
Questionnaire
For the Day shift: #1969 requests a repository-by-machine overview of scheduled Commands. The Console currently displays one machine's crontab at a time, and open #1825 already covers grouping that inventory by repository.
Should the initial overview cover only the serving account's thirdshift crontab entries on each configured Fleet machine? Recommended: yes, matching the existing inventory. If system crontabs, other accounts or systemd timers are required, name them so their discovery can be scoped separately.
Should the overview extend /cronjobs with an explicit Fleet view and matching CLI output, showing repository → machine → recognized Command kind, original schedule and command? Recommended: yes, retaining unknown entries and explicit machine failures. Confirm whether this meets the request or specify a different required layout; this settles the user-facing acceptance criteria.
Scope: yes. Only the thirdshift entries in the serving account's crontab on each configured Fleet machine. System crontabs, other accounts and systemd timers are out of scope.
Shape: yes. An explicit Fleet view on /cronjobs with matching CLI output: repository → machine → recognised Command kind, original schedule and command. Keep unrecognised entries, and show machines that are unavailable, refused or link-only explicitly.
Blocked by: #1825. The native GitHub dependency already exists and #1825 remains open. Keep that dependency; do not duplicate its machine-local repository association and grouping work.
Accepted scope
The Trusted-account response supplied in .thirdshift-issue.md accepts all three earlier recommendations: #1825 owns machine-local repository metadata/grouping across CLI, page and API; #1969 consumes those inventories for an explicit Fleet view on /cronjobs with matching CLI output. Include only thirdshift entries in the serving account's crontab on each configured Fleet machine. Show repository → machine → recognised Command kind, original schedule and command. Preserve unrecognised entries and explicitly show unavailable, refused and link-only machines. No further scope questionnaire is needed.
Confirmed evidence
On selected Base main at 02c9654, src/cronjobs.rs:11-20 contains only jobs with schedule/command and separate pass_starts. src/console/cronjobs.rs:30-56 loads local inventory or one selected machine; src/console/cronjobs.html:11 renders a flat listing. src/args.rs:828 accepts only cronjobs [--json]. The combined view is absent. Open #1825 covers only the prerequisite local grouping; this Fleet remainder is not a duplicate.
Implementation and acceptance
After Separate the cronjobs view by repository #1825 lands, add explicit Fleet selection on /cronjobs and a corresponding CLI option, such as thirdshift cronjobs --fleet [--json]. Share aggregation and presentation data between page and CLI. Preserve the existing local view.
Combine the local account inventory with inventories fetched from configured Fleet machines. Use repository metadata resolved by the owning machine; never resolve remote checkout paths on the aggregating machine. Group repository headings alphabetically, keep unresolved entries under Other and preserve each machine's entry order. Retain machine identity on every entry, including identical schedules for the same repository on different machines.
Add conservative, nullable Command-kind classification to the owning-machine inventory and its OpenAPI schema. Reuse literal parsing and args::parse where suitable. src/launch_directories.rs:72-150 and src/console/start_controls.rs:150 onward are starting points, but Run now recognition covers only some Commands and must not filter the inventory. Preserve every existing thirdshift entry with unknown metadata when classification fails; never execute cron text.
Represent successful empty inventories separately from failures. Keep results from healthy machines when another machine times out, refuses access or returns incompatible data. Show link-only machines with their Console links without sending requests to them.
Follow ADR 0009 and the Console API ADR: this is schedule inspection, with scheduling left to the operating system. Use the existing Fleet transport/address validation, bounded requests and redirect policy in src/console/fleet.rs and src/console/fleet/read.rs. Page requests must forward the signed-in person's identity and respect the owning machine's effective read authorization; CLI requests use the token holder. Keep /api/v1/cronjobs local: API callers must not borrow saved Fleet credentials through aggregate or machine query parameters. Preserve separate Run now authorization and controls.
Keep configured schedules distinct from Last fired observations: pass_starts includes manual launches and skipped Passes and cannot identify the scheduler. Do not convert schedules between machines' time zones.
Validation and documentation
Extend tests/console/cronjobs.rs, tests/console/fleet_control.rs, tests/console/address_scopes.rs and console/tests/cronjobs.test.cjs as appropriate. Cover two machines scheduling the same repository, multiple repositories and Command kinds, unknown entries, empty inventories, partial failures, link-only machines, incompatible inventories, read-only access, run-only inventory refusal, forwarded-person restrictions and API non-relay behavior. Verify local CLI/API agreement and Fleet CLI/page agreement, escaping and phone-width usability. Update CLI help, OpenAPI, docs/guide.md and regenerate the manual; search the hand-written site pages for affected Cron jobs and Fleet descriptions. Run scripts/affected-tests main before completion.
Investigation validation: cargo test --test console cronjobs:: -- --test-threads=3 could not start because cargo is unavailable. scripts/affected-tests main passed with 'No changed files; no affected tests.' Runtime behavior was therefore not verified in this session.
Not part of #1969's scope. This proposal (estimated GitHub requests per hour from scheduled Passes) was written without seeing that #1969 was already briefed and in progress (PR #1987). The Agent Brief of 2026-11-10 20:18 UTC stands. The estimate is a candidate follow-up issue built on #1969's Fleet view; see #739 for the quota evidence behind it.
Withdrawn. This comment was posted without seeing that #1969 was already briefed (the Agent Brief of 2026-11-10 20:18 UTC, following the maintainer's answers at 20:15 UTC) and already in progress (PR #1987). That earlier brief is still the contract for #1969. Do not use this comment for #1969's scope.
The GitHub request-rate estimate it described (measured idle-Pass costs: Pickup 4 REST + 2 GraphQL, Triage 4 REST, Review 2 REST + 1 per waiting PR, 0 for a Pass skipped at the Command limit) is a proposed follow-up to #1969, not part of it. A separate issue will hold it if the maintainer wants one.
Activity
JacobStephens2 commentedon Nov 10, 2026
Investigation summary
The requested combined view is absent on the selected Base branch, main at 9eea88c.
Confirmed evidence:
Proposed split
ADR 0009 keeps scheduling with the operating system. ADR 0026, Each Console serves an API, requires CLI parity and keeps owning-machine APIs local; implement aggregation through an explicit Fleet client/view rather than allowing API callers to borrow saved Fleet credentials.
After the Day shift settles the split and scope, shape the implementation briefs and dependency. Validation should cover two machines scheduling the same repository, multiple repositories and Command kinds, unresolved shell commands, partial Fleet failures, read-scope/person restrictions, and CLI/page/API agreement. Relevant tests are tests/console/cronjobs.rs, Console Fleet tests and console/tests/cronjobs.test.cjs. Update docs/guide.md, generated manual, OpenAPI and affected hand-written site descriptions.
Validation: cargo test --test console cronjobs:: -- --test-threads=3 could not start because cargo is unavailable. scripts/affected-tests main succeeded with 'No changed files; no affected tests.' Source and Git history remain unchanged.
Questionnaire
For the Day shift: #1969 requests a repository-by-machine overview of scheduled Commands. The Console currently displays one machine's crontab at a time, and open #1825 already covers grouping that inventory by repository.
JacobStephens2 commentedon Nov 10, 2026
Answers to the triage questionnaire above. All three recommendations are accepted:
owner/repoheadings sorted alphabetically; original entry order within each group; an "Other" group for entries whose repository can't be resolved; the repository as additive, nullable metadata on each entry; Run now and Last fired kept as separate sections./cronjobswith matching CLI output: repository → machine → recognised Command kind, original schedule and command. Keep unrecognised entries, and show machines that are unavailable, refused or link-only explicitly.JacobStephens2 commentedon Nov 10, 2026
Agent Brief
Blocked by: #1825. The native GitHub dependency already exists and #1825 remains open. Keep that dependency; do not duplicate its machine-local repository association and grouping work.
Accepted scope
The Trusted-account response supplied in .thirdshift-issue.md accepts all three earlier recommendations: #1825 owns machine-local repository metadata/grouping across CLI, page and API; #1969 consumes those inventories for an explicit Fleet view on /cronjobs with matching CLI output. Include only thirdshift entries in the serving account's crontab on each configured Fleet machine. Show repository → machine → recognised Command kind, original schedule and command. Preserve unrecognised entries and explicitly show unavailable, refused and link-only machines. No further scope questionnaire is needed.
Confirmed evidence
On selected Base main at 02c9654, src/cronjobs.rs:11-20 contains only jobs with schedule/command and separate pass_starts. src/console/cronjobs.rs:30-56 loads local inventory or one selected machine; src/console/cronjobs.html:11 renders a flat listing. src/args.rs:828 accepts only cronjobs [--json]. The combined view is absent. Open #1825 covers only the prerequisite local grouping; this Fleet remainder is not a duplicate.
Implementation and acceptance
Validation and documentation
Extend tests/console/cronjobs.rs, tests/console/fleet_control.rs, tests/console/address_scopes.rs and console/tests/cronjobs.test.cjs as appropriate. Cover two machines scheduling the same repository, multiple repositories and Command kinds, unknown entries, empty inventories, partial failures, link-only machines, incompatible inventories, read-only access, run-only inventory refusal, forwarded-person restrictions and API non-relay behavior. Verify local CLI/API agreement and Fleet CLI/page agreement, escaping and phone-width usability. Update CLI help, OpenAPI, docs/guide.md and regenerate the manual; search the hand-written site pages for affected Cron jobs and Fleet descriptions. Run scripts/affected-tests main before completion.
Investigation validation: cargo test --test console cronjobs:: -- --test-threads=3 could not start because cargo is unavailable. scripts/affected-tests main passed with 'No changed files; no affected tests.' Runtime behavior was therefore not verified in this session.
JacobStephens2 commentedon Nov 11, 2026
Not part of #1969's scope. This proposal (estimated GitHub requests per hour from scheduled Passes) was written without seeing that #1969 was already briefed and in progress (PR #1987). The Agent Brief of 2026-11-10 20:18 UTC stands. The estimate is a candidate follow-up issue built on #1969's Fleet view; see #739 for the quota evidence behind it.
JacobStephens2 commentedon Nov 11, 2026
Withdrawn. This comment was posted without seeing that #1969 was already briefed (the Agent Brief of 2026-11-10 20:18 UTC, following the maintainer's answers at 20:15 UTC) and already in progress (PR #1987). That earlier brief is still the contract for #1969. Do not use this comment for #1969's scope.
The GitHub request-rate estimate it described (measured idle-Pass costs: Pickup 4 REST + 2 GraphQL, Triage 4 REST, Review 2 REST + 1 per waiting PR, 0 for a Pass skipped at the Command limit) is a proposed follow-up to #1969, not part of it. A separate issue will hold it if the maintainer wants one.