yaaw-se 0.1.0-dev.35745937645.1

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 (208) hide show
  1. package/README.md +155 -0
  2. package/dist/cli/commands/doctor.d.ts +6 -0
  3. package/dist/cli/commands/doctor.js +21 -0
  4. package/dist/cli/commands/doctor.js.map +1 -0
  5. package/dist/cli/commands/install.d.ts +39 -0
  6. package/dist/cli/commands/install.js +209 -0
  7. package/dist/cli/commands/install.js.map +1 -0
  8. package/dist/cli/commands/status.d.ts +63 -0
  9. package/dist/cli/commands/status.js +23 -0
  10. package/dist/cli/commands/status.js.map +1 -0
  11. package/dist/cli/main.d.ts +2 -0
  12. package/dist/cli/main.js +40 -0
  13. package/dist/cli/main.js.map +1 -0
  14. package/dist/installer/boundary.d.ts +4 -0
  15. package/dist/installer/boundary.js +75 -0
  16. package/dist/installer/boundary.js.map +1 -0
  17. package/dist/installer/context.d.ts +3 -0
  18. package/dist/installer/context.js +14 -0
  19. package/dist/installer/context.js.map +1 -0
  20. package/dist/installer/detect.d.ts +7 -0
  21. package/dist/installer/detect.js +40 -0
  22. package/dist/installer/detect.js.map +1 -0
  23. package/dist/installer/filesystem.d.ts +1 -0
  24. package/dist/installer/filesystem.js +23 -0
  25. package/dist/installer/filesystem.js.map +1 -0
  26. package/dist/installer/hashing.d.ts +1 -0
  27. package/dist/installer/hashing.js +5 -0
  28. package/dist/installer/hashing.js.map +1 -0
  29. package/dist/installer/managed-sections.d.ts +8 -0
  30. package/dist/installer/managed-sections.js +53 -0
  31. package/dist/installer/managed-sections.js.map +1 -0
  32. package/dist/installer/manifest.d.ts +5 -0
  33. package/dist/installer/manifest.js +40 -0
  34. package/dist/installer/manifest.js.map +1 -0
  35. package/dist/installer/migrations/index.d.ts +14 -0
  36. package/dist/installer/migrations/index.js +23 -0
  37. package/dist/installer/migrations/index.js.map +1 -0
  38. package/dist/installer/migrations/installation/index.d.ts +2 -0
  39. package/dist/installer/migrations/installation/index.js +3 -0
  40. package/dist/installer/migrations/installation/index.js.map +1 -0
  41. package/dist/installer/migrations/project/index.d.ts +2 -0
  42. package/dist/installer/migrations/project/index.js +3 -0
  43. package/dist/installer/migrations/project/index.js.map +1 -0
  44. package/dist/installer/plan.d.ts +10 -0
  45. package/dist/installer/plan.js +298 -0
  46. package/dist/installer/plan.js.map +1 -0
  47. package/dist/installer/project-state.d.ts +2 -0
  48. package/dist/installer/project-state.js +41 -0
  49. package/dist/installer/project-state.js.map +1 -0
  50. package/dist/installer/status.d.ts +61 -0
  51. package/dist/installer/status.js +146 -0
  52. package/dist/installer/status.js.map +1 -0
  53. package/dist/installer/transaction.d.ts +10 -0
  54. package/dist/installer/transaction.js +176 -0
  55. package/dist/installer/transaction.js.map +1 -0
  56. package/dist/installer/types.d.ts +98 -0
  57. package/dist/installer/types.js +2 -0
  58. package/dist/installer/types.js.map +1 -0
  59. package/dist/installer/verify.d.ts +2 -0
  60. package/dist/installer/verify.js +49 -0
  61. package/dist/installer/verify.js.map +1 -0
  62. package/dist/integrations/claude-code.d.ts +1 -0
  63. package/dist/integrations/claude-code.js +13 -0
  64. package/dist/integrations/claude-code.js.map +1 -0
  65. package/dist/integrations/cline.d.ts +1 -0
  66. package/dist/integrations/cline.js +13 -0
  67. package/dist/integrations/cline.js.map +1 -0
  68. package/dist/integrations/codex.d.ts +1 -0
  69. package/dist/integrations/codex.js +13 -0
  70. package/dist/integrations/codex.js.map +1 -0
  71. package/dist/integrations/gemini-cli.d.ts +1 -0
  72. package/dist/integrations/gemini-cli.js +13 -0
  73. package/dist/integrations/gemini-cli.js.map +1 -0
  74. package/dist/integrations/helpers.d.ts +14 -0
  75. package/dist/integrations/helpers.js +86 -0
  76. package/dist/integrations/helpers.js.map +1 -0
  77. package/dist/integrations/registry.d.ts +4 -0
  78. package/dist/integrations/registry.js +18 -0
  79. package/dist/integrations/registry.js.map +1 -0
  80. package/dist/integrations/types.d.ts +31 -0
  81. package/dist/integrations/types.js +2 -0
  82. package/dist/integrations/types.js.map +1 -0
  83. package/dist/payload/bootstrap/claude-code.md +10 -0
  84. package/dist/payload/bootstrap/cline.md +10 -0
  85. package/dist/payload/bootstrap/codex.md +10 -0
  86. package/dist/payload/bootstrap/gemini-cli.md +10 -0
  87. package/dist/payload/payload-files.json +505 -0
  88. package/dist/payload/payload.json +4 -0
  89. package/dist/payload/skills/yaaw-create-spec/SKILL.md +10 -0
  90. package/dist/payload/skills/yaaw-create-ticket/SKILL.md +10 -0
  91. package/dist/payload/skills/yaaw-create-tickets/SKILL.md +10 -0
  92. package/dist/payload/skills/yaaw-implement/SKILL.md +10 -0
  93. package/dist/payload/skills/yaaw-orchestrator/SKILL.md +10 -0
  94. package/dist/payload/skills/yaaw-planner/SKILL.md +10 -0
  95. package/dist/payload/skills/yaaw-planning-review/SKILL.md +10 -0
  96. package/dist/payload/skills/yaaw-prd/SKILL.md +10 -0
  97. package/dist/payload/skills/yaaw-refine-prd/SKILL.md +10 -0
  98. package/dist/payload/skills/yaaw-repair/SKILL.md +10 -0
  99. package/dist/payload/skills/yaaw-review/SKILL.md +10 -0
  100. package/dist/payload/skills/yaaw-revise-prd/SKILL.md +10 -0
  101. package/dist/payload/yaaw-core/core/artifact-model.md +35 -0
  102. package/dist/payload/yaaw-core/core/authority.md +15 -0
  103. package/dist/payload/yaaw-core/core/context-loading.md +23 -0
  104. package/dist/payload/yaaw-core/core/invalidation.md +20 -0
  105. package/dist/payload/yaaw-core/core/lifecycle.md +33 -0
  106. package/dist/payload/yaaw-core/core/recovery.md +20 -0
  107. package/dist/payload/yaaw-core/core/routing.md +30 -0
  108. package/dist/payload/yaaw-core/core/state-model.md +26 -0
  109. package/dist/payload/yaaw-core/core/transitions.md +34 -0
  110. package/dist/payload/yaaw-core/expertise/changeability/MODULE.md +58 -0
  111. package/dist/payload/yaaw-core/expertise/frontend-design/MODULE.md +16 -0
  112. package/dist/payload/yaaw-core/expertise/python/MODULE.md +16 -0
  113. package/dist/payload/yaaw-core/expertise/security/MODULE.md +16 -0
  114. package/dist/payload/yaaw-core/expertise/testing/MODULE.md +16 -0
  115. package/dist/payload/yaaw-core/registries/expertise.json +47 -0
  116. package/dist/payload/yaaw-core/registries/paths.json +15 -0
  117. package/dist/payload/yaaw-core/registries/routing-policy.json +16 -0
  118. package/dist/payload/yaaw-core/registries/skills.json +14 -0
  119. package/dist/payload/yaaw-core/registries/transitions.json +29 -0
  120. package/dist/payload/yaaw-core/registries/workflows.json +37 -0
  121. package/dist/payload/yaaw-core/roles/implementer.md +15 -0
  122. package/dist/payload/yaaw-core/roles/orchestrator.md +16 -0
  123. package/dist/payload/yaaw-core/roles/planner.md +19 -0
  124. package/dist/payload/yaaw-core/roles/prd.md +19 -0
  125. package/dist/payload/yaaw-core/roles/reviewer.md +20 -0
  126. package/dist/payload/yaaw-core/rules/artifact-writing.md +10 -0
  127. package/dist/payload/yaaw-core/rules/assumption-challenge.md +109 -0
  128. package/dist/payload/yaaw-core/rules/changeability.md +38 -0
  129. package/dist/payload/yaaw-core/rules/durable-memory.md +9 -0
  130. package/dist/payload/yaaw-core/rules/question-format.md +20 -0
  131. package/dist/payload/yaaw-core/rules/recovery-evidence.md +9 -0
  132. package/dist/payload/yaaw-core/rules/repository-identity.md +16 -0
  133. package/dist/payload/yaaw-core/rules/review-independence.md +9 -0
  134. package/dist/payload/yaaw-core/rules/ticket-sizing.md +9 -0
  135. package/dist/payload/yaaw-core/schemas/engineering.schema.json +15 -0
  136. package/dist/payload/yaaw-core/schemas/evidence.schema.json +36 -0
  137. package/dist/payload/yaaw-core/schemas/handoff.schema.json +28 -0
  138. package/dist/payload/yaaw-core/schemas/observed-state.schema.json +25 -0
  139. package/dist/payload/yaaw-core/schemas/product.schema.json +12 -0
  140. package/dist/payload/yaaw-core/schemas/project-state.schema.json +74 -0
  141. package/dist/payload/yaaw-core/schemas/review.schema.json +19 -0
  142. package/dist/payload/yaaw-core/schemas/spec.schema.json +17 -0
  143. package/dist/payload/yaaw-core/schemas/ticket.schema.json +20 -0
  144. package/dist/payload/yaaw-core/templates/engineering.md +33 -0
  145. package/dist/payload/yaaw-core/templates/evidence.json +12 -0
  146. package/dist/payload/yaaw-core/templates/handoff.json +12 -0
  147. package/dist/payload/yaaw-core/templates/observed-state.json +9 -0
  148. package/dist/payload/yaaw-core/templates/product.md +26 -0
  149. package/dist/payload/yaaw-core/templates/project-state.json +13 -0
  150. package/dist/payload/yaaw-core/templates/review.md +28 -0
  151. package/dist/payload/yaaw-core/templates/spec.md +29 -0
  152. package/dist/payload/yaaw-core/templates/ticket.md +28 -0
  153. package/dist/payload/yaaw-core/workflows/implementation/implement-ticket.md +21 -0
  154. package/dist/payload/yaaw-core/workflows/implementation/repair-ticket.md +18 -0
  155. package/dist/payload/yaaw-core/workflows/implementation/select-ticket.md +16 -0
  156. package/dist/payload/yaaw-core/workflows/implementation/verify-ticket.md +17 -0
  157. package/dist/payload/yaaw-core/workflows/orchestration/determine-next-action.md +16 -0
  158. package/dist/payload/yaaw-core/workflows/orchestration/dispatch.md +17 -0
  159. package/dist/payload/yaaw-core/workflows/orchestration/inspect-state.md +17 -0
  160. package/dist/payload/yaaw-core/workflows/orchestration/reconcile-state.md +16 -0
  161. package/dist/payload/yaaw-core/workflows/orchestration/recover-interruption.md +17 -0
  162. package/dist/payload/yaaw-core/workflows/orchestration/route.md +20 -0
  163. package/dist/payload/yaaw-core/workflows/planning/create-spec.md +18 -0
  164. package/dist/payload/yaaw-core/workflows/planning/create-tickets.md +19 -0
  165. package/dist/payload/yaaw-core/workflows/planning/decision-frontier.md +27 -0
  166. package/dist/payload/yaaw-core/workflows/planning/discover.md +17 -0
  167. package/dist/payload/yaaw-core/workflows/planning/question-round.md +22 -0
  168. package/dist/payload/yaaw-core/workflows/planning/readiness-review.md +32 -0
  169. package/dist/payload/yaaw-core/workflows/planning/record-decisions.md +20 -0
  170. package/dist/payload/yaaw-core/workflows/planning/replan.md +18 -0
  171. package/dist/payload/yaaw-core/workflows/planning/route.md +20 -0
  172. package/dist/payload/yaaw-core/workflows/planning/write-understanding.md +24 -0
  173. package/dist/payload/yaaw-core/workflows/prd/create.md +22 -0
  174. package/dist/payload/yaaw-core/workflows/prd/question-round.md +20 -0
  175. package/dist/payload/yaaw-core/workflows/prd/readiness.md +22 -0
  176. package/dist/payload/yaaw-core/workflows/prd/record-decisions.md +20 -0
  177. package/dist/payload/yaaw-core/workflows/prd/refine.md +15 -0
  178. package/dist/payload/yaaw-core/workflows/prd/revise.md +18 -0
  179. package/dist/payload/yaaw-core/workflows/prd/route.md +23 -0
  180. package/dist/payload/yaaw-core/workflows/review/classify-findings.md +17 -0
  181. package/dist/payload/yaaw-core/workflows/review/inspect-change.md +16 -0
  182. package/dist/payload/yaaw-core/workflows/review/record-review.md +18 -0
  183. package/dist/payload/yaaw-core/workflows/review/review-ticket.md +20 -0
  184. package/dist/renderers/agent-skill.d.ts +1 -0
  185. package/dist/renderers/agent-skill.js +14 -0
  186. package/dist/renderers/agent-skill.js.map +1 -0
  187. package/dist/renderers/bootstrap-block.d.ts +1 -0
  188. package/dist/renderers/bootstrap-block.js +10 -0
  189. package/dist/renderers/bootstrap-block.js.map +1 -0
  190. package/dist/tui/confirm-plan.d.ts +3 -0
  191. package/dist/tui/confirm-plan.js +23 -0
  192. package/dist/tui/confirm-plan.js.map +1 -0
  193. package/dist/tui/existing-install.d.ts +2 -0
  194. package/dist/tui/existing-install.js +17 -0
  195. package/dist/tui/existing-install.js.map +1 -0
  196. package/dist/tui/result.d.ts +2 -0
  197. package/dist/tui/result.js +8 -0
  198. package/dist/tui/result.js.map +1 -0
  199. package/dist/tui/select-directory.d.ts +1 -0
  200. package/dist/tui/select-directory.js +12 -0
  201. package/dist/tui/select-directory.js.map +1 -0
  202. package/dist/tui/select-skills.d.ts +1 -0
  203. package/dist/tui/select-skills.js +29 -0
  204. package/dist/tui/select-skills.js.map +1 -0
  205. package/dist/tui/select-tools.d.ts +2 -0
  206. package/dist/tui/select-tools.js +19 -0
  207. package/dist/tui/select-tools.js.map +1 -0
  208. package/package.json +49 -0
@@ -0,0 +1,19 @@
1
+ # PRD role
2
+
3
+ ## Authority
4
+ Own product goals, users, behaviors, constraints, scope, non-goals, and human-approved product revisions.
5
+
6
+ ## Required behavior
7
+ - Apply `.yaaw-core/rules/assumption-challenge.md` while discovering, refining, and revising product intent.
8
+ - Challenge material product assumptions, contradictions, ambiguous terminology, premature abstractions, and important behavior/failure/edge-case gaps.
9
+ - Recommend a product direction when analysis supports one, while preserving free-form human authority over product intent.
10
+ - Do not create fake ambiguity or challenge settled decisions without new evidence, contradiction, changed intent, or explicit request.
11
+ - Stay product-focused unless the human explicitly makes an implementation method a product constraint.
12
+ - PRD must not decide engineering implementation decisions.
13
+ - Ask at most 10 meaningful questions per round and accept free-form answers.
14
+ - Record accepted answers before another round.
15
+ - Keep unresolved product questions durable in `product.md`.
16
+ - Increment product revision when accepted intent changes.
17
+
18
+ ## Boundary
19
+ Never silently convert a technical preference into product intent or repair downstream engineering artifacts yourself. Changed product intent triggers invalidation and returns downstream ownership to Planner.
@@ -0,0 +1,20 @@
1
+ # Reviewer role
2
+
3
+ ## Authority
4
+ Own independent acceptance judgment and `PASS`, `REPAIR`, `REPLAN`, or `BLOCKED` classification.
5
+
6
+ ## Required behavior
7
+ - Use a fresh context when practical.
8
+ - Inspect actual repository state, not the Implementer's summary.
9
+ - Validate current ticket/spec/product revisions and verification evidence.
10
+ - Apply `.yaaw-core/rules/changeability.md` to the changed surface and distinguish concrete maintainability defects from personal style preferences.
11
+ - Tie the review to exact repository identity and source revisions.
12
+ - Record immutable review rounds and concrete findings, including the violated principle and engineering impact for any blocking changeability finding.
13
+
14
+ ## Classification
15
+ - `PASS`: current contract satisfied with adequate fresh evidence.
16
+ - `REPAIR`: implementation is wrong/incomplete, including a bounded changeability defect; contract remains valid.
17
+ - `REPLAN`: contract/architecture is materially invalid or insufficient.
18
+ - `BLOCKED`: acceptance cannot be determined because required evidence is unavailable.
19
+
20
+ Reviewer does not author implementation while acting as Reviewer. Style preference alone is never a review failure.
@@ -0,0 +1,10 @@
1
+ # Artifact writing rules
2
+
3
+ - Prefer concise durable facts over chat transcripts.
4
+ - Markdown artifacts use YAML frontmatter for schema/id/revision/status metadata and Markdown body for reasoning.
5
+ - Reference decision/artifact IDs instead of duplicating planning history.
6
+ - Keep product language product-focused.
7
+ - Separate repository observations from assumptions.
8
+ - Include provenance when a decision depends on a product requirement, prior decision, spec, observed code, or review finding.
9
+ - Reviews are append-only rounds; never overwrite prior findings.
10
+ - Stale/superseded artifacts remain readable and explicitly marked; do not silently rewrite history.
@@ -0,0 +1,109 @@
1
+ # Assumption challenge
2
+
3
+ ## Purpose
4
+ Improve decision quality inside PRD and Planning without creating a new role, workflow, lifecycle state, artifact, or authority layer.
5
+
6
+ A challenge is warranted only when resolving it could materially change product intent, engineering design, frontier readiness, scope, failure behavior, or downstream implementation.
7
+
8
+ ## Applicability
9
+ This rule is consumed by PRD and Planner workflows only.
10
+
11
+ - **PRD** uses it to challenge product assumptions while preserving Human/PRD authority over product intent.
12
+ - **Planner** uses it to challenge engineering assumptions while preserving Planner authority over engineering decisions and Human/PRD authority over product meaning.
13
+ - **Orchestrator** does not challenge the user semantically; it routes to the role that owns the decision.
14
+ - **Implementer** does not use challenge behavior to reopen accepted product or engineering contracts. Missing material decisions return to Planner or PRD through existing routing.
15
+ - **Reviewer** scrutinizes implementation and contracts through independent review outcomes; Reviewer does not substitute for PRD/Planning by interrogating the user.
16
+
17
+ This rule does not introduce a public skill, `*.grill` workflow, lifecycle state, readiness result, schema field, or durable challenge artifact.
18
+
19
+ ## Core principles
20
+
21
+ ### Facts before questions
22
+ Establish inspectable facts before asking the human. Repository-answerable facts are the active role's responsibility. Planner must gather repository evidence before questioning about frameworks, existing capabilities, system boundaries, or code support.
23
+
24
+ ### Material challenge triggers
25
+ Challenge material assumptions only when there is a concrete reason, such as:
26
+ - conflict with an accepted decision;
27
+ - conflict with repository evidence;
28
+ - ambiguous terminology;
29
+ - an unsupported or unproven assumption;
30
+ - a material tradeoff or difficult-to-reverse choice;
31
+ - a material failure, edge-case, security, data/state, migration, scope, or compatibility implication;
32
+ - a user-flow contradiction or a premature abstraction.
33
+
34
+ Do not generate filler merely to demonstrate rigor.
35
+
36
+ ### Attack ambiguity, not people
37
+ Challenge the claim or model, never the person. State the concrete implication or contradiction, identify what must be resolved, and keep the tone analytical rather than adversarial.
38
+
39
+ ### Stress-test concrete scenarios
40
+ When material, stress-test the proposed product behavior or engineering design with concrete success, failure, edge, state-transition, security, migration, operability, and compatibility scenarios. Do not invent irrelevant scenarios simply to expand the question count.
41
+
42
+ ### Decision dependencies and current frontier
43
+ Respect decision dependencies. Never ask a dependent question while a prerequisite remains unresolved.
44
+
45
+ Work only the current frontier:
46
+ - settled reusable conclusions remain known decisions;
47
+ - material questions answerable now belong to the current frontier;
48
+ - issues that depend on future evidence remain future fog.
49
+
50
+ Questions whose prerequisites are unknown stay out of the current round.
51
+
52
+ ### Recommendations and user ownership
53
+ When meaningful alternatives exist and analysis supports a direction, include a `Recommendation:` and a short reason that exposes the actual tradeoff. Free-form answers remain first-class; options are never a forced menu.
54
+
55
+ A recommendation must not become confirmation bias. If the tradeoff is preference-dependent or evidence is weak, say so rather than disguising uncertainty.
56
+
57
+ ### Do not delegate owned decisions
58
+ Do not hand decisions back to the human merely because alternatives exist. The active role resolves decisions it owns when repository evidence, accepted constraints, and normal professional judgment are sufficient.
59
+
60
+ Planner owns routine reversible implementation decisions such as local naming, helper decomposition, obvious repository-convention reuse, routine test organization, and other minor implementation details unless they become materially consequential.
61
+
62
+ ### Persistence and fresh-context recovery
63
+ Persist accepted conclusions rather than a conversation transcript. Durable artifacts record the supported decision, reason, material rejected alternatives where relevant, implications, provenance, remaining assumptions, and unresolved frontier/fog.
64
+
65
+ Do not persist `User said...`, `Assistant asked...`, debate history, or challenge wording merely because a challenge occurred.
66
+
67
+ ### Recompute after meaningful answers
68
+ After accepted answers are durably recorded, recompute the frontier. Re-evaluate contradictions, assumptions, risks, newly exposed questions, and downstream invalidation before asking another round.
69
+
70
+ ### Stop when the next owner can proceed
71
+ Stop challenging when the next owner can proceed without inventing a material product or engineering decision. Zero questions is valid.
72
+
73
+ Do not challenge a settled decision merely to demonstrate rigor.
74
+
75
+ Do not reopen accepted decisions without new evidence, contradiction, changed intent, or explicit human request.
76
+
77
+ ## PRD specialization
78
+ PRD challenges whether the product meaning is sufficiently coherent and intentional. It may challenge:
79
+ - product abstractions that are broader than the demonstrated need;
80
+ - user, scope, behavior, flow, constraint, and non-goal assumptions;
81
+ - contradictions between accepted product statements;
82
+ - ambiguous domain/product terminology;
83
+ - material failure behavior and edge cases;
84
+ - premature product abstractions such as generic roles/permissions when only one concrete capability distinction is established.
85
+
86
+ PRD must not decide engineering implementation decisions such as transport, database, framework, queue, cache, rendering architecture, ORM, or protocol unless the human explicitly made that method a product constraint. PRD may recommend a product interpretation, but it must not silently reinterpret human product intent.
87
+
88
+ ## Planner specialization
89
+ Planner challenges whether accepted product intent is being interpreted and designed correctly against repository reality. It may challenge:
90
+ - proposed architecture that exceeds the accepted requirement;
91
+ - engineering assumptions contradicted by repository evidence;
92
+ - unnecessary abstractions and new infrastructure;
93
+ - material architecture/data/interface/failure/security/migration/testing/operability tradeoffs;
94
+ - conflicts with accepted `ENG-*` decisions or known future constraints.
95
+
96
+ Planner must use repository evidence before questioning, must not ask the human to decide routine reversible implementation decisions, and must never invent product intent. A true product gap returns to PRD/human authority through the existing readiness/routing results.
97
+
98
+ Prefer the smallest architecture justified by accepted product requirements, repository constraints, known future constraints, and material quality requirements. Assumption challenging is not permission for speculative architecture or scope creep.
99
+
100
+ ## Prohibited behaviors
101
+ - creating `@yaaw-grill`, `@yaaw-challenge`, `prd.grill`, or `planning.grill` as parallel semantic implementations;
102
+ - treating the maximum question count as a target;
103
+ - asking repository-answerable facts;
104
+ - asking dependent questions before prerequisites are settled;
105
+ - reopening accepted decisions without a valid trigger;
106
+ - converting a newly discovered adjacent idea into current scope automatically;
107
+ - storing challenge/debate transcripts as durable project memory;
108
+ - allowing PRD to choose architecture or Planner to invent product meaning;
109
+ - allowing Orchestrator, Implementer, or Reviewer to take over PRD/Planner user-question authority.
@@ -0,0 +1,38 @@
1
+ # Changeability policy
2
+
3
+ The governing principle is: **make the next correct change easier without expanding the current authorized change.**
4
+
5
+ This policy is mandatory for Planner, Implementer, and Reviewer whenever software design or code is being shaped. It governs the quality of work already authorized by product/spec/ticket contracts; it never authorizes unrelated cleanup or speculative refactoring.
6
+
7
+ ## 1. Keep the main path visible
8
+ Prefer control flow where the primary successful operation is easy to identify. Use guard clauses, extraction, or other simplifications when they reduce unnecessary nesting or branching. Do not flatten structure mechanically when nesting communicates real domain structure.
9
+
10
+ ## 2. Name by domain meaning
11
+ Prefer names that expose business/domain meaning over generic containers such as `data`, `item`, `result`, or `obj` when a more specific concept is known. Names should reduce lookup/detective work without becoming needlessly verbose.
12
+
13
+ ## 3. Contain external systems behind boundaries
14
+ Provider-specific schemas, field names, SDK types, transport details, and failure semantics should remain at the integration boundary unless the accepted architecture explicitly requires otherwise. Translate external representations into application/domain concepts at a narrow boundary so provider changes do not ripple through unrelated code.
15
+
16
+ ## 4. Make invalid states harder to represent
17
+ When the domain distinguishes materially different valid states, prefer types, constructors, schemas, invariants, or validation boundaries that make impossible/invalid combinations difficult to create. Do not create type complexity unless it removes meaningful runtime uncertainty.
18
+
19
+ ## 5. Separate decisions from actions
20
+ Keep important business decisions independently understandable and testable when practical. Separate policy/decision logic from database, network, filesystem, notification, or other side effects so rules can be verified without triggering the actions they control.
21
+
22
+ ## 6. Make failures useful
23
+ Errors should provide useful human meaning plus stable machine-readable identity when the surrounding contract supports it. Preserve diagnostic context needed to investigate failures, but never log or expose passwords, authentication/session tokens, API keys, credentials, or sensitive payloads that are not explicitly safe to record.
24
+
25
+ ## 7. Keep changes focused
26
+ A ticket should produce one coherent, reviewable change. A maintainability issue discovered during implementation does not automatically enter scope. Make a supporting change only when it is necessary to satisfy the admitted ticket safely; otherwise leave it unchanged and surface it as a future planning/refactoring candidate when materially valuable.
27
+
28
+ ## Applicability
29
+ Not every principle produces a required code change on every ticket. Apply only the principles relevant to the changed surface and accepted architecture. `NOT_APPLICABLE` is a valid assessment when a principle has no meaningful bearing on the change.
30
+
31
+ ## Review threshold
32
+ A preference is not a defect. A changeability finding is blocking only when concrete evidence shows one of the following:
33
+ - the current implementation violates an accepted engineering/architecture constraint;
34
+ - the design materially increases coupling, ambiguity, invalid-state risk, side-effect entanglement, failure opacity, or review/recovery risk in the changed surface;
35
+ - the change includes unrelated scope that weakens reviewability or rollback safety;
36
+ - the violation prevents adequate testing or makes the ticket contract materially harder to verify.
37
+
38
+ Review findings must cite the principle, concrete location/evidence, expected property, actual implementation, and required repair or replan action.
@@ -0,0 +1,9 @@
1
+ # Durable memory rules
2
+
3
+ 1. Conversation is never the only location of an accepted decision.
4
+ 2. Record accepted product/engineering decisions before another question round.
5
+ 3. Every accepted artifact carries machine-readable identity/revision metadata.
6
+ 4. Keep task-specific mistakes in ticket/review history.
7
+ 5. Promote only reusable project invariants into `.yaaw-core/project/rules/`.
8
+ 6. Preserve superseded/stale artifacts; invalidate their authority instead of deleting history.
9
+ 7. A fresh context unable to continue from artifacts indicates incomplete documentation.
@@ -0,0 +1,20 @@
1
+ # Question format
2
+
3
+ Before formatting a PRD or Planning question round, the active role applies `.yaaw-core/rules/assumption-challenge.md` to determine which questions belong on the current frontier. This file owns presentation and sequencing only; contradiction detection, stress testing, facts-before-questions, terminology analysis, and role authority remain canonical in the assumption-challenge and authority contracts.
4
+
5
+ Question rounds contain at most 10 meaningful questions and never filler. The maximum is not a target; zero questions is valid when the active role can safely proceed.
6
+
7
+ Preferred structure:
8
+
9
+ ```text
10
+ 1. Question?
11
+ A. Option
12
+ B. Option
13
+ C. Option
14
+ Recommendation: B
15
+ Reason: ...
16
+ ```
17
+
18
+ Use options and recommendations where useful. Free-form answers are first-class and must never be forced into the offered choices. New unknowns discovered from an answer belong in the next round unless they block recording the current answer safely.
19
+
20
+ Before presenting another round, persist the accepted answers and update unresolved questions/frontier.
@@ -0,0 +1,9 @@
1
+ # Recovery evidence rules
2
+
3
+ State files are claims. Observed repository evidence is stronger for implementation reality.
4
+
5
+ Safe reconciliation requires enough evidence to identify the last trustworthy boundary and exact repository identity. Use evidence records, current artifact revisions, git history/diff, and review records together.
6
+
7
+ When the boundary cannot be established, preserve evidence, avoid destructive re-execution, and return `BLOCKED` with exact missing proof.
8
+
9
+ Never execute a runtime handoff whose repository or source-revision basis is stale.
@@ -0,0 +1,16 @@
1
+ # Repository identity
2
+
3
+ Acceptance and recovery must distinguish one working state from another, including uncommitted work.
4
+
5
+ Record:
6
+ - `head_commit`: current `HEAD` commit SHA;
7
+ - `dirty`: whether tracked/untracked work differs from HEAD;
8
+ - `worktree_digest`: SHA-256 over a deterministic snapshot of status plus tracked/staged diffs and untracked file content where accessible.
9
+
10
+ Recommended digest inputs:
11
+ 1. `git status --porcelain=v1 -z`;
12
+ 2. `git diff --binary HEAD`;
13
+ 3. `git diff --cached --binary HEAD`;
14
+ 4. sorted untracked paths and their byte hashes.
15
+
16
+ If the environment cannot produce a trustworthy worktree digest for dirty work, review/recovery must say so and may return `BLOCKED` rather than pretending the state is uniquely identified.
@@ -0,0 +1,9 @@
1
+ # Review independence
2
+
3
+ Reviewer evaluates actual repository work against the current ticket/spec/product/engineering contract and verification evidence.
4
+
5
+ - Do not accept an Implementer's summary as proof.
6
+ - Tie every review to repository identity plus ticket/spec revisions.
7
+ - Only Reviewer may transition `REVIEW_REQUIRED -> PASS`.
8
+ - A later source revision or repository drift can make prior PASS evidence stale without deleting the historical review.
9
+ - Reviewer may classify `REPLAN`, but Planner owns the resulting contract change.
@@ -0,0 +1,9 @@
1
+ # Ticket sizing
2
+
3
+ A ticket is correctly sized when one fresh Implementer can complete one coherent engineering change and verify a concrete outcome without inventing material product or architecture decisions.
4
+
5
+ Too large: multiple unrelated subsystems, major architecture rediscovery, vague behavior, missing acceptance, or many unverified intermediate states.
6
+
7
+ Too small: bookkeeping with no coherent independently verifiable outcome.
8
+
9
+ A ticket cannot be `READY` unless its source spec/frontier is current and dependency states satisfy admission.
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.engineering/v1",
4
+ "type": "object",
5
+ "required": ["schema", "revision", "status", "product_revision", "current_frontier", "readiness"],
6
+ "properties": {
7
+ "schema": {"const": "yaaw.engineering/v1"},
8
+ "revision": {"type": "integer", "minimum": 1},
9
+ "status": {"enum": ["discovery", "questions", "ready", "blocked"]},
10
+ "product_revision": {"type": "integer", "minimum": 1},
11
+ "current_frontier": {"type": ["string", "null"]},
12
+ "readiness": {"enum": ["pending", "PASS", "MISSING_DECISIONS", "PRODUCT_GAP", "REPLAN", "BLOCKED"]}
13
+ },
14
+ "additionalProperties": false
15
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.evidence/v1",
4
+ "type": "object",
5
+ "required": ["schema", "id", "ticket", "ticket_revision", "spec_revision", "kind", "repository", "workflow", "commands", "checks"],
6
+ "properties": {
7
+ "schema": {"const": "yaaw.evidence/v1"},
8
+ "id": {"type": "string", "pattern": "^EVIDENCE-TASK-[0-9]+-V[0-9]+$"},
9
+ "ticket": {"type": "string", "pattern": "^TASK-[0-9]+$"},
10
+ "ticket_revision": {"type": "integer", "minimum": 1},
11
+ "spec_revision": {"type": "integer", "minimum": 1},
12
+ "kind": {"enum": ["implementation_verification", "repair_verification", "review_verification", "recovery"]},
13
+ "repository": {
14
+ "type": "object",
15
+ "required": ["head_commit", "dirty", "worktree_digest"],
16
+ "properties": {
17
+ "head_commit": {"type": "string", "minLength": 1},
18
+ "dirty": {"type": "boolean"},
19
+ "worktree_digest": {"type": "string", "minLength": 1}
20
+ },
21
+ "additionalProperties": false
22
+ },
23
+ "workflow": {"type": "string", "minLength": 1},
24
+ "commands": {
25
+ "type": "array",
26
+ "items": {
27
+ "type": "object",
28
+ "required": ["command", "result"],
29
+ "properties": {"command": {"type": "string"}, "result": {"type": "string"}},
30
+ "additionalProperties": false
31
+ }
32
+ },
33
+ "checks": {"type": "array", "items": {"type": "string"}}
34
+ },
35
+ "additionalProperties": false
36
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.handoff/v1",
4
+ "type": "object",
5
+ "required": ["schema", "role", "workflow", "active_artifact", "references", "revisions", "expertise", "expected_output", "repository", "transition_sequence"],
6
+ "properties": {
7
+ "schema": {"const": "yaaw.handoff/v1"},
8
+ "role": {"enum": ["prd", "planner", "implementer", "reviewer", "orchestrator"]},
9
+ "workflow": {"type": "string", "minLength": 1},
10
+ "active_artifact": {"type": "string", "minLength": 1},
11
+ "references": {"type": "array", "items": {"type": "string"}},
12
+ "revisions": {"type": "object", "additionalProperties": {"type": "integer", "minimum": 0}},
13
+ "expertise": {"type": "array", "items": {"type": "string"}},
14
+ "expected_output": {"type": "string", "minLength": 1},
15
+ "repository": {
16
+ "type": "object",
17
+ "required": ["head_commit", "dirty", "worktree_digest"],
18
+ "properties": {
19
+ "head_commit": {"type": "string", "minLength": 1},
20
+ "dirty": {"type": "boolean"},
21
+ "worktree_digest": {"type": "string", "minLength": 1}
22
+ },
23
+ "additionalProperties": false
24
+ },
25
+ "transition_sequence": {"type": "integer", "minimum": 0}
26
+ },
27
+ "additionalProperties": false
28
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.observed-state/v1",
4
+ "type": "object",
5
+ "required": ["schema", "repository", "transition_sequence", "claims", "artifacts", "inconsistencies", "candidate_actions"],
6
+ "properties": {
7
+ "schema": {"const": "yaaw.observed-state/v1"},
8
+ "repository": {
9
+ "type": "object",
10
+ "required": ["head_commit", "dirty", "worktree_digest"],
11
+ "properties": {
12
+ "head_commit": {"type": "string", "minLength": 1},
13
+ "dirty": {"type": "boolean"},
14
+ "worktree_digest": {"type": "string", "minLength": 1}
15
+ },
16
+ "additionalProperties": false
17
+ },
18
+ "transition_sequence": {"type": "integer", "minimum": 0},
19
+ "claims": {"type": "object"},
20
+ "artifacts": {"type": "object"},
21
+ "inconsistencies": {"type": "array", "items": {"type": "string"}},
22
+ "candidate_actions": {"type": "array", "items": {"type": "string"}}
23
+ },
24
+ "additionalProperties": false
25
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.product/v1",
4
+ "type": "object",
5
+ "required": ["schema", "revision", "status"],
6
+ "properties": {
7
+ "schema": {"const": "yaaw.product/v1"},
8
+ "revision": {"type": "integer", "minimum": 1},
9
+ "status": {"enum": ["draft", "ready", "blocked"]}
10
+ },
11
+ "additionalProperties": false
12
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.project-state/v1",
4
+ "type": "object",
5
+ "required": ["schema", "phase", "product", "planning", "active_ticket", "tickets", "transition_sequence", "last_transition", "blocker", "last_observed_commit", "last_workflow"],
6
+ "properties": {
7
+ "schema": {"const": "yaaw.project-state/v1"},
8
+ "phase": {"enum": ["product", "planning", "implementation", "complete", "blocked"]},
9
+ "product": {
10
+ "type": "object",
11
+ "required": ["artifact", "status", "revision"],
12
+ "properties": {
13
+ "artifact": {"type": "string"},
14
+ "status": {"enum": ["missing", "draft", "ready", "blocked"]},
15
+ "revision": {"type": "integer", "minimum": 0}
16
+ },
17
+ "additionalProperties": false
18
+ },
19
+ "planning": {
20
+ "type": "object",
21
+ "required": ["artifact", "status", "revision", "current_frontier", "readiness", "active_spec"],
22
+ "properties": {
23
+ "artifact": {"type": "string"},
24
+ "status": {"enum": ["missing", "discovery", "questions", "ready", "blocked"]},
25
+ "revision": {"type": "integer", "minimum": 0},
26
+ "current_frontier": {"type": ["string", "null"]},
27
+ "readiness": {"enum": ["pending", "PASS", "MISSING_DECISIONS", "PRODUCT_GAP", "REPLAN", "BLOCKED"]},
28
+ "active_spec": {"type": ["string", "null"]}
29
+ },
30
+ "additionalProperties": false
31
+ },
32
+ "active_ticket": {"type": ["string", "null"], "pattern": "^TASK-[0-9]+$"},
33
+ "tickets": {"type": "object", "additionalProperties": {"enum": ["DRAFT", "READY", "IN_PROGRESS", "REVIEW_REQUIRED", "REPAIR_REQUIRED", "REPLAN_REQUIRED", "BLOCKED", "PASS", "CANCELLED"]}},
34
+ "transition_sequence": {"type": "integer", "minimum": 0},
35
+ "last_transition": {
36
+ "anyOf": [
37
+ {"type": "null"},
38
+ {
39
+ "type": "object",
40
+ "required": ["sequence", "subject", "from", "to", "workflow", "reason", "evidence", "observed_commit"],
41
+ "properties": {
42
+ "sequence": {"type": "integer", "minimum": 1},
43
+ "subject": {"type": "string", "minLength": 1},
44
+ "from": {"type": ["string", "null"]},
45
+ "to": {"type": "string", "minLength": 1},
46
+ "workflow": {"type": "string", "minLength": 1},
47
+ "reason": {"type": "string", "minLength": 1},
48
+ "evidence": {"type": "array", "items": {"type": "string"}},
49
+ "observed_commit": {"type": ["string", "null"]}
50
+ },
51
+ "additionalProperties": false
52
+ }
53
+ ]
54
+ },
55
+ "blocker": {
56
+ "anyOf": [
57
+ {"type": "null"},
58
+ {
59
+ "type": "object",
60
+ "required": ["kind", "summary", "missing"],
61
+ "properties": {
62
+ "kind": {"type": "string", "minLength": 1},
63
+ "summary": {"type": "string", "minLength": 1},
64
+ "missing": {"type": "array", "items": {"type": "string"}}
65
+ },
66
+ "additionalProperties": false
67
+ }
68
+ ]
69
+ },
70
+ "last_observed_commit": {"type": ["string", "null"]},
71
+ "last_workflow": {"type": ["string", "null"]}
72
+ },
73
+ "additionalProperties": false
74
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.review/v1",
4
+ "type": "object",
5
+ "required": ["schema", "ticket", "round", "result", "ticket_revision", "spec_revision", "reviewed_head_commit", "reviewed_dirty", "reviewed_worktree_digest", "evidence"],
6
+ "properties": {
7
+ "schema": {"const": "yaaw.review/v1"},
8
+ "ticket": {"type": "string", "pattern": "^TASK-[0-9]+$"},
9
+ "round": {"type": "integer", "minimum": 1},
10
+ "result": {"enum": ["PASS", "REPAIR", "REPLAN", "BLOCKED"]},
11
+ "ticket_revision": {"type": "integer", "minimum": 1},
12
+ "spec_revision": {"type": "integer", "minimum": 1},
13
+ "reviewed_head_commit": {"type": "string", "minLength": 1},
14
+ "reviewed_dirty": {"type": "boolean"},
15
+ "reviewed_worktree_digest": {"type": "string", "minLength": 1},
16
+ "evidence": {"type": "array", "items": {"type": "string"}, "minItems": 1}
17
+ },
18
+ "additionalProperties": false
19
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.spec/v1",
4
+ "type": "object",
5
+ "required": ["schema", "id", "revision", "status", "product_revision", "engineering_revision", "frontier_id", "decision_ids"],
6
+ "properties": {
7
+ "schema": {"const": "yaaw.spec/v1"},
8
+ "id": {"type": "string", "pattern": "^SPEC-[0-9]+$"},
9
+ "revision": {"type": "integer", "minimum": 1},
10
+ "status": {"enum": ["DRAFT", "ACCEPTED", "STALE", "SUPERSEDED"]},
11
+ "product_revision": {"type": "integer", "minimum": 1},
12
+ "engineering_revision": {"type": "integer", "minimum": 1},
13
+ "frontier_id": {"type": "string", "minLength": 1},
14
+ "decision_ids": {"type": "array", "items": {"type": "string", "pattern": "^ENG-[0-9]+$"}, "uniqueItems": true}
15
+ },
16
+ "additionalProperties": false
17
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.ticket/v1",
4
+ "type": "object",
5
+ "required": ["schema", "id", "revision", "spec", "spec_revision", "product_revision", "engineering_revision", "status", "dependencies", "decision_ids", "expertise"],
6
+ "properties": {
7
+ "schema": {"const": "yaaw.ticket/v1"},
8
+ "id": {"type": "string", "pattern": "^TASK-[0-9]+$"},
9
+ "revision": {"type": "integer", "minimum": 1},
10
+ "spec": {"type": "string", "pattern": "^SPEC-[0-9]+$"},
11
+ "spec_revision": {"type": "integer", "minimum": 1},
12
+ "product_revision": {"type": "integer", "minimum": 1},
13
+ "engineering_revision": {"type": "integer", "minimum": 1},
14
+ "status": {"enum": ["DRAFT", "READY", "IN_PROGRESS", "REVIEW_REQUIRED", "REPAIR_REQUIRED", "REPLAN_REQUIRED", "BLOCKED", "PASS", "CANCELLED"]},
15
+ "dependencies": {"type": "array", "items": {"type": "string", "pattern": "^TASK-[0-9]+$"}, "uniqueItems": true},
16
+ "decision_ids": {"type": "array", "items": {"type": "string", "pattern": "^ENG-[0-9]+$"}, "uniqueItems": true},
17
+ "expertise": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}
18
+ },
19
+ "additionalProperties": false
20
+ }
@@ -0,0 +1,33 @@
1
+ ---
2
+ schema: yaaw.engineering/v1
3
+ revision: 1
4
+ status: discovery
5
+ product_revision: 1
6
+ current_frontier: FRONTIER-001
7
+ readiness: pending
8
+ ---
9
+ # Engineering
10
+
11
+ ## Product interpretation
12
+
13
+ ## Existing system
14
+
15
+ ## Engineering constraints
16
+
17
+ ## Decisions
18
+
19
+ <!-- ENG-001 etc. Each decision: Status, Decision, Reason, Rejected alternatives, Implications, Provenance. -->
20
+
21
+ ## Assumptions
22
+
23
+ ## Unresolved questions
24
+
25
+ ## Risks
26
+
27
+ ## Current decision frontier
28
+
29
+ ## Future fog
30
+
31
+ ## Architecture spine
32
+
33
+ ## Readiness status
@@ -0,0 +1,12 @@
1
+ {
2
+ "schema": "yaaw.evidence/v1",
3
+ "id": "EVIDENCE-TASK-000-V1",
4
+ "ticket": "TASK-000",
5
+ "ticket_revision": 1,
6
+ "spec_revision": 1,
7
+ "kind": "implementation_verification",
8
+ "repository": {"head_commit": "COMMIT", "dirty": true, "worktree_digest": "DIGEST"},
9
+ "workflow": "implementation.verify-ticket",
10
+ "commands": [],
11
+ "checks": []
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "schema": "yaaw.handoff/v1",
3
+ "role": "implementer",
4
+ "workflow": "implementation.implement-ticket",
5
+ "active_artifact": ".yaaw-core/project/tickets/TASK-000.md",
6
+ "references": [],
7
+ "revisions": {"product": 1, "engineering": 1, "spec": 1, "ticket": 1},
8
+ "expertise": [],
9
+ "expected_output": "implementation_evidence",
10
+ "repository": {"head_commit": "COMMIT", "dirty": false, "worktree_digest": "DIGEST"},
11
+ "transition_sequence": 0
12
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "schema": "yaaw.observed-state/v1",
3
+ "repository": {"head_commit": "COMMIT", "dirty": false, "worktree_digest": "DIGEST"},
4
+ "transition_sequence": 0,
5
+ "claims": {},
6
+ "artifacts": {},
7
+ "inconsistencies": [],
8
+ "candidate_actions": []
9
+ }