# Subsystem Status > Per-subsystem heartbeat. Each row records the **last time the subsystem was manually verified end-to-end** by a maintainer (not just "tests pass" — the gates can be wrong; see `MEMORY` lessons and `docs/maintenance/regression-testing.md`). > > Refresh target: every 6 months. Anything older than **365 days** should be treated as potentially dormant. **Last updated:** 2026-07-22 **Maintained by:** Daniel Ari Friedman (see [MAINTAINERS.md](MAINTAINERS.md)) ## Verification ledger | Subsystem | Last verified | Verified by | Verification scope | Health | | --- | --- | --- | --- | --- | | Pipeline orchestration (`infrastructure/orchestration/`) | 2026-05-21 | Daniel | `./run.sh --pipeline --project template_code_project --core-only --skip-infra` and `./run.sh --pipeline --project template_prose_project --core-only --skip-infra` run to completion; both named exemplars green | 🟢 healthy | | Test runner (`scripts/pipeline/stage_01_test.py`, `tests/infra_tests/`) | 2026-07-22 | Daniel (agent session) | Canonical migration/focused lanes passed 239 tests. The uncached full infrastructure rerun was intentionally stopped at 62% by the user before a final total; an earlier complete baseline had 8,930 passed and 8 stale-wrapper failures, all addressed in the focused migration. Configured mypy passes across 1,470 source files. | 🟡 focused contract verified; final full-lane total and external branch-protection setting remain open | | PDF rendering (`infrastructure/rendering/`) | 2026-05-21 | Daniel | Stage 5 rendered combined PDF/HTML/DOCX/slides for `template_code_project` and `template_prose_project`; `template_code_project` also rendered EPUB | 🟢 healthy | | Output validation (`infrastructure/validation/`) | 2026-05-21 | Daniel | Stage 6 validation passed 7/7 checks for `template_code_project` and `template_prose_project` after full core renders | 🟢 healthy | | LLM stages (`infrastructure/llm/`, Stages 7+8) | 2026-07-01 | Daniel (agent session) | Model pin `gemma3:4b` re-verified pullable/available (`ollama pull gemma3:4b` succeeded, 3.3GB); live `pytest tests/infra_tests/llm/ -m requires_ollama` — 50/51 passed (1 failure was a 20s timeout on `smollm2:latest` under local load, an environmental flake unrelated to the `gemma3:4b` pin, not a gate defect); "draft assistance" framing from 2026-05-20 confirmed still accurate in `infrastructure/llm/README.md` | 🟢 healthy | | Steganography (`infrastructure/steganography/`) | 2026-05-21 | Daniel | `STEGANOGRAPHY_DETERMINISTIC=1 ./secure_run.sh --steganography-only --project template_code_project` produced a 28-page `_steganography.pdf` plus `.hashes.json` manifest with SHA-256/SHA-512, document ID, source size, and Git commit provenance | 🟢 healthy | | Publishing (`infrastructure/publishing/`) | 2026-07-01 | Daniel (agent session) | Zenodo DOI 10.5281/zenodo.19139090 resolves; arXiv path documented. `scripts/runner/archive_publication.py --project templates/template_code_project` dry-run E2E verified end-to-end (after building the Stage 10 executable bundle prerequisite): `all_ok: true`, Software Heritage receipt generated at `output/templates/template_code_project/executable_bundle/ARCHIVAL_RECEIPTS.json`. **Real (non-dry-run) deposit still blocked**: no `.env` exists in this checkout, so Zenodo/GitHub/IPFS credentials are absent — the mechanics are proven, the live multi-provider deposit itself has not run | 🟡 mechanics verified via dry-run; real multi-provider deposit needs credentials | | Confidentiality invariant (`scripts/audit/check_tracked_all.py` + `.gitignore` + pre-push + symlink boundary) | 2026-05-21 | Daniel | Umbrella guard composes the project, fonds, rules, and tools allowlists; the hook rejects force-added local lifecycle paths and CI lint blocks merge. Confidential projects remain physically separated in the private sidecar and are symlinked into typed local subfolders — see [docs/maintenance/private-projects-repo.md](docs/maintenance/private-projects-repo.md). | 🟢 physical separation + layered defense | | Multi-project discovery (`infrastructure/project/discovery.py`) | 2026-05-20 | Daniel | `discover_projects()` returns public exemplars plus any rotating-active projects; `infrastructure.project.public_scope` filters docs/CI scope into `docs/_generated/active_projects.md` | 🟢 healthy | | Secure-run subcommand (`secure_run.sh`, `infrastructure.orchestration secure`) | 2026-05-21 | Daniel | Deterministic `--steganography-only --project template_code_project` smoke completed through `infrastructure.orchestration secure`; AES-256 PDF password behavior covered by `tests/infra_tests/steganography/test_encryption.py` | 🟢 healthy | | CI matrix (`.github/workflows/ci.yml`) | 2026-07-21 | Daniel (agent session) | Baseline push run [`29828839305`](https://github.com/docxology/template/actions/runs/29828839305) passed the Ubuntu/macOS infrastructure matrix, Python 3.10/3.12 project matrix for all 24 public exemplars, regression, manuscript, documentation, security, static-health, no-mocks, Actionlint, lint, type checks, and performance. The final publication commit still requires its own hosted run. | 🟢 baseline healthy; final-SHA hosted verification pending; Python 3.10 EOL Oct 2026 → drop next refresh | | Documentation index and generated docs (`docs/`) | 2026-07-22 | Daniel (agent session) | Counts `--check`, active-roster generation, methods guidance, capability inventory, and current coverage facts were reconciled against the 24-exemplar public scope. Snapshot-only artifact manifests are explicitly documented as integrity evidence rather than stage provenance. | 🟢 generated facts and source references verified | | Root release boundary (`pyproject.toml`, tags, GitHub releases, `CHANGELOG.md`) | 2026-07-17 | Daniel (agent session) | Root package/tag boundary is `3.6.0`/`v3.6.0`; current changes remain under `[Unreleased]`; standalone `v1.0.1` is explicitly excluded from root changelog parity. See `docs/maintenance/release-boundary.md`. | 🟢 boundary documented; next root release remains uncreated | | Skills manifest (`infrastructure/skills/`) | 2026-07-15 | Daniel (agent session) | Public-roster-driven skill discovery regenerated `.cursor/skill_manifest.json` and `docs/_generated/skills_index.md`; manifest, reachability, and all-exports gates passed in the 22-gate health sweep and hosted CI. | 🟢 healthy | | Regression tests (`tests/regression/`) | 2026-07-15 | Daniel (agent session) | The source-re-derived claim-binding regression tier runs as an explicit hosted CI job; its historical 55-test/15-exemplar count is not a current roster claim. Public-exemplar structural and coverage contracts are additionally enforced per project. See `docs/maintenance/regression-testing.md`. | 🟡 external required-check configuration remains open | | AutoResearch exemplar (`projects/templates/template_autoresearch_project/`) | 2026-06-13 | Codex | `uv run pytest projects/templates/template_autoresearch_project/tests/ -q` passed 224 tests after adding evidence overview, benchmark-boundary, and source-ledger contract checks | 🟢 healthy | ## Health legend - 🟢 **healthy** — last verified ≤ 6 months ago; gates green; no known structural issue - 🟡 **verify next refresh** — last verified > 6 months ago (or never), or has a known follow-up; not currently failing - 🔴 **action needed** — known structural issue or scaffold pending fleshing-out; do not assume it Just Works - ⚪ **archived/dormant** — explicitly retired; do not rely on ## How to refresh a row 1. Run the subsystem's verification step end-to-end (not just "tests pass" — see [`docs/maintenance/regression-testing.md`](docs/maintenance/regression-testing.md) on why test-green is not the same as subsystem-verified). 2. Update the "Last verified" date, your name, and the verification scope (be specific — "ran `./run.sh --pipeline --project X --core-only` and PDF rendered cleanly" beats "checked it"). 3. Set the health emoji. 4. Commit the change; CI checks that the table is well-formed. ## Why this matters at multi-decade horizons A template repo claiming reproducibility / agent-accessible-science / public-template viability across 10+ years cannot reasonably make those claims without **visible dormancy**. Untracked subsystems decay silently. This file is the cheapest insurance — one row updated per quarter is enough to keep the claim honest. ## Related - [MAINTAINERS.md](MAINTAINERS.md) — who owns what - [docs/maintenance/](docs/maintenance/) — toolchain migration, regression testing, archival, local CI - [AGENTS.md](AGENTS.md) — full system manual