Governance / Ecosystem Optimization Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: Make Survipedia ready for the 2026-05 three-category content sprint by introducing a machine-readable sprint-mode mechanism, truthing-up PROJECT-STATUS.md, defining CANON-PROMOTE + TAG-AUDIT task formats, and aligning /run-loop + agent prompts with the new sprint logic.

Architecture: A separate SPRINT-2026-05.md operating brief at repo root holds sprint state (per Codex review — avoids bloating CLAUDE.md). A markdown comment block at the top of BACKLOG.md carries machine-readable sprint flags. /run-loop and webmaster.md both honor the same selection precedence. New task types (CANON-PROMOTE, TAG-AUDIT) are defined in agent prompts and STANDARDS.md; canon promotion authority is split (author claims, reflector queues, publisher verifies + edits CATEGORY-CANON.md).

Tech Stack: Markdown only. Verification via grep, head, wc, python3 scripts/category-coverage.py, and mkdocs build --strict. No code or schema changes.

Spec source: docs/superpowers/specs/2026-05-06-governance-ecosystem-optimization-design.md


File Structure

File Operation Lines added/changed
SPRINT-2026-05.md Create ~50 new
BACKLOG.md Modify (top + new task) +12 header, +2 task
.claude/commands/run-loop.md Modify (step 3) ~+25
.claude/agents/webmaster.md Modify (sprint-mode subsection) ~+10
.claude/agents/author.md Modify (CANON-PROMOTE template) ~+55
STANDARDS.md Modify (TAG-AUDIT format) ~+30
.claude/agents/reflector.md Modify (canon-verify queue) ~+5
.claude/agents/publisher.md Modify (canon promotion verify) ~+10
CLAUDE.md Modify (3-line pointer top) +3
PROJECT-STATUS.md Modify (truth-up + pointer) ~30 changed, +5
AUDIT_LOG.md Append ~+30
LOG.md Append ~+8
OPERATING-CONTRACT.md Auto-regenerated by /derive-contract TBD by tool

Single git commit at end captures all changes.


Task 1: Create SPRINT-2026-05.md operating brief

Files: - Create: /root/projects/wiki/SPRINT-2026-05.md

  • Step 1.1: Create the file with full content

Use Write tool with this exact content:

# Sprint Operating Brief — 2026-05 Three-Category Sprint

> **Active:** 2026-05-06 → 2026-06-15 (40 days)
> **Last verified:** 2026-05-06
> Read this file at the start of every session during the sprint window. After 2026-06-15, this file is archived to JOURNAL.md and removed.

## What this sprint is

Bring all three domain categories (Crisis Survival, Smart Prepping, Off-Grid Living) to sprint-ready depth. Focused on **reader capability**, not coverage percentages. New content pages are frozen except the one canon stub (`threats × off-grid`).

## Live counts (as of 2026-05-06)

- **Total content pages:** 305
- **Tagged survival:** 207 (68%)
- **Tagged prepping:** 214 (70%)
- **Tagged off-grid:** 154 (50%) ← coverage gap, audit-driven retag
- **Pages with no domain tag:** 3 (404 + admin pages — intentional)

## Canon coverage (per CATEGORY-CANON.md)

| Category | Adequate+ | Strong+ | Stubs |
|---|---|---|---|
| Crisis Survival | 12/12 (100%) | 6/12 (50%) | 0 |
| Smart Prepping | 12/12 (100%) | **2/12 (16%)** ← laggard | 0 |
| Off-Grid Living | 11/12 (91%) | 3/12 (25%) | 1 (`threats × off-grid`) |

## Sprint priority order

The selection ladder for the next 40 days. `/run-loop` and webmaster honor this via the SPRINT-MODE block at the top of `BACKLOG.md`.

1. **TAG-AUDIT:** justified retag of off-grid coverage gap (community 6/21, medical 7/31, mindset 2/16, mobility 2/17, security 1/22). Format spec in `STANDARDS.md`.
2. **CANON-PROMOTE:** prepping cells from adequate→strong (10 of 12 Foundations need promotion). Cell-level workflow in `.claude/agents/author.md`.
3. **CANON stubs:** close `threats × off-grid` — single new-page allowance.
4. **OTHER:** standard `/run-loop` work — discovery, freshness, SEO, etc. — runs only after the above tiers exhaust.

## Freeze rule

No new content pages are authored during the sprint window **except** the `threats × off-grid` canon stub. New-page proposals go to BACKLOG with `POST-SPRINT:` prefix and are deferred until 2026-06-16 or until sprint-mode is removed.

## Auto-validation commands

Any agent can verify this brief is still current:

```bash
# Page count
find docs -name "*.md" -not -path "*/about/*" -not -path "*/admin/*" | grep -v "^docs/index.md\|^docs/404.md" | wc -l

# Per-category tag counts
grep -rh "^  - " docs --include="*.md" | sort | uniq -c | grep -E " (survival|prepping|off-grid)$"

# Canon coverage
python3 scripts/category-coverage.py --report

If any of these diverge materially from the counts above, append an updated row under ## Live counts and update Last verified.

Quickstart (resuming sprint work)

  1. /status — see latest BACKLOG state and recent LOG entries
  2. /run-loop budget=32 — webmaster will honor SPRINT-MODE precedence
  3. After the loop: python3 scripts/category-coverage.py --report to see canon delta
  4. Reflector close-out updates this file's Last verified if any counts changed

Sprint exit criteria (any one is sufficient)

  • All 10 prepping adequate cells promoted to strong (target: prepping 12/12 strong)
  • Sprint window expires (2026-06-15)
  • Human invokes early termination

Post-sprint cleanup checklist

When sprint exits, the following auto-runs (Component 9 BACKLOG task):

  1. Remove SPRINT-MODE block from BACKLOG.md header
  2. Archive this file's contents to JOURNAL.md under ## Sprint Close: 2026-05 Three-Category
  3. Delete this file
  4. Append AUDIT_LOG entry summarizing sprint outcomes
  5. Run /derive-contract to confirm operating contract returns to non-sprint baseline
    - [x] **Step 1.2: Verify the file exists and is well-formed**
    
    Run:
    ```bash
    test -f /root/projects/wiki/SPRINT-2026-05.md && wc -l /root/projects/wiki/SPRINT-2026-05.md
    
    Expected: line count between 60 and 80; no error.

grep -c "Sprint priority order\|Freeze rule\|Auto-validation\|Sprint exit criteria" /root/projects/wiki/SPRINT-2026-05.md
Expected: 4


Task 2: Add SPRINT-MODE header and expiry-verification task to BACKLOG.md

Files: - Modify: /root/projects/wiki/BACKLOG.md (top of file, and new task entry)

  • Step 2.1: Insert SPRINT-MODE block at the very top of BACKLOG.md

Use Edit tool. The current top of file starts with # BACKLOG — Survipedia. Insert the SPRINT-MODE block above the heading:

old_string:

# BACKLOG — Survipedia

new_string:

<!-- SPRINT-MODE
     Name: three-category-2026-05
     Status: ACTIVE
     Started: 2026-05-06
     Expires: 2026-06-15
     Precedence: TAG-AUDIT,CANON-PROMOTE,CANON,OTHER
     Freeze: new-content-pages-except-canon-stubs
     Brief: SPRINT-2026-05.md
     Owner: webmaster
-->

# BACKLOG — Survipedia

  • Step 2.2: Append the expiry-verification task

Find a ## P3 or "Recurring maintenance" section in BACKLOG.md, or append at end of P3 section. Use Edit tool. If no obvious section exists, add at the end of the open-items list. The task to add:

- [ ] [XS] T1 P3 SPRINT-MAINTENANCE: Verify SPRINT-MODE block in BACKLOG.md header — if Expires past, remove block, archive SPRINT-2026-05.md to JOURNAL.md, append AUDIT_LOG entry, run /derive-contract. **Recurring**: webmaster checks on first /run-loop after 2026-06-15.
  RICE: 100×0.25÷1 = 25 (low value but high reliability — prevents silent post-sprint misrouting)

Pick a unique anchor for old_string — search BACKLOG.md for a stable existing line and insert the task immediately after it. Locate via:

grep -n "P3\|Last add" /root/projects/wiki/BACKLOG.md | head -20

  • Step 2.3: Verify both edits

Run:

head -12 /root/projects/wiki/BACKLOG.md | grep -E "Status: ACTIVE|Precedence: TAG-AUDIT,CANON-PROMOTE,CANON,OTHER|Brief: SPRINT-2026-05.md"
Expected: 3 matching lines

grep -c "SPRINT-MAINTENANCE: Verify SPRINT-MODE block" /root/projects/wiki/BACKLOG.md
Expected: 1


Task 3: Edit /run-loop step 3 for sprint-mode selection

Files: - Modify: /root/projects/wiki/.claude/commands/run-loop.md lines 56-58 (step 3)

  • Step 3.1: Read the current step 3 to confirm exact text

Run:

sed -n '55,60p' /root/projects/wiki/.claude/commands/run-loop.md

Confirmed current text (from spec context-gathering): 3. Read \BACKLOG.md`. Starting from the highest-priority incomplete task, accumulate tasks in priority order until adding the next task would exceed the point budget. Log the selected task list and total points.`

  • Step 3.2: Replace step 3 with sprint-mode-aware version

Use Edit tool.

old_string:

3. Read `BACKLOG.md`. Starting from the highest-priority incomplete task, accumulate tasks in priority order until adding the next task would exceed the point budget. Log the selected task list and total points.

new_string:

3. Read `BACKLOG.md`. **Sprint-mode check:** scan the first 15 lines for a `<!-- SPRINT-MODE` block.

   **If present and `Status: ACTIVE` and `Expires` date is in the future:**
   - Parse the `Precedence` line into a list (e.g., `[TAG-AUDIT, CANON-PROMOTE, CANON, OTHER]`).
   - Bucket all incomplete BACKLOG tasks by their leading prefix (`TAG-AUDIT:`, `CANON-PROMOTE:`, `CANON:`, else `OTHER`).
   - Within each bucket, RICE sort (Reach × Impact ÷ Effort, formula in BACKLOG preamble).
   - Concatenate buckets in precedence order — left-most bucket first.
   - Apply the `Freeze` rule when selecting (e.g., reject new-page authoring tasks not on the canon-stub allowlist).

   **If `Expires` date is past:**
   - Remove the SPRINT-MODE block from BACKLOG.md (Edit tool).
   - Archive `SPRINT-2026-05.md` (or whatever file `Brief:` points to) into a JOURNAL.md entry titled `## Sprint Close: <Name>`.
   - Delete the brief file.
   - Append an `AUDIT_LOG.md` entry under `## YYYY-MM-DD — Sprint mode auto-expired (<Name>)`.
   - Then proceed with normal RICE sort (the post-sprint default).

   **If the block is absent or `Status` is not `ACTIVE`:**
   - Use normal RICE sort (existing behavior — see webmaster.md "Task selection priority").

   Starting from the highest-priority incomplete task per the rules above, accumulate tasks in priority order until adding the next task would exceed the point budget. Log the selected task list and total points.

  • Step 3.3: Verify the edit

Run:

grep -c "Sprint-mode check\|Bucket all incomplete BACKLOG\|sprint-mode block from BACKLOG.md" /root/projects/wiki/.claude/commands/run-loop.md
Expected: 3


Task 4: Add sprint-mode mirror to webmaster.md

Files: - Modify: /root/projects/wiki/.claude/agents/webmaster.md (after "Task selection priority" section, before "Quality chain")

  • Step 4.1: Insert new subsection after the RICE secondary sort paragraph

The webmaster.md file has a "Task selection priority" section ending at the RICE paragraph. Insert the sprint-mode subsection after it.

Use Edit tool.

old_string:

**RICE secondary sort (added 2026-04-26)**: Within each P-tier, sort tasks by `RICE/pt` descending before selecting. RICE = Reach × Impact ÷ Effort (formula in BACKLOG preamble). RICE/pt = the score normalized to per-effort-point — use this for cross-effort-tier comparison. P-tier hard-ordering still wins (a P1 task with low RICE outranks a P2 task with high RICE), but within a tier, prefer the higher-leverage work. If a task has no RICE annotation, treat it as median (RICE/pt ≈ 25) — don't auto-deprioritize, but flag it for backfill in the next reflector pass.

## Quality chain

new_string:

**RICE secondary sort (added 2026-04-26)**: Within each P-tier, sort tasks by `RICE/pt` descending before selecting. RICE = Reach × Impact ÷ Effort (formula in BACKLOG preamble). RICE/pt = the score normalized to per-effort-point — use this for cross-effort-tier comparison. P-tier hard-ordering still wins (a P1 task with low RICE outranks a P2 task with high RICE), but within a tier, prefer the higher-leverage work. If a task has no RICE annotation, treat it as median (RICE/pt ≈ 25) — don't auto-deprioritize, but flag it for backfill in the next reflector pass.

### Sprint-mode override (mirror of /run-loop step 3)

When dispatched, first scan the first 15 lines of `BACKLOG.md` for a `<!-- SPRINT-MODE` block. Parser rules and full handling logic are documented in `.claude/commands/run-loop.md` step 3 — keep this section in sync if either file is edited.

Summary: if `Status: ACTIVE` and `Expires` is future, apply `Precedence` bucket order (left-most highest) and honor the `Freeze` rule before RICE-sorting within each bucket. If `Expires` is past, auto-expire (remove block, archive Brief file, append AUDIT_LOG entry) and resume normal RICE sort. If absent, normal RICE sort.

This sprint-mode logic is shared between `/run-loop` and this agent. They must remain identical.

## Quality chain

  • Step 4.2: Verify the edit

Run:

grep -c "Sprint-mode override" /root/projects/wiki/.claude/agents/webmaster.md
Expected: 1


Task 5: Add CANON-PROMOTE template to author.md

Files: - Modify: /root/projects/wiki/.claude/agents/author.md (append new section near the end, before any closing meta sections)

  • Step 5.1: Locate the right insertion point

Run:

grep -n "^## " /root/projects/wiki/.claude/agents/author.md

Choose an insertion point near the end of the substantive sections (typically just before any "Quality chain" or "Hand-off" section).

  • Step 5.2: Append the CANON-PROMOTE template

Use Edit tool with a unique anchor from the section just above your target insertion point. Insert the following content as a new section:

## CANON-PROMOTE tasks (adequate → strong, cell-level)

Task format: `CANON-PROMOTE: {foundation} × {category} adequate→strong`
(e.g., `CANON-PROMOTE: food × prepping adequate→strong`)

**Goal:** Promote the named (foundation × category) **cell** from `adequate` to `strong` per `CATEGORY-CANON.md` state machine. Reader capability is the goal; word count rises as a side effect, not as a goal.

### Step 1 — Pre-check evidence (BEFORE any page edits)

1. Read `CATEGORY-CANON.md` `{foundation} × {category}` cell. Extract the `required-topics` list and the `strong` promotion criteria.
2. Run `python3 scripts/category-coverage.py --category {category} --foundation {foundation}` to see current `pages-with-tag` count and required-topics fulfillment.
3. Map every required-topic to existing pages or "GAP." Document this as a handoff table in your LOG.md entry:

   | Required topic | Existing page (path) | Before-state gap | Planned change |
   |---|---|---|---|
   | (e.g.) Cold-storage shelf life | docs/food/cold-storage.md | Missing freezer-burn timeline | Add freezer-burn table |
   | (e.g.) Bulk grain rotation | GAP | No page | Cross-link from food/storage.md |

4. Save the handoff table as the first section of the LOG.md entry for this task.

### Step 2 — Per-page edit requirements

For every page identified in the handoff table as needing change:

1. **Decision support** — at least one decision matrix, comparison table, or branching checklist that a reader uses to choose between options.
2. **Field Note** — at least one Field Note admonition with practical wisdom that a beginner would not figure out on their own.
3. **Visual asset** — if the page is missing a diagram or image where one would clarify, add a `[VISUAL-NEEDED]` block and dispatch `@diagrammer` or `@image-gen` per Visual Asset routing rules in `CLAUDE.md`.
4. **Cross-link density** — minimum 2 internal cross-references to other pages, ideally to same-category siblings.
5. **Procedural completeness floor** — Tier 1 pages need step-by-step depth; Tier 2 need decision criteria; Tier 3 need overview + routing.
6. **Front matter dual-tags** — if the cell is e.g. `{foundation} × prepping`, every touched page must carry the `prepping` tag (verify with `grep -A5 "^tags:" $PAGE`).

### Step 3 — Post-check evidence (AFTER all page edits)

1. Re-run `python3 scripts/category-coverage.py --category {category} --foundation {foundation}` and confirm the cell now meets `strong` criteria per `CATEGORY-CANON.md`.
2. Append a `CANON_PROMOTED` entry to `LOG.md` with format:
   ```
   YYYY-MM-DD HH:MM | author | CANON_PROMOTED | {foundation} × {category} | adequate→strong | pages: [list] | evidence: handoff table in LOG.md line N
   ```
3. **Author does NOT edit `CATEGORY-CANON.md` status field directly.** That edit is the publisher's job after verification.

### Out of scope for CANON-PROMOTE

- Generic word-count padding ("add 500 words")
- Cosmetic formatting changes
- Tag retrofitting (separate task type: TAG-AUDIT — see `STANDARDS.md`)
- Touching pages outside the named cell
  • Step 5.3: Verify the edit

Run:

grep -c "CANON-PROMOTE tasks (adequate → strong, cell-level)" /root/projects/wiki/.claude/agents/author.md
Expected: 1

grep -c "Author does NOT edit \`CATEGORY-CANON.md\`" /root/projects/wiki/.claude/agents/author.md
Expected: 1


Task 6: Add TAG-AUDIT task format to STANDARDS.md

Files: - Modify: /root/projects/wiki/STANDARDS.md (append new section near the end of the document, after existing task-format conventions)

  • Step 6.1: Find the right insertion point

Run:

grep -n "^## " /root/projects/wiki/STANDARDS.md | tail -10

Identify an existing section near the end (likely a "Conventions" or "Task formats" section) and append the new TAG-AUDIT format after it.

  • Step 6.2: Append the TAG-AUDIT format section

Use Edit tool with a unique anchor from the section above your insertion point. Insert this section:

## TAG-AUDIT task format (sprint type, added 2026-05-06)

Task format: `TAG-AUDIT: {scope description}`
(e.g., `TAG-AUDIT: off-grid tag in community foundation (6/21)`)

### Required workflow

1. List every page in the scope (e.g., all 21 pages in `docs/community/`).
2. For each page, evaluate against the **off-grid reader test** (or the relevant category test):
   > Does this page contain content that a reader living off-grid as a permanent residence (not a survival or short-term prepping context) would find useful?
3. Document the decision as a justification table in `LOG.md`:

   | Page | Currently tagged | Pass test? | Action | Reason |
   |---|---|---|---|---|
   | docs/community/A.md | survival, prepping | YES | Add off-grid tag | Mutual-aid networks for rural homesteaders |
   | docs/community/B.md | survival | NO | No change | Urban-only context |

4. Apply tag changes only to pages marked YES.
5. Tag changes are bundled into a single commit per scope, with the justification table embedded in the commit message.

### Out of scope for TAG-AUDIT

- Adding tags without page-level reasoning (forbidden — every retag requires an explicit reason)
- Removing existing tags (separate task: `TAG-REMOVE`)
- Editing page content (separate task: `CANON-PROMOTE`)

### Why the reader test exists

Codex review (2026-05-06) flagged that broad retagging risks "optimizing coverage % instead of reader capability." The reader test is the safeguard: each retag must serve a real reader, not just inflate metrics.
  • Step 6.3: Verify the edit

Run:

grep -c "TAG-AUDIT task format" /root/projects/wiki/STANDARDS.md
Expected: 1

grep -c "off-grid reader test" /root/projects/wiki/STANDARDS.md
Expected: 1


Task 7: Update reflector.md and publisher.md for canon-promotion authority split

Files: - Modify: /root/projects/wiki/.claude/agents/reflector.md (close-out checklist) - Modify: /root/projects/wiki/.claude/agents/publisher.md (pre-publish checklist)

  • Step 7.1: Add canon-verify queueing to reflector.md

Run:

grep -n "^### " /root/projects/wiki/.claude/agents/reflector.md | head -10

Find the "Update BACKLOG.md" subsection (numbered ~6 in standard reflection) and append a new bullet at its end. Use Edit tool. The append target is the end of section 6.

old_string (find a unique anchor near end of the BACKLOG section in reflector.md — search for "BACKLOG" text or section number 6):

Run first:

sed -n '88,98p' /root/projects/wiki/.claude/agents/reflector.md

Then append immediately after the last bullet of section 6:

- **Canon promotion verification queueing (added 2026-05-06):** if `LOG.md` has a `CANON_PROMOTED` entry for this loop, verify the author's handoff table matches the post-check evidence. Add a `[ ] [XS] verify-canon-promotion {cell}` task to BACKLOG.md, assigned to publisher. Authority split: author claims, reflector queues, publisher verifies + edits `CATEGORY-CANON.md`.

  • Step 7.2: Verify reflector edit

Run:

grep -c "Canon promotion verification queueing" /root/projects/wiki/.claude/agents/reflector.md
Expected: 1

  • Step 7.3: Add canon promotion verification to publisher.md

Insert into the "Pre-publish checklist" → "Blockers" section (around line 20). Use Edit tool.

Run first to confirm exact text:

sed -n '18,40p' /root/projects/wiki/.claude/agents/publisher.md

Append a new blocker bullet at the end of the Blockers list (find the last - [ ] bullet in that section):

- [ ] **Canon promotion verification (added 2026-05-06):** for any `CANON_PROMOTED` LOG entry in this commit batch, re-run `python3 scripts/category-coverage.py --category {category} --foundation {foundation}` and verify the cell meets `strong` criteria per `CATEGORY-CANON.md`. If yes, edit `CATEGORY-CANON.md` status field for that cell and stage the change in this commit. If no, **reject the commit** and append a Tier B BACKLOG task `[ ] [S] re-promote {cell} — author claim failed verification`. Authority: only publisher edits `CATEGORY-CANON.md` status fields.
  • Step 7.4: Verify publisher edit

Run:

grep -c "Canon promotion verification" /root/projects/wiki/.claude/agents/publisher.md
Expected: 1


Task 8: Add 3-line sprint pointers to CLAUDE.md and PROJECT-STATUS.md

Files: - Modify: /root/projects/wiki/CLAUDE.md (after the existing "Start every session" line) - Modify: /root/projects/wiki/PROJECT-STATUS.md (top of file)

  • Step 8.1: Edit CLAUDE.md — insert pointer after "Start every session" line

Use Edit tool.

old_string:

> **Start every session** by reading `PROJECT-STATUS.md` for current project state and priorities.
> **North star**: `OBJECTIVES.md` — every content decision and backlog task should trace back to one of the five strategic objectives (content authority, search visibility, audience growth, revenue sustainability, accessibility).

new_string:

> **Start every session** by reading `PROJECT-STATUS.md` for current project state and priorities.
> **Active sprint** (2026-05-06 → 2026-06-15): Three-Category Sprint. Read `SPRINT-2026-05.md` first.
> Sprint freeze: no new content pages except canon stubs (`threats × off-grid`). See `SPRINT-2026-05.md` for selection ladder.
> **North star**: `OBJECTIVES.md` — every content decision and backlog task should trace back to one of the five strategic objectives (content authority, search visibility, audience growth, revenue sustainability, accessibility).

  • Step 8.2: Verify CLAUDE.md edit

Run:

head -5 /root/projects/wiki/CLAUDE.md | grep -c "SPRINT-2026-05.md"
Expected: 2

  • Step 8.3: Edit PROJECT-STATUS.md — insert pointer at top

Run first to see current top:

head -10 /root/projects/wiki/PROJECT-STATUS.md

Insert the same 3-line pointer immediately after the H1 (or after the existing top blockquote, whichever the file has). Use Edit tool with a unique anchor.

The 3 lines to insert:

> **Active sprint** (2026-05-06 → 2026-06-15): Three-Category Sprint. Read `SPRINT-2026-05.md` first.
> Sprint freeze: no new content pages except canon stubs (`threats × off-grid`).
> **Last verified:** 2026-05-06

  • Step 8.4: Verify PROJECT-STATUS.md pointer

Run:

head -15 /root/projects/wiki/PROJECT-STATUS.md | grep -c "SPRINT-2026-05.md"
Expected: 1


Task 9: Truth-up PROJECT-STATUS.md (6 edits)

Files: - Modify: /root/projects/wiki/PROJECT-STATUS.md (multiple targeted edits)

  • Step 9.1: Replace lines 162-163 false-claim

Run:

sed -n '158,168p' /root/projects/wiki/PROJECT-STATUS.md

Confirm the false claim is at the expected location. Use Edit tool.

old_string (must match the actual current text — confirm with the sed command above):

1. **Domain tag retrofit** ✅ Complete — All 312 content pages
   carry the correct domain tags (`survival`, `prepping`, `off-grid`).

new_string:

1. **Domain tag retrofit** ⚠ Partial — All 305 content pages
   carry at least one valid domain tag, but off-grid coverage is at
   50% (154/305). Sprint Sub-project 3 (2026-05) audits the gap and
   applies justified retags via `TAG-AUDIT:` tasks per `STANDARDS.md`.
   Old claim of "complete" was overstated; this line is the truth-up.

  • Step 9.2: Update lines 90 area "v1.1 off-grid scope expansion"

Run:

sed -n '88,98p' /root/projects/wiki/PROJECT-STATUS.md

The line currently claims off-grid expansion is ✅ done. Mark it as historical and add sprint context.

old_string:

- **v1.1 off-grid scope expansion** ✅ — 27+ new off-grid pages written: well-drilling, cisterns, gravity-fed, composting toilets, whole-home-offgrid, livestock, seed-saving, food-forest, homestead-economics, offgrid-legal, aquaculture, seasonal-budgeting, maintenance-cycles, offgrid-family, seasonal-rhythms, and more.

new_string:

- **v1.1 off-grid scope expansion** ✅ (historical: 2026-04) — 27+ new off-grid pages written: well-drilling, cisterns, gravity-fed, composting toilets, whole-home-offgrid, livestock, seed-saving, food-forest, homestead-economics, offgrid-legal, aquaculture, seasonal-budgeting, maintenance-cycles, offgrid-family, seasonal-rhythms, and more. **2026-05 update:** off-grid tag is on only 50% of pages — depth exists, tagging is the gap. Sprint Sub-project 3 audits the off-grid tag coverage.

  • Step 9.3: Reframe Track 1B (line 149+)

Run:

sed -n '147,160p' /root/projects/wiki/PROJECT-STATUS.md

Find the "Track 1B: Off-grid & homesteading content expansion" heading and any forward-looking new-page narrative immediately under it. Replace the section header (or add a (historical, pre-sprint) marker plus a sprint addendum).

old_string (match the section header line as it currently appears):

### Track 1B: Off-grid & homesteading content expansion

new_string:

### Track 1B: Off-grid coverage hardening (was: content expansion — reframed 2026-05-06)

> **Sprint reframe:** new off-grid pages frozen for sprint duration except `threats × off-grid` canon stub. Track 1B is now about tag-justification audit and canon adequate→strong promotion, not new-page expansion. Original expansion narrative below is historical (pre-sprint).

#### Original Track 1B narrative (historical, pre-sprint)

  • Step 9.4: Add "Current sprint priorities" block at top

Insert immediately after the 3-line sprint pointer added in Task 8. Use Edit tool with a unique anchor.

Insert:

## Current sprint priorities (as of 2026-05-06)

Selection ladder honored by `/run-loop` and webmaster (via `BACKLOG.md` SPRINT-MODE block):

