Repository navigation
Description
Overview
PyAutoCTI has no docs.yml, so nothing builds its Sphinx docs before merge. The api/ pages drifted to 53 dead entries before #124 fixed them. This wires PyAutoCTI into Heart's reusable docs-build.yml, which fails a PR when the warning count rises above a committed baseline, and removes the build-time cloning in docs/conf.py that CI can't use. cti-upkeep phase 3c.
Plan
- Heart: add the
autoctipackage to the shared docs-build workflow (Nerves + Fit + Array chain; no arcticpy, which the lazy import makes possible). - PyAutoCTI: add the thin
docs.ymlcaller, a copy of PyAutoFit's. - Make
conf.pymatch PyAutoLens's (no cloning) and delete the staledocs/requirements.txt, which RTD doesn't use. - Commit
docs/sphinx_warning_baseline.txtwith the first CI warning count. - Heart PR merges first (the caller uses
@main), then re-run the PyAutoCTI Docs leg. - Tier: glance. Merge mode: auto-merge on green if the Witness passes, then a post-merge summary.
Detailed implementation plan
Affected Repositories
- PyAutoCTI (primary)
- PyAutoHeart
Branch Survey
| Repository | Current Branch | Dirty? |
|---|---|---|
| ./cti/PyAutoCTI | main (3cf3b7e) | clean |
| ./organs/PyAutoHeart | main | clean |
Suggested branch: feature/cti-docs-yml-caller
Implementation Steps
PyAutoHeart/.github/workflows/docs-build.yml: addautocti) repo=PyAutoCTI; deps="PyAutoNerves PyAutoFit PyAutoArray" ;;and add autocti to thepackagedescription.PyAutoCTI/.github/workflows/docs.yml: thin caller (push to main + PRs ondocs/**,autocti/**,pyproject.toml,.readthedocs.yaml, the workflow; plusworkflow_dispatch) runninguses: PyAutoLabs/PyAutoHeart/.github/workflows/docs-build.yml@mainwithpackage: autocti.PyAutoCTI/docs/conf.py: droppyprojroot,clone_repoand the extrasys.pathentries; use the PyAutoLens header.- Delete
PyAutoCTI/docs/requirements.txt(no sibling has one; RTD installs.[docs]; it pins autonerves 2024.11.6.1). PyAutoCTI/docs/sphinx_warning_baseline.txt: the first CI count.- Verify: a local build without arcticpy; CI Docs leg green; a throwaway branch with a broken autosummary entry goes red (deleted, no PR); RTD build on main after the merge.
Key Files
PyAutoHeart/.github/workflows/docs-build.ymlPyAutoCTI/.github/workflows/docs.yml(new),docs/conf.py,docs/requirements.txt,docs/sphinx_warning_baseline.txt(new)- Reference:
PyAutoFit/.github/workflows/docs.yml,PyAutoLens/docs/conf.py
Original Prompt
Click to expand starting prompt
PyAutoCTI docs build in CI: docs.yml caller on Heart's docs-build.yml + Sphinx warning baseline
Type: maintenance
Target: autocti
Repos:
- PyAutoCTI
- PyAutoHeart
Themes: - cti
- docs-hub
- infrastructure
Difficulty: easy
Autonomy: supervised
Priority: normal
Status: formalised
Consequence: glance
Witness: a PyAutoCTI PR touchingdocs/**runs theDocsworkflow throughPyAutoLabs/PyAutoHeart/.github/workflows/docs-build.yml@mainwithpackage: autoctiand it is green against a committeddocs/sphinx_warning_baseline.txt;docs/conf.pyno longer clones PyAutoFit/PyAutoArray at build time; a deliberately broken autosummary entry on a throwaway branch turns the leg red.
Review-minutes: 5
Unattended: ready
Epic: cti-upkeep
Phase: 3
Filed: 2026-11-06
Human request (2026-11-06): "then start_dev the docs.yml caller (3c)".
cti-upkeep phase 3c. PyAutoCTI has no docs.yml, so its Read the Docs build is checked by nothing
before merge. The 5c rewrite (PyAutoCTI#124, complete/2026/11/cti-api-rst-rewrite.md) took the api/
pages from 53 Sphinx warnings to 0; this phase stops them drifting back.
State found 2026-11-06:
- Heart
docs-build.yml(reusable) mapspackage→ repo + dependency chain for autonerves, autofit,
autoarray, autogalaxy, autolens and pyautoscientist; it has noautocticase (an unknown package
fails with::error::unknown package). It installs./<dep>[optional]per dependency, then
./<repo>[optional,docs], builds withpython -m sphinx -b html docs docs/_build/html -w warnings.log
and fails when the count goes abovedocs/sphinx_warning_baseline.txt(a missing file means 0). - The sibling callers (
PyAutoFit/.github/workflows/docs.yml, PyAutoLens, PyAutoGalaxy) are thin: push to
main + pull_request ondocs/**,<pkg>/**,pyproject.toml,.readthedocs.yaml, the workflow
itself, plusworkflow_dispatch. Baselines: PyAutoFit 30, PyAutoLens 134. - PyAutoCTI
pyproject.tomlalready has adocsextra (sphinx, furo, myst-parser, sphinx_copybutton,
sphinx_design, sphinx_inline_tabs, sphinx_autodoc_typehints) and does not depend on arcticpy (the
2c lazy import, PyAutoCTI#118), soimport autoctiworks without the C++ build. The CI docs build
should not install arcticpy: that is the point of R2. Expect a few extra autodoc warnings from
arcticpy-backed signatures if any. Measure them; don't install arcticpy to hide them. docs/conf.pyrunsgit clone https://github.com/rhayes777/PyAutoFitand
https://github.com/Jammy2211/PyAutoArrayat build time,pip install -rtheir (nonexistent)
requirements.txt, and prepends the clones tosys.path. That needspyprojroot, and in CI it would
shadow the branch-matched dependencies Heart installs. Replace it with the PyAutoLensconf.pypattern
(no cloning). Check that RTD still builds:.readthedocs.yamlinstalls.[docs]plus an arcticpy
post_install.docs/requirements.txtpinsautonerves==2024.11.6.1,arcticpy==2.6andpyprojroot==0.2.0.
RTD does not read it (.readthedocs.yamlinstalls.[docs]). Decide: delete it, or align it with the
docs extra. Check what the siblings do.- Heart's ci_timing already carries CTI rows (PyAutoCTI
Tests, the autocti_workspace gates,
autocti_workspace_test), derived fromrequired_workflows. No ci_timing work is needed; the
epic text's "ci_timing rows" item is satisfied. LibraryDocsworkflows are not timed for any sibling. - Local measurement (2026-11-06, PyAuto313 + docs requirements, arcticpy installed, conf.py cloning):
53 warnings in total, 0 on api/ (26 toc.not_included, 10 bullet-list, 8 myst H2, 5 myst xref, …).
The CI number will differ (no arcticpy, no clones,-wfile line count). Take the baseline from the
first CI run, not from this.
Scope: (1) Heart docs-build.yml: add autocti) repo=PyAutoCTI; deps="PyAutoNerves PyAutoFit PyAutoArray" ;;
and add autocti to the package input description; (2) PyAutoCTI .github/workflows/docs.yml thin caller
mirroring PyAutoFit's; (3) conf.py de-cloned; (4) docs/requirements.txt resolved; (5)
docs/sphinx_warning_baseline.txt from the first green CI count (ratchet down only, with justification).
Heart merges first: the caller references @main, and the PyAutoCTI PR's Docs leg goes red until the
Heart mapping lands. Tenant firewall: the CTI names are already allowlisted from phase 1.
Out of scope: Python 3.14 (R4 deferred); Heart workspace-validation / release-integrate rows (p1-deferred,
separate); README badges (5c remainder).
Activity
Jammy2211 commentedon Nov 6, 2026
Shipped — 2026-11-06
PRs
docs-build.ymlknowsautoctiand installs arcticpy for itdocs.ymlcaller, conf.py with no build-time cloning,docs/requirements.txtremoved, baseline 15Summary
PyAutoCTI's Sphinx docs now build on every PR touching them. CI count:
Sphinx warnings: 15 (baseline: 15). Witness: a throwaway branch addingsubplot_this_does_not_existto plot.rst turned the Docs leg red (failed to import autocti.plot.subplot_this_does_not_exist); the branch is deleted.Session Notes