@kontourai/flow-agents 3.6.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/build/src/builder-flow-run-adapter.d.ts +22 -2
  3. package/build/src/builder-flow-run-adapter.js +93 -28
  4. package/build/src/builder-flow-runtime.d.ts +8 -3
  5. package/build/src/builder-flow-runtime.js +308 -47
  6. package/build/src/cli/assignment-provider.d.ts +4 -7
  7. package/build/src/cli/assignment-provider.js +67 -13
  8. package/build/src/cli/builder-run.js +14 -18
  9. package/build/src/cli/workflow-sidecar.d.ts +28 -4
  10. package/build/src/cli/workflow-sidecar.js +801 -97
  11. package/build/src/cli/workflow.js +290 -42
  12. package/build/src/flow-kit/validate.d.ts +17 -0
  13. package/build/src/flow-kit/validate.js +340 -2
  14. package/build/src/index.js +5 -5
  15. package/build/src/lib/observed-command.d.ts +7 -0
  16. package/build/src/lib/observed-command.js +100 -0
  17. package/build/src/tools/generate-context-map.js +5 -3
  18. package/context/scripts/hooks/lib/kit-catalog.js +1 -1
  19. package/context/scripts/hooks/stop-goal-fit.js +78 -9
  20. package/docs/context-map.md +22 -20
  21. package/docs/developer-architecture.md +1 -1
  22. package/docs/public-workflow-cli.md +76 -7
  23. package/docs/skills-map.md +51 -27
  24. package/docs/spec/builder-flow-runtime.md +41 -40
  25. package/docs/workflow-usage-guide.md +109 -42
  26. package/evals/fixtures/hook-influence/cases.json +2 -2
  27. package/evals/integration/test_builder_entry_enforcement.sh +52 -41
  28. package/evals/integration/test_builder_step_producers.sh +297 -6
  29. package/evals/integration/test_bundle_install.sh +212 -63
  30. package/evals/integration/test_critique_supersession_roundtrip.sh +21 -8
  31. package/evals/integration/test_current_json_per_actor.sh +12 -0
  32. package/evals/integration/test_dual_emit_flow_step.sh +62 -43
  33. package/evals/integration/test_flowdef_session_activation.sh +145 -25
  34. package/evals/integration/test_flowdef_session_history_preservation.sh +23 -21
  35. package/evals/integration/test_gate_lockdown.sh +3 -5
  36. package/evals/integration/test_goal_fit_hook.sh +60 -2
  37. package/evals/integration/test_liveness_verdict.sh +14 -17
  38. package/evals/integration/test_phase_map_and_gate_claim.sh +63 -38
  39. package/evals/integration/test_public_workflow_cli.sh +325 -11
  40. package/evals/integration/test_pull_work_liveness_preflight.sh +22 -66
  41. package/evals/integration/test_sidecar_field_preservation.sh +36 -11
  42. package/evals/integration/test_workflow_sidecar_writer.sh +277 -44
  43. package/evals/integration/test_workflow_steering_hook.sh +15 -38
  44. package/evals/run.sh +2 -0
  45. package/evals/static/test_builder_skill_coherence.sh +247 -0
  46. package/evals/static/test_library_exports.sh +5 -2
  47. package/evals/static/test_workflow_skills.sh +13 -325
  48. package/kits/builder/flows/build.flow.json +22 -0
  49. package/kits/builder/flows/shape.flow.json +9 -9
  50. package/kits/builder/kit.json +70 -16
  51. package/kits/builder/skills/builder-shape/SKILL.md +75 -75
  52. package/kits/builder/skills/continue-work/SKILL.md +45 -106
  53. package/kits/builder/skills/deliver/SKILL.md +96 -442
  54. package/kits/builder/skills/design-probe/SKILL.md +40 -139
  55. package/kits/builder/skills/evidence-gate/SKILL.md +59 -201
  56. package/kits/builder/skills/execute-plan/SKILL.md +54 -125
  57. package/kits/builder/skills/fix-bug/SKILL.md +42 -132
  58. package/kits/builder/skills/gate-review/SKILL.md +60 -211
  59. package/kits/builder/skills/idea-to-backlog/SKILL.md +63 -244
  60. package/kits/builder/skills/learning-review/SKILL.md +63 -170
  61. package/kits/builder/skills/pickup-probe/SKILL.md +54 -111
  62. package/kits/builder/skills/plan-work/SKILL.md +51 -185
  63. package/kits/builder/skills/pull-work/SKILL.md +136 -485
  64. package/kits/builder/skills/release-readiness/SKILL.md +66 -107
  65. package/kits/builder/skills/review-work/SKILL.md +89 -176
  66. package/kits/builder/skills/tdd-workflow/SKILL.md +53 -147
  67. package/kits/builder/skills/verify-work/SKILL.md +101 -113
  68. package/package.json +2 -2
  69. package/scripts/hooks/lib/kit-catalog.js +1 -1
  70. package/scripts/hooks/stop-goal-fit.js +78 -9
  71. package/src/builder-flow-run-adapter.ts +118 -32
  72. package/src/builder-flow-runtime.ts +331 -61
  73. package/src/cli/assignment-provider-lock.test.mjs +83 -0
  74. package/src/cli/assignment-provider.ts +62 -13
  75. package/src/cli/builder-flow-run-adapter.test.mjs +4 -2
  76. package/src/cli/builder-flow-runtime.test.mjs +194 -8
  77. package/src/cli/builder-run.ts +3 -9
  78. package/src/cli/kit-metadata-security.test.mjs +232 -6
  79. package/src/cli/public-api.test.mjs +15 -0
  80. package/src/cli/workflow-sidecar-execution-proof.test.mjs +90 -0
  81. package/src/cli/workflow-sidecar.ts +724 -97
  82. package/src/cli/workflow.ts +277 -40
  83. package/src/flow-kit/validate.ts +320 -2
  84. package/src/index.ts +6 -5
  85. package/src/lib/observed-command.ts +96 -0
  86. package/src/tools/generate-context-map.ts +5 -3
@@ -70,6 +70,7 @@ MAP="$ROOT/docs/skills-map.md"
70
70
  ROOT_CONTEXT="$ROOT/CONTEXT.md"
71
71
  CONTEXT_MAP="$ROOT/docs/context-map.md"
72
72
  USAGE_GUIDE="$ROOT/docs/workflow-usage-guide.md"
73
+ PUBLIC_WORKFLOW_CLI="$ROOT/docs/public-workflow-cli.md"
73
74
  EVAL_STRATEGY="$ROOT/docs/workflow-eval-strategy.md"
74
75
  SHARED_CONTRACTS_DOC="$ROOT/docs/workflow-shared-contracts.md"
75
76
  ARTIFACT_LIFECYCLE_DOC="$ROOT/docs/workflow-artifact-lifecycle.md"
@@ -170,9 +171,6 @@ require_file "$EXECUTE_PLAN" "execute-plan skill"
170
171
  require_file "$REVIEW_WORK" "review-work skill"
171
172
  require_file "$VERIFY_WORK" "verify-work skill"
172
173
  require_file "$GATE_REVIEW" "gate-review skill"
173
- require_text "$GATE_REVIEW" 'advisory' "gate-review skill marks proposals as advisory"
174
- reject_text "$GATE_REVIEW" 'auto_applied\|auto-apply' "gate-review skill does not auto-apply fixes"
175
- require_text "$GATE_REVIEW" 'trust\.bundle' "gate-review skill references trust.bundle input"
176
174
  require_file "$MAP" "skills map"
177
175
  require_file "$ROOT_CONTEXT" "Flow Agents context glossary"
178
176
  require_file "$CONTEXT_MAP" "context map"
