41 lines
2.1 KiB
Markdown
41 lines
2.1 KiB
Markdown
# os-status
|
|
|
|
Aggregated, in-process `SessionStart` status checks for the cc-os plugin
|
|
family: per-project artifact checks (ADR system, vault hub note, project
|
|
graph, tracker config, config version) and environment hazard checks
|
|
(subagent model env override). See
|
|
[docs/adr/0022](../../docs/adr/0022-os-status-plugin-aggregated-in-process-sessionstart-status-checks.md)
|
|
for why checks are aggregated into one plugin instead of scattered per-plugin
|
|
hooks.
|
|
|
|
At most one `systemMessage` banner per session (one line per surviving warn);
|
|
`note`-level results bypass snooze/suppress and go out as `additionalContext`.
|
|
Snooze/suppress state lives under `.cc-os/status/` (ADR-027, with legacy
|
|
top-level fallback read).
|
|
|
|
## Component map
|
|
|
|
- `hooks/checks.py` — the check registry (`REGISTRY` at the bottom of the
|
|
file) plus each check function and the `--json` CLI entry point the `fix`
|
|
skill drives. Current checks: `subagent-model-env-override`,
|
|
`adr-system-present`, `vault-hub-note-present`, `orchestration-audit-due`,
|
|
`tracker-configured`, `config-version-current`, `project-graph-present`.
|
|
Read `checks.py` directly for exact check logic — this list is a pointer,
|
|
not a restatement.
|
|
- `hooks/session_start.py` — the `SessionStart` hook entry point; runs the
|
|
registry, applies snooze/suppress, emits the single banner.
|
|
- `hooks/state.py` — project-root resolution, `.cc-os/config` read, snooze/
|
|
suppress state read/write.
|
|
- `hooks/hooks.json` — `SessionStart` wiring.
|
|
- `skills/fix/SKILL.md` — `/os-status:fix`: remediates whatever the registry
|
|
flags, idempotent, doubles as the update-to-current-approach path
|
|
(ADR-026).
|
|
- `invariants.md` — the reversion-protection contract (8 numbered
|
|
invariants, including byte-identical wording parity with os-adr's
|
|
session_start.py); enforced by `tests/hook_test.py`.
|
|
- `tests/hook_test.py` — 80 tests, model-free (`python3 tests/hook_test.py`).
|
|
|
|
Adding a check means adding a function + a `Check(...)` entry to `REGISTRY` in
|
|
`checks.py`, following the uniform `check(ctx) -> CheckResult` signature
|
|
(invariant #8) — do not special-case a new check's wiring elsewhere.
|