Skip to content

I3241 — Only a job that reads history fetches all of it

Declare in gates.yaml which gates read history, and give fetch-depth 0 only to the jobs that run one of them.

BLOCKED wave 6 · p3 · implementation profile · parallel safe

Part of a-change-is-judged-in-minutes — A change is derived in under a second and judged in minutes, and nothing that could have changed is skipped.

Blocked. This issue cannot start until I3242 is done. The status is derived from that, not declared.

Objective

Declare in gates.yaml which gates read history, and give fetch-depth 0 only to the jobs that run one of them.

Why

c228#3: a full fetch costs 10-60 s per job on a repository of about 1 GB. It extends milestone ci-critical-path. Sources: chatgpt-majordomus:c228#3, chatgpt-majordomus:c025#3.

Current state

Measured on master 707a04c, 2026-10-18: nine validate.yml jobs check out with fetch-depth 0 (structure, suite-shard, rust, coverage, evidence, site, macos, install, pages); the plan job uses 2.

Desired state

fetch-depth follows the gate model, and a case refuses a full fetch no gate needs.

Scope

  • .github/workflows/validate.yml
  • .ai/repo/ci/gates.yaml
  • scripts/ci-plan

Dependencies

Acceptance criteria

  • Each fetch-depth 0 is justified by a declared history gate (case)
  • No history-reading gate fails for want of history

Validation

  • scripts/ci-plan --check

Evidence required

  • fetch_depth_follows_gates_case

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Timeline

started
—
verified
—
completed
—

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I3241.yaml. Read it back with majordomus plan show I3241.

Searches the titles and descriptions of every page this site publishes.