Skip to content

Tasks: the contribution loop

Phase 4. DAG: T1 → {T2, T3, T4} → T5 → T6 → {T7, T8} → T9. Each task's Test: names a row of testing-plan.md.

Task list

  • [x] T1 — the graph. Add cli/the_loop/graph/pdlc-contribution-loop.yaml (nodes, edges, skip sets per design), PDLC_CONTRIBUTION_LOOP in model.py, and the repo-override warning entry. Requirements: R1, R4. Test: Unit (graph compiles/routes).
  • [x] T2 — the goal gate. New graph/hooks/goal.py (post-goal-request, classify-goal), registered in hooks/__init__.py; extend the runtime's decision recorder to persist the goal payload. Requirements: R2. Test: Unit (goal parser), Security (unauthorized/self-authored).
  • [x] T3 — the keyword. CONTRIBUTE in control.py (command, default keyword, arming); dispatcher treats it as start at both spawn seams; cli-config schema gains keywords.contribute. Requirements: R3. Test: Unit (keyword, arming), Security (ambiguity refusal).
  • [x] T4 — durable loop choice. GraphState.loop (write at Runtime.start, round-trip); build_runtime(loop=…). Requirements: R1.3. Test: Unit (state round-trip, migration).
  • [x] T5 — loop resolution. GraphLink._outer_loop_name (state-first, control record second, default third) wired into _guarded; same read in core/graphs.py verbs. Requirements: R1.3, R3.1. Test: Unit (resolution order), Security (unknown name falls back).
  • [x] T6 — integration walk. Stubbed-integration test: goal-definition → phase-selection, authorized vs unauthorized goal, checklist from this graph. Requirements: R2, R4.1. Test: Integration.
  • [x] T7 — plugin surface. commands/contribute-to.md; skills/the-loop/templates/contribution.md. Requirements: R4.2, R5. Test: Manual n/a — markdown lint only.
  • [x] T8 — docs. SKILL.md, reference/workflow.md, README/guide "two loops" mentions, docs/capabilities/process-graph.md + webhook-triggers.md, docs/config/cli/routing-options.md, decision-070. Requirements: all (the documentation gate). Test: markdownlint.
  • [x] T9 — verification. Execute the testing plan; record results + evidence. Requirements: R5. Test: the plan itself.
  • [x] T10 — the uninitialized repository (review round human-1, PR #187). harness_config.initialized; repoInitialized in build_runtime's config; spec-tree git exclusion at Runtime.start (+ graph.spec_tree_excluded event); publish-artifact hook wired into plan-approval and human-approval; docs swept (decision-070, process-graph, workflow reference, contribute-to). Requirements: R6. Test: Unit + integration (uninitialized-repo rows).

Released under the MIT License.