bnerd mission¶
Read-only and rotation-style operations on the mission control repository — the markdown + YAML knowledge base that :pa consumes. These commands don't require AI; they're plain CLI utilities suitable for cron jobs and scripting.
Discovery¶
Every bnerd mission subcommand uses the standard config + auto-detect precedence:
--mission-repo /path/to/cloud/missionBNERD_MISSION_REPO(or unprefixedMISSION_REPO) env varmission-repo:in~/.bnerd.yaml- Auto-detect: walk up from cwd looking for
.bnerd/context.md
If none resolve, the command exits with a clear error.
bnerd mission validate¶
Walks the repo and verifies every cross-reference resolves to an existing entity:
team[*].owns→ tool slug existstool.also_in_catalog→ catalog tool existstool.backed_by[*]→ operated tool existsclient.services[*]→ tool slug existsdeployment.tool→ tool slug existsdeployment.client_id→ client exists
If issues are found, exits non-zero and prints one line per issue:
Mission repo has 2 unresolved cross-reference(s):
.bnerd/pa/clients/external/acme.md [services=ghost-tool] service refers to unknown tool slug
tools/operated/gitlab.md [also_in_catalog=missing-catalog] also_in_catalog refers to unknown catalog tool
Cron-friendly: pipe stderr into your alerting channel:
bnerd mission rotate week¶
Archives .bnerd/pa/scheduling/current.md to archive/<week>.md (where <week> is the YAML week: field, e.g. 2026-W18.md) and clears current.md. Refuses to overwrite an existing archive — pick a different name or delete the existing archive yourself.
bnerd mission rotate week
# Archived current.md to /home/bernd/.../mission/.bnerd/pa/scheduling/archive/2026-W18.md
Idempotent: if current.md is missing, prints "Nothing to archive" and exits 0.
bnerd mission rotate day¶
Archives .bnerd/pa/scheduling/today.md to archive/YYYY-MM-DD.md (using the YAML date: field) and clears today.md.
bnerd mission rotate day
# Archived today.md to /home/bernd/.../mission/.bnerd/pa/scheduling/archive/2026-05-04.md
You typically don't need to run this manually — mission_propose_today (called by the AI in :pa mode) auto-archives the prior day when the date changes. The CLI command exists for cron-driven cutover or manual maintenance.
When to run what¶
| Frequency | Command | Why |
|---|---|---|
| Daily (cron) | bnerd mission validate | Catch broken slug references before they bite the AI |
| Per-edit | bnerd mission validate | After hand-editing the mission repo, before committing |
| Monday morning | bnerd mission rotate week (optional — mission_propose_week auto-archives) | Manual week cutover if you skipped the weekly orchestrator |
| End of day | bnerd mission rotate day (optional — auto on next standup) | Manual day cutover for record-keeping |