Skip to content

<!-- Authored per the the-loop:writing skill. -->

Testing plan: gate the brainstorm on its author's approval ​

Derived from bugfix.md and design.md. Results are filed under Verification results below, with the raw output in evidence/verification.md.

Test matrix ​

#TypeApplies?Scope / what it provesWhere it runs
T1Unit (graph shape)yesbrainstorm-approval is a human, skippable node in spec-chain; the edge table in design.md holds exactly; every skippable node still routes skipped where completing it wouldcli/tests/test_graph_skips.py, cli/tests/test_graph_model.py
T2Unit (hook)yesvalidate-artifacts with absentOutcome on an optional node with no artifact returns a skip carrying that outcome; without the parameter, or with the artifact present, its result is unchangedcli/tests/test_graph_runtime.py (or the hook's own test module)
T3Integration (runtime walk)yesover a temporary spec directory with real chains: (a) brainstorm.md present → brainstorm-approval, parked; (b) an indecisive authorized comment keeps it parked; (c) an unauthorized "approved" keeps it parked; (d) an authorized "approved" records the feedback, locks brainstorm.md and reaches requirements-definition; (e) "changes requested" returns to brainstorming; (f) no brainstorm.md → requirements-definition directlycli/tests/test_graph_integration.py
T4Integration (declared skips)yesbrainstorming declared skipped never enters the gate; brainstorm-approval declared skipped alone routes brainstorming → requirements-definition on passcli/tests/test_graph_integration.py
T5E2E scenariosyesthe shipped scenarios that pin the walk (happy-path and its siblings) still pass with the new node in the frozen graph; their pinned node lists gain brainstorm-approval~cli/tests/test_pdlc_e2e_integration.py
T6Snapshot (checklist)yesthe phase-selection checklist renders a ticked brainstorm-approval row after brainstorming; the Jira wiki/ADF/read fixtures matchcli/tests/test_jira_integration.py, selection tests
T7Regressionyesruff, ruff format, pyright, the full CLI suite, markdownlint, make validate (make check)repository checks
T8Security / abuse caseyesthe unauthorized-approval abuse case is T3(c); repository-hook routing is already pinned by the extensions tests, re-run in T7T3, cli/tests/test_graph_extensions.py
T9Documentationyes (review)every file in the design's documentation table describes the gate, and no doc still says a brainstorm has no gategrep over skills/, commands/, docs/capabilities/, recorded in evidence/documentation.md
T10UI / accessibility / performance / migration / contractn/ano UI or API surface changes; one dict lookup per chain; no schema or state-file change, so no migration

Requirement trace ​

RequirementTests
R1.1T1, T3(a)
R1.2T3(b)
R1.3T3(d)
R1.4T3(e)
R1.5T1, T3(c), T8
R1.6T3 (fails before the graph change, passes after)
R2.1T2, T3(f)
R2.2, R2.3T1, T4, T6
R2.4T2
R3.1, R3.2T9

Verification environment ​

This checkout. Python through uv (make install-dev), and the tests through make test, which is the pre-commit hook's own command. No service, credential or network access is needed: every GitHub interaction in these tests goes through the suite's existing fakes.

Evidence plan ​

  • evidence/verification.md — commands, pass/fail counts and the before/after of the regression tests (red on main, green on the branch).
  • evidence/documentation.md — the T9 grep and the files changed.
  • The usual review records (self-review.md, critic-review.md, security-review.md, final-validation.md, pull-requests.md).

Activities ​

  • [x] Run T1–T6 and confirm the new tests fail on main's graph.
  • [x] Run make check (T7).
  • [x] Run the T9 documentation grep.

Verification results ​

ActivityOutcomeEvidence
T1–T6pass on the branch; the 9 regression tests fail with origin/main's graph and hooksevidence/verification.md
T7lint, format, pyright, markdownlint and validate clean. Full suite: 6125 passed, 21 failed, and the same 21 fail on main in this environment (they read the host's live poller)evidence/verification.md
T8the unauthorized-approval case is pinned in test_a_written_brainstorm_waits_at_its_gate_across_comments; the extensions tests passevidence/verification.md
T9only new wording and the issue-281 History row matchevidence/documentation.md

T5 needed no scenario edits, and T3 found the check --recompute defect that whenPresent fixes; both are explained in the evidence.

Released under the MIT License.