Skip to content

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

Closed

Description

@JacobStephens2
No description provided.

Activity

  1. added
    enhancementNew feature or request
    needs-triageMaintainer needs to evaluate this issue
    in-progressA Claim: thirdshift has taken this issue
    and removed
    needs-triageMaintainer needs to evaluate this issue
    on Nov 10, 2026
  2. JacobStephens2 commented on Nov 10, 2026

    @JacobStephens2
    OwnerAuthor

    This was generated by AI during triage.

    Investigation summary

    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

    1. 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.
    2. Retain 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 for a Fleet overview consuming those local inventories: repository sections showing machine, recognized Command kind, original schedule and command, with explicit unavailable/refused/link-only machine states. Resolve checkout origins on the owning machine. Preserve entries with unknown repository or Command kind. Use read authorization, forward the signed-in person's identity, and preserve existing Run now authorization separately.

    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.

    1. Adopt this split: finish machine-local repository association/grouping in Separate the cronjobs view by repository #1825, then implement Fleet aggregation in 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, dependent on Separate the cronjobs view by repository #1825? Recommended: yes. This assigns the overlapping work once and establishes the implementation boundary. For Separate the cronjobs view by repository #1825's existing choices, the proposed defaults are owner/repo headings sorted alphabetically, original entry order within each group, an Other group for unresolved entries, additive nullable repository metadata, and separate Run now/Last fired sections.
    2. 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.
    3. 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.
  3. added and removed
    in-progressA Claim: thirdshift has taken this issue
    on Nov 10, 2026
  4. JacobStephens2 commented on Nov 10, 2026

    @JacobStephens2
    OwnerAuthor

    Answers to the triage questionnaire above. All three recommendations are accepted:

    1. Split: yes. Separate the cronjobs view by repository #1825 does the machine-local part: work out which repository each cron entry belongs to and group them by repository, on the CLI, page and API. 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 does the Fleet view built on that, and is blocked by Separate the cronjobs view by repository #1825. Defaults for Separate the cronjobs view by repository #1825: owner/repo headings 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.
    2. 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.
    3. 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.
  5. added
    in-progressA Claim: thirdshift has taken this issue
    and removed on Nov 10, 2026
  6. JacobStephens2 commented on Nov 10, 2026

    @JacobStephens2
    OwnerAuthor

    This was generated by AI during triage.

    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

    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. 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.
    6. 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.

  7. added
    ready-for-agentFully specified, ready for an AFK agent
    in-progressA Claim: thirdshift has taken this issue
    and removed
    in-progressA Claim: thirdshift has taken this issue
    ready-for-agentFully specified, ready for an AFK agent
    on Nov 10, 2026
  8. JacobStephens2 commented on Nov 11, 2026

    @JacobStephens2
    OwnerAuthor

    This was generated by AI during triage.

    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.

  9. JacobStephens2 commented on Nov 11, 2026

    @JacobStephens2
    OwnerAuthor

    This was generated by AI during triage.

    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.

  10. added
    ready-for-agentFully specified, ready for an AFK agent
    and removed
    ready-for-agentFully specified, ready for an AFK agent
    on Nov 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions