Skip to content

Docs-only PRs still spend ~45 min in guard-cargo (25) and guard-tree (15): gate them on a single docs_only decision so a roadmap PR's CI is < 10 min #3668

Closed as not planned

Description

@noahgift

What

Operator, 2026-09-21: "NO roadmap shouldn't even have 10 minutes testing." #3664 (#3658) removes the workspace-test hour: docs-only changes get tier=none, and merge groups stop paying full. The rest of a roadmap-only PR's CI is still well over 10 minutes. Measured on #3637's PR run 35558860433 (files: 2 roadmap fragments, roadmap.yaml, one docs/audits receipt):

job minutes reads docs/roadmaps or docs/audits?
workspace-test-shard (1/3) 37 no (→ ~1 with #3664)
guard-cargo 25 4 of its 46 named scripts mention those paths: check_complexity_ratchet, check_explicit_test_commands, check_readme_claims, tests/ratchet_semantics_test
guard-tree 15 11 of 53 --no-cargo guards (the 5 roadmap guards, append_only_ledgers, assertions_exclude, complexity_ratchet, dogfood_coverage, kind_labels_derived, no_cluster_id_keys)
vendored-schemas, mutants, ci / lint 4 each —
the rest ≤ 2 each —

gate requires success (not skipped) from ci, workspace-test, guard-tree, guard-cargo and determinism-compare, so a job-level skip reds the gate. The skip has to be decided once and read by gate.

Proposal

  1. One cheap changes job runs ci_test_tier.sh (a docs-only decision now needs no registry derivation) and outputs docs_only=true|false.
  2. guard-cargo, mutants, determinism and the heavy parts of ci get needs: changes and if: needs.changes.outputs.docs_only != 'true'.
  3. gate accepts skipped for those jobs iff needs.changes.outputs.docs_only == 'true', and logs the reason. Anything else skipped stays a failure.
  4. guard-tree on a docs-only change runs only the guards whose inputs include docs/roadmaps/ or docs/audits/, derived by a guard_tree.sh --paths FILE mode from the guards' own declared inputs, not a hand list.
  5. Target: a roadmap-only PR's CI under 10 minutes wall, measured on a real PR.

done_when

  • a roadmap-only PR's CI completes in < 10 min wall, with gate green, on a real PR (run id in the body)
  • a PR that touches one .rs file plus a roadmap entry runs everything, as today (control)
  • mutation: gate accepting skipped without docs_only == 'true' fails a case row; a changes job that errors resolves to docs_only=false (fail closed)
  • the guard-tree path mode runs the roadmap guards on a roadmap-only diff (they must still gate it) and names each guard it skipped, with its reason

Depends on #3664. P0 per the operator.

Activity

  1. added this to the 0.69.0 milestone on Sep 21, 2026
  2. added
    bugSomething isn't working
    P0Critical priority
    on Sep 21, 2026
  3. modified the milestones: 0.69.0, 0.70.0 on Sep 21, 2026
  4. noahgift commented on Sep 21, 2026

    @noahgift
    ContributorAuthor

    slipped_from: 0.69.0

    §4.1 freeze (06x-release-schedule.md §1: "scope that is not on the platform rides the next train"). Operator, 2026-09-21, verbatim: "just by these optimization you should be able to release 0.69 today, ensure this happens". The 0.69 platform is #3669 plus the bump.

    Why this row rides 0.70: CI-cost row (docs-only guard jobs), not release content. It's in the CI diet with #3676.

    — aprender-04 (cop)

  5. modified the milestones: 0.70.0, 0.70.1 on Sep 24, 2026
  6. noahgift commented on Sep 24, 2026

    @noahgift
    ContributorAuthor

    Milestone 0.70.0 → 0.70.1 (gate triage). 0.70.0 now holds only the operator's release gate: "FULL ontology spec and all aprender binary working" + "0.70 to crates.io" (ONT-001, every [[bin]] build+smoke, the publish cascade), plus P0s and operator-ruled rows. This issue isn't needed for any of those. Evidence: evidence/m070-gate-triage-1835.md. If that's wrong, move it back to 0.70.0 and say which gate it serves.

  7. added 2 commits that reference this issue on Sep 26, 2026
  8. 10 remaining items

  9. added
    P1High priority
    and removed
    P0Critical priority
    on Oct 9, 2026
  10. noahgift commented on Oct 14, 2026

    @noahgift
    ContributorAuthor

    P0 to P1 (2026-10-14 P0 triage): P0 now means it blocks the next release or carries the operator's own words on it; this issue does neither, so it stays on the 0.71.0 milestone at P1. The operator quote in its history is a milestone-wide triage note, not words about this issue.

  11. noahgift commented on Oct 14, 2026

    @noahgift
    ContributorAuthor

    Folded into #3676 as a checklist row (TRIAGE-100, 2026-10-14): the open-ticket cap is 100, so this ticket is now tracked on that master and closed as not planned. Nothing is lost: reopen it when its work resumes, and an open PR for it reopens it. Pushed branch: ci/3668-unfold-neutral, PMAT-3668-docs-only-ci.

    Agent: aprender-clerk

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

    P1High prioritybugSomething isn't workingowner:aprender-78owning sessionsize:MK̂ 3-4 h

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions