os-status:fix tune-up: snooze lifecycle, config-format normalization, gitignore step, no-commit scope #23

Closed
opened 2026-07-12 21:38:45 +00:00 by jared · 0 comments
Owner

From the credvault smoke-test audit (session cd1ae1cd, 2026-07-12). /os-status:fix ran on-contract overall, but four gaps:

  1. Snooze lifecycle (contract gap). .cc-os/snooze-* files dropped by SessionStart runs outlive the condition they gate — after fix flipped all checks to ok/note, three stale snooze files remained. Add a clear_snooze(root, check_name) helper (state.py) and clear it whenever a check flips from warn to ok/note on re-run; document in SKILL.md.
  2. Config format normalization. .cc-os/config in credvault ended up with tracker=github:... (os-backlog Ruby CLI, no spaces) and version = 1 (os-status Python write_config_value, spaces). Pick ONE format (key=value, matching commit 3b9c4fb's contract), make write_config_value normalize on write, and align os-backlog config-write to the same convention.
  3. Gitignore hygiene as an explicit step. The session improvised .gitignore additions (.os-adr/, then .cc-os/ in a second late pass) by reading invariants.md ad hoc. Make "ensure .cc-os/ (and any plugin state dirs) are gitignored" an explicit SKILL.md step or fold it into the owning init skills.
  4. Scope out committing. The session git-committed docs/adr/ + .gitignore unprompted. SKILL.md should state: fix does not stage or commit; it reports changes.

Also clarify SKILL.md step 3: fixes that don't affect check-registry state (gitignore edits) don't require a checks re-run.

Acceptance: tests for clear-on-pass snooze behavior; both writers produce identical config format; SKILL.md updated; refresh-plugins run.

From the credvault smoke-test audit (session cd1ae1cd, 2026-07-12). /os-status:fix ran on-contract overall, but four gaps: 1. **Snooze lifecycle (contract gap).** `.cc-os/snooze-*` files dropped by SessionStart runs outlive the condition they gate — after fix flipped all checks to ok/note, three stale snooze files remained. Add a `clear_snooze(root, check_name)` helper (state.py) and clear it whenever a check flips from warn to ok/note on re-run; document in SKILL.md. 2. **Config format normalization.** `.cc-os/config` in credvault ended up with `tracker=github:...` (os-backlog Ruby CLI, no spaces) and `version = 1` (os-status Python write_config_value, spaces). Pick ONE format (`key=value`, matching commit 3b9c4fb's contract), make `write_config_value` normalize on write, and align os-backlog `config-write` to the same convention. 3. **Gitignore hygiene as an explicit step.** The session improvised `.gitignore` additions (`.os-adr/`, then `.cc-os/` in a second late pass) by reading invariants.md ad hoc. Make "ensure `.cc-os/` (and any plugin state dirs) are gitignored" an explicit SKILL.md step or fold it into the owning init skills. 4. **Scope out committing.** The session git-committed docs/adr/ + .gitignore unprompted. SKILL.md should state: fix does not stage or commit; it reports changes. Also clarify SKILL.md step 3: fixes that don't affect check-registry state (gitignore edits) don't require a checks re-run. Acceptance: tests for clear-on-pass snooze behavior; both writers produce identical config format; SKILL.md updated; refresh-plugins run.
jared closed this issue 2026-07-12 21:55:38 +00:00
Sign in to join this conversation.
No description provided.