cc-os/docs/implementation-status/os-status.md

48 lines
3.3 KiB
Markdown
Raw Permalink Normal View History

# os-status — component detail
_Leaf file of [../implementation-status.md](../implementation-status.md). Read on demand._
**Global os-status plugin** — `cc-os/plugins/os-status/` (git-tracked, 2026-07-06);
symlinked into `~/.claude/plugins/os-status`. Decision record: ADR-0022 (architecture),
ADR-0026 (`/os-status:fix`), ADR-0027 (state location). Built via OpenSpec change
`add-os-status-plugin` (supersedes the WS3 plan doc).
- Purpose: aggregated deterministic SessionStart status checks for the cc-os plugin family —
per-project artifacts (ADR system, vault hub note) and environment hazards (subagent model
env override).
- Architecture: checks are **in-process** plain Python functions in `hooks/checks.py` with
the uniform signature `check(ctx) -> CheckResult(status, message)` plus one registry entry
(no per-plugin subprocess protocol, no per-project code copies — both rejected in
ADR-0022). Three states: `ok` (silent), `note` (near-zero-token additionalContext line,
never snoozed/suppressed), `warn` (aggregated into at most one banner; once-per-day snooze
+ permanent `suppress-<check>` markers in gitignored per-project `.cc-os/status/` — state
only, never code; shared `.cc-os/config` holds optional `hub`/`vault_path` key=value
overrides).
- Initial checks: `subagent-model-env-override` (env + `~/.claude/settings.json` `env`
block; runs outside git projects too — catches the WS1 Cluster 1 incident deterministically
at session start), `adr-system-present` (verbatim port of os-adr's hook behavior incl.
`.os-adr/suppress`), `vault-hub-note-present` (config slug first, else `type/hub` +
`project/<name>` facet-tag scan of the vault; missing → warn naming `/os-vault:write`).
Later additions: `tracker-configured` (2026-07-10, os-backlog issue #11),
`orchestration-audit-due` (2026-07-10), `project-graph-present` and
`config-version-current` (2026-07-12).
- Added 2026-07-12 (ADR-0026, issue #21): `/os-status:fix` skill — the unified project
setup/update command; runs the registry via `python3 hooks/checks.py --json` (each result
carries a `remediation` pointer), drives the owning plugin's remediation per failing
check, stamps `version=` into `.cc-os/config` (`CURRENT_CONFIG_VERSION`); idempotent, so
re-running is the update path. Warn banner names `/os-status:fix` as the single entry
point. Human gates preserved: fix never fabricates a tracker value and never edits global
settings.json.
- Fix tune-up (2026-07-12, issues #23/#24): the credvault smoke-test of `/os-status:fix`
(session cd1ae1cd) was on-contract but surfaced four gaps. Fixes: `clear_snooze` helper +
self-clearing snoozes when a check evaluates ok/note (both runners); own state relocated
to `.cc-os/status/` with legacy fallback read + migrate-on-write (ADR-0027);
`write_config_value` normalizes the whole file to `key=value` (no spaces); fix SKILL.md
scopes out committing, adds an explicit "`.cc-os/` in .gitignore" step, clarifies when
re-runs are needed. Re-run of `/os-status:fix` in credvault is the pending IRL
verification.
- Tests: `python3 tests/hook_test.py` (80 as of 2026-07-12; 64 post-#21; 36 initial) incl.
byte-identity of PRESENT_NOTE/ABSENT_NOTE against os-adr's source. Invariants in
`invariants.md`. Smoke-tested 2026-07-06 (cache==source, real headless session fired the
hook, env-override canary warns).