Files
boshu2__agentops/scripts/generate-documentation-index.py
Bo cbe7ddbb5f feat(gc): ship thin native AgentOps factory pack (#980)
## Outcome

Ships AgentOps 3.3 as a thin native Gas City pack and removes the
accidental second orchestration control plane.

- Removes the custom GC delivery command/package, packet/schema family,
feeder/program engine, reducer/order, reliability registry, Beads
capability mirror, and fork-baseline runtime checks (about 29k deleted
lines).
- Retains six bounded adapters for pinned toolchain materialization,
clean bootstrap, native sling/status/doctor invocation, bead-isolated
worktrees, moving-main PR delivery, and teardown.
- Uses official Gas City and Beads behavior as the state owners, with
required OTEL configuration.
- Preserves Fable Mayor/Refiner, Sol-high planning and fresh validation,
Terra-high default implementation, Opus-medium overflow, and
support-only Luna.
- Supports automatic Refiner merge after hosted CI or a manual-review
toggle without locking `main`.

## Evidence

- Exact official GC: `8ffc009ded781a2ada2077f3a29bd712b2def0bf`
- Exact official BD: `8e4e59d39f3459a43cf21a3236a13eca4dd874f7`
- Full pinned native boundary: 9/9 passed in 114.047s
- Exact source-bead route replay: passed in 98.051s
- Release replay: manifest integrity, thin tests and both pack lints,
generated projections, contract compatibility, Bats contract,
ShellCheck, test-removal ratchet, and `go test ./...` all passed
- Fresh independent semantic verdict: PASS (Sol-high)
- Exact delivered head: `e805f0e26ce21c2eae9e720f57fff2a705f3185b`
- Subject manifest:
`8554d065076f70d0e639ca353409d2a75dca7ac01e4cb65cb4a118e98c0770fc`
- Verdict:
`3f89376b675de854832f38b46ccfa7ad7ca54079ffde578769c33e1f118c68c1`

## Release boundary

After this PR merges, the release qualification runs one fresh mixed
Terra/Opus canary from merged `main`, with at most one external repair
and one terminal retry. No live city repairs itself.

The only known local fast-gate exception is `workflow.install-drift`:
the installed workflow symlink resolves to the separate dirty primary
checkout, outside this candidate. All candidate-owned gates passed.
2026-07-22 19:08:02 -04:00

75 lines
2.6 KiB
Python
Executable File

#!/usr/bin/env python3
"""Generate the small public documentation index from live files."""
from __future__ import annotations
import argparse
from pathlib import Path
import sys
ROOT = Path(__file__).resolve().parents[1]
TARGET = ROOT / "docs" / "documentation-index.md"
# Repo-root files sit OUTSIDE the MkDocs docs_dir, so a relative ../README.md
# link 404s on the published site. Emit absolute GitHub URLs for those targets.
GITHUB_BLOB = "https://github.com/boshu2/agentops/blob/main"
def title(path: Path) -> str:
if path.suffix == ".md":
for line in path.read_text(encoding="utf-8", errors="replace").splitlines():
if line.startswith("# "):
return line[2:].strip()
return path.stem.replace("-", " ").replace("_", " ").title()
def render() -> str:
lines = [
"# Documentation index",
"",
"This index is generated from live files by `scripts/generate-documentation-index.py`.",
"Dated plans, audits, releases, and archive material are historical evidence, not current authority.",
"",
"## Product and workflow",
"",
f"- [README]({GITHUB_BLOB}/README.md)",
f"- [Product boundary]({GITHUB_BLOB}/PRODUCT.md)",
f"- [Fitness goals]({GITHUB_BLOB}/GOALS.md)",
f"- [Program boundary]({GITHUB_BLOB}/PROGRAM.md)",
"- [Operating loop](architecture/operating-loop.md)",
"- [Gas City reliability boundary](operations/gas-city-reliability.md)",
"- [Agent workflow](agent-workflow-reference.md)",
"- [Repository CI and delivery](CI-CD.md)",
"- [Component map](architecture/component-map.md)",
"- [Ports and adapters](architecture/ports-and-adapters.md)",
"- [Skill router](SKILL-ROUTER.md)",
"- [Skill graph](reference/agentops-skill-graph.md)",
"",
"## Contracts",
"",
]
for path in sorted((ROOT / "docs" / "contracts").iterdir()):
if path.is_file() and not path.name.startswith("."):
lines.append(f"- [{title(path)}](contracts/{path.name})")
lines.append("")
return "\n".join(lines)
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("--check", action="store_true")
args = parser.parse_args()
expected = render()
if args.check:
if not TARGET.exists() or TARGET.read_text(encoding="utf-8") != expected:
print("documentation index drift", file=sys.stderr)
return 1
return 0
TARGET.write_text(expected, encoding="utf-8")
return 0
if __name__ == "__main__":
raise SystemExit(main())