From 303cdd02c39bd1dfcddbe4498dd4269aa47cd711 Mon Sep 17 00:00:00 2001 From: garrytan Date: Sat, 3 Oct 2026 22:26:55 +0000 Subject: [PATCH] I1: plan-eng-review writes the Test Plan Artifact even while test choices are pending Periodic run 37151477069 (plan-eng-review-artifact): a non-interactive review recorded every Test review choice as pending and never wrote the QA test plan, because Step 5 said to write the artifact 'when these test and eval choices are resolved' while the artifact section says to list unresolved choices as pending. Both now say to write it after the decision gate, with unanswered choices under Pending Decisions. The pinned sentence becomes a meaning-level check. --- scripts/resolvers/testing.ts | 4 ++-- test/gen-skill-docs.test.ts | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/scripts/resolvers/testing.ts b/scripts/resolvers/testing.ts index 8070c8338..3d0610ebf 100644 --- a/scripts/resolvers/testing.ts +++ b/scripts/resolvers/testing.ts @@ -480,13 +480,13 @@ A proposal that fails the value bar becomes "extend " or is dropp Run the decision gate for this section's new or reopened choices. **STOP for each pending decision.** Wait for its answer before applying that remedy, moving to the next section or calling ExitPlanMode. -When these test and eval choices are resolved, write the Test Plan Artifact below. Its approved requirements should be specific enough to implement alongside the feature code.`); +Then write the Test Plan Artifact below, even while some choices are still unanswered (for example in a non-interactive run). Its approved requirements should be specific enough to implement alongside the feature code.`); // ── Test plan artifact (plan + ship) ── sections.push(` ${subheading} Test Plan Artifact -After resolving the Test review decisions, record the approved test requirements in an artifact for \`/qa\` and \`/qa-only\`. List any unresolved choices separately as pending, not required implementation. Update this artifact if later approved decisions change the tests. Use the Review record and write policy above. +After the Test review decision gate, record the approved test requirements in an artifact for \`/qa\` and \`/qa-only\`. Write it even when choices are still pending; list any unresolved choices separately as pending, not required implementation. Update this artifact if later approved decisions change the tests. Use the Review record and write policy above. \`\`\`bash GSTACK_STATE_ROOT=$(~/.claude/skills/gstack/bin/gstack-paths --get GSTACK_STATE_ROOT); : "\${GSTACK_STATE_ROOT:?gstack-paths failed; reinstall with ./setup or /gstack-upgrade}" diff --git a/test/gen-skill-docs.test.ts b/test/gen-skill-docs.test.ts index c3b6f9808..eb476b58c 100644 --- a/test/gen-skill-docs.test.ts +++ b/test/gen-skill-docs.test.ts @@ -1024,8 +1024,11 @@ describe('TEST_COVERAGE_AUDIT placeholders', () => { expect(planSkill).toContain('eng-review-test-plan'); expect(planSkill).toContain('Test Plan Artifact'); const artifact = planSkill.split('\n#### Test Plan Artifact\n')[1]!; - expect(artifact).toContain('After resolving the Test review decisions'); - expect(artifact).toContain('List any unresolved choices separately as pending, not required implementation'); + // The artifact is written even when Test review choices are still unanswered (periodic run 37151477069). + const step5 = planSkill.split('**Step 5. Add missing tests to the plan:**')[1]!.split('\n#### Test Plan Artifact\n')[0]!; + expect(step5).toMatch(/write the Test Plan Artifact below, even while some choices are still unanswered/); + expect(artifact).toMatch(/Write it even when choices are still pending/); + expect(artifact).toContain('list any unresolved choices separately as pending, not required implementation'); expect(artifact).toContain('Update this artifact if later approved decisions change the tests'); expect(artifact).toContain('Use the Review record and write policy above.'); expect(artifact).toContain('TEST_PLAN_USER=$(whoami)');