Skip to content

Consensus loop: reviewer prompt rendering should fail closed on unresolved placeholders #44

@MarketingChronoAi

Description

@MarketingChronoAi

Problem

Generic prompt rendering uses safe substitution, which leaves unknown placeholders unresolved. Some prompt paths have explicit fully-rendered checks, but reviewer prompt dispatch does not. This allowed ${REVIEW_ROUND} to remain in rendered reviewer prompts.

Confirmed missing behavior

  • No reviewer-specific unresolved-placeholder validation after render.
  • Existing unresolved-placeholder validators are present for other prompt types, proving the pattern exists but is not applied to reviewer prompts.

Evidence

  • /Users/chronoai/.claude/skills/consensus-loop/scripts/codex_refactor_loop/prompt_rendering.py uses Template(...).safe_substitute(...).
  • /Users/chronoai/.claude/skills/consensus-loop/scripts/codex_refactor_loop/controller_actions.py: generic render_template() writes rendered text directly.
  • Rebase-resolve and review-fix prompt paths have explicit fully-rendered checks.
  • No equivalent check exists in dispatch_reviewers() after rendering reviewer prompts.

Suggested fix

  • Add _ensure_reviewer_prompt_fully_rendered(prompt_path) or a shared fully-rendered check used by all prompt dispatch paths.
  • Call it after rendering reviewer prompts and before appending HARNESS_SPAWN_INTENT.
  • Fail closed with a clear error if unresolved placeholders remain.

Acceptance criteria

  • Reviewer prompt dispatch fails before spawn intent if any ${...} placeholder remains unresolved.
  • The failure is recorded with prompt path and placeholder names.
  • Tests cover unresolved placeholder rejection for reviewer prompts.

Review status

This was independently reviewed in /Users/chronoai/Desktop/proposed-main-repo-issues-review-gate.md and classified high confidence.

⟦AI:AUTO-LOOP⟧
ISSUE_RAISED:review-gate-hardening:reviewer-render-fail-closed

Metadata

Metadata

Assignees

No one assigned

    Labels

    crnd:human:autoController may continue without maintainer intervention.crnd:lifecycle:managedItem is managed by consensus-loop.crnd:phase:design-solvingConsensus design solving is active.enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions