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.
- package/README.md +155 -0
- package/dist/cli/commands/doctor.d.ts +6 -0
- package/dist/cli/commands/doctor.js +21 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/install.d.ts +39 -0
- package/dist/cli/commands/install.js +209 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/status.d.ts +63 -0
- package/dist/cli/commands/status.js +23 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.js +40 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/installer/boundary.d.ts +4 -0
- package/dist/installer/boundary.js +75 -0
- package/dist/installer/boundary.js.map +1 -0
- package/dist/installer/context.d.ts +3 -0
- package/dist/installer/context.js +14 -0
- package/dist/installer/context.js.map +1 -0
- package/dist/installer/detect.d.ts +7 -0
- package/dist/installer/detect.js +40 -0
- package/dist/installer/detect.js.map +1 -0
- package/dist/installer/filesystem.d.ts +1 -0
- package/dist/installer/filesystem.js +23 -0
- package/dist/installer/filesystem.js.map +1 -0
- package/dist/installer/hashing.d.ts +1 -0
- package/dist/installer/hashing.js +5 -0
- package/dist/installer/hashing.js.map +1 -0
- package/dist/installer/managed-sections.d.ts +8 -0
- package/dist/installer/managed-sections.js +53 -0
- package/dist/installer/managed-sections.js.map +1 -0
- package/dist/installer/manifest.d.ts +5 -0
- package/dist/installer/manifest.js +40 -0
- package/dist/installer/manifest.js.map +1 -0
- package/dist/installer/migrations/index.d.ts +14 -0
- package/dist/installer/migrations/index.js +23 -0
- package/dist/installer/migrations/index.js.map +1 -0
- package/dist/installer/migrations/installation/index.d.ts +2 -0
- package/dist/installer/migrations/installation/index.js +3 -0
- package/dist/installer/migrations/installation/index.js.map +1 -0
- package/dist/installer/migrations/project/index.d.ts +2 -0
- package/dist/installer/migrations/project/index.js +3 -0
- package/dist/installer/migrations/project/index.js.map +1 -0
- package/dist/installer/plan.d.ts +10 -0
- package/dist/installer/plan.js +298 -0
- package/dist/installer/plan.js.map +1 -0
- package/dist/installer/project-state.d.ts +2 -0
- package/dist/installer/project-state.js +41 -0
- package/dist/installer/project-state.js.map +1 -0
- package/dist/installer/status.d.ts +61 -0
- package/dist/installer/status.js +146 -0
- package/dist/installer/status.js.map +1 -0
- package/dist/installer/transaction.d.ts +10 -0
- package/dist/installer/transaction.js +176 -0
- package/dist/installer/transaction.js.map +1 -0
- package/dist/installer/types.d.ts +98 -0
- package/dist/installer/types.js +2 -0
- package/dist/installer/types.js.map +1 -0
- package/dist/installer/verify.d.ts +2 -0
- package/dist/installer/verify.js +49 -0
- package/dist/installer/verify.js.map +1 -0
- package/dist/integrations/claude-code.d.ts +1 -0
- package/dist/integrations/claude-code.js +13 -0
- package/dist/integrations/claude-code.js.map +1 -0
- package/dist/integrations/cline.d.ts +1 -0
- package/dist/integrations/cline.js +13 -0
- package/dist/integrations/cline.js.map +1 -0
- package/dist/integrations/codex.d.ts +1 -0
- package/dist/integrations/codex.js +13 -0
- package/dist/integrations/codex.js.map +1 -0
- package/dist/integrations/gemini-cli.d.ts +1 -0
- package/dist/integrations/gemini-cli.js +13 -0
- package/dist/integrations/gemini-cli.js.map +1 -0
- package/dist/integrations/helpers.d.ts +14 -0
- package/dist/integrations/helpers.js +86 -0
- package/dist/integrations/helpers.js.map +1 -0
- package/dist/integrations/registry.d.ts +4 -0
- package/dist/integrations/registry.js +18 -0
- package/dist/integrations/registry.js.map +1 -0
- package/dist/integrations/types.d.ts +31 -0
- package/dist/integrations/types.js +2 -0
- package/dist/integrations/types.js.map +1 -0
- package/dist/payload/bootstrap/claude-code.md +10 -0
- package/dist/payload/bootstrap/cline.md +10 -0
- package/dist/payload/bootstrap/codex.md +10 -0
- package/dist/payload/bootstrap/gemini-cli.md +10 -0
- package/dist/payload/payload-files.json +505 -0
- package/dist/payload/payload.json +4 -0
- package/dist/payload/skills/yaaw-create-spec/SKILL.md +10 -0
- package/dist/payload/skills/yaaw-create-ticket/SKILL.md +10 -0
- package/dist/payload/skills/yaaw-create-tickets/SKILL.md +10 -0
- package/dist/payload/skills/yaaw-implement/SKILL.md +10 -0
- package/dist/payload/skills/yaaw-orchestrator/SKILL.md +10 -0
- package/dist/payload/skills/yaaw-planner/SKILL.md +10 -0
- package/dist/payload/skills/yaaw-planning-review/SKILL.md +10 -0
- package/dist/payload/skills/yaaw-prd/SKILL.md +10 -0
- package/dist/payload/skills/yaaw-refine-prd/SKILL.md +10 -0
- package/dist/payload/skills/yaaw-repair/SKILL.md +10 -0
- package/dist/payload/skills/yaaw-review/SKILL.md +10 -0
- package/dist/payload/skills/yaaw-revise-prd/SKILL.md +10 -0
- package/dist/payload/yaaw-core/core/artifact-model.md +35 -0
- package/dist/payload/yaaw-core/core/authority.md +15 -0
- package/dist/payload/yaaw-core/core/context-loading.md +23 -0
- package/dist/payload/yaaw-core/core/invalidation.md +20 -0
- package/dist/payload/yaaw-core/core/lifecycle.md +33 -0
- package/dist/payload/yaaw-core/core/recovery.md +20 -0
- package/dist/payload/yaaw-core/core/routing.md +30 -0
- package/dist/payload/yaaw-core/core/state-model.md +26 -0
- package/dist/payload/yaaw-core/core/transitions.md +34 -0
- package/dist/payload/yaaw-core/expertise/changeability/MODULE.md +58 -0
- package/dist/payload/yaaw-core/expertise/frontend-design/MODULE.md +16 -0
- package/dist/payload/yaaw-core/expertise/python/MODULE.md +16 -0
- package/dist/payload/yaaw-core/expertise/security/MODULE.md +16 -0
- package/dist/payload/yaaw-core/expertise/testing/MODULE.md +16 -0
- package/dist/payload/yaaw-core/registries/expertise.json +47 -0
- package/dist/payload/yaaw-core/registries/paths.json +15 -0
- package/dist/payload/yaaw-core/registries/routing-policy.json +16 -0
- package/dist/payload/yaaw-core/registries/skills.json +14 -0
- package/dist/payload/yaaw-core/registries/transitions.json +29 -0
- package/dist/payload/yaaw-core/registries/workflows.json +37 -0
- package/dist/payload/yaaw-core/roles/implementer.md +15 -0
- package/dist/payload/yaaw-core/roles/orchestrator.md +16 -0
- package/dist/payload/yaaw-core/roles/planner.md +19 -0
- package/dist/payload/yaaw-core/roles/prd.md +19 -0
- package/dist/payload/yaaw-core/roles/reviewer.md +20 -0
- package/dist/payload/yaaw-core/rules/artifact-writing.md +10 -0
- package/dist/payload/yaaw-core/rules/assumption-challenge.md +109 -0
- package/dist/payload/yaaw-core/rules/changeability.md +38 -0
- package/dist/payload/yaaw-core/rules/durable-memory.md +9 -0
- package/dist/payload/yaaw-core/rules/question-format.md +20 -0
- package/dist/payload/yaaw-core/rules/recovery-evidence.md +9 -0
- package/dist/payload/yaaw-core/rules/repository-identity.md +16 -0
- package/dist/payload/yaaw-core/rules/review-independence.md +9 -0
- package/dist/payload/yaaw-core/rules/ticket-sizing.md +9 -0
- package/dist/payload/yaaw-core/schemas/engineering.schema.json +15 -0
- package/dist/payload/yaaw-core/schemas/evidence.schema.json +36 -0
- package/dist/payload/yaaw-core/schemas/handoff.schema.json +28 -0
- package/dist/payload/yaaw-core/schemas/observed-state.schema.json +25 -0
- package/dist/payload/yaaw-core/schemas/product.schema.json +12 -0
- package/dist/payload/yaaw-core/schemas/project-state.schema.json +74 -0
- package/dist/payload/yaaw-core/schemas/review.schema.json +19 -0
- package/dist/payload/yaaw-core/schemas/spec.schema.json +17 -0
- package/dist/payload/yaaw-core/schemas/ticket.schema.json +20 -0
- package/dist/payload/yaaw-core/templates/engineering.md +33 -0
- package/dist/payload/yaaw-core/templates/evidence.json +12 -0
- package/dist/payload/yaaw-core/templates/handoff.json +12 -0
- package/dist/payload/yaaw-core/templates/observed-state.json +9 -0
- package/dist/payload/yaaw-core/templates/product.md +26 -0
- package/dist/payload/yaaw-core/templates/project-state.json +13 -0
- package/dist/payload/yaaw-core/templates/review.md +28 -0
- package/dist/payload/yaaw-core/templates/spec.md +29 -0
- package/dist/payload/yaaw-core/templates/ticket.md +28 -0
- package/dist/payload/yaaw-core/workflows/implementation/implement-ticket.md +21 -0
- package/dist/payload/yaaw-core/workflows/implementation/repair-ticket.md +18 -0
- package/dist/payload/yaaw-core/workflows/implementation/select-ticket.md +16 -0
- package/dist/payload/yaaw-core/workflows/implementation/verify-ticket.md +17 -0
- package/dist/payload/yaaw-core/workflows/orchestration/determine-next-action.md +16 -0
- package/dist/payload/yaaw-core/workflows/orchestration/dispatch.md +17 -0
- package/dist/payload/yaaw-core/workflows/orchestration/inspect-state.md +17 -0
- package/dist/payload/yaaw-core/workflows/orchestration/reconcile-state.md +16 -0
- package/dist/payload/yaaw-core/workflows/orchestration/recover-interruption.md +17 -0
- package/dist/payload/yaaw-core/workflows/orchestration/route.md +20 -0
- package/dist/payload/yaaw-core/workflows/planning/create-spec.md +18 -0
- package/dist/payload/yaaw-core/workflows/planning/create-tickets.md +19 -0
- package/dist/payload/yaaw-core/workflows/planning/decision-frontier.md +27 -0
- package/dist/payload/yaaw-core/workflows/planning/discover.md +17 -0
- package/dist/payload/yaaw-core/workflows/planning/question-round.md +22 -0
- package/dist/payload/yaaw-core/workflows/planning/readiness-review.md +32 -0
- package/dist/payload/yaaw-core/workflows/planning/record-decisions.md +20 -0
- package/dist/payload/yaaw-core/workflows/planning/replan.md +18 -0
- package/dist/payload/yaaw-core/workflows/planning/route.md +20 -0
- package/dist/payload/yaaw-core/workflows/planning/write-understanding.md +24 -0
- package/dist/payload/yaaw-core/workflows/prd/create.md +22 -0
- package/dist/payload/yaaw-core/workflows/prd/question-round.md +20 -0
- package/dist/payload/yaaw-core/workflows/prd/readiness.md +22 -0
- package/dist/payload/yaaw-core/workflows/prd/record-decisions.md +20 -0
- package/dist/payload/yaaw-core/workflows/prd/refine.md +15 -0
- package/dist/payload/yaaw-core/workflows/prd/revise.md +18 -0
- package/dist/payload/yaaw-core/workflows/prd/route.md +23 -0
- package/dist/payload/yaaw-core/workflows/review/classify-findings.md +17 -0
- package/dist/payload/yaaw-core/workflows/review/inspect-change.md +16 -0
- package/dist/payload/yaaw-core/workflows/review/record-review.md +18 -0
- package/dist/payload/yaaw-core/workflows/review/review-ticket.md +20 -0
- package/dist/renderers/agent-skill.d.ts +1 -0
- package/dist/renderers/agent-skill.js +14 -0
- package/dist/renderers/agent-skill.js.map +1 -0
- package/dist/renderers/bootstrap-block.d.ts +1 -0
- package/dist/renderers/bootstrap-block.js +10 -0
- package/dist/renderers/bootstrap-block.js.map +1 -0
- package/dist/tui/confirm-plan.d.ts +3 -0
- package/dist/tui/confirm-plan.js +23 -0
- package/dist/tui/confirm-plan.js.map +1 -0
- package/dist/tui/existing-install.d.ts +2 -0
- package/dist/tui/existing-install.js +17 -0
- package/dist/tui/existing-install.js.map +1 -0
- package/dist/tui/result.d.ts +2 -0
- package/dist/tui/result.js +8 -0
- package/dist/tui/result.js.map +1 -0
- package/dist/tui/select-directory.d.ts +1 -0
- package/dist/tui/select-directory.js +12 -0
- package/dist/tui/select-directory.js.map +1 -0
- package/dist/tui/select-skills.d.ts +1 -0
- package/dist/tui/select-skills.js +29 -0
- package/dist/tui/select-skills.js.map +1 -0
- package/dist/tui/select-tools.d.ts +2 -0
- package/dist/tui/select-tools.js +19 -0
- package/dist/tui/select-tools.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Artifact model
|
|
2
|
+
|
|
3
|
+
Canonical durable project root: `.yaaw-core/project/`.
|
|
4
|
+
|
|
5
|
+
Ownership is separated by subdirectory under one YAAW root:
|
|
6
|
+
|
|
7
|
+
- `.yaaw-core/core/`, `roles/`, `workflows/`, `expertise/`, `rules/`, `registries/`, `schemas/`, and `templates/`: package-managed framework content.
|
|
8
|
+
- `.yaaw-core/project/`: durable project-owned semantic memory.
|
|
9
|
+
- `.yaaw-core/runtime/`: replaceable coordination state.
|
|
10
|
+
- `.yaaw-core/install/`: installer metadata only.
|
|
11
|
+
|
|
12
|
+
Durable project artifacts:
|
|
13
|
+
|
|
14
|
+
- `product.md`: human-approved product intent and unresolved product questions.
|
|
15
|
+
- `engineering.md`: durable engineering understanding, `ENG-*` decisions, assumptions, risks, frontier, fog, and readiness.
|
|
16
|
+
- `specs/SPEC-*.md`: coherent engineering contracts referencing product/decision revisions.
|
|
17
|
+
- `tickets/TASK-*.md`: bounded implementation contracts.
|
|
18
|
+
- `reviews/TASK-*-R*.md`: immutable review rounds tied to exact source and repository revisions.
|
|
19
|
+
- `evidence/*.json`: machine-readable verification evidence tied to repository identity.
|
|
20
|
+
- `rules/`: project-specific reusable invariants promoted from real evidence.
|
|
21
|
+
- `state.json`: reconstructable routing cache and last transition provenance.
|
|
22
|
+
|
|
23
|
+
Replaceable runtime artifacts:
|
|
24
|
+
|
|
25
|
+
- `.yaaw-core/runtime/observed-state.json`: observed orchestration snapshot.
|
|
26
|
+
- `.yaaw-core/runtime/handoff.json`: dispatch contract.
|
|
27
|
+
- `.yaaw-core/runtime/intent.json`: optional current intent cache.
|
|
28
|
+
|
|
29
|
+
Installer metadata:
|
|
30
|
+
|
|
31
|
+
- `.yaaw-core/install/manifest.json`: package/integration ownership and version state. It is never semantic project truth.
|
|
32
|
+
|
|
33
|
+
Markdown artifacts use YAML frontmatter for machine-readable identity/revision/status and a human-readable body for durable reasoning. Schemas validate metadata; core validation rules define required Markdown sections.
|
|
34
|
+
|
|
35
|
+
Conversation is never an artifact of record. Package update logic must never treat `.yaaw-core/project/` as replaceable framework content.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Authority model
|
|
2
|
+
|
|
3
|
+
Authority is semantic, not hierarchical.
|
|
4
|
+
|
|
5
|
+
| Role | Owns | Must not own |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| Human / PRD | product goal, behavior, scope, non-goals | engineering architecture |
|
|
8
|
+
| Planner | technical design, engineering decisions, specs, ticket contracts | product-intent changes |
|
|
9
|
+
| Implementer | code within an admitted ticket | architecture changes outside admitted scope; acceptance |
|
|
10
|
+
| Reviewer | independent acceptance, findings, repair-vs-replan classification | implementation authorship during review |
|
|
11
|
+
| Orchestrator | routing, continuity, reconciliation, invalidation/recovery coordination | product, architecture, coding, self-approval |
|
|
12
|
+
|
|
13
|
+
Expertise modules never grant authority. They may advise a role but cannot override the role contract.
|
|
14
|
+
|
|
15
|
+
A downstream role may detect that an upstream contract is invalid, but it must return control to the owning role rather than silently rewriting that contract.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Context loading
|
|
2
|
+
|
|
3
|
+
Load the smallest durable context needed for the current judgment:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
role contract
|
|
7
|
+
+ workflow contract
|
|
8
|
+
+ active artifact and revision
|
|
9
|
+
+ directly referenced decisions
|
|
10
|
+
+ relevant product constraints
|
|
11
|
+
+ relevant project rules
|
|
12
|
+
+ relevant repository files/diff
|
|
13
|
+
+ selected expertise
|
|
14
|
+
+ prior review finding when repairing
|
|
15
|
+
+ current handoff/repository identity when dispatched
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Do not automatically load every PRD revision, ticket, review, expertise module, or the full repository.
|
|
19
|
+
|
|
20
|
+
## Handoff freshness
|
|
21
|
+
A handoff names exact artifact paths, revisions, selected expertise, expected output, and the repository identity observed when it was created. Before executing it, verify those bases still match current reality. If they do not, discard the stale handoff and re-enter orchestration inspection.
|
|
22
|
+
|
|
23
|
+
Runtime handoffs and observed-state snapshots live under `.yaaw-core/runtime/`; they are coordination caches, not semantic sources of truth.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Invalidation propagation
|
|
2
|
+
|
|
3
|
+
Accepted artifacts are historical records, not eternally valid truth. When an upstream basis changes, preserve history and invalidate downstream trust explicitly.
|
|
4
|
+
|
|
5
|
+
## Product revision change
|
|
6
|
+
1. Increment `product.md` revision and record the changed requirement.
|
|
7
|
+
2. Identify `ENG-*` decisions whose product provenance depends on the changed requirement.
|
|
8
|
+
3. Mark affected decisions superseded/invalidated in `engineering.md`; move planning readiness to unresolved.
|
|
9
|
+
4. Mark dependent specs `STALE` rather than rewriting them in place.
|
|
10
|
+
5. Move dependent tickets, including prior `PASS` tickets when behavior is affected, to `REPLAN_REQUIRED` using the transition contract.
|
|
11
|
+
6. Prior reviews remain immutable historical evidence but no longer establish current acceptance.
|
|
12
|
+
|
|
13
|
+
## Engineering decision change
|
|
14
|
+
Apply the same propagation from affected `ENG-*` decisions -> specs -> tickets -> reviews.
|
|
15
|
+
|
|
16
|
+
## Repository drift
|
|
17
|
+
A review becomes stale when the reviewed repository identity no longer matches the relevant implementation state. Route to review if the contract remains valid; route to replan when drift invalidates the contract.
|
|
18
|
+
|
|
19
|
+
## No silent cascade
|
|
20
|
+
Every invalidated artifact records why it became stale and which upstream revision/decision caused it. Never delete prior decisions/specs/reviews merely to make current state look clean.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Lifecycle contract
|
|
2
|
+
|
|
3
|
+
YAAW advances only through evidence-backed workflow boundaries.
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
product missing/unready -> PRD
|
|
7
|
+
product ready, planning unresolved -> Planner
|
|
8
|
+
planning frontier ready, spec missing -> create spec
|
|
9
|
+
spec accepted, tickets missing -> create tickets
|
|
10
|
+
READY -> Implementer
|
|
11
|
+
IN_PROGRESS -> recover/continue only when evidence proves the boundary
|
|
12
|
+
REVIEW_REQUIRED -> Reviewer
|
|
13
|
+
REPAIR_REQUIRED -> repair same ticket -> REVIEW_REQUIRED
|
|
14
|
+
REPLAN_REQUIRED -> Planner
|
|
15
|
+
PASS -> next admitted work
|
|
16
|
+
frontier complete but accepted scope remains -> Planner reassesses frontier
|
|
17
|
+
all accepted scope complete with fresh acceptance -> COMPLETE
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Fresh-context invariant
|
|
21
|
+
Every workflow must be resumable from durable artifacts and repository evidence without previous chat history.
|
|
22
|
+
|
|
23
|
+
## Admission invariant
|
|
24
|
+
Implementation may begin only for a bounded `READY` ticket whose source spec/frontier is currently valid.
|
|
25
|
+
|
|
26
|
+
## Acceptance invariant
|
|
27
|
+
A ticket is accepted only by a fresh review tied to the exact repository identity and the current ticket/spec revisions.
|
|
28
|
+
|
|
29
|
+
## Transition invariant
|
|
30
|
+
Every state transition follows `core/transitions.md`, records provenance in `.yaaw-core/project/state.json`, and cites the evidence or artifact that justified it.
|
|
31
|
+
|
|
32
|
+
## Invalidation invariant
|
|
33
|
+
Changed product intent or engineering decisions propagate through `core/invalidation.md`; historical artifacts are preserved but stale acceptance is never treated as current.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Recovery policy
|
|
2
|
+
|
|
3
|
+
Recovery compares claimed state with observed reality and returns to the last trustworthy boundary.
|
|
4
|
+
|
|
5
|
+
## Evidence authority
|
|
6
|
+
- Product intent: current accepted `product.md` revision.
|
|
7
|
+
- Engineering decisions: current `engineering.md` decisions and accepted non-stale specs.
|
|
8
|
+
- Implementation reality: repository contents plus repository identity/diff history.
|
|
9
|
+
- Acceptance: fresh review evidence tied to the exact ticket/spec revisions and repository identity.
|
|
10
|
+
- Routing cache: `state.json`, reconciled against stronger evidence.
|
|
11
|
+
|
|
12
|
+
## Rules
|
|
13
|
+
- Never reimplement solely because state is stale.
|
|
14
|
+
- `IN_PROGRESS` + implementation + required verification evidence + no review -> reconcile to `REVIEW_REQUIRED`.
|
|
15
|
+
- `READY` + implementation already present -> inspect/recover rather than duplicate the change.
|
|
16
|
+
- `PASS` + missing/stale review, source revision mismatch, or repository identity mismatch -> invalidate current PASS and route to review/replan as appropriate.
|
|
17
|
+
- A stale `.yaaw-core/runtime/handoff.json` is discarded, not executed.
|
|
18
|
+
- If the last trustworthy boundary cannot be proven, return `BLOCKED` with exact missing proof.
|
|
19
|
+
|
|
20
|
+
Every reconciliation uses a legal transition and records its reason/evidence in state provenance.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Routing contract
|
|
2
|
+
|
|
3
|
+
Routing chooses exactly one next canonical workflow from observed reality. Explicit state beats broad heuristics.
|
|
4
|
+
|
|
5
|
+
The machine-readable precedence used by conformance tests lives in `.yaaw-core/registries/routing-policy.json`. This document explains the same semantics; CI must fail if the machine contract drifts from the workflow registry or lifecycle fixtures.
|
|
6
|
+
|
|
7
|
+
## Priority
|
|
8
|
+
1. Resolve material state inconsistency or incomplete recovery.
|
|
9
|
+
2. If accepted product intent is missing or newly invalidated, route to PRD.
|
|
10
|
+
3. If a ticket is `REPLAN_REQUIRED`, route to `planning.replan`.
|
|
11
|
+
4. If current engineering frontier is unresolved, route through `planning.route`.
|
|
12
|
+
5. If a ready frontier lacks an accepted spec, route to `planning.create-spec`.
|
|
13
|
+
6. If an accepted spec lacks executable tickets, route to `planning.create-tickets`.
|
|
14
|
+
7. If a ticket is `REPAIR_REQUIRED`, route to `implementation.repair-ticket`.
|
|
15
|
+
8. If a ticket is `REVIEW_REQUIRED`, route to `review.review-ticket`.
|
|
16
|
+
9. If a ticket is `IN_PROGRESS`, use recovery evidence to continue safely or reconcile to the next proven boundary; never restart blindly.
|
|
17
|
+
10. If a dependency-satisfied ticket is `READY`, route to `implementation.implement-ticket`.
|
|
18
|
+
11. If all current tickets are `PASS` but accepted product scope remains, route to `planning.route` for the next frontier.
|
|
19
|
+
12. Declare `COMPLETE` only when accepted scope is covered by fresh, non-stale acceptance evidence.
|
|
20
|
+
|
|
21
|
+
## Tie breaking
|
|
22
|
+
- Never review a `REPAIR_REQUIRED` ticket before repair.
|
|
23
|
+
- Never implement a `REPLAN_REQUIRED` ticket.
|
|
24
|
+
- Never preserve `PASS` after source revision or repository identity invalidates its review.
|
|
25
|
+
- When evidence is insufficient to choose safely, route to recovery and ultimately `BLOCKED` rather than guessing.
|
|
26
|
+
|
|
27
|
+
## Conformance rule
|
|
28
|
+
Behavioral fixtures may reconcile only transitions explicitly justified by durable/repository evidence. They must never make product or architecture decisions. The conformance oracle is test infrastructure, not a second runtime orchestrator.
|
|
29
|
+
|
|
30
|
+
The Orchestrator selects the workflow; the target role owns semantic work inside it.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# State model
|
|
2
|
+
|
|
3
|
+
Canonical machine-readable project state is `.yaaw-core/project/state.json` using `yaaw.project-state/v1`.
|
|
4
|
+
|
|
5
|
+
State is a routing cache and claim ledger. It is never trusted blindly over stronger domain evidence.
|
|
6
|
+
|
|
7
|
+
## Ticket states
|
|
8
|
+
`DRAFT`, `READY`, `IN_PROGRESS`, `REVIEW_REQUIRED`, `REPAIR_REQUIRED`, `REPLAN_REQUIRED`, `BLOCKED`, `PASS`, `CANCELLED`.
|
|
9
|
+
|
|
10
|
+
## Project phases
|
|
11
|
+
`product`, `planning`, `implementation`, `complete`, `blocked`.
|
|
12
|
+
|
|
13
|
+
## Required provenance
|
|
14
|
+
Every mutation increments `transition_sequence` and writes `last_transition` with:
|
|
15
|
+
- subject (`project` or `TASK-NNN`);
|
|
16
|
+
- from/to state;
|
|
17
|
+
- canonical workflow ID;
|
|
18
|
+
- reason;
|
|
19
|
+
- evidence references;
|
|
20
|
+
- observed repository commit when available.
|
|
21
|
+
|
|
22
|
+
`BLOCKED` state records a blocker summary and exact missing evidence/decision.
|
|
23
|
+
|
|
24
|
+
`.yaaw-core/runtime/observed-state.json` and `.yaaw-core/runtime/handoff.json` are replaceable caches used to survive interruption inside orchestration. Their bases must be revalidated before use.
|
|
25
|
+
|
|
26
|
+
Legal transitions are defined in `core/transitions.md`.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# State transition contract
|
|
2
|
+
|
|
3
|
+
State names are not enough; only the transitions below are legal unless an explicit recovery rule documents a narrower evidence-backed exception.
|
|
4
|
+
|
|
5
|
+
The machine-readable transition table used by conformance tests lives in `.yaaw-core/registries/transitions.json`. This document remains the human-readable explanation and CI checks the registry against workflow IDs and the project-state schema.
|
|
6
|
+
|
|
7
|
+
## Ticket transitions
|
|
8
|
+
| From | To | Owner/workflow | Required basis |
|
|
9
|
+
|---|---|---|---|
|
|
10
|
+
| DRAFT | READY | Planner | current spec/frontier valid; dependencies satisfied |
|
|
11
|
+
| DRAFT | CANCELLED | Planner/Human | scope removed |
|
|
12
|
+
| READY | IN_PROGRESS | Implementer | ticket selected; source revisions still current |
|
|
13
|
+
| READY | REPLAN_REQUIRED | Orchestrator/Planner | source invalidation or contradictory evidence |
|
|
14
|
+
| IN_PROGRESS | REVIEW_REQUIRED | Implementer or recovery | implementation exists; required verification evidence recorded |
|
|
15
|
+
| IN_PROGRESS | REPLAN_REQUIRED | Implementer/Reviewer/Orchestrator | material contract gap |
|
|
16
|
+
| IN_PROGRESS | BLOCKED | active role | required external evidence/permission unavailable |
|
|
17
|
+
| REVIEW_REQUIRED | PASS | Reviewer | fresh PASS review tied to current repository/ticket/spec revisions |
|
|
18
|
+
| REVIEW_REQUIRED | REPAIR_REQUIRED | Reviewer | implementation defect; contract remains valid |
|
|
19
|
+
| REVIEW_REQUIRED | REPLAN_REQUIRED | Reviewer | contract/architecture invalid or insufficient |
|
|
20
|
+
| REVIEW_REQUIRED | BLOCKED | Reviewer | review evidence unavailable |
|
|
21
|
+
| REPAIR_REQUIRED | REVIEW_REQUIRED | Implementer | required repair applied and reverified |
|
|
22
|
+
| REPAIR_REQUIRED | REPLAN_REQUIRED | Implementer | repair would change accepted contract |
|
|
23
|
+
| REPLAN_REQUIRED | DRAFT | Planner | contract revised but not yet re-admitted |
|
|
24
|
+
| REPLAN_REQUIRED | READY | Planner | revised contract passes readiness and dependencies |
|
|
25
|
+
| BLOCKED | DRAFT/READY/IN_PROGRESS/REVIEW_REQUIRED/REPAIR_REQUIRED/REPLAN_REQUIRED | owning role | blocker resolved and prior valid boundary proven |
|
|
26
|
+
| PASS | REPLAN_REQUIRED | Orchestrator/Planner | upstream revision invalidates current acceptance |
|
|
27
|
+
| PASS | CANCELLED | Human/Planner | accepted scope explicitly removed; history preserved |
|
|
28
|
+
|
|
29
|
+
Forbidden examples: `DRAFT -> PASS`, `READY -> PASS`, `REPAIR_REQUIRED -> PASS`, or Implementer-authored `PASS`.
|
|
30
|
+
|
|
31
|
+
## Project transitions
|
|
32
|
+
Normal phase order is `product -> planning -> implementation -> complete`. `blocked` may be entered from any phase and exited only when its blocker is resolved. A new accepted product revision may move `complete` back to `product` or `planning`; historical completion evidence remains immutable.
|
|
33
|
+
|
|
34
|
+
Every transition increments `transition_sequence` and writes `last_transition` in `.yaaw-core/project/state.json`.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Changeability expertise
|
|
2
|
+
|
|
3
|
+
Use this module when a ticket, design, or review has non-trivial maintainability implications. The canonical mandatory policy is `.yaaw-core/rules/changeability.md`; this module provides deeper reasoning and examples, not additional authority.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
Optimize the changed surface for future comprehension, modification, verification, and rollback while preserving the current product/spec/ticket contract and repository conventions.
|
|
7
|
+
|
|
8
|
+
## Reasoning sequence
|
|
9
|
+
1. Identify the actual domain behavior being changed.
|
|
10
|
+
2. Identify the minimum authorized code surface needed to implement it safely.
|
|
11
|
+
3. Locate relevant boundaries, state models, decision logic, errors, and tests.
|
|
12
|
+
4. Apply only the changeability principles that materially affect that surface.
|
|
13
|
+
5. Prefer the smallest design that removes concrete ambiguity/coupling/risk.
|
|
14
|
+
6. Verify behavior and the relevant structural property.
|
|
15
|
+
7. Leave unrelated cleanup out of scope.
|
|
16
|
+
|
|
17
|
+
## Principle heuristics
|
|
18
|
+
|
|
19
|
+
### Visible main path
|
|
20
|
+
Ask whether a fresh engineer can identify the success path quickly. Consider guard clauses, decomposition, or clearer branching when exceptional cases bury the operation. Avoid style-only rewrites.
|
|
21
|
+
|
|
22
|
+
### Domain naming
|
|
23
|
+
Ask whether important names expose what the value or operation means in this application. Generic names are acceptable for genuinely generic/local mechanics; they are weak when they hide a known domain concept.
|
|
24
|
+
|
|
25
|
+
### External boundaries
|
|
26
|
+
Look for provider SDK types, remote field names, transport objects, ORM/persistence records, or protocol-specific errors escaping into business code. Prefer adapters/mappers/ports where the accepted architecture benefits from containment.
|
|
27
|
+
|
|
28
|
+
### Invalid states
|
|
29
|
+
Look for broad optional structures, boolean combinations, unchecked sentinel values, or repeated `if value exists` logic that represent domain states poorly. Prefer explicit state variants, constructors, validators, schemas, or invariants when they materially reduce impossible combinations.
|
|
30
|
+
|
|
31
|
+
### Decisions versus actions
|
|
32
|
+
Look for important policy mixed into database/network/email/filesystem operations. Extracting decision logic is valuable when it improves deterministic tests and clarity; do not force a functional style where side effects are the actual domain operation.
|
|
33
|
+
|
|
34
|
+
### Useful failures
|
|
35
|
+
Prefer stable error identity plus human-readable meaning and safe context. Preserve local error conventions. Never improve diagnostics by exposing secrets or sensitive payloads.
|
|
36
|
+
|
|
37
|
+
### Focused changes
|
|
38
|
+
Treat scope control as the limiter on every other principle. A discovered smell is not automatically part of the ticket. Supporting refactors must be necessary for safe implementation or verification of the authorized behavior.
|
|
39
|
+
|
|
40
|
+
## Common agent failure modes
|
|
41
|
+
- mechanically replacing all nesting with guard clauses;
|
|
42
|
+
- renaming large surfaces without ticket need;
|
|
43
|
+
- creating abstraction layers for hypothetical future providers;
|
|
44
|
+
- over-modeling trivial states with excessive types/classes;
|
|
45
|
+
- extracting tiny pure functions that make navigation worse without improving tests;
|
|
46
|
+
- inventing a new error taxonomy instead of following project conventions;
|
|
47
|
+
- converting a feature ticket into a broad refactor because nearby code looks untidy;
|
|
48
|
+
- rejecting code based on personal style rather than concrete engineering impact.
|
|
49
|
+
|
|
50
|
+
## Review guidance
|
|
51
|
+
A reviewer should classify a changeability issue as `REPAIR` when the accepted contract remains valid and a bounded implementation correction resolves the problem. Use `REPLAN` only when satisfying the concern requires changing accepted architecture/spec meaning. Non-blocking style preferences should not create a review failure.
|
|
52
|
+
|
|
53
|
+
## Verification examples
|
|
54
|
+
- External boundary: adapter mapping tests prove provider fields do not become application contract fields.
|
|
55
|
+
- Invalid states: tests prove invalid combinations cannot be constructed/admitted through the boundary.
|
|
56
|
+
- Decision/action separation: pure decision tests exercise policy without invoking side effects.
|
|
57
|
+
- Useful errors: tests assert stable error code/shape and safe context.
|
|
58
|
+
- Focused changes: diff inspection shows unrelated modules were not rewritten.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Expertise: frontend-design
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
Specialist UI interaction, responsive behavior, accessibility, state-feedback, and component-boundary guidance. It grants no workflow authority.
|
|
5
|
+
|
|
6
|
+
## Required context
|
|
7
|
+
Relevant UI files, existing design-system/project rules, user-facing acceptance criteria, and current component patterns.
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
Planner defines interaction states, responsive behavior, component boundaries, accessibility constraints, and testable acceptance. Implementer preserves local design-system conventions and complete loading/error/empty/disabled/focus states. Reviewer verifies the actual behavior across states and viewport/keyboard conditions.
|
|
11
|
+
|
|
12
|
+
## Anti-patterns
|
|
13
|
+
Inventing visual requirements, redesigning unrelated surfaces, treating desktop-only behavior as complete, or ignoring semantics/focus/labels.
|
|
14
|
+
|
|
15
|
+
## Verification expectations
|
|
16
|
+
State coverage, responsive behavior, semantic structure, keyboard/focus behavior, labels/errors, and regressions.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Expertise: python
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
Repository-aware Python design, typing, runtime, IO/error, async, tooling, and review guidance. It grants no workflow authority.
|
|
5
|
+
|
|
6
|
+
## Required context
|
|
7
|
+
`pyproject.toml`/tool configuration, supported Python version, relevant package boundaries, target files, and project test/lint/type conventions.
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
Always prefer repository rules over generic preferences. Planner accounts for package/API boundaries and runtime compatibility. Implementer follows local idioms, preserves typing/error contracts, and manages resources correctly. Reviewer checks behavior, exceptions, typing assumptions, async/sync boundaries, and tooling compliance.
|
|
11
|
+
|
|
12
|
+
## Anti-patterns
|
|
13
|
+
Overriding local conventions, broad exception swallowing, unexamined sync/async mixing, unnecessary abstraction, or assuming a Python/tool version without inspecting the repo.
|
|
14
|
+
|
|
15
|
+
## Verification expectations
|
|
16
|
+
Relevant project tooling passes; error/resource behavior is exercised; typing/runtime assumptions are compatible with the repository.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Expertise: security
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
Specialist authentication, authorization, trust-boundary, secret, input-validation, and abuse-case guidance. It grants no workflow authority.
|
|
5
|
+
|
|
6
|
+
## Required context
|
|
7
|
+
Relevant trust boundaries, sensitive data paths, authentication/authorization mechanisms, project security rules, and changed interfaces.
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
Planner identifies trust boundaries and security invariants. Implementer enforces server-side authorization/input handling and avoids secret/data exposure. Reviewer checks negative paths and actual enforcement rather than assuming the intended control exists.
|
|
11
|
+
|
|
12
|
+
## Anti-patterns
|
|
13
|
+
Client-only authorization, security by convention, logging secrets/tokens, broad trust of external input, or silently weakening an accepted invariant.
|
|
14
|
+
|
|
15
|
+
## Verification expectations
|
|
16
|
+
Negative authorization cases, boundary/input failure cases, secret/data exposure review, and regression evidence for security-sensitive behavior.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Expertise: testing
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
Specialist test design, regression strategy, verification scope, and evidence-quality guidance. It grants no workflow authority.
|
|
5
|
+
|
|
6
|
+
## Required context
|
|
7
|
+
Ticket acceptance criteria, changed surface, project test tooling/conventions, existing relevant tests, and known failure modes.
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
Planner makes acceptance verifiable. Implementer runs required tests and adds targeted coverage justified by the change. Reviewer checks evidence quality and may run/require additional focused checks when acceptance cannot otherwise be established.
|
|
11
|
+
|
|
12
|
+
## Anti-patterns
|
|
13
|
+
Tests that only mirror implementation details, skipping failure paths, treating an unrun test suite as passing, or expanding into unrelated test cleanup.
|
|
14
|
+
|
|
15
|
+
## Verification expectations
|
|
16
|
+
Required tests executed, meaningful failure/regression coverage, reproducible commands/results, and evidence tied to repository identity.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"frontend-design": {
|
|
3
|
+
"path": ".yaaw-core/expertise/frontend-design/MODULE.md",
|
|
4
|
+
"description": "UI interaction, responsive behavior, accessibility, state feedback, and component-boundary guidance.",
|
|
5
|
+
"signals": ["UI", "layout", "component", "responsive", "interaction", "accessibility"],
|
|
6
|
+
"usable_by": ["planner", "implementer", "reviewer"],
|
|
7
|
+
"required_context": ["relevant UI files", "design-system/project rules", "user-facing acceptance criteria"],
|
|
8
|
+
"anti_patterns": ["inventing visual requirements", "ignoring keyboard/focus states", "rewriting unrelated components"],
|
|
9
|
+
"verification_expectations": ["state coverage", "responsive behavior", "semantics and keyboard/focus behavior"]
|
|
10
|
+
},
|
|
11
|
+
"security": {
|
|
12
|
+
"path": ".yaaw-core/expertise/security/MODULE.md",
|
|
13
|
+
"description": "Authentication, authorization, trust-boundary, secret, input, and abuse-case guidance.",
|
|
14
|
+
"signals": ["auth", "authorization", "secret", "input", "permission", "security"],
|
|
15
|
+
"usable_by": ["planner", "implementer", "reviewer"],
|
|
16
|
+
"required_context": ["trust boundaries", "sensitive data paths", "relevant auth/project rules"],
|
|
17
|
+
"anti_patterns": ["security by assumption", "client-only authorization", "logging secrets"],
|
|
18
|
+
"verification_expectations": ["negative authorization cases", "input/failure paths", "secret/data exposure review"]
|
|
19
|
+
},
|
|
20
|
+
"testing": {
|
|
21
|
+
"path": ".yaaw-core/expertise/testing/MODULE.md",
|
|
22
|
+
"description": "Test design, verification strategy, regression coverage, and evidence quality guidance.",
|
|
23
|
+
"signals": ["test", "verification", "regression", "acceptance"],
|
|
24
|
+
"usable_by": ["planner", "implementer", "reviewer"],
|
|
25
|
+
"required_context": ["ticket acceptance", "project test tooling", "changed surface"],
|
|
26
|
+
"anti_patterns": ["tests that restate implementation", "ignoring failure paths", "claiming PASS from unrun tests"],
|
|
27
|
+
"verification_expectations": ["required tests executed", "targeted regressions", "reproducible evidence"]
|
|
28
|
+
},
|
|
29
|
+
"python": {
|
|
30
|
+
"path": ".yaaw-core/expertise/python/MODULE.md",
|
|
31
|
+
"description": "Repository-aware Python design, typing, runtime, IO/error, async, tooling, and review guidance.",
|
|
32
|
+
"signals": ["Python", "pyproject.toml", "pytest", "ruff", "typing"],
|
|
33
|
+
"usable_by": ["planner", "implementer", "reviewer"],
|
|
34
|
+
"required_context": ["pyproject/tool config", "supported Python version", "relevant package/test files"],
|
|
35
|
+
"anti_patterns": ["overriding local conventions", "unexamined sync/async mixing", "broad exception swallowing"],
|
|
36
|
+
"verification_expectations": ["project tooling passes", "error/resource behavior checked", "typing/runtime assumptions validated"]
|
|
37
|
+
},
|
|
38
|
+
"changeability": {
|
|
39
|
+
"path": ".yaaw-core/expertise/changeability/MODULE.md",
|
|
40
|
+
"description": "Maintainability guidance for visible control flow, domain naming, external boundaries, valid-state modeling, decision/side-effect separation, useful errors, and focused changes.",
|
|
41
|
+
"signals": ["maintainability", "refactor", "boundary", "adapter", "state model", "error contract", "complex control flow", "coupling"],
|
|
42
|
+
"usable_by": ["planner", "implementer", "reviewer"],
|
|
43
|
+
"required_context": ["current ticket/spec contract", "changed surface", "repository conventions", "changeability policy"],
|
|
44
|
+
"anti_patterns": ["style-only rewrites", "speculative abstractions", "unrelated refactor creep", "subjective review failures"],
|
|
45
|
+
"verification_expectations": ["relevant structural property checked", "targeted behavior/regression tests", "scope remains focused"]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "yaaw.paths/v1",
|
|
3
|
+
"core_root": ".yaaw-core",
|
|
4
|
+
"project_root": ".yaaw-core/project",
|
|
5
|
+
"runtime_root": ".yaaw-core/runtime",
|
|
6
|
+
"install_root": ".yaaw-core/install",
|
|
7
|
+
"product": ".yaaw-core/project/product.md",
|
|
8
|
+
"engineering": ".yaaw-core/project/engineering.md",
|
|
9
|
+
"state": ".yaaw-core/project/state.json",
|
|
10
|
+
"specs": ".yaaw-core/project/specs",
|
|
11
|
+
"tickets": ".yaaw-core/project/tickets",
|
|
12
|
+
"reviews": ".yaaw-core/project/reviews",
|
|
13
|
+
"evidence": ".yaaw-core/project/evidence",
|
|
14
|
+
"project_rules": ".yaaw-core/project/rules"
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "yaaw.routing-policy/v1",
|
|
3
|
+
"product_unready_workflow": "prd.route",
|
|
4
|
+
"planning_unready_workflow": "planning.route",
|
|
5
|
+
"missing_spec_workflow": "planning.create-spec",
|
|
6
|
+
"missing_tickets_workflow": "planning.create-tickets",
|
|
7
|
+
"next_frontier_workflow": "planning.route",
|
|
8
|
+
"complete_terminal": "COMPLETE",
|
|
9
|
+
"ticket_state_precedence": [
|
|
10
|
+
{"state": "REPLAN_REQUIRED", "workflow": "planning.replan"},
|
|
11
|
+
{"state": "REPAIR_REQUIRED", "workflow": "implementation.repair-ticket"},
|
|
12
|
+
{"state": "REVIEW_REQUIRED", "workflow": "review.review-ticket"},
|
|
13
|
+
{"state": "IN_PROGRESS", "workflow": "orchestration.recover-interruption"},
|
|
14
|
+
{"state": "READY", "workflow": "implementation.implement-ticket"}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"yaaw-orchestrator": {"role": "orchestrator", "workflow_id": "orchestration.route", "description": "Continue or recover a YAAW project by reconstructing reality and dispatching the next safe workflow."},
|
|
3
|
+
"yaaw-prd": {"role": "prd", "workflow_id": "prd.route", "description": "Create or continue YAAW product definition, challenge material product assumptions, and route clarification or revision work."},
|
|
4
|
+
"yaaw-revise-prd": {"role": "prd", "workflow_id": "prd.revise", "description": "Change accepted YAAW product intent and invalidate downstream engineering contracts whose basis became stale."},
|
|
5
|
+
"yaaw-refine-prd": {"role": "prd", "workflow_id": "prd.refine", "description": "Improve clarity and completeness of a YAAW product artifact without changing accepted product meaning."},
|
|
6
|
+
"yaaw-planner": {"role": "planner", "workflow_id": "planning.route", "description": "Continue repository-backed YAAW engineering planning, challenge material technical assumptions, and advance decisions, readiness, specifications, or tickets."},
|
|
7
|
+
"yaaw-planning-review": {"role": "planner", "workflow_id": "planning.readiness-review", "description": "Freshly assess whether the current YAAW engineering frontier is ready for implementation without material invention."},
|
|
8
|
+
"yaaw-create-spec": {"role": "planner", "workflow_id": "planning.create-spec", "description": "Create the next YAAW specification from an engineering frontier whose readiness is currently PASS."},
|
|
9
|
+
"yaaw-create-ticket": {"role": "planner", "workflow_id": "planning.create-tickets", "description": "Create bounded YAAW implementation ticket contracts from the current accepted specification."},
|
|
10
|
+
"yaaw-create-tickets": {"role": "planner", "workflow_id": "planning.create-tickets", "description": "Create dependency-aware bounded YAAW implementation tickets from the current accepted specification."},
|
|
11
|
+
"yaaw-implement": {"role": "implementer", "workflow_id": "implementation.implement-ticket", "description": "Implement one admitted READY YAAW ticket and produce repository-identity-bound verification evidence."},
|
|
12
|
+
"yaaw-repair": {"role": "implementer", "workflow_id": "implementation.repair-ticket", "description": "Repair a YAAW ticket in REPAIR_REQUIRED state while preserving its accepted product and engineering contract."},
|
|
13
|
+
"yaaw-review": {"role": "reviewer", "workflow_id": "review.review-ticket", "description": "Independently review actual YAAW implementation and classify PASS, REPAIR, REPLAN, or BLOCKED against current evidence."}
|
|
14
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "yaaw.transitions/v1",
|
|
3
|
+
"ticket_states": ["DRAFT", "READY", "IN_PROGRESS", "REVIEW_REQUIRED", "REPAIR_REQUIRED", "REPLAN_REQUIRED", "BLOCKED", "PASS", "CANCELLED"],
|
|
4
|
+
"legal": [
|
|
5
|
+
{"from": "DRAFT", "to": "READY", "owner": "planner", "workflow": "planning.create-tickets"},
|
|
6
|
+
{"from": "DRAFT", "to": "CANCELLED", "owner": "planner", "workflow": "planning.replan"},
|
|
7
|
+
{"from": "READY", "to": "IN_PROGRESS", "owner": "implementer", "workflow": "implementation.implement-ticket"},
|
|
8
|
+
{"from": "READY", "to": "REPLAN_REQUIRED", "owner": "planner", "workflow": "planning.replan"},
|
|
9
|
+
{"from": "IN_PROGRESS", "to": "REVIEW_REQUIRED", "owner": "implementer", "workflow": "implementation.verify-ticket"},
|
|
10
|
+
{"from": "IN_PROGRESS", "to": "REPLAN_REQUIRED", "owner": "planner", "workflow": "planning.replan"},
|
|
11
|
+
{"from": "IN_PROGRESS", "to": "BLOCKED", "owner": "implementer", "workflow": "implementation.implement-ticket"},
|
|
12
|
+
{"from": "REVIEW_REQUIRED", "to": "PASS", "owner": "reviewer", "workflow": "review.record-review"},
|
|
13
|
+
{"from": "REVIEW_REQUIRED", "to": "REPAIR_REQUIRED", "owner": "reviewer", "workflow": "review.record-review"},
|
|
14
|
+
{"from": "REVIEW_REQUIRED", "to": "REPLAN_REQUIRED", "owner": "reviewer", "workflow": "review.record-review"},
|
|
15
|
+
{"from": "REVIEW_REQUIRED", "to": "BLOCKED", "owner": "reviewer", "workflow": "review.record-review"},
|
|
16
|
+
{"from": "REPAIR_REQUIRED", "to": "REVIEW_REQUIRED", "owner": "implementer", "workflow": "implementation.repair-ticket"},
|
|
17
|
+
{"from": "REPAIR_REQUIRED", "to": "REPLAN_REQUIRED", "owner": "planner", "workflow": "planning.replan"},
|
|
18
|
+
{"from": "REPLAN_REQUIRED", "to": "DRAFT", "owner": "planner", "workflow": "planning.replan"},
|
|
19
|
+
{"from": "REPLAN_REQUIRED", "to": "READY", "owner": "planner", "workflow": "planning.replan"},
|
|
20
|
+
{"from": "PASS", "to": "REPLAN_REQUIRED", "owner": "planner", "workflow": "planning.replan"},
|
|
21
|
+
{"from": "PASS", "to": "CANCELLED", "owner": "planner", "workflow": "planning.replan"}
|
|
22
|
+
],
|
|
23
|
+
"blocked_exit_targets": ["DRAFT", "READY", "IN_PROGRESS", "REVIEW_REQUIRED", "REPAIR_REQUIRED", "REPLAN_REQUIRED"],
|
|
24
|
+
"forbidden": [
|
|
25
|
+
{"from": "DRAFT", "to": "PASS"},
|
|
26
|
+
{"from": "READY", "to": "PASS"},
|
|
27
|
+
{"from": "REPAIR_REQUIRED", "to": "PASS"}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"prd.route": {"role": "prd", "workflow": ".yaaw-core/workflows/prd/route.md"},
|
|
3
|
+
"prd.create": {"role": "prd", "workflow": ".yaaw-core/workflows/prd/create.md"},
|
|
4
|
+
"prd.question-round": {"role": "prd", "workflow": ".yaaw-core/workflows/prd/question-round.md"},
|
|
5
|
+
"prd.record-decisions": {"role": "prd", "workflow": ".yaaw-core/workflows/prd/record-decisions.md"},
|
|
6
|
+
"prd.revise": {"role": "prd", "workflow": ".yaaw-core/workflows/prd/revise.md"},
|
|
7
|
+
"prd.refine": {"role": "prd", "workflow": ".yaaw-core/workflows/prd/refine.md"},
|
|
8
|
+
"prd.readiness": {"role": "prd", "workflow": ".yaaw-core/workflows/prd/readiness.md"},
|
|
9
|
+
|
|
10
|
+
"planning.route": {"role": "planner", "workflow": ".yaaw-core/workflows/planning/route.md"},
|
|
11
|
+
"planning.discover": {"role": "planner", "workflow": ".yaaw-core/workflows/planning/discover.md"},
|
|
12
|
+
"planning.write-understanding": {"role": "planner", "workflow": ".yaaw-core/workflows/planning/write-understanding.md"},
|
|
13
|
+
"planning.question-round": {"role": "planner", "workflow": ".yaaw-core/workflows/planning/question-round.md"},
|
|
14
|
+
"planning.record-decisions": {"role": "planner", "workflow": ".yaaw-core/workflows/planning/record-decisions.md"},
|
|
15
|
+
"planning.decision-frontier": {"role": "planner", "workflow": ".yaaw-core/workflows/planning/decision-frontier.md"},
|
|
16
|
+
"planning.readiness-review": {"role": "planner", "workflow": ".yaaw-core/workflows/planning/readiness-review.md"},
|
|
17
|
+
"planning.create-spec": {"role": "planner", "workflow": ".yaaw-core/workflows/planning/create-spec.md"},
|
|
18
|
+
"planning.create-tickets": {"role": "planner", "workflow": ".yaaw-core/workflows/planning/create-tickets.md"},
|
|
19
|
+
"planning.replan": {"role": "planner", "workflow": ".yaaw-core/workflows/planning/replan.md"},
|
|
20
|
+
|
|
21
|
+
"implementation.select-ticket": {"role": "implementer", "workflow": ".yaaw-core/workflows/implementation/select-ticket.md"},
|
|
22
|
+
"implementation.implement-ticket": {"role": "implementer", "workflow": ".yaaw-core/workflows/implementation/implement-ticket.md"},
|
|
23
|
+
"implementation.verify-ticket": {"role": "implementer", "workflow": ".yaaw-core/workflows/implementation/verify-ticket.md"},
|
|
24
|
+
"implementation.repair-ticket": {"role": "implementer", "workflow": ".yaaw-core/workflows/implementation/repair-ticket.md"},
|
|
25
|
+
|
|
26
|
+
"review.inspect-change": {"role": "reviewer", "workflow": ".yaaw-core/workflows/review/inspect-change.md"},
|
|
27
|
+
"review.review-ticket": {"role": "reviewer", "workflow": ".yaaw-core/workflows/review/review-ticket.md"},
|
|
28
|
+
"review.classify-findings": {"role": "reviewer", "workflow": ".yaaw-core/workflows/review/classify-findings.md"},
|
|
29
|
+
"review.record-review": {"role": "reviewer", "workflow": ".yaaw-core/workflows/review/record-review.md"},
|
|
30
|
+
|
|
31
|
+
"orchestration.route": {"role": "orchestrator", "workflow": ".yaaw-core/workflows/orchestration/route.md"},
|
|
32
|
+
"orchestration.inspect-state": {"role": "orchestrator", "workflow": ".yaaw-core/workflows/orchestration/inspect-state.md"},
|
|
33
|
+
"orchestration.reconcile-state": {"role": "orchestrator", "workflow": ".yaaw-core/workflows/orchestration/reconcile-state.md"},
|
|
34
|
+
"orchestration.determine-next-action": {"role": "orchestrator", "workflow": ".yaaw-core/workflows/orchestration/determine-next-action.md"},
|
|
35
|
+
"orchestration.dispatch": {"role": "orchestrator", "workflow": ".yaaw-core/workflows/orchestration/dispatch.md"},
|
|
36
|
+
"orchestration.recover-interruption": {"role": "orchestrator", "workflow": ".yaaw-core/workflows/orchestration/recover-interruption.md"}
|
|
37
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Implementer role
|
|
2
|
+
|
|
3
|
+
## Authority
|
|
4
|
+
Own code changes for one bounded admitted ticket at a time.
|
|
5
|
+
|
|
6
|
+
## Required behavior
|
|
7
|
+
- Validate the ticket/source revisions before starting.
|
|
8
|
+
- Load only referenced product/spec/engineering constraints, `.yaaw-core/rules/changeability.md`, relevant rules/expertise, and relevant code.
|
|
9
|
+
- Transition `READY -> IN_PROGRESS` with provenance.
|
|
10
|
+
- Implement within allowed scope, applying the relevant changeability principles without introducing style-only or unrelated refactors.
|
|
11
|
+
- Run required verification, including targeted checks for any changeability property materially affected by the changed surface, and write machine-readable evidence tied to repository identity.
|
|
12
|
+
- Transition to `REVIEW_REQUIRED` only after evidence exists.
|
|
13
|
+
|
|
14
|
+
## Boundary
|
|
15
|
+
Never self-approve, silently change product/architecture contracts, or implement a `REPLAN_REQUIRED`/stale ticket. Missing material decisions route back to Planner. Changeability guidance improves the authorized change; it never expands ticket scope.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Orchestrator role
|
|
2
|
+
|
|
3
|
+
## Authority
|
|
4
|
+
Own continuity, observed-state reconstruction, evidence-backed reconciliation, invalidation coordination, and next-workflow routing.
|
|
5
|
+
|
|
6
|
+
## Boot sequence
|
|
7
|
+
1. Inspect durable claims, active artifacts, runtime caches, and repository reality.
|
|
8
|
+
2. Revalidate or discard stale runtime handoffs.
|
|
9
|
+
3. Reconcile only evidence-backed inconsistencies using legal transitions.
|
|
10
|
+
4. Determine exactly one next canonical workflow or terminal state.
|
|
11
|
+
5. Persist a structured handoff.
|
|
12
|
+
6. Dispatch that one workflow.
|
|
13
|
+
7. After its durable output, return to inspection and repeat until a stop condition.
|
|
14
|
+
|
|
15
|
+
## Boundary
|
|
16
|
+
The Orchestrator is a traffic controller, not a super-agent. It must not author product decisions, architecture, implementation, or acceptance. If semantic work is required, route to the role that owns it.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Planner role
|
|
2
|
+
|
|
3
|
+
## Authority
|
|
4
|
+
Own engineering understanding, architecture decisions, specifications, readiness, decomposition, and ticket contracts within accepted product intent.
|
|
5
|
+
|
|
6
|
+
## Required behavior
|
|
7
|
+
- Apply `.yaaw-core/rules/assumption-challenge.md` to engineering interpretation, architecture decisions, and current-frontier questions.
|
|
8
|
+
- Establish repository evidence before questioning; inspect real repository reality rather than asking the human for discoverable facts.
|
|
9
|
+
- Challenge material engineering assumptions, repository/architecture contradictions, unnecessary abstractions, and consequential failure/data/security/migration/testing/operability tradeoffs.
|
|
10
|
+
- Resolve routine reversible implementation decisions internally unless they become materially consequential.
|
|
11
|
+
- Maintain `engineering.md` and durable `ENG-*` decisions with provenance.
|
|
12
|
+
- Separate known decisions, current frontier, and future fog.
|
|
13
|
+
- Apply `.yaaw-core/rules/changeability.md` when shaping engineering decisions, specifications, and ticket boundaries; encode only relevant maintainability constraints rather than stylistic preferences.
|
|
14
|
+
- Create specs/tickets only after frontier readiness passes.
|
|
15
|
+
- Replan explicitly when later evidence invalidates a contract; preserve superseded history.
|
|
16
|
+
- Never reopen settled `ENG-*` decisions without new evidence or explicit request.
|
|
17
|
+
|
|
18
|
+
## Boundary
|
|
19
|
+
Never invent product intent. Product gaps return to PRD/human authority. Planner does not accept implementation on behalf of Reviewer. Changeability and assumption-challenge guidance never authorize speculative architecture, scope creep, or unrelated refactoring outside accepted product intent.
|