1. **Priority 1 — Prepping depth.** 2/12 Foundations at `strong` (laggard). Drive via `CANON-PROMOTE: {foundation} × prepping adequate→strong` tasks.
2. **Priority 2 — Off-grid tag-justification audit.** 50% gap (154/305). Drive via `TAG-AUDIT: off-grid tag in {foundation}` tasks. Reader test required per page.
3. **Priority 3 — Close `threats × off-grid` canon stub.** Single new-page allowance.
4. **Priority 4 — Standard /run-loop work.** Activates only after the above tiers exhaust.

After 2026-06-15 (sprint expiry), this section is replaced with non-sprint priorities.

  • Step 9.5: Sweep stale absolute counts

Run:

grep -nE "\b(312|253|266|272|301|310)\b" /root/projects/wiki/PROJECT-STATUS.md

For each match outside the historical-tagged contexts already updated: - If the count is a current claim → update to current value (run find docs -name "*.md" -not -path "*/about/*" | wc -l for current page count = 305). - If the count is a milestone → mark (historical: 2026-MM-DD) next to it.

Use Edit tool one count at a time. Each Edit's old_string includes 1-2 lines of surrounding context to ensure uniqueness.

  • Step 9.6: Verify all PROJECT-STATUS.md edits

Run:

grep -i "domain tag retrofit ✅ complete" /root/projects/wiki/PROJECT-STATUS.md
Expected: 0 matches (false claim is gone)

grep -c "Current sprint priorities" /root/projects/wiki/PROJECT-STATUS.md
Expected: 1

grep -c "Track 1B: Off-grid coverage hardening" /root/projects/wiki/PROJECT-STATUS.md
Expected: 1

grep -c "(historical:" /root/projects/wiki/PROJECT-STATUS.md
Expected: ≥ 1 (older milestones now tagged historical)


Task 10: Append AUDIT_LOG.md entry

Files: - Modify: /root/projects/wiki/AUDIT_LOG.md (append at end)

  • Step 10.1: Append the entry

Use the Bash tool with a heredoc append (the file is append-only state):

cat >> /root/projects/wiki/AUDIT_LOG.md <<'AUDITEOF'

## 2026-05-06 — Sub-project 1: Governance / Ecosystem Optimization (autonomous Tier A batch per Operating Constitution rule 5)

**Trigger:** User invoked `/superpowers:brainstorm` (with Codex gpt-5.5 second-opinion review, two rounds) for three-category sprint readiness. Option A chosen: sequential full sub-project treatment. Sub-project 1 makes `/run-loop` productive on day one of the sprint.

**Tier A — auto-applied:**

- `SPRINT-2026-05.md` (new file, ~50 lines): operating brief at repo root; expires 2026-06-15; references CATEGORY-CANON.md for canon coverage definitions.
- `BACKLOG.md`: SPRINT-MODE machine-readable header block (Status/Expires/Precedence/Freeze/Brief/Owner) + new XS P3 expiry-verification task.
- `.claude/commands/run-loop.md` step 3: sprint-mode parse + bucketed selection (TAG-AUDIT > CANON-PROMOTE > CANON > OTHER) + auto-expiry on past Expires date.
- `.claude/agents/webmaster.md`: Sprint-mode override subsection (mirror of /run-loop, kept in sync).
- `.claude/agents/author.md`: CANON-PROMOTE template (cell-level, with mandatory pre-check handoff table + post-check evidence; author does NOT edit CATEGORY-CANON.md status).
- `STANDARDS.md`: TAG-AUDIT task format spec with off-grid reader test (per Codex pushback on coverage-% optimization).
- `.claude/agents/reflector.md`: queueing of canon-promotion verification tasks for publisher.
- `.claude/agents/publisher.md`: canon-promotion verification blocker (only publisher edits CATEGORY-CANON.md status fields).
- `CLAUDE.md` + `PROJECT-STATUS.md`: 3-line sprint pointer at top.
- `PROJECT-STATUS.md`: 6-edit truth-up — false "domain tag retrofit ✅ complete" claim replaced; absolute counts swept (312→305 + historical-marking); Track 1B reframed; "Current sprint priorities" block added.

**Codex review impact (round 1 — design framing):** Reframed sprint from "more pages or more words" to "tagging integrity + adequacy→strong upgrades." Codex confirmed prepping-depth is the real laggard (2/12 strong), not coverage.

**Codex review impact (round 2 — spec critique):** Five material changes — sprint-mode format made machine-simple; CANON-PROMOTE moved from per-page to cell-level with handoff table; PROJECT-STATUS scope expanded (Track 1B + all counts + priorities block); sprint brief moved to separate file (avoids CLAUDE.md bloat); /run-loop edited (not just webmaster), reflector + publisher canon-promotion roles defined, TAG-AUDIT format spec added, expiry-verification BACKLOG task added.

**BACKLOG mutations:**
- 1 new XS P3 task: SPRINT-MAINTENANCE expiry-verification

**Tier B — queued:** None (all Sub-project 1 work executed inline).

**Tier C — escalated:** None.

**Verdict:** Sub-project 1 of the three-category sprint readiness work is complete. Sprint-mode mechanism is machine-readable and aligned across `/run-loop`, webmaster, reflector, publisher. Author has cell-level CANON-PROMOTE template that prevents word-count padding. PROJECT-STATUS no longer misroutes by claiming retrofit complete. Sub-project 2 (cleanup) and Sub-project 3 (content strategy) follow.

**Tokens:** ~30k (brainstorm + 2 Codex rounds + spec + plan + execution) | **Runtime:** ~60-90 min as continuation work.

---
AUDITEOF
  • Step 10.2: Verify the entry appended

Run:

tail -5 /root/projects/wiki/AUDIT_LOG.md | grep -c "Sub-project 1"
Expected: 1

grep -c "## 2026-05-06 — Sub-project 1" /root/projects/wiki/AUDIT_LOG.md
Expected: 1


Task 11: Append LOG.md entries

Files: - Modify: /root/projects/wiki/LOG.md (append per-action entries)

  • Step 11.1: Append the LOG entries

Append using heredoc (the file is append-only):

cat >> /root/projects/wiki/LOG.md <<'LOGEOF'
2026-05-06 [TIME-NOW] | webmaster | LOOP_START | Sub-project 1 of three-category sprint readiness — Governance / Ecosystem Optimization. 11 file edits + 1 new file + 1 new BACKLOG task. Spec at docs/superpowers/specs/2026-05-06-governance-ecosystem-optimization-design.md (revised after Codex round-2). Plan at docs/superpowers/plans/2026-05-06-governance-ecosystem-optimization.md. | ~3k tokens
2026-05-06 [TIME-NOW] | webmaster | EDITED | SPRINT-2026-05.md (new, ~50 lines), BACKLOG.md (SPRINT-MODE header + expiry task), .claude/commands/run-loop.md (step 3 sprint-mode), .claude/agents/webmaster.md (sprint-mode mirror), .claude/agents/author.md (CANON-PROMOTE template), STANDARDS.md (TAG-AUDIT format), .claude/agents/reflector.md (canon-verify queueing), .claude/agents/publisher.md (canon promotion verify blocker), CLAUDE.md (3-line pointer), PROJECT-STATUS.md (6-edit truth-up). | ~12k tokens
2026-05-06 [TIME-NOW] | webmaster | LOOP_COMPLETE | Sub-project 1 complete. Sprint-mode mechanism live. Sub-projects 2 (cleanup) and 3 (content strategy) follow in sequence per Option A. AUDIT_LOG entry appended. | ~15k tokens
LOGEOF

Replace [TIME-NOW] with the actual current UTC time (HH:MM format) before running. Use:

date -u +"%H:%M"

  • Step 11.2: Verify LOG entries

Run:

tail -5 /root/projects/wiki/LOG.md | grep -c "Sub-project 1"
Expected: ≥ 2


Task 12: Run /derive-contract and review diff

Files: - Auto-modified: /root/projects/wiki/OPERATING-CONTRACT.md

  • Step 12.1: Snapshot current contract before re-derive
cp /root/projects/wiki/OPERATING-CONTRACT.md /tmp/OPERATING-CONTRACT.before.md
  • Step 12.2: Run /derive-contract

Use Skill tool: invoke derive-contract skill. Or alternatively run the command:

# (Skill tool is preferred; this is fallback if skill cannot be invoked from inline execution)

  • Step 12.3: Review the diff
diff /tmp/OPERATING-CONTRACT.before.md /root/projects/wiki/OPERATING-CONTRACT.md

Acceptance: Diff is minor (cosmetic wording or no change at all). Material divergence (new principles, changed objective, removed clauses) is a red flag — pause and surface to user before continuing.

If diff is material: stop execution, write a one-paragraph summary of the divergence, ask user if it should be accepted or rolled back. Do NOT proceed to commit.

If diff is minor: continue.

  • Step 12.4: Cleanup snapshot
rm /tmp/OPERATING-CONTRACT.before.md

Task 13: mkdocs build --strict

Files: - No modifications. This is a verification-only step.

  • Step 13.1: Run strict build
cd /root/projects/wiki && mkdocs build --strict 2>&1 | tail -20

Expected: INFO - Documentation built in X.XX seconds and exit code 0.

Failure handling: if build fails, the most likely cause is a broken link from an edited file. Read the error output, fix the broken link in the offending file, re-run. Do NOT skip this step or use --no-strict.


Task 14: Single git commit covering all Sub-project 1 changes

Files: - Git working tree: all files modified in Tasks 1-12

  • Step 14.1: Check git status
cd /root/projects/wiki && git status

Expected files in the change list: - New: SPRINT-2026-05.md - New: docs/superpowers/specs/2026-05-06-governance-ecosystem-optimization-design.md - New: docs/superpowers/plans/2026-05-06-governance-ecosystem-optimization.md - Modified: BACKLOG.md, CLAUDE.md, PROJECT-STATUS.md, STANDARDS.md, LOG.md, AUDIT_LOG.md, OPERATING-CONTRACT.md (if /derive-contract changed it) - Modified: .claude/commands/run-loop.md, .claude/agents/webmaster.md, .claude/agents/author.md, .claude/agents/reflector.md, .claude/agents/publisher.md

  • Step 14.2: Stage all changes
cd /root/projects/wiki && git add -A
  • Step 14.3: Verify staged content
cd /root/projects/wiki && git diff --cached --stat

Expected: ~13 files changed, mix of modifications and creations.

  • Step 14.4: Commit
cd /root/projects/wiki && git commit -m "$(cat <<'EOF'
ops: Sub-project 1 — governance/ecosystem optimization for 2026-05 three-category sprint

Sprint-mode mechanism (machine-readable BACKLOG.md header + /run-loop step 3
+ webmaster.md mirror), CANON-PROMOTE + TAG-AUDIT task formats, canon-promotion
authority split (author claims, reflector queues, publisher verifies + edits
CATEGORY-CANON.md), PROJECT-STATUS.md truth-up (false "retrofit complete" claim
replaced; Track 1B reframed; absolute counts swept), SPRINT-2026-05.md operating
brief at repo root.

Spec: docs/superpowers/specs/2026-05-06-governance-ecosystem-optimization-design.md
Plan: docs/superpowers/plans/2026-05-06-governance-ecosystem-optimization.md
Codex review: 2 rounds (framing + spec critique) — all pushbacks absorbed.

