workflow-fix: resolve SPEC.md Lens 12 sentence-count contradiction (from #779 reconciler)
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Overview / Motivation
Auto-filed by the workflow-fix-on-bug protocol from a surfaced observation by the reconciler on task #779 clean-result-critique round 2. The reconciler ruled Codex's Lens 12 "≤2-sentences-per-paragraph" finding as not blocking because it cites SPEC.md L828 which directly contradicts SPEC.md L814 ("1-3 sentences") for the same v4 Results interpretation beat.
Goal
Resolve the SPEC.md Lens 12 self-contradiction so future clean-result-critic + codex-clean-result-critic ensemble rounds don't repeatedly disagree on the paragraph-length rule.
Workflow gap
- Bug observed: SPEC.md § "Lens 12 — Conciseness (word-cap adherence + bullets-over-prose)" contains two mutually contradictory text-only rules for the same v4 Results interpretation beat:
- L814 (approx): "each result's interpretation prose 1-3 sentences"
- L828 (approx): "each interpretation paragraph ≤2 sentences" Task #779 r2 clean-result-critique ensemble: Claude accepted the 3-sentence paragraphs (citing L814); Codex FAILed them (citing L828); reconciler dismissed L828 as unenforceable due to the contradiction, ruling PASS for Lens 12. This exact disagreement will keep regenerating on every future clean-result review because BOTH sentences are in the spec and neither is enforced mechanically.
- Why it is a workflow gap: the spec's mechanical implementation (
verify_task_body.py) enforces WORD-COUNT caps (120 WARN / 180 FAIL) — no sentence-count check exists. So both L814 and L828 are text-only guidance that reviewers apply subjectively; when they conflict, the reviewer's interpretation controls, causing avoidable ensemble disagreement. - Confidence (emitter): high — reconciler explicitly named this as a latent workflow-surface ambiguity affecting all future rounds; the SPEC citations are concrete.
Proposed change (candidate diff sketch — refine in planning)
Pick ONE canonical rule for interpretation paragraph length + delete the contradicting one:
Option A (preferred if L814 is the intended shape): delete the L828 "≤2 sentences" text; keep L814 "1-3 sentences" as the guidance. Add a note in the SPEC that no mechanical check enforces sentence count — 1-3 is a register guideline.
Option B (if L828 is the intended shape): delete L814 "1-3 sentences"; keep L828 "≤2 sentences". Add a verify_task_body.py check that counts sentence terminators per interpretation paragraph and FAILs at >2. Update audit_clean_results_body_discipline.py similarly.
Either way, harmonize .claude/agents/clean-result-critic.md + .claude/agents/codex-clean-result-critic.md Lens 12 descriptions to cite ONE sentence-count rule (or drop the count entirely and rely on word-count).
Scope / surfaces
- Primary target:
.claude/skills/clean-results/SPEC.md(L814 + L828 area) - Grep the workflow surface first:
grep -rn 'sentences\|sentence-terminator\|paragraph.*sentences' .claude/skills/clean-results/ .claude/agents/clean-result-critic.md .claude/agents/codex-clean-result-critic.md scripts/verify_task_body.py scripts/audit_clean_results_body_discipline.py - Secondary target: whichever of the two rules is deleted, also remove any downstream references in the agent files.
Constraints / invariants
- Workflow-surface only — never experiment code,
configs/, ortasks/. - Do NOT invalidate any existing PASSed v4 clean-result body — the fix should be forward-only.
- The mechanical gate (
verify_task_body.py) should either stay unchanged (Option A) or gain a new sentence-count check (Option B); do NOT tighten mechanical checks without approval.
Provenance
- workflow_fix_target: .claude/skills/clean-results/SPEC.md
- fingerprint: (auto)
- Emitted by: reconciler on task #779 clean-result-critique r2 (2026-07-01)