Skip to content

ci/docs: stop committing generated aggregate docs in PRs (oracle_assumptions.md et al.): render post-merge to the generated branch #5057

Closed

Description

@squid-protocol

Problem (churn throughput): parallel PRs keep conflicting on generated aggregate docs that every PR re-renders and commits. Over the last 3 days on main:

File Changes in 3 days Generated from
docs/language_status/oracle_assumptions.md 30 register entries (register.py render)
docs/language_status/cics_spec_status.md 7 CICS spec
docs/self_scan/graph_comparison_ledger.json 5 ledger
docs/language_status/evidence_report/*/report.{md,json} 3 each evidence report

Example: #5038 and #5041 both went dirty after #5035 merged, on oracle_assumptions.md (and a comment line), and sat for hours. Every conflict costs a worker run plus a CI cycle.

Direction (same pattern as #4963, which moved the ground-truth history and evidence report to the generated branch):

  1. PRs commit sources only (register entries, spec tables, ledgers' inputs). The aggregate pages are no longer committed in PRs.
  2. CI on a PR checks that the render succeeds and is deterministic (render to a temp dir; fail on error or on a source the renderer can't place), and posts the rendered diff as an artifact or job summary, so a reviewer still sees the effect.
  3. A post-merge job renders the aggregates from main and publishes them to the generated branch (no bot writers to main, per Remaining bot writers to main: move ground-truth history, evidence report, architecture brief to the generated branch #4963). Docs and README links to these pages point at the published copy, with the committed copy on main kept as a fallback only until the first publish (see how Remaining bot writers to main: move ground-truth history, evidence report, architecture brief to the generated branch #4963 handled the first run).
  4. Remove the "generated file is stale" gates for those files from pr_gates, and replace them with the render check from step 2.
  5. Class sweep: list every generated, committed file (git grep -l "GENERATED\|do not edit" -- docs), and decide per file: move, or keep committed with a reason (e.g. it is read by code at runtime). Put the table in the PR.

Acceptance: two PRs that each add a register entry merge in either order with no conflict; the published pages match a fresh render of main; no workflow writes to main.

Owner asked for this (2026-10-13: "software factory" improvements, item 5). Workflow edits allowed.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    scope:infraCI, tooling, churn/factory, docs infrastructure

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions