scripts/ contains operator-facing wrappers and repository validators for
abyss-stack.
These files stay at the source root because deployment sync copies them into
the runtime Configs/scripts/ command surface. Mechanic pages own the meaning
and part routes; this directory owns stable command entrypoints.
All operator command files at this root are thin wrappers. The implementation
bodies live under the owning mechanics/<package>/parts/<part>/ routes and are
still synced into deployed Configs/ with the wrappers.
| Group | Commands | Owning route |
|---|---|---|
| Layout and sync | aoa-install-layout, aoa-sync-configs, aoa-bootstrap-configs, aoa-check-layout, aoa-first-run |
config projection, runtime lifecycle; implementations under mechanics/config-projection/parts/{bootstrap,sync}/ and mechanics/runtime-lifecycle/parts/{layout-install,first-run-bootstrap}/ |
| Lifecycle wrappers | aoa-up, aoa-down, aoa-warmup, aoa-status, aoa-logs, aoa-wait, aoa-smoke, aoa-install-systemd, aoa-ovms-admission |
runtime lifecycle; implementations under mechanics/runtime-lifecycle/parts/{start-stop,logs-status,wait-smoke,user-unit}/ |
| Compose introspection | aoa-preset-profiles, aoa-profile-modules, aoa-profile-endpoints, aoa-render-services, aoa-render-config |
config projection rendering; implementations under mechanics/config-projection/parts/rendering/ |
| Diagnostics | aoa-doctor, aoa-diagnose, aoa-internal-probes, build_diagnostic_surface_catalog.py, validate_diagnostic_surface_catalog.py |
diagnostic spine; command backends under diagnostic-spine and runtime-lifecycle parts |
| Machine fit | aoa-host-facts, aoa-machine-bridge, aoa-machine-fit, aoa-platform-adaptation |
machine fit; command backends under mechanics/machine-fit/parts/ |
| Inference pilots | aoa-qwen-run, aoa-qwen-check, aoa-qwen-bench, aoa-llamacpp-pilot, aoa-langgraph-pilot, aoa-local-ai-trials, aoa-tos-foundation-lab, aoa-long-horizon-pilot, aoa-bounded-autonomy-pilot, aoa-runtime-bench-index |
inference pilots; command backends under mechanics/inference-pilots/parts/ |
| Governed execution | aoa-governed-run, aoa-agent-os-runtime, aoa-external-actor-bind, aoa-external-codex-agent, aoa-external-codex-incarnation, aoa-external-codex-stasis, aoa-export-memo-candidate, aoa-export-runtime-evidence-selection, aoa-export-artifact-hook-candidate, aoa-run-memo-contradiction-integrity |
governed execution; command backends under governed-execution and runtime-repair parts |
| Federation, KAG, and RPG seams | aoa-federated-check, aoa-sync-federation-surfaces, aoa-routing-canary, aoa-routing-cutover, aoa-kag-runtime-family, aoa-kag-runtime-projection, aoa-kag-runtime-eval, tos-up, aoa-tos-graph, aoa-rpg-runtime-projection |
federation seams; command backends under mechanics/federation-seams/parts/ |
| Repair adapters | aoa-a2a-return-closeout-dry-run |
runtime repair; command backend under mechanics/runtime-repair/parts/ |
| Repository validation | ci_gate.py, validation_lanes.py, run_pytest_lane.py, validate_stack.py, validate_nested_agents.py, validate_local_stats_port.py, validate_decision_records.py, generate_decision_indexes.py, build_workspace_decision_graph.py, validate_workspace_decision_graph.py, release_check.py |
root AGENTS.md, validation command authority, local stats port, mechanics artifact topology, decision records |
| Windows bridge | aoa.ps1, aoa-doctor-win.ps1, aoa-bootstrap-wsl.ps1 |
machine-fit windows bridge |
- Keep command names stable unless the route cards, docs, validators, and deployment sync behavior move with the change.
- Keep thin wrappers and part-local backend paths aligned;
validate_stack.pytreats this bridge as a required topology contract. - Keep source checkout and deployed runtime paths distinct.
- Keep
aoa-routing-canarynon-canonical: isolated and live-canary materialization require exact trust inputs, existing targets require a rollback root, and rollback preserves the displaced candidate. - Keep
aoa-routing-cutoverreceipt-bound: it accepts only an exactruntimetrust verdict, public-release record, materialized owner-switch receipt, named host change, and atomic predecessor rollback root. It never authorizes repository archival. - Use
aoa-install-systemd --all-user-unitswhen the deployed Configs mirror should become the source path for every allowlisted working user unit without restarting those services. - Use
aoa-install-systemd --provision-mcp-http-authas the explicit, non-printing secret action before starting authenticated shared MCP owners. - Use
aoa-install-systemd --rotate-abyss-stack-mcp-authonly as a standalone stopped-unit transaction; it leaves consumer refresh and canary restart explicit. - Use
aoa-install-systemd --system-unitsonly throughpkexecor an equivalent privileged route, and only for the allowlisted support units undersystemd/system/managed-units.txt. - Keep wrappers public-safe and avoid printing secrets.
- Keep decision-record shape, indexing, and generated decision graph validated through
generate_decision_indexes.py --checkandvalidate_decision_records.pywhendocs/decisions/changes. - Use
python scripts/build_workspace_decision_graph.py --writeto refresh the ignored local workspace graph underLogs/decision-graph/latest/when an agent needs cross-repo decision nodes and edges. - Use
python scripts/build_workspace_decision_graph.py --checkto fail fast when that local workspace graph is stale. - Use
python scripts/validate_workspace_decision_graph.pyto validate the workspace graph schema, JSONL parity, counts, local cache freshness, repo source-posture projection, and coverage contract. This route does not fetch remotes or prove remote freshness. - Keep lane command sequences in
docs/validation/validation_lanes.json;ci_gate.pyandrelease_check.pyread that manifest instead of owning duplicate command lists. - Keep the complete pytest selection behind
run_pytest_lane.py: automatic mode uses at most four process-isolated workers over a measured default of 16 file-aware shards (smaller selections retain a soft target of 92 tests per shard), proves their exact disjoint union against one baseline collection, and supports exact serial rollback throughABYSS_STACK_TEST_SCHEDULER=serial. Automatic mode keeps targeted arguments on the serial path; the existing--scheduler process-4x32-file-awareroute may process a targeted selection using the same exact partition proof. Effective stateful options such as--swand non-executing options such as--collect-only,--setup-only,--setup-plan,--fixtures,--fixtures-per-test,--cache-show,--markers,--version, or--helpuse the serial path even when supplied throughPYTEST_ADDOPTSor configaddopts; non-executing runs retain native pytest cache semantics. Relative-c/--config-fileand--rootdirpaths are resolved from the repository root, matching the working directory used by each child. Shard output is written to a durable log and tailed without waiting for descendant-owned descriptor EOF; failed shard logs are replayed at aggregate closeout for bounded-log diagnostics, and tests are not retried. The runner disables third-party pytest plugin autoload by default because this lane owns its process scheduler and does not use those plugin fixtures. For an explicit external plugin contract, usePYTEST_DISABLE_PLUGIN_AUTOLOAD=(an empty value) to opt out; pytest treats any non-empty value, including=0, as the disable flag. Each shard now writes its own temporary pytest cache; the parent combines failures into pytest's ordinarylastfailedcache once. Unfinished or unaccounted shards remain conservatively eligible for retry, fixed selected tests are cleared, and failures outside the selection are retained.-p no:cacheproviderstill disables this local hint. No cached result is reused by the full lane, and no automatic retry is added. - Keep
validate_local_stats_port.pyas a thin delegation to theaoa-statscontract owner; do not copy the central schemas or validator into this repo. - Keep
validate_nested_agents.pyresponsible for every discovered inherited AGENTS chain, including unmodeled and legacy cards, and preserve its 32-KiB fail-closed budget when route-card topology changes. - Put mechanic-specific implementation logic under the owning
mechanics/<package>/parts/<part>/route when it can move without breaking operator command stability.
See AGENTS.md for editing rules.
release_check.py uses synthetic Configs parity by default so source release
audits do not depend on the current machine's live runtime mirror. Use
python scripts/release_check.py --parity-mode live only when deliberately
checking /srv/AbyssOS/abyss-stack/Configs.