Skip to content

feat: implement cova status command#24

Merged
MrPointer merged 3 commits into
mainfrom
feature/cova-status
Apr 3, 2026
Merged

feat: implement cova status command#24
MrPointer merged 3 commits into
mainfrom
feature/cova-status

Conversation

@MrPointer
Copy link
Copy Markdown
Owner

📝 Summary

Implements cova status — a read-only command that displays subscriptions, applied blocks, and configured agents. Reads from local config and state only, no network operations. Supports a default summary view and a verbose (-v) mode with per-subscription block breakdowns.

Also cleans up stale "Not yet implemented" doc notes for both cova status and cova remove.

🔑 Key Decisions

Read-only with no side effects

The Cobra layer checks if the state DB file exists before opening it. If missing, it passes a nil BlockStore to Run, which treats it as 0 applied blocks. This avoids creating state.db as a side effect of running a read-only command — unlike add/apply/remove which need the DB and create it on demand.

Output to io.Writer instead of Logger

Status output is the command's primary structured output, not a log message. The Deps struct accepts an io.Writer (stdout in prod, buffer in tests). Logger is used only for warnings (malformed state records, query failures).

Block deduplication

A single block can produce multiple file placements (e.g., SKILL.md + config.yaml). Records are deduplicated by (subscription, blockType, blockName) to count blocks, not files.

Default branch gap documented as tech debt

cova add doesn't resolve the default branch when --ref is omitted, so status can't show which branch a subscription tracks. Added a ROADMAP tech debt item rather than expanding scope.

🔄 Before & After

Area Before After
Status visibility No way to inspect subscriptions/blocks without reading config YAML and state DB directly cova status and cova status -v
cova remove docs Still marked "Not yet implemented" despite being shipped Docs match reality
State DB on first run Any command creates state.db cova status skips DB creation if file doesn't exist
Verbose output N/A Per-subscription block listing grouped by type, with summary lines
Worker agents sonnet-go-worker missing applying-effective-go Added, plus new sonnet-go-cli-worker for Cobra work

Add a read-only command that displays subscriptions, applied blocks, and
configured agents from local config and state — no network operations.

Supports default (summary) and verbose (-v) modes. The Cobra layer skips
opening the state DB when the file doesn't exist, avoiding side effects
for a read-only command.
Remove "Not yet implemented" notes for status and remove in consuming.md.
Add verbose output example with summary lines, edge cases section, and
planned drift detection note. Check off status in ROADMAP and add default
branch resolution as technical debt. Update AGENTS.md and CLAUDE.md with
the new status package.
Create sonnet-go-cli-worker with developing-cli-apps skill for Cobra
command work. Add applying-effective-go to the existing sonnet-go-worker.
@MrPointer MrPointer merged commit b069dfe into main Apr 3, 2026
2 checks passed
@MrPointer MrPointer deleted the feature/cova-status branch April 3, 2026 22:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant