4.1 KiB
status-checks — in-process check contract + initial checks
ADDED Requirements
Requirement: Uniform in-process check contract
Every status check SHALL be a Python function in the os-status plugin with the signature
check(ctx) -> CheckResult, where ctx provides the project root (or None outside a git
project) and per-project config, and CheckResult carries status (ok | note | warn)
and message (empty for ok). Checks SHALL be registered in a single registry list; adding
a check SHALL require only the function and one registry entry.
Scenario: Check returns ok
- WHEN a registered check finds its precondition satisfied and has no informational output
- THEN it returns
status: okand contributes no output to the session
Scenario: Check failure is isolated
- WHEN a registered check raises an exception or exceeds the per-check time budget
- THEN the runner records it as
warnwith a generic message naming the check, continues running the remaining checks, and never blocks or fails the session
Requirement: ADR system check preserves os-adr behavior
The adr_system_present check SHALL reproduce os-adr's SessionStart behavior: in a git
project with docs/adr/ present it returns note with the existing Eval-B-tuned usage-note
wording verbatim; with docs/adr/ absent it returns warn suggesting init/migrate at most
once per day, permanently silenced by .os-adr/suppress; outside a git project it returns
ok.
Scenario: ADR system present
- WHEN the session starts in a git project containing
docs/adr/ - THEN the check returns
notewhose message is byte-identical to os-adr's current PRESENT_NOTE wording
Scenario: ADR system absent, not suppressed
- WHEN the session starts in a git project without
docs/adr/and no.os-adr/suppressexists and no suggestion was emitted today - THEN the check returns
warnnaming/os-adr:initand/os-adr:migrate
Scenario: ADR suggestion suppressed
- WHEN
.os-adr/suppressexists in the project - THEN the check returns
ok
Requirement: Vault hub-note check
The vault_hub_note_present check SHALL determine whether the current project has a hub note
in the SecondBrain vault, preferring an explicit hub slug from per-project config over
inference by project/<name> facet tag. Missing hub note in a git project SHALL yield warn
naming the corrective action; present SHALL yield ok with no context injection.
Scenario: Hub note missing
- WHEN the session starts in a git project with no matching hub note in the vault
- THEN the check returns
warntelling the user which skill to run to create one
Scenario: Hub note present
- WHEN a hub note matching the project exists in the vault
- THEN the check returns
okand injects nothing
Requirement: Subagent model env-override check
The subagent_model_env_override check SHALL return warn when CLAUDE_CODE_SUBAGENT_MODEL
is set in the process environment or present in the env block of ~/.claude/settings.json,
identifying where it was found; otherwise ok. This check SHALL run regardless of whether the
cwd is a git project.
Scenario: Override set in settings.json
- WHEN
~/.claude/settings.jsoncontainsCLAUDE_CODE_SUBAGENT_MODELin itsenvblock - THEN the check returns
warnnaming the variable, its value, and the file it was found in
Scenario: No override
- WHEN the variable is absent from both the environment and settings.json
- THEN the check returns
ok
Requirement: os-adr SessionStart hook removed atomically
In the same change that ships the adr_system_present check, os-adr's own SessionStart hook
entry SHALL be removed from plugins/os-adr/hooks/hooks.json, and the cutover SHALL be
verified against the refreshed plugin cache (not only source), such that exactly one component
emits the ADR status per session.
Scenario: No double emission after cutover
- WHEN a fresh session starts after
bin/refresh-pluginswith os-status and os-adr both installed - THEN the ADR usage note or suggestion appears exactly once