@@ -340,43 +338,6 @@ require_text "$FLOW_AGENTS_FLOW_ADR" 'Veritas remains an optional development go
340
338
 
341
339
  echo ""
342
340
  echo "--- contract wiring ---"
343
- require_text "$PLAN_WORK" 'context/contracts/planning-contract.md' "plan-work references planning contract"
344
- require_text "$PLAN_WORK" 'context/contracts/artifact-contract.md' "plan-work references artifact contract"
345
- require_text "$DELIVER" 'context/contracts/delivery-contract.md' "deliver references delivery contract"
346
- require_text "$DELIVER" 'context/contracts/verification-contract.md' "deliver references verification contract"
347
- require_text "$PULL" 'context/contracts/sandbox-policy.md' "pull-work references sandbox policy contract"
348
- require_text "$PULL" 'context/contracts/work-item-contract.md' "pull-work references work item contract"
349
- require_text "$PULL" 'WorkItemProvider' "pull-work uses work item provider role"
350
- require_text "$PULL" 'BoardProvider' "pull-work uses board provider role"
351
- require_text "$PULL" 'Do not implement provider settings, provider configuration, or configured-provider discovery' "pull-work avoids provider settings and discovery implementation"
352
- require_text "$PULL" 'npm run effective-backlog-settings' "pull-work checks effective backlog settings"
353
- require_text "$PULL" 'status: configured' "pull-work consumes configured provider settings"
354
- require_text "$PULL" 'status: ask_user' "pull-work asks for providers when settings are absent"
355
- require_text "$PULL" 'npm run pull-work-provider' "pull-work normalizes provider items"
356
- require_text "$PULL" 'related-only' "pull-work classifies related-only items"
357
- require_text "$PULL" 'flow validate-definition <path> --json' "pull-work delegates Flow Definition validation to Flow"
358
- require_text "$PULL" 'fetch the latest target ref' "pull-work requires latest target ref fetch before freshness checks"
359
- require_text "$PULL" 'compare the current target SHA to the work item.*planned_base_sha' "pull-work compares current target SHA to planned_base_sha"
360
- require_text "$PULL" 'commits-since' "pull-work records commits-since"
361
- require_text "$PULL" 'planned age' "pull-work records planned age"
362
- require_text "$PULL" 'changed-file intersections with `planning_scope_refs`' "pull-work records planning scope intersections"
363
- require_text "$PULL" 'Classify revision freshness as' "pull-work classifies revision freshness"
364
- require_text "$PULL" '`fresh`' "pull-work documents fresh classification"
365
- require_text "$PULL" '`drifted`' "pull-work documents drifted classification"
366
- require_text "$PULL" '`stale`' "pull-work documents stale classification"
367
- require_text "$PULL" '`stale`.*route back to `idea-to-backlog`' "pull-work routes stale freshness to idea-to-backlog"
368
- require_text "$PULL" 'Missing `planned_base_sha` is not fresh' "pull-work preserves missing planned_base_sha gap"
369
- require_text "$PULL" 'NOT_VERIFIED.*accepted-gap baseline' "pull-work records missing baseline as NOT_VERIFIED or accepted gap"
370
- require_text "$PLAN_WORK" 'revision_freshness' "plan-work consumes upstream revision freshness"
371
- require_text "$PLAN_WORK" 'current target ref/SHA' "plan-work requires latest target ref/SHA confirmation"
372
- require_text "$PLAN_WORK" 'accepted-gap baseline for missing historical `planned_base_sha`' "plan-work allows accepted-gap missing planned_base_sha baseline"
373
- require_text "$PLAN_WORK" 'Missing `planned_base_sha` is never fresh' "plan-work does not treat missing planned_base_sha as fresh"
374
- require_text "$PLAN_WORK" 'baseline freshness is missing or `NOT_VERIFIED`, record the gap and stop planning unless it has been explicitly accepted as a fallback baseline naming the current target ref/SHA plus provider history or equivalent' "plan-work blocks unresolved baseline freshness"
375
- require_text "$PLAN_WORK" '`stale`.*route.*`idea-to-backlog`' "plan-work routes stale provider-backed work back to idea-to-backlog"
376
- require_text "$PLAN_WORK" 'structured evidence ref object' "plan-work requires structured evidence refs"
377
- require_text "$PLAN_WORK" 'Acceptance Evidence' "plan-work requires Acceptance Evidence comments"
378
- require_text "$PLAN_WORK" 'each upstream AC id revalidated against drift' "plan-work requires AC revalidation against drift"
379
- require_text "$PLAN_WORK" 'stale assumptions' "plan-work requires stale assumption findings"
380
341
  require_text "$PLANNING_CONTRACT" 'Baseline and AC revalidation' "planning contract defines baseline and AC revalidation section"
381
342
  require_text "$PLANNING_CONTRACT" 'Current target.*latest target ref/SHA' "planning contract records latest target ref/SHA"
382
343
  require_text "$PLANNING_CONTRACT" 'revision_freshness' "planning contract records source freshness"
@@ -416,16 +377,12 @@ require_text "$BACKLOG_PROVIDER_SETTINGS" '"owner": "kontourai"' "repo backlog s
416
377
  require_text "$BACKLOG_PROVIDER_SETTINGS" '"name": "flow-agents"' "repo backlog settings use flow-agents repo"
417
378
  require_text "$BACKLOG_PROVIDER_SETTINGS" '"number": 1' "repo backlog settings use GitHub Project 1"
418
379
  require_text "$BACKLOG_PROVIDER_SETTINGS" '"prefer_finishing_active_work": true' "repo backlog settings include WIP policy"
419
- require_text "$PLAN_WORK" 'context/contracts/sandbox-policy.md' "plan-work references sandbox policy contract"
420
380
  require_text "$EXECUTION_CONTRACT" 'context/contracts/sandbox-policy.md' "execution contract references sandbox policy contract"
421
- require_text "$EVIDENCE" 'context/contracts/governance-adapter-contract.md' "evidence-gate references governance adapter contract"
422
381
  require_text "$VERIFICATION_CONTRACT" 'context/contracts/governance-adapter-contract.md' "verification contract references governance adapter contract"
423
382
  require_text "$SANDBOX_DOC" 'context/contracts/sandbox-policy.md' "sandbox doc links canonical contract"
424
383
  require_text "$VERITAS_DOC" 'Veritas owns repo-local standards, authority, and evidence-check semantics' "Veritas doc defines ownership boundary"
425
384
  require_text "$ROOT/docs/north-star.md" 'Flow owns generic process transparency' "north star defines Flow ownership"
426
385
  require_text "$VERITAS_DOC" 'standard_refs' "Veritas doc maps output to evidence refs"
427
- require_text "$VERIFY_WORK" 'context/contracts/verification-contract.md' "verify-work references verification contract"
428
- require_text "$VERIFY_WORK" 'context/contracts/artifact-contract.md' "verify-work references artifact contract"
429
386
  require_text "$TOOL_PLANNER" 'context/contracts/planning-contract.md' "tool-planner references planning contract"
430
387
  require_text "$TOOL_WORKER" 'context/contracts/execution-contract.md' "tool-worker references execution contract"
431
388
  require_text "$TOOL_VERIFIER" 'context/contracts/verification-contract.md' "tool-verifier references verification contract"
@@ -441,29 +398,6 @@ require_text "$PACKAGE_MANIFEST" 'name exact delegate ids' "Codex builder profil
441
398
 
442
399
  echo ""
443
400
  echo "--- delivery goal fit ---"
444
- require_text "$PLAN_WORK" 'Definition Of Done' "plan-work requires Definition Of Done"
445
- require_text "$PLAN_WORK" 'Stop-short risks' "plan-work captures stop-short risks"
446
- require_text "$PLAN_WORK" 'Durable docs target' "plan-work captures durable docs target"
447
- require_text "$DELIVER" 'Goal Fit Gate' "deliver requires Goal Fit Gate"
448
- require_text "$DELIVER" 'Final Acceptance' "deliver requires Final Acceptance"
449
- require_text "$DELIVER" 'Required Preflight' "deliver defines pull/pickup preflight"
450
- require_text "$DELIVER" 'pull-work -> pickup-probe' "deliver routes missing pickup evidence through pull-work and pickup-probe"
451
- require_text "$DELIVER" 'continue automatically to execution' "deliver can proceed autonomously after planning"
452
- require_text "$DELIVER" '\.kontourai/flow-agents/<slug>/archive' "deliver archives working artifacts"
453
- require_text "$DELIVER" 'Do not skip learning just because the delivery looked clean' "deliver always routes terminal closeout through learning-review"
454
- require_text "$DELIVER" 'Sidecar Writer Adoption' "deliver owns sidecar writer adoption"
455
- require_text "$DELIVER" 'record-critique|import-critique' "deliver records critique through sidecar writer"
456
- require_text "$VERIFY_WORK" 'Goal Fit' "verify-work reports Goal Fit"
457
- require_text "$VERIFY_WORK" 'A technically green build is not enough' "verify-work rejects task-only pass"
458
- require_text "$VERIFY_WORK" 'criteria\[\]\.evidence_refs.*structured evidence refs' "verify-work requires structured acceptance evidence refs"
459
- require_text "$VERIFY_WORK" 'checks\[\]\.artifact_refs.*structured evidence ref objects' "verify-work requires structured artifact refs"
460
- require_text "$VERIFY_WORK" 'prose-only behavior claims' "verify-work rejects prose-only behavior evidence"
461
- require_text "$PLAN_WORK" 'not optional ceremony' "plan-work treats sidecars as required when writer exists"
462
- require_text "$EXECUTE_PLAN" 'do not mark execution as cleanly complete' "execute-plan records sidecar write blockers"
463
- require_text "$VERIFY_WORK" 'Do not convert verifier output into `PASS` without structured evidence' "verify-work preserves structured evidence gate"
464
- require_text "$RELEASE" 'keep the release decision as `HOLD`' "release-readiness preserves blocked release sidecars"
465
- require_text "$RELEASE" 'record the sidecar-write or validation blocker as a `NOT_VERIFIED` evidence gap' "release-readiness records blocked writer as evidence gap"
466
- require_text "$LEARNING" 'keep the learning verdict at `FOLLOWUP_REQUIRED` or `BLOCKED`' "learning-review preserves blocked learning sidecars"
467
401
  require_text "$GOAL_FIT_HOOK" 'FLOW_AGENTS_GOAL_FIT_STRICT' "goal-fit hook supports strict mode"
468
402
  require_text "$GOAL_FIT_HOOK" 'Definition Of Done' "goal-fit hook checks Definition Of Done"
469
403
  require_text "$GOAL_FIT_HOOK" 'Goal Fit Gate' "goal-fit hook checks Goal Fit Gate"
@@ -537,7 +471,7 @@ require_text "$SIDECAR_WRITER_INTEGRATION" 'dogfood-pass requires critique when
537
471
  require_text "$SIDECAR_WRITER_INTEGRATION" 'dogfood-pass rejects bad explicit artifact dirs' "sidecar writer integration covers dogfood artifact-dir validation"
538
472
  require_text "$SIDECAR_WRITER_INTEGRATION" 'dogfood-pass rejects invalid critique JSON before partial evidence writes' "sidecar writer integration covers dogfood parse fail-closed behavior"
539
473
  require_text "$SIDECAR_WRITER_INTEGRATION" 'dogfood-pass rejects failing required critique before partial evidence writes' "sidecar writer integration covers dogfood semantic fail-closed behavior"
540
- require_text "$SIDECAR_WRITER_INTEGRATION" 'dogfood-pass rejects existing dirty critique before partial evidence writes' "sidecar writer integration covers existing critique fail-closed behavior"
474
+ require_text "$SIDECAR_WRITER_INTEGRATION" 'dogfood-pass ignores a dirty legacy critique.json and records a clean bundle critique' "sidecar writer integration proves trust.bundle-only critique behavior"
541
475
  require_text "$SIDECAR_WRITER_INTEGRATION" 'dogfood-pass records failed evidence and failing critique for routing' "sidecar writer integration covers honest failed dogfood records"
542
476
  require_text "$SIDECAR_WRITER_INTEGRATION" 'dogfood-pass preserves NOT_VERIFIED evidence' "sidecar writer integration covers dogfood pass not verified routing"
543
477
  require_text "$SIDECAR_WRITER_INTEGRATION" 'dogfood-pass release readiness requires clean critique' "sidecar writer integration covers release critique gate"
@@ -548,7 +482,7 @@ require_text "$SIDECAR_WRITER_INTEGRATION" 'does not advance state after invalid
548
482
  require_text "$SIDECAR_WRITER_INTEGRATION" 'does not archive state after invalid learning semantics' "sidecar writer integration guards learning state ordering"
549
483
  require_text "$CONTEXT_MAP_INTEGRATION" 'context map is current' "context map integration covers drift"
550
484
  require_text "$CONTEXT_MAP_INTEGRATION" 'context map generation is deterministic' "context map integration covers deterministic generation"
551
- require_text "$WORKFLOW_STEERING_INTEGRATION" 'workflow steering hook neutralizes multiline critique findings' "workflow steering integration covers critique sanitization"
485
+ require_text "$WORKFLOW_STEERING_INTEGRATION" 'workflow steering fixture relies on trust.bundle, not a retired critique sidecar' "workflow steering integration covers bundle-only critique handling"
552
486
  require_text "$WORKFLOW_STEERING_INTEGRATION" 'workflow steering hook appends context-map recovery guidance' "workflow steering integration covers context-map guidance"
553
487
  require_text "$WORKFLOW_STEERING_INTEGRATION" 'workflow steering hook emits ambient state guidance at user prompt submit' "workflow steering integration covers ambient state guidance"
554
488
  require_text "$WORKFLOW_STEERING_INTEGRATION" 'Claude hook adapter surfaces Builder workflow route for coding prompts' "workflow steering integration covers Claude Builder-route prompt guidance"
@@ -565,106 +499,12 @@ require_text "$HOOK_INFLUENCE_VALIDATOR" 'missing runtime coverage' "hook influe
565
499
 
566
500
  echo ""
567
501
  echo "--- builder-shape ---"
568
- require_text "$BUILDER_SHAPE" '^name: "builder-shape"$' "frontmatter name"
569
- require_text "$BUILDER_SHAPE" 'Builder Kit `shape` flow' "defines Builder Kit shape product surface"
570
- require_text "$BUILDER_SHAPE" 'kits/builder/skills/idea-to-backlog/SKILL.md' "delegates to idea-to-backlog"
571
- require_text "$BUILDER_SHAPE" 'kits/builder/flows/shape.flow.json' "links Builder Kit Flow Definition"
572
- require_text "$BUILDER_SHAPE" 'raw idea.*current conversation context|current conversation context.*raw idea' "accepts raw idea or conversation context"
573
- require_text "$BUILDER_SHAPE" 'Probe/alignment' "uses Probe alignment language"
574
- require_text "$BUILDER_SHAPE" 'Proactive suggestion' "builder-shape is suggested for feature/product planning"
575
- require_text "$BUILDER_SHAPE" 'design-probe.*idea-to-backlog|idea-to-backlog.*design-probe' "builder-shape chains design-probe and idea-to-backlog"
576
- require_text "$BUILDER_SHAPE" 'stop at the backlog gate by default|Stop at `next_gate: Backlog Gate`' "stops at backlog gate by default"
577
- require_text "$BUILDER_SHAPE" 'Issue sync is explicit-only' "requires explicit issue sync"
578
- require_text "$BUILDER_SHAPE" 'Direct `idea-to-backlog` usage remains valid' "preserves direct idea-to-backlog use"
579
- require_text "$BUILDER_SHAPE" 'source_ideas' "requires standard source ideas section"
580
- require_text "$BUILDER_SHAPE" 'idea_inventory' "requires standard idea inventory section"
581
- require_text "$BUILDER_SHAPE" 'slice_candidates' "requires standard slice candidates section"
582
- require_text "$BUILDER_SHAPE" 'dependency_map' "requires standard dependency map section"
583
- require_text "$BUILDER_SHAPE" 'shaped_work' "requires standard shaped work section"
584
- require_text "$BUILDER_SHAPE" 'risk_release_notes' "requires standard risk release notes section"
585
- require_text "$BUILDER_SHAPE" 'open_questions' "requires standard open questions section"
586
- require_text "$BUILDER_SHAPE" 'next_gate' "requires standard next gate section"
587
502
 
588
503
  echo ""
589
504
  echo "--- idea-to-backlog ---"
590
- require_text "$IDEA" '^name: "idea-to-backlog"$' "frontmatter name"
591
- require_text "$IDEA" 'Do not write production code' "forbids production implementation"
592
- require_text "$IDEA" 'Do not invoke downstream delivery skills' "keeps upstream separate from delivery"
593
- require_text "$IDEA" 'After the backlog gate, hand off to `pull-work` only if the user explicitly asks to continue' "allows explicit gated handoff"
594
- require_text "$IDEA" 'GitHub issues' "uses GitHub issues as executable backlog"
595
- require_text "$IDEA" 'thinnest meaningful slice' "requires thinnest meaningful slice"
596
- require_text "$IDEA" 'bundle justification' "requires bundle justification for grouped work"
597
- require_text "$IDEA" 'dependency map' "requires dependency mapping"
598
- require_text "$IDEA" 'Push back|push back' "pushes back on blended ideas"
599
- require_text "$IDEA" 'Backlog Gate' "defines backlog gate"
600
- require_text "$IDEA" 'flow-agents:work-item-metadata' "documents work-item metadata marker"
601
- require_text "$IDEA" 'planned_base_ref' "documents planned_base_ref"
602
- require_text "$IDEA" 'planned_base_sha' "documents planned_base_sha"
603
- require_text "$IDEA" 'planned_at' "documents planned_at"
604
- require_text "$IDEA" 'planning_artifact_ref' "documents planning_artifact_ref"
605
- require_text "$IDEA" 'planning_scope_refs' "documents planning_scope_refs"
606
- require_text "$IDEA" 'source_revisions' "documents repo-scoped source_revisions"
607
- require_text "$IDEA" 'structured .*blockers\[\]' "documents structured blockers array"
608
- require_text "$IDEA" 'Dependencies / Blockers' "preserves human-readable dependencies/blockers prose"
609
- require_text "$IDEA" 'provider-neutral structured metadata marker' "keeps marker guidance provider-neutral"
610
- require_text "$IDEA" 'outside the generic skill contract' "keeps native provider dependency APIs adapter-specific"
611
- require_text "$IDEA" 'Acceptance Evidence' "idea-to-backlog requires Acceptance Evidence issue expectation"
612
- require_text "$IDEA" 'immutable GitHub blob permalinks pinned to commit SHA' "idea-to-backlog expects immutable source permalinks"
613
505
 
614
506
  echo ""
615
507
  echo "--- pull-work ---"
616
- require_text "$PULL" '^name: "pull-work"$' "frontmatter name"
617
- require_text "$PULL" 'Do not implement code' "forbids implementation"
618
- require_text "$PULL" 'WIP' "enforces WIP awareness"
619
- require_text "$PULL" 'worktree' "records worktree isolation decision"
620
- require_text "$PULL" 'thinnest meaningful slice' "checks selected slice size"
621
- require_text "$PULL" 'bundle justification' "checks issue-group bundle justification"
622
- require_text "$PULL" 'plan-work' "hands off to plan-work"
623
- require_text "$PULL" 'Cross-Repo Ranking And Selection' "pull-work documents cross-repo ranking"
624
- require_text "$PULL" 'provider-neutral cross-repo ranking' "pull-work ranks across repos provider-neutrally"
625
- require_text "$PULL" '`selected_scope`' "pull-work output contract records selected scope"
626
- require_text "$PULL" '`priority_rationale`' "pull-work output contract records priority rationale"
627
- require_text "$PULL" '`dependencies`' "pull-work output contract records dependencies"
628
- require_text "$PULL" '`wip_conflict_notes`' "pull-work output contract records WIP/conflict notes"
629
- require_text "$PULL" '`alignment_questions`' "pull-work output contract records alignment questions"
630
- require_text "$PULL" 'selected_item_ids' "pull-work records selected item correlation ids"
631
- require_text "$PULL" 'shepherding_item_ids' "pull-work records shepherding item correlation ids"
632
- require_text "$PULL" 'backlog_gap=true' "pull-work records backlog gaps explicitly"
633
- require_text "$PULL" 'local backlog artifact' "pull-work supports local backlog artifact refs"
634
- require_text "$PULL" 'route to `idea-to-backlog`' "pull-work routes backlog gaps to idea-to-backlog"
635
- require_text "$PULL" 'Work Item Group selection requires explicit justification' "pull-work requires explicit Work Item Group justification"
636
- require_text "$PULL" 'Do not implement code' "pull-work keeps implementation out of pickup"
637
- require_text "$PULL" 'Hand selected work to `plan-work` only after the pickup gate is satisfied' "pull-work preserves plan-work gate"
638
- require_text "$PULL" 'enforce the full pull-work selection, WIP/shepherding, dependency, grouping, and worktree logic' "pull-work enforces selection logic before planning"
639
- require_text "$PULL" 'fresh pickup Probe record exists' "pull-work requires fresh pickup Probe before planning"
640
- require_text "$PULL" 'independent docs work' "pull-work examples cover independent docs work"
641
- require_text "$PULL" 'Resource Contract audit work' "pull-work examples cover Resource Contract audit work"
642
- require_text "$PULL" 'dogfood-alpha implementation work' "pull-work examples cover dogfood-alpha implementation work"
643
- require_text "$PULL" 'blocked cross-product dependency' "pull-work examples cover blocked cross-product dependency"
644
- require_text "$PULL" 'Direct `pull-work` remains a standalone primitive' "pull-work preserves direct primitive use"
645
- require_text "$PULL" 'Builder Kit `build` flow' "pull-work documents Builder Kit build-flow pickup Probe"
646
- require_text "$PULL" 'goal fit and scope' "pickup Probe checks goal fit and scope"
647
- require_text "$PULL" 'blockers and dependencies' "pickup Probe checks blockers and dependencies"
648
- require_text "$PULL" 'dependency freshness' "pickup Probe checks dependency freshness"
649
- require_text "$PULL" 'acceptance criteria quality' "pickup Probe checks acceptance criteria quality"
650
- require_text "$PULL" 'provider state' "pickup Probe checks provider state"
651
- require_text "$PULL" 'risk and stop-short risks' "pickup Probe checks risk and stop-short risks"
652
- require_text "$PULL" 'expected modified files and conflict risks' "pickup Probe records expected files and conflict risks"
653
- require_text "$PULL" 'accepted gap' "pickup Probe records accepted gaps"
654
- require_text "$PULL" 'Ask one alignment question at a time only when repo/provider context leaves a genuine decision gap' "pickup Probe limits alignment questions to genuine gaps"
655
- require_text "$PULL" 'route `decision_gap` back to `design-probe`' "pull-work routes decision gaps to pickup Probe"
656
- require_text "$PULL" 'my_active_work' "pull-work records my active work"
657
- require_text "$PULL" 'shepherding_candidates' "pull-work records shepherding candidates"
658
- require_text "$PULL" 'stale_worktrees' "pull-work records stale worktrees"
659
- require_text "$PULL" 'open_prs_by_me' "pull-work records PRs by me"
660
- require_text "$PULL" 'global_conflicts' "pull-work records global conflicts"
661
- require_text "$PULL" 'dependency_impacts' "pull-work records dependency impacts"
662
- require_text "$PULL" 'start_new_work_decision' "pull-work records start-new-work decision"
663
- require_text "$PULL" 'worktree_lifecycle' "pull-work records worktree lifecycle"
664
- require_text "$PULL" 'Personal WIP may block new work' "pull-work lets personal WIP block pickup"
665
- require_text "$PULL" "Other people's WIP blocks only when" "pull-work distinguishes global WIP blocking"
666
- require_text "$PULL" 'Publishing a branch must retain the worktree' "pull-work retains worktree through publish"
667
- require_text "$PULL" 'Final acceptance, release cleanup, or explicit abandonment owns worktree removal' "pull-work assigns cleanup to final acceptance"
668
508
  require_file "$PULL_WORK_PERSONAL_WIP_FIXTURE" "pull-work personal WIP fixture"
669
509
  require_file "$PULL_WORK_GLOBAL_WIP_FIXTURE" "pull-work global WIP fixture"
670
510
  require_text "$USAGE_GUIDE" 'Before selecting new work, `pull-work` must separate your WIP from global conflict context' "usage guide separates personal and global WIP"
@@ -710,73 +550,6 @@ require_file "$BUILDER_KIT_MISSING_PRESTEP_FIXTURE" "Builder Kit missing pre-ste
710
550
  require_file "$BUILDER_KIT_STALE_CONTINUATION_FIXTURE" "Builder Kit stale continuation fixture"
711
551
  require_file "$BUILDER_KIT_EMPTY_BOARD_FIXTURE" "Builder Kit empty board fixture"
712
552
  require_file "$BUILDER_KIT_BASELINE_FRESHNESS_HINT_FIXTURE" "Builder Kit baseline freshness resolution hint fixture"
713
- require_text "$DESIGN_PROBE" 'This skill is generic' "design-probe is generic"
714
- require_text "$DESIGN_PROBE" 'modeled after Matt Pocock.*grill-me' "design-probe models grill-me"
715
- require_text "$DESIGN_PROBE" 'Be relentless about ambiguity' "design-probe grills ambiguous branches"
716
- require_text "$DESIGN_PROBE" 'Ask exactly one alignment question at a time' "design-probe asks one question at a time"
717
- require_text "$DESIGN_PROBE" 'Include a recommended answer with every question' "design-probe includes recommended answer"
718
- require_text "$DESIGN_PROBE" 'Explore first' "design-probe explores local context before asking"
719
- require_text "$DESIGN_PROBE" 'accepted gap' "design-probe records accepted gaps"
720
- require_text "$PICKUP_PROBE" 'Selected work item' "pickup-probe requires selected work input"
721
- require_text "$PICKUP_PROBE" 'modeled after Matt Pocock.*grill-with-docs' "pickup-probe models grill-with-docs"
722
- require_text "$PICKUP_PROBE" 'Provider state' "pickup-probe requires provider state"
723
- require_text "$PICKUP_PROBE" 'WIP and conflict scan' "pickup-probe requires WIP/conflict scan"
724
- require_text "$PICKUP_PROBE" 'Existing acceptance criteria' "pickup-probe requires acceptance criteria"
725
- require_text "$PICKUP_PROBE" 'Source issue and artifact refs' "pickup-probe requires source refs"
726
- require_text "$PICKUP_PROBE" 'Planned-base drift context' "pickup-probe requires planned-base drift context"
727
- require_text "$PICKUP_PROBE" 'planned_base_ref' "pickup-probe records planned base ref"
728
- require_text "$PICKUP_PROBE" 'planned_base_sha' "pickup-probe records planned base sha"
729
- require_text "$PICKUP_PROBE" 'current target ref/SHA' "pickup-probe records current target ref and sha"
730
- require_text "$PICKUP_PROBE" 'diff summary from the planned/pulled work SHA to current HEAD' "pickup-probe researches diff to current head"
731
- require_text "$PICKUP_PROBE" 'Fetch latest for the target ref' "pickup-probe fetches latest before freshness checks"
732
- require_text "$PICKUP_PROBE" 'compare the current target SHA to `planned_base_sha`' "pickup-probe compares current target SHA to planned_base_sha"
733
- require_text "$PICKUP_PROBE" 'commits-since' "pickup-probe records commits-since"
734
- require_text "$PICKUP_PROBE" 'planned age' "pickup-probe records planned age"
735
- require_text "$PICKUP_PROBE" 'changed-file intersections with `planning_scope_refs`' "pickup-probe records planning scope intersections"
736
- require_text "$PICKUP_PROBE" 'Classify revision freshness as `fresh`, `drifted`, or `stale`' "pickup-probe classifies fresh drifted stale"
737
- require_text "$PICKUP_PROBE" '`drifted` prompts alignment and may proceed' "pickup-probe allows drifted with alignment"
738
- require_text "$PICKUP_PROBE" '`stale` routes back to `idea-to-backlog`' "pickup-probe routes stale freshness to idea-to-backlog"
739
- require_text "$PICKUP_PROBE" 'planned_base_sha.*missing.*NOT_VERIFIED' "pickup-probe marks missing planned_base_sha as NOT_VERIFIED"
740
- require_text "$PICKUP_PROBE" 'concrete fallback baseline' "pickup-probe records fallback baseline for missing planned_base_sha"
741
- require_text "$PICKUP_PROBE" 'resolution_hints.*Builder Kit Probe record' "pickup-probe records resolution hints in Builder Kit Probe record"
742
- require_text "$PICKUP_PROBE" 'gap_id: revision_freshness_not_verified' "pickup-probe names baseline freshness hint gap id"
743
- require_text "$PICKUP_PROBE" 'claim_id: planning.baseline.current' "pickup-probe names baseline freshness claim id"
744
- require_text "$PICKUP_PROBE" 'resolve_at.*pickup-probe' "pickup-probe routes baseline hint resolution back to pickup-probe"
745
- require_text "$PICKUP_PROBE" 'Probe status' "pickup-probe records Probe status"
746
- require_text "$PICKUP_PROBE" 'Planning readiness' "pickup-probe records planning readiness"
747
- require_text "$PICKUP_PROBE" 'Expected modified files' "pickup-probe records expected modified files"
748
- require_text "$PICKUP_PROBE" 'Conflict risks' "pickup-probe records conflict risks"
749
- require_text "$PICKUP_PROBE" 'Route reason and next action' "pickup-probe records route and next action"
750
- require_text "$PICKUP_PROBE" 'Research drift before asking questions' "pickup-probe researches drift before alignment questions"
751
- require_text "$PICKUP_PROBE" 'no_material_drift' "pickup-probe classifies no material drift"
752
- require_text "$PICKUP_PROBE" 'scope_drift' "pickup-probe classifies scope drift"
753
- require_text "$PICKUP_PROBE" 'dependency_drift' "pickup-probe classifies dependency drift"
754
- require_text "$PICKUP_PROBE" 'contract_drift' "pickup-probe classifies contract drift"
755
- require_text "$PICKUP_PROBE" 'conflict_risk' "pickup-probe classifies conflict risk"
756
- require_text "$PICKUP_PROBE" 'Planned-base drift research is recorded' "pickup-probe gates planning on drift research"
757
- require_text "$PICKUP_PROBE" 'planned-base drift summary and drift classification' "pickup-probe hands off drift summary to plan-work"
758
- require_text "$PICKUP_PROBE" 'Update `CONTEXT.md` inline only for glossary-style durable terminology decisions' "pickup-probe limits CONTEXT.md updates"
759
- require_text "$PICKUP_PROBE" 'Challenge glossary conflicts immediately' "pickup-probe challenges domain terminology"
760
- require_text "$PICKUP_PROBE" 'Create a lazy context file only when a resolved term or workflow concept has no existing home' "pickup-probe creates context lazily"
761
- require_text "$PICKUP_PROBE" 'context/contracts/probe-docs-write-contract.md' "pickup-probe references probe docs-write contract"
762
- require_text "$PICKUP_PROBE" 'Never propose or create a numbered ADR' "pickup-probe never proposes numbered ADRs"
763
- require_text "$PICKUP_PROBE" 'Record a decision delta at .docs/decisions/<slug>\.md' "pickup-probe records decision delta"
764
- require_text "$PICKUP_PROBE" 'propose revise-vs-create' "pickup-probe proposes revise-vs-create against the index"
765
- require_text "$PICKUP_PROBE" 'session-archive. evidence ref' "pickup-probe links transcript provenance"
766
- require_text "$DESIGN_PROBE" 'context/contracts/probe-docs-write-contract.md' "design-probe references probe docs-write contract"
767
- require_text "$DESIGN_PROBE" 'Docs-Write: Two-Delta Emission' "design-probe documents two-delta emission"
768
- require_text "$DESIGN_PROBE" 'Vocabulary delta' "design-probe documents vocabulary delta"
769
- require_text "$DESIGN_PROBE" 'Decision delta' "design-probe documents decision delta"
770
- require_text "$DESIGN_PROBE" 'Transcript provenance' "design-probe documents transcript provenance"
771
- require_text "$DESIGN_PROBE" 'Do not write a numbered ADR' "design-probe never proposes numbered ADRs"
772
- require_text "$BUILDER_SHAPE" 'Product-level auto-guidance' "builder-shape guides idea-to-backlog"
773
- require_text "$BUILDER_SHAPE" 'do not require them to type `idea-to-backlog`' "builder-shape hides primitive typing"
774
- require_text "$PULL" 'probe_status' "pull-work records machine-checkable probe status"
775
- require_text "$PULL" 'probe_artifact_ref' "pull-work records machine-checkable probe artifact"
776
- require_text "$PULL" 'stale broad continuation instruction' "pull-work blocks stale broad continuation"
777
- require_text "$PULL" 'no ready backlog item exists' "pull-work routes empty board to shape"
778
- require_text "$PLAN_WORK" 'stale broad continuation language' "plan-work rejects stale continuation planning"
779
- require_text "$PLAN_WORK" '`probe_status` is `passed` or `accepted_gap`' "plan-work requires passed or accepted-gap probe"
780
553
  require_text "$BUILDER_KIT_STATE_CONTRACT" 'current step' "state contract documents current step"
781
554
  require_text "$BUILDER_KIT_STATE_CONTRACT" 'next step' "state contract documents next step"
782
555
  require_text "$BUILDER_KIT_STATE_CONTRACT" 'route reason' "state contract documents route reason"
@@ -888,51 +661,13 @@ fi
888
661
 
889
662
  echo ""
890
663
  echo "--- plan-work ---"
891
- require_text "$PLAN_WORK" 'Direct `plan-work` remains a standalone planning primitive' "plan-work preserves direct primitive use"
892
- require_text "$PLAN_WORK" 'When `plan-work` is invoked from the Builder Kit `build` flow' "plan-work conditionally consumes Builder Kit handoff"
893
- require_text "$PLAN_WORK" 'recorded pickup Probe decisions' "plan-work consumes recorded pickup Probe decisions"
894
- require_text "$PLAN_WORK" 'accepted gaps' "plan-work consumes accepted gaps"
895
- require_text "$PLAN_WORK" 'Only consume Builder Kit Probe `resolution_hints` in those Builder Kit build/deliver/pickup contexts' "plan-work keeps resolution hints Builder Kit scoped"
896
- require_text "$PLAN_WORK" 'Direct primitive `plan-work` remains valid without Builder Kit-specific `resolution_hints`' "plan-work preserves direct primitive without resolution hints"
897
- require_text "$PLAN_WORK" 'revision_freshness_not_verified' "plan-work consumes baseline freshness resolution hint"
898
- require_text "$PLAN_WORK" 'planning\.baseline\.current' "plan-work consumes Builder Kit baseline claim hint"
899
- require_text "$PLAN_WORK" 'explicit accepted fallback baseline' "plan-work requires explicit fallback for missing baseline hint"
900
- require_text "$PLAN_WORK" 'route `decision_gap` back to `design-probe`' "plan-work routes missing Builder Kit decisions back"
901
664
 
902
665
  echo ""
903
666
  echo "--- review-work ---"
904
- require_text "$REVIEW_WORK" '^name: "review-work"$' "frontmatter name"
905
- require_text "$REVIEW_WORK" 'tool-code-reviewer' "delegates to code reviewer"
906
- require_text "$REVIEW_WORK" 'tool-security-reviewer' "conditionally delegates to security reviewer"
907
- require_text "$REVIEW_WORK" 'tool-dependencies-updater' "delegates dependency review to dependencies updater"
908
- require_text "$REVIEW_WORK" 'package\.json' "dependency review triggers on package manifests"
909
- require_text "$REVIEW_WORK" 'requirements\.txt' "dependency review triggers on Python manifests"
910
- require_text "$REVIEW_WORK" 'pyproject\.toml' "dependency review triggers on pyproject manifests"
911
- require_text "$REVIEW_WORK" 'Cargo\.lock' "dependency review triggers on lockfiles"
912
- require_text "$REVIEW_WORK" 'package-lock\.json' "dependency review triggers on npm lockfiles"
913
- require_text "$REVIEW_WORK" 'lockfiles' "dependency review names lockfile triggers"
914
- require_text "$REVIEW_WORK" 'Terraform' "IaC review triggers on Terraform"
915
- require_text "$REVIEW_WORK" 'Kubernetes' "IaC review triggers on Kubernetes"
916
- require_text "$REVIEW_WORK" 'Dockerfiles' "IaC review triggers on Dockerfiles"
917
- require_text "$REVIEW_WORK" 'Helm' "IaC review triggers on Helm"
918
- require_text "$REVIEW_WORK" 'GitHub Actions' "IaC review triggers on GitHub Actions"
919
- require_text "$REVIEW_WORK" 'policy-as-code|policy as code' "IaC review triggers on policy as code"
920
- require_text "$REVIEW_WORK" 'Checkov' "IaC scanner guidance names Checkov"
921
- require_text "$REVIEW_WORK" 'tfsec' "IaC scanner guidance names tfsec"
922
- require_text "$REVIEW_WORK" 'Trivy' "IaC scanner guidance names Trivy"
923
- require_text "$REVIEW_WORK" 'Semgrep' "IaC scanner guidance names Semgrep"
924
- require_text "$REVIEW_WORK" 'do not hard-require one vendor|no single vendor is required' "IaC scanner guidance is vendor-neutral"
925
- require_text "$REVIEW_WORK" 'not_verified' "records missing review lanes as not_verified"
926
- require_text "$REVIEW_WORK" 'critique.json' "records critique sidecar"
927
- require_text "$REVIEW_WORK" 'Verification is not critique' "separates review from verification"
928
667
  require_text "$ARTIFACT_CONTRACT" '`state.phase` is the canonical lifecycle vocabulary' "artifact contract identifies canonical state.phase lifecycle vocabulary"
929
668
  require_text "$ARTIFACT_CONTRACT" '\| `state\.phase` \| `idea`, `backlog`, `pickup`, `planning`, `execution`, `verification`, `goal_fit`, `evidence`, `release`, `learning`, `done` \|' "artifact contract lists canonical state.phase values without review"
930
669
  reject_text "$ARTIFACT_CONTRACT" '\| `state\.phase` \|.*`review`' "artifact contract does not list review as a canonical state.phase"
931
670
  require_text "$ARTIFACT_CONTRACT" 'review-work is represented by the required critique artifact/sink' "artifact contract maps review-work to critique artifact/sink"
932
- require_text "$REVIEW_WORK" '--phase execution' "review-work handoff keeps sidecar phase in execution"
933
- require_text "$REVIEW_WORK" 'record-critique' "review-work supports direct critique recording"
934
- require_text "$REVIEW_WORK" 'import-critique' "review-work imports review artifacts into critique sink"
935
- require_text "$REVIEW_WORK" 'critique artifact/sink' "review-work records results through critique artifact/sink"
936
671
  require_text "$REVIEW_CONTRACT" 'Review and verification are separate gates' "review contract separates review and verification"
937
672
  require_text "$REVIEW_CONTRACT" 'Review is not a canonical `state.phase` value' "review contract rejects review as canonical state.phase"
938
673
  require_text "$REVIEW_CONTRACT" 'configured critique artifact/sink' "review contract requires configured critique artifact/sink"
@@ -955,63 +690,12 @@ require_text "$TOOL_CODE_REVIEWER" 'context/contracts/review-contract.md' "code
955
690
 
956
691
  echo ""
957
692
  echo "--- evidence-gate ---"
958
- require_text "$EVIDENCE" '^name: "evidence-gate"$' "frontmatter name"
959
- require_text "$EVIDENCE" 'Do not fix code' "report-only gate"
960
- require_text "$EVIDENCE" 'NOT_VERIFIED' "treats NOT_VERIFIED as first-class"
961
- require_text "$EVIDENCE" 'Scope And Integrity Check' "checks scope and process integrity"
962
- require_text "$EVIDENCE" 'Tier 0' "defines evidence tiers"
963
- require_text "$EVIDENCE" 'passed-after-rerun|passed after rerun' "treats rerun green as degraded confidence"
964
- require_text "$EVIDENCE" 'Publish Change Gate' "evidence-gate defines publish-change gate"
965
- require_text "$EVIDENCE" 'Evidence Gate is not Release Readiness' "evidence-gate distinguishes release readiness"
966
- require_text "$EVIDENCE" 'commit the verified diff' "evidence-gate requires committing verified diff"
967
- require_text "$EVIDENCE" 'provider change record' "evidence-gate requires provider change publication"
968
- require_text "$EVIDENCE" 'no-provider-change reason' "evidence-gate allows explicit no-provider-change reason"
969
- require_text "$EVIDENCE" 'provider checks' "evidence-gate requires provider check evidence"
970
- require_text "$EVIDENCE" 'Command/Test Evidence' "evidence-gate maps ACs to command/test evidence"
971
- require_text "$EVIDENCE" 'Source Evidence / Permalinks' "evidence-gate maps ACs to source permalinks"
972
- require_text "$EVIDENCE" 'prose-only claims' "evidence-gate rejects prose-only behavior evidence"
973
- require_text "$EVIDENCE" 'GitHub PRs as the first `ChangeProvider` adapter example' "evidence-gate keeps GitHub PR as adapter example"
974
693
 
975
694
  echo ""
976
695
  echo "--- release-readiness ---"
977
- require_text "$RELEASE" '^name: "release-readiness"$' "frontmatter name"
978
- require_text "$RELEASE" 'Do not fix code' "report-only release gate"
979
- require_text "$RELEASE" 'committed, pushed, and represented by a provider change record' "release-readiness requires published provider change"
980
- require_text "$RELEASE" 'Release Readiness is not Evidence Gate' "release-readiness distinguishes evidence gate"
981
- require_text "$RELEASE" 'do not make a merge/release/deploy decision from local verification alone' "release-readiness rejects local-only evidence"
982
- require_text "$RELEASE" 'Missing provider checks also return `HOLD`' "release-readiness holds on missing provider checks by risk"
983
- require_text "$RELEASE" 'GitHub PRs remain the first `ChangeProvider` adapter example' "release-readiness keeps GitHub PR as adapter example"
984
- require_text "$RELEASE" 'Do not deploy unless the user explicitly asks' "prevents implicit deploys"
985
- require_text "$RELEASE" 'rollback_plan' "requires rollback plan"
986
- require_text "$RELEASE" 'observability_plan' "requires observability plan"
987
- require_text "$RELEASE" 'post_deploy_checks' "requires post-deploy checks"
988
- require_text "$RELEASE" 'final_acceptance_docs' "requires final acceptance docs"
989
- require_text "$RELEASE" 'Docs Gate' "requires docs gate"
990
- require_text "$RELEASE" 'MERGE' "defines MERGE decision"
991
- require_text "$RELEASE" 'RELEASE' "defines RELEASE decision"
992
- require_text "$RELEASE" 'DEPLOY' "defines DEPLOY decision"
993
- require_text "$RELEASE" 'HOLD' "defines HOLD decision"
994
- require_text "$RELEASE" 'ROLLBACK_REQUIRED' "defines ROLLBACK_REQUIRED decision"
995
696
 
996
697
  echo ""
997
698
  echo "--- learning-review ---"
998
- require_text "$LEARNING" '^name: "learning-review"$' "frontmatter name"
999
- require_text "$LEARNING" 'Do not implement fixes' "report-only learning review"
1000
- require_text "$LEARNING" 'observed facts|facts' "separates facts from interpretation"
1001
- require_text "$LEARNING" 'followups' "requires follow-up routing"
1002
- require_text "$LEARNING" 'knowledge_updates' "requires durable knowledge update tracking"
1003
- require_text "$LEARNING" 'docs_promotion' "requires docs promotion tracking"
1004
- require_text "$LEARNING" 'Docs Gate' "requires learning docs gate"
1005
- require_text "$LEARNING" 'intended behavior.*observed behavior|observed behavior.*intended behavior' "requires intended-vs-observed correction comparison"
1006
- require_text "$LEARNING" 'correction\.needed: false' "defines clean no-correction records"
1007
- require_text "$LEARNING" 'correction\.needed: true' "defines correction-needed mismatch records"
1008
- require_text "$LEARNING" 'correction\.recurrence_key' "requires stable correction recurrence key"
1009
- require_text "$LEARNING" 'correction\.type' "requires typed correction classification"
1010
- require_text "$LEARNING" 'prevention route|no-change rationale|no_change_rationale' "requires correction prevention or no-change rationale"
1011
- require_text "$LEARNING" 'do not invent|not an invented lesson' "prevents invented lessons for clean runs"
1012
- require_text "$LEARNING" 'LEARNED' "defines LEARNED verdict"
1013
- require_text "$LEARNING" 'FOLLOWUP_REQUIRED' "defines FOLLOWUP_REQUIRED verdict"
1014
- require_text "$LEARNING" 'BLOCKED' "defines BLOCKED verdict"
1015
699
 
1016
700
  echo ""
1017
701
  echo "--- map/session ---"
@@ -1138,8 +822,17 @@ require_text "$MAP" 'review-work' "map includes review-work"
1138
822
  require_text "$MAP" 'evidence-gate' "map includes evidence-gate"
1139
823
  require_text "$MAP" 'release-readiness' "map includes release-readiness"
