• Implements docs/todo/validator-loop-until-dry-skill-design.md. Pure Skill +
    Agent-definition wiring, no execution-engine changes -- the convergence
    loop runs inside a single Work Node's one claude -p session (multi-turn
    tool use), not a graph_manifest-level cycle, so topological_layers()/
    run_graph() are untouched.
    
    New Skill skills/unknown-scope-defect-sweep/SKILL.md: K=2 consecutive
    no-new-finding rounds to stop, 20-round hard cap, dedup key must be a
    structural identifier (file path + line, route path, package name) not a
    natural-language description (the same finding gets reworded call to
    call, so text-keyed dedup never converges), dedup set is "everything ever
    seen" not "everything confirmed" (the common bug the 14-step reference
    names: a rejected candidate reappearing as a false "new finding" every
    round). Each candidate is verified via qa-task-validation's existing
    PASS/FAIL/INCONCLUSIVE framework -- deliberately NOT root_cause_trace's
    three-perspective jury (F), since that answers a different question
    (root cause AFTER a failure) from this one (is this candidate real at
    all) -- documented in the design doc's own tradeoff note.
    
    Wired into agent_profile.py's FRONTMATTER["validator"]["skills"] and
    agents/validator/AGENTS.md's "必须加载" section with a concrete trigger
    signal (task description can't state an exact expected count/boundary
    up front).
    
    Only FR-4 (Skill wired into the rendered .claude/agents/validator.md) has
    deterministic, mockable behavior -- new test
    test_validator_references_unknown_scope_defect_sweep_skill. Acceptance
    criteria 1-3 (actually finds everything, actually dedups correctly,
    actually stops at the hard cap) need real multi-turn claude -p behavior,
    out of scope for mocked tests (RUN_REAL_AGENT_E2E=1 territory), same
    category of limitation as F's own real-concurrency-timing note.
    
    Full src suite (587 tests) passes with zero regressions.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    bboonnee authored
     
    Browse Dir »