Review: Content sweep: rename Betty Sue to Ava across pal-e-docs notes

review-646-2026-03-28 Doc

review needs-refinement

Verdict: NEEDS_REFINEMENT

Template Completeness

  • [x] Type — Feature
  • [x] Lineage — references claude-custom#224
  • [x] Repo — forgejo_admin/pal-e-api
  • [x] User Story — well-formed (As Lucas, I want..., So that...)
  • [x] Context — clear motivation, references parent ticket
  • [x] File Targets — N/A for filesystem (MCP operations); note targets listed but incomplete (see below)
  • [x] Acceptance Criteria — 3 criteria present, verifiable
  • [x] Test Expectations — manual search verification described
  • [x] Constraints — clear (update_block only, no archived notes, no content rewrites beyond name)
  • [x] Checklist — present
  • [x] Related — project + parent ticket

Traceability

  • [x] story:pm-scope — present on board item, matches PM scoping role
  • [x] arch:note-system — present on board item, matches note content operations
  • [x] Forgejo issue — forgejo_admin/pal-e-api#247, open

File Targets

No filesystem file targets — this is a pal-e-docs MCP operation via update_block. Verified the listed notes exist and contain Betty Sue references:
  • [x] agent-workflow — verified: exists, Betty Sue references confirmed via search (role descriptions)
  • [x] project-pal-e-agency — verified: exists, Betty Sue in user stories table (PM row, block 13984) and likely architecture diagram
  • [x] convention-agent-autonomy-levels — verified: exists, Betty Sue in per-agent table (block 8688, row: "Betty Sue", "L2 with L0 escalation")
  • [x] convention-escalation-triggers — verified: exists, Betty Sue in escalation chain diagram
  • [x] convention-validation-checkpoints — verified: exists, Betty Sue in 3 blocks (paragraph-4, paragraph-8, paragraph-12)
  • [ ] INCOMPLETE — Issue says "Any other notes found via search_notes" but does not enumerate them. Search reveals 8 additional active notes with Betty Sue references not listed in the issue (see Blast Radius).

Repo Placement

Issue is filed on pal-e-api — correct, that is where the pal-e-docs data and API live. No code file changes needed, only MCP update_block operations against the database. Repo placement is correct. Single-repo scope (Dottie agent operates via MCP, not filesystem).

Dependencies

  • [ ] claude-custom#224 (board item #643, "Evolve main session agent: Betty Sue → Ava") — currently in_progress. HARD BLOCKER. This ticket must NOT execute until #643 merges, otherwise pal-e-docs notes will reference "Ava" while the running agent is still "Betty Sue." The issue's Lineage section documents this relationship but the board item lacks a depends:643 label.

Acceptance Criteria

All 3 criteria are agent-verifiable:
  • [x] search_notes(query="Betty Sue") returns only archived/historical — verifiable via MCP call
  • [x] All active SOPs/conventions reference "Ava" — verifiable via MCP search
  • [x] Block-level updates only — enforceable by instruction (use update_block not update_note)
Missing criterion: No AC explicitly excludes completed phase notes. Several completed phases reference "Owner: Betty Sue" (historical records). Should be explicitly listed as excluded, same as archived notes.

Blast Radius

The issue significantly underestimates scope. It lists 5 notes plus a wildcard search, but search reveals 12+ active notes with Betty Sue references.
Listed in issue (5 notes): agent-workflow, project-pal-e-agency, convention-agent-autonomy-levels, convention-escalation-triggers, convention-validation-checkpoints
NOT listed in issue but found via search (8 additional active notes):
  • sop-index — "Betty Sue (main session)" in multiple table rows
  • agent-spawn-conventions — Betty Sue in agent role descriptions
  • pr-lifecycle — "Betty Sue (MCP)" in multiple action items
  • decision-agent-dottie — "Betty Sue" in Dottie constraint descriptions
  • sop-board-workflow — "Betty Sue has triaged"
  • agent-dottie — "Betty Sue's assistant" in mission statement
  • convention-cross-pillar-triggers — "Betty Sue is responsible"
  • plan-pal-e-agency — Betty Sue in plan description
Completed phases (should be explicitly excluded as historical): phase-pal-e-platform-14a-webhook-fix, phase-pal-e-docs-project-taxonomy, phase-postgres-7f-3-template-drift
Already correctly excluded: agent-betty-sue (archived), project-pal-e-portfolio (archived), review notes (historical)
Rollback is straightforward — update_block calls are individually reversible by swapping "Ava" back to "Betty Sue".

Decomposition Assessment

13 active notes with potentially 20-30 update_block calls total. Each call is mechanical (find "Betty Sue" in block content, replace with "Ava"). Applying the rules:
  • >3 discrete changes? Yes — 13 notes. However, each change is identical in nature (text substitution). This is a single-pattern sweep, not 13 distinct features.
  • >5 minutes? Borderline. A Dottie agent with a complete note list can execute this in ~5 minutes if the list is pre-enumerated. Without enumeration (relying on runtime search), the agent wastes time discovering targets.
  • Independent subtasks? All note updates are independent — could be parallelized, but the overhead of spinning up multiple agents for text substitution exceeds the time saved.
No decomposition needed — but the issue body MUST enumerate ALL target notes upfront so the agent does not waste time discovering them. The wildcard "search for more" approach is insufficient for a scoped spec.

Recommendation

  • [BODY] Add the 8 missing active notes to the File Targets / notes-to-update list: sop-index, agent-spawn-conventions, pr-lifecycle, decision-agent-dottie, sop-board-workflow, agent-dottie, convention-cross-pillar-triggers, plan-pal-e-agency
  • [BODY] Add explicit exclusion for completed phase notes to the "Files the agent should NOT touch" section (historical records, same treatment as archived notes and review notes)
  • [BODY] Add acceptance criterion: "Completed phase notes are NOT modified (historical records)"
  • [LABEL] Add depends:643 label to board item #646 — hard dependency on personality evolution merging first