1140
824
  require_text "$MAP" 'learning-review' "map includes learning-review"
825
+ require_text "$MAP" '<slug>--idea-to-backlog\.md' "map names the durable shaping report"
826
+ require_text "$MAP" '<slug>--pull-work\.md' "map names the durable pull/probe report"
827
+ require_text "$MAP" '<slug>--plan-work\.md' "map names the durable plan report"
828
+ require_text "$MAP" 'release\.json' "map names the durable release decision"
829
+ require_text "$MAP" 'learning\.json' "map names the durable learning record"
830
+ require_text "$USAGE_GUIDE" -- '--criterion-json' "usage guide requires criterion JSON for verification evidence"
831
+ PROJECT_TEST_COMMAND='npm test'
832
+ require_text "$USAGE_GUIDE" "$PROJECT_TEST_COMMAND" "usage guide uses a substantive project verification command"
833
+ reject_text_many '--reviewer|--command "true"|--command "node --version"' "public workflow guidance rejects caller-selected review identity and no-op evidence commands" "$PUBLIC_WORKFLOW_CLI" "$USAGE_GUIDE" "$ROOT/kits/builder/skills/review-work/SKILL.md" "$ROOT/kits/builder/skills/verify-work/SKILL.md"
1141
834
  require_text "$MAP" 'Publish Change Gate' "map includes publish-change gate"
1142
- require_text "$MAP" 'commit/branch/PR/CI links' "map captures PR and CI links before release"
835
+ require_text "$MAP" 'commit/branch/provider-change/CI links' "map captures provider change and CI links before release"
1143
836
  require_text "$CONTEXT_MAP" 'Repository Shape' "context map includes repo shape"
1144
837
  require_text "$CONTEXT_MAP" 'Core Commands' "context map includes commands"
1145
838
  require_text "$CONTEXT_MAP" 'Workflow Sidecars' "context map includes sidecars"
@@ -1151,13 +844,8 @@ require_text "$PAGES_LAYOUT" 'context-map.html' "docs layout links context map"
1151
844
  require_text "$PAGES_LAYOUT" 'veritas-integration.html' "docs layout links Veritas boundary"
1152
845
  require_text "$MAP" 'thinnest meaningful slice' "map captures thin-slice guardrail"
1153
846
  require_text "$MAP" 'Phase Composition' "docs capture workflow phase composition"
1154
- require_text "$IDEA" 'thinnest meaningful slice' "skills capture thin-slice guardrail"
1155
- require_text "$PULL" 'worktree' "skills capture worktree isolation"
1156
- require_text "$EVIDENCE" 'Evidence Tiers' "skills capture evidence tiers"
1157
847
  require_text "$MAP" 'release-readiness' "docs capture release-readiness"
1158
848
  require_text "$MAP" 'learning-review' "docs capture learning-review"
1159
- require_text "$DELIVER" 'dogfood-pass' "deliver skill adopts dogfood-pass"
1160
- require_text "$LEARNING" 'dogfood-pass' "learning-review skill adopts dogfood-pass"
1161
849
  require_text "$EVAL_STRATEGY" 'Activation-only behavioral evals' "eval strategy distinguishes activation evals"
1162
850
  require_text "$EVAL_STRATEGY" 'Artifact-quality evals' "eval strategy distinguishes artifact evals"
1163
851
  require_text "$EVAL_STRATEGY" 'Hook-influence behavioral cases' "eval strategy documents hook influence cases"
@@ -123,6 +123,28 @@
123
123
  "on_exceeded": "block"
124
124
  },
125
125
  "expects": [
126
+ {
127
+ "id": "clean-critique",
128
+ "kind": "trust.bundle",
129
+ "required": true,
130
+ "description": "A distinct reviewer recorded a current clean critique of the delivered change.",
131
+ "bundle_claim": {
132
+ "claimType": "workflow.critique.review",
133
+ "subjectType": "workflow-critique",
134
+ "accepted_statuses": ["verified"]
135
+ }
136
+ },
137
+ {
138
+ "id": "acceptance-criteria",
139
+ "kind": "trust.bundle",
140
+ "required": true,
141
+ "description": "The selected Work Item acceptance criteria have verified evidence.",
142
+ "bundle_claim": {
143
+ "claimType": "workflow.acceptance.criterion",
144
+ "subjectType": "flow-step",
145
+ "accepted_statuses": ["verified"]
146
+ }
147
+ },
126
148
  {
127
149
  "id": "tests-evidence",
128
150
  "kind": "trust.bundle",
@@ -19,7 +19,7 @@
19
19
  "bundle_claim": {
20
20
  "claimType": "builder.shape.problem",
21
21
  "subjectType": "decision",
22
- "accepted_statuses": ["trusted", "accepted"]
22
+ "accepted_statuses": ["verified", "trusted", "accepted"]
23
23
  }
24
24
  },
25
25
  {
@@ -30,7 +30,7 @@
30
30
  "bundle_claim": {
31
31
  "claimType": "builder.shape.outcome",
32
32
  "subjectType": "flow-run",
33
- "accepted_statuses": ["trusted", "accepted"]
33
+ "accepted_statuses": ["verified", "trusted", "accepted"]
34
34
  }
35
35
  },
36
36
  {
@@ -41,7 +41,7 @@
41
41
  "bundle_claim": {
42
42
  "claimType": "builder.shape.constraints",
43
43
  "subjectType": "decision",
44
- "accepted_statuses": ["trusted", "accepted"]
44
+ "accepted_statuses": ["verified", "trusted", "accepted"]
45
45
  }
46
46
  },
47
47
  {
@@ -52,7 +52,7 @@
52
52
  "bundle_claim": {
53
53
  "claimType": "builder.shape.non-goals",
54
54
  "subjectType": "decision",
55
- "accepted_statuses": ["trusted", "accepted"]
55
+ "accepted_statuses": ["verified", "trusted", "accepted"]
56
56
  }
57
57
  },
58
58
  {
@@ -63,7 +63,7 @@
63
63
  "bundle_claim": {
64
64
  "claimType": "builder.shape.success",
65
65
  "subjectType": "artifact",
66
- "accepted_statuses": ["trusted", "accepted"]
66
+ "accepted_statuses": ["verified", "trusted", "accepted"]
67
67
  }
68
68
  },
69
69
  {
@@ -74,7 +74,7 @@
74
74
  "bundle_claim": {
75
75
  "claimType": "builder.shape.risk",
76
76
  "subjectType": "decision",
77
- "accepted_statuses": ["trusted", "accepted"]
77
+ "accepted_statuses": ["verified", "trusted", "accepted"]
78
78
  }
79
79
  },
80
80
  {
@@ -86,7 +86,7 @@
86
86
  "bundle_claim": {
87
87
  "claimType": "builder.shape.open-decisions",
88
88
  "subjectType": "decision",
89
- "accepted_statuses": ["trusted", "accepted", "advisory"]
89
+ "accepted_statuses": ["verified", "trusted", "accepted", "advisory"]
90
90
  }
91
91
  }
92
92
  ]
@@ -102,7 +102,7 @@
102
102
  "bundle_claim": {
103
103
  "claimType": "builder.breakdown.slices",
104
104
  "subjectType": "work-item",
105
- "accepted_statuses": ["trusted", "accepted"]
105
+ "accepted_statuses": ["verified", "trusted", "accepted"]
106
106
  }
107
107
  }
108
108
  ]
@@ -118,7 +118,7 @@
118
118
  "bundle_claim": {
119
119
  "claimType": "builder.file-issues.work-items",
120
120
  "subjectType": "work-item",
121
- "accepted_statuses": ["trusted", "accepted"]
121
+ "accepted_statuses": ["verified", "trusted", "accepted"]
122
122
  }
123
123
  }
124
124
  ]