Review: Document .claude-no-enforce in agent-workflow SOP

review-343-2026-03-27 Review

review needs-refinement

Verdict: NEEDS_REFINEMENT

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- Standalone, discovered during frontend iteration
  • [x] Repo -- forgejo_admin/claude-custom
  • [x] User Story -- present and well-formed
  • [x] Context -- clear motivation, references the undocumented dotfile
  • [x] File Targets -- listed (but see issues below)
  • [x] Acceptance Criteria -- 4 items
  • [x] Test Expectations -- includes verification command
  • [x] Constraints -- appropriate (document only, no behavior change)
  • [x] Checklist -- standard PR checklist
  • [x] Related -- references parent project and related SOPs

Traceability

  • [x] story:pm-scope label -- present on board item #343
  • [ ] arch:ci-pipeline label -- ISSUE: Wrong architecture component. This ticket documents an enforcement escape hatch in check-issue.sh (a hook), not a CI pipeline. Should be arch:hooks or arch:enforcement
  • [x] Forgejo issue -- forgejo_admin/claude-custom#156, open

File Targets

  • [x] pal-e-docs note agent-workflow -- verified: exists, active SOP. No mention of .claude-no-enforce currently. Appropriate target.
  • [x] pal-e-docs note agent-betty-sue -- verified: exists, active agent profile. No mention of .claude-no-enforce. Appropriate target.
  • [ ] betty-sue.md in claude-custom -- ISSUE: File path is wrong. The file is at agents/betty-sue.md, not betty-sue.md in repo root. Issue should specify agents/betty-sue.md.
  • [x] hooks/check-issue.sh line 74 -- verified: .claude-no-enforce check exists at exactly line 74 with three path checks (cwd, git_dir, repo_root). Also referenced at line 242 in the error message as a hint.
  • [x] Convention note creation (convention-claude-no-enforce) -- verified: does not exist yet. Issue correctly identifies this as a potential creation target.

Repo Placement

Mixed. The Forgejo issue is filed on claude-custom which is correct for the agents/betty-sue.md change. However, the agent-workflow and agent-betty-sue pal-e-docs note updates happen via MCP tools, not file edits in claude-custom. The issue acknowledges this with "(via MCP)" but this means the dev agent needs pal-e-docs MCP access -- which violates the agent-workflow rule that "Dev and QA are repo-only." This is a Task-type documentation ticket that should be executed by Betty Sue or Dottie (who have MCP access), not a dev agent.

Dependencies

No blocking dependencies found on board-pal-e-agency. Board item #364 ("Scope review pipeline: jidoka for the left side of the board") is related but not blocking. No items in in_progress that would conflict.

Acceptance Criteria

  • "agent-workflow SOP updated with .claude-no-enforce exception" -- testable via get_note(slug="agent-workflow") and searching for "claude-no-enforce"
  • "agent-betty-sue profile updated" -- testable via get_note(slug="agent-betty-sue")
  • "betty-sue.md in claude-custom updated" -- testable but file path is wrong (should be agents/betty-sue.md)
  • "Convention note created if appropriate" -- vague. Should be a clear yes/no decision. Recommend: yes, create convention-claude-no-enforce.
Test command touch .claude-no-enforce && bash hooks/check-issue.sh is incomplete -- check-issue.sh reads from stdin (jq parses tool_name, file_path, cwd from JSON input). The test command would fail without piped JSON. A more accurate test would need to pipe mock hook input.

Blast Radius

.claude-no-enforce is only referenced in check-issue.sh and .gitignore within claude-custom. No other hooks use this pattern. The documentation work is purely additive -- no risk to existing behavior. The sop-frontend-dev-overlay SOP (referenced in the issue's Related section) does not mention .claude-no-enforce either, which is a gap this ticket would close.

Decomposition Assessment

4 acceptance criteria across 2 systems (pal-e-docs MCP + claude-custom repo). However, this is all documentation work with no code behavior changes. A single agent pass by Dottie (who has pal-e-docs access) could handle the MCP updates, and a separate commit for agents/betty-sue.md. Fits in one pass if routed to the right agent type.

Recommendation

Three issues to fix before READY:
  • Fix file path: Change "betty-sue.md in claude-custom" to "agents/betty-sue.md in claude-custom"
  • Fix arch label: Change arch:ci-pipeline to arch:hooks on board item #343
  • Clarify issue type routing: This is a Task (documentation only, no code file targets in the traditional sense). The pal-e-docs updates require MCP access, which means this should be routed to Dottie or executed by Betty Sue directly -- not a dev agent. Consider changing ### Type to Task and adjusting the execution plan accordingly. Alternatively, split into two tickets: one for agents/betty-sue.md (dev agent on claude-custom) and one for pal-e-docs updates (Dottie).