Per Operating Constitution rule 5 (transparency + reversibility, not gates):
AUDIT_LOG.md entry appended; LOG.md entries appended; commit is single-file-revert
safe.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)"
  • Step 14.5: Verify commit
cd /root/projects/wiki && git log -1 --stat

Expected: commit hash, ~13 files, "ops: Sub-project 1" subject line.

  • Step 14.6: Do NOT push yet

The push happens after Sub-projects 2 and 3 also complete (or at the user's direction). Sub-project 1's commit lives locally until the full sprint-readiness work is done. This avoids forcing readers to absorb three separate commits if all three finish in this session.


Task 15: Final Sub-project 1 verification

Files: - No modifications. This is a complete-state verification.

  • Step 15.1: Run all verification commands from the spec
cd /root/projects/wiki

echo "=== File existence ==="
test -f SPRINT-2026-05.md && echo "OK: SPRINT-2026-05.md exists" || echo "FAIL: SPRINT-2026-05.md missing"

echo ""
echo "=== BACKLOG SPRINT-MODE block ==="
head -15 BACKLOG.md | grep -E "Status: ACTIVE|Precedence: TAG-AUDIT,CANON-PROMOTE,CANON,OTHER|Brief: SPRINT-2026-05.md" | wc -l
echo "(expected: 3)"

echo ""
echo "=== Agent edits ==="
grep -c "Sprint-mode override" .claude/agents/webmaster.md
echo "(expected: 1)"
grep -c "CANON-PROMOTE tasks (adequate → strong, cell-level)" .claude/agents/author.md
echo "(expected: 1)"
grep -c "Canon promotion verification queueing" .claude/agents/reflector.md
echo "(expected: 1)"
grep -c "Canon promotion verification" .claude/agents/publisher.md
echo "(expected: ≥ 1)"

echo ""
echo "=== Command + STANDARDS ==="
grep -c "Sprint-mode check" .claude/commands/run-loop.md
echo "(expected: 1)"
grep -c "TAG-AUDIT task format" STANDARDS.md
echo "(expected: 1)"
grep -c "off-grid reader test" STANDARDS.md
echo "(expected: 1)"

echo ""
echo "=== Pointers ==="
head -5 CLAUDE.md | grep -c "SPRINT-2026-05.md"
echo "(expected: 2)"
head -15 PROJECT-STATUS.md | grep -c "SPRINT-2026-05.md"
echo "(expected: ≥ 1)"

echo ""
echo "=== PROJECT-STATUS truth-up ==="
grep -i "domain tag retrofit ✅ complete" PROJECT-STATUS.md
echo "(expected: 0 lines — false claim removed)"
grep -c "Current sprint priorities" PROJECT-STATUS.md
echo "(expected: 1)"
grep -c "Track 1B: Off-grid coverage hardening" PROJECT-STATUS.md
echo "(expected: 1)"

echo ""
echo "=== Build + canon coverage ==="
mkdocs build --strict 2>&1 | tail -3
python3 scripts/category-coverage.py --report 2>&1 | head -5

echo ""
echo "=== Git ==="
git log -1 --oneline
git status --short

Acceptance: All counts match. Build succeeds. Coverage script runs. git status --short is empty (everything committed).

  • Step 15.2: Mark Sub-project 1 complete in todo list

Use TodoWrite to mark the in-progress Sub-project 1 todos completed. Set the next Sub-project 2 todo to in_progress.


Self-Review

Spec coverage check (each spec component → task): - Component 1 (SPRINT-2026-05.md) → Task 1 ✓ - Component 2 (BACKLOG SPRINT-MODE header) → Task 2 ✓ - Component 3 (PROJECT-STATUS truth-up) → Task 9 (6-step truth-up) + Task 8 (pointer) ✓ - Component 4 (run-loop step 3) → Task 3 ✓ - Component 5 (webmaster mirror) → Task 4 ✓ - Component 6 (author CANON-PROMOTE) → Task 5 ✓ - Component 7 (TAG-AUDIT format in STANDARDS) → Task 6 ✓ - Component 8 (reflector + publisher) → Task 7 ✓ - Component 9 (expiry-verification BACKLOG task) → Task 2.2 ✓ - Component 10 (/derive-contract re-run) → Task 12 ✓ - Plus: AUDIT_LOG entry → Task 10 ✓; LOG entries → Task 11 ✓; build → Task 13 ✓; commit → Task 14 ✓; verification → Task 15 ✓

Placeholder scan: - Task 11.1 has [TIME-NOW] placeholder — explicitly flagged with the date command to fill it. Acceptable runtime placeholder. - Task 9.5 sweep — counts to update are listed by regex; the engineer fills them after running the grep. The procedure is concrete (regex defined, replacement decision rule stated). Acceptable. - Task 12.2 has a comment about Skill tool fallback. Either path is valid; not a placeholder. - No "TBD", "implement later", or "fill in details" left.

Type/name consistency: - SPRINT-MODE block field names (Name, Status, Started, Expires, Precedence, Freeze, Brief, Owner) consistent across SPRINT-2026-05.md, BACKLOG.md header, run-loop.md step 3, and webmaster.md mirror. - CANON-PROMOTE: {foundation} × {category} adequate→strong task format consistent in author.md, SPRINT-2026-05.md, and PROJECT-STATUS.md priorities. - TAG-AUDIT: {scope} consistent across STANDARDS.md, SPRINT-2026-05.md, PROJECT-STATUS.md priorities. - Precedence: TAG-AUDIT,CANON-PROMOTE,CANON,OTHER consistent across BACKLOG header, run-loop.md, webmaster.md, SPRINT-2026-05.md.

No issues found.