yaaw-se 0.3.11 → 0.3.13
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/dist/installer/migrations/index.d.ts +2 -2
- package/dist/installer/migrations/index.js +2 -2
- package/dist/installer/migrations/index.js.map +1 -1
- package/dist/installer/migrations/project/index.js +2 -1
- package/dist/installer/migrations/project/index.js.map +1 -1
- package/dist/installer/migrations/project/v2-to-v3.d.ts +2 -0
- package/dist/installer/migrations/project/v2-to-v3.js +56 -0
- package/dist/installer/migrations/project/v2-to-v3.js.map +1 -0
- package/dist/installer/plan.js +98 -268
- package/dist/installer/plan.js.map +1 -1
- package/dist/installer/project-state.js +3 -13
- package/dist/installer/project-state.js.map +1 -1
- package/dist/installer/status.js +67 -231
- package/dist/installer/status.js.map +1 -1
- package/dist/installer/transaction.js +58 -109
- package/dist/installer/transaction.js.map +1 -1
- package/dist/installer/types.d.ts +5 -2
- package/dist/installer/verify.js +27 -27
- package/dist/installer/verify.js.map +1 -1
- package/dist/payload/bootstrap/claude-code.md +6 -6
- package/dist/payload/bootstrap/cline.md +8 -8
- package/dist/payload/bootstrap/codex.md +7 -7
- package/dist/payload/bootstrap/gemini-cli.md +6 -6
- package/dist/payload/payload-files.json +97 -417
- package/dist/payload/payload.json +1 -1
- package/dist/payload/skills/yaaw-create-spec/SKILL.md +2 -6
- package/dist/payload/skills/yaaw-create-ticket/SKILL.md +2 -6
- package/dist/payload/skills/yaaw-create-tickets/SKILL.md +2 -6
- package/dist/payload/skills/yaaw-implement/SKILL.md +2 -6
- package/dist/payload/skills/yaaw-orchestrator/SKILL.md +2 -3
- package/dist/payload/skills/yaaw-planner/SKILL.md +2 -6
- package/dist/payload/skills/yaaw-planning-review/SKILL.md +2 -6
- package/dist/payload/skills/yaaw-prd/SKILL.md +2 -6
- package/dist/payload/skills/yaaw-refine-prd/SKILL.md +2 -6
- package/dist/payload/skills/yaaw-repair/SKILL.md +2 -6
- package/dist/payload/skills/yaaw-review/SKILL.md +2 -6
- package/dist/payload/skills/yaaw-revise-prd/SKILL.md +2 -6
- package/dist/payload/yaaw-core/registries/skills.json +38 -0
- package/dist/payload/yaaw-core/system/SYSTEM.md +121 -0
- package/dist/payload/yaaw-core/system/engine/contracts.mjs +147 -0
- package/dist/payload/yaaw-core/system/engine/repository-identity.mjs +24 -0
- package/dist/payload/yaaw-core/system/engine/routing.mjs +153 -0
- package/dist/payload/yaaw-core/system/engine/runtime.mjs +66 -0
- package/dist/payload/yaaw-core/system/kernel.yaml +145 -0
- package/dist/payload/yaaw-core/system/modules/changeability.md +27 -0
- package/dist/payload/yaaw-core/system/roles/implementer.md +16 -12
- package/dist/payload/yaaw-core/system/roles/orchestrator.md +24 -14
- package/dist/payload/yaaw-core/system/roles/planner.md +37 -11
- package/dist/payload/yaaw-core/system/roles/prd.md +26 -18
- package/dist/payload/yaaw-core/system/roles/reviewer.md +16 -15
- package/dist/payload/yaaw-core/system/schemas/handoff.schema.json +24 -161
- package/dist/payload/yaaw-core/system/schemas/intent.schema.json +11 -64
- package/dist/payload/yaaw-core/system/schemas/observed-state.schema.json +12 -162
- package/dist/payload/yaaw-core/system/schemas/repository-identity.schema.json +12 -39
- package/dist/payload/yaaw-core/system/templates/evidence.json +1 -18
- package/dist/payload/yaaw-core/system/templates/handoff.json +11 -27
- package/dist/payload/yaaw-core/system/templates/intent.json +2 -2
- package/dist/payload/yaaw-core/system/templates/observed-state.json +5 -28
- package/dist/payload/yaaw-core/system/templates/review.md +2 -2
- package/package.json +5 -2
- package/dist/payload/yaaw-core/system/core/artifact-model.md +0 -43
- package/dist/payload/yaaw-core/system/core/authority.md +0 -21
- package/dist/payload/yaaw-core/system/core/context-loading.md +0 -56
- package/dist/payload/yaaw-core/system/core/dispatch-execution.md +0 -28
- package/dist/payload/yaaw-core/system/core/execution-context.md +0 -61
- package/dist/payload/yaaw-core/system/core/framework-integrity.md +0 -60
- package/dist/payload/yaaw-core/system/core/invalidation.md +0 -13
- package/dist/payload/yaaw-core/system/core/io-contract.md +0 -23
- package/dist/payload/yaaw-core/system/core/lifecycle.md +0 -23
- package/dist/payload/yaaw-core/system/core/recovery.md +0 -17
- package/dist/payload/yaaw-core/system/core/routing.md +0 -21
- package/dist/payload/yaaw-core/system/core/state-model.md +0 -14
- package/dist/payload/yaaw-core/system/core/transitions.md +0 -36
- package/dist/payload/yaaw-core/system/expertise/changeability/MODULE.md +0 -58
- package/dist/payload/yaaw-core/system/registries/artifacts.json +0 -99
- package/dist/payload/yaaw-core/system/registries/execution-policy.json +0 -169
- package/dist/payload/yaaw-core/system/registries/expertise.json +0 -47
- package/dist/payload/yaaw-core/system/registries/handoff-policy.json +0 -67
- package/dist/payload/yaaw-core/system/registries/paths.json +0 -18
- package/dist/payload/yaaw-core/system/registries/reconciliation-policy.json +0 -18
- package/dist/payload/yaaw-core/system/registries/role-io.json +0 -30
- package/dist/payload/yaaw-core/system/registries/routing-policy.json +0 -74
- package/dist/payload/yaaw-core/system/registries/skills.json +0 -110
- package/dist/payload/yaaw-core/system/registries/transitions.json +0 -178
- package/dist/payload/yaaw-core/system/registries/workflows.json +0 -38
- package/dist/payload/yaaw-core/system/rules/artifact-writing.md +0 -10
- package/dist/payload/yaaw-core/system/rules/assumption-challenge.md +0 -109
- package/dist/payload/yaaw-core/system/rules/changeability.md +0 -38
- package/dist/payload/yaaw-core/system/rules/durable-memory.md +0 -9
- package/dist/payload/yaaw-core/system/rules/question-format.md +0 -20
- package/dist/payload/yaaw-core/system/rules/recovery-evidence.md +0 -9
- package/dist/payload/yaaw-core/system/rules/repository-identity.md +0 -42
- package/dist/payload/yaaw-core/system/rules/research-admission.md +0 -30
- package/dist/payload/yaaw-core/system/rules/review-independence.md +0 -11
- package/dist/payload/yaaw-core/system/rules/ticket-sizing.md +0 -9
- package/dist/payload/yaaw-core/system/schemas/project-state.schema.json +0 -12
- package/dist/payload/yaaw-core/system/templates/project-state.json +0 -13
- package/dist/payload/yaaw-core/system/tools/orchestration-engine.mjs +0 -210
- package/dist/payload/yaaw-core/system/tools/orchestration-runtime.mjs +0 -46
- package/dist/payload/yaaw-core/system/tools/repository-identity.mjs +0 -92
- package/dist/payload/yaaw-core/system/workflows/implementation/implement-ticket.md +0 -18
- package/dist/payload/yaaw-core/system/workflows/implementation/repair-ticket.md +0 -17
- package/dist/payload/yaaw-core/system/workflows/implementation/select-ticket.md +0 -17
- package/dist/payload/yaaw-core/system/workflows/implementation/verify-ticket.md +0 -19
- package/dist/payload/yaaw-core/system/workflows/orchestration/determine-next-action.md +0 -24
- package/dist/payload/yaaw-core/system/workflows/orchestration/dispatch.md +0 -35
- package/dist/payload/yaaw-core/system/workflows/orchestration/inspect-state.md +0 -19
- package/dist/payload/yaaw-core/system/workflows/orchestration/reconcile-state.md +0 -19
- package/dist/payload/yaaw-core/system/workflows/orchestration/recover-interruption.md +0 -32
- package/dist/payload/yaaw-core/system/workflows/orchestration/route.md +0 -27
- package/dist/payload/yaaw-core/system/workflows/planning/create-spec.md +0 -21
- package/dist/payload/yaaw-core/system/workflows/planning/create-tickets.md +0 -50
- package/dist/payload/yaaw-core/system/workflows/planning/decision-frontier.md +0 -33
- package/dist/payload/yaaw-core/system/workflows/planning/discover.md +0 -21
- package/dist/payload/yaaw-core/system/workflows/planning/question-round.md +0 -22
- package/dist/payload/yaaw-core/system/workflows/planning/readiness-review.md +0 -33
- package/dist/payload/yaaw-core/system/workflows/planning/record-decisions.md +0 -19
- package/dist/payload/yaaw-core/system/workflows/planning/replan.md +0 -24
- package/dist/payload/yaaw-core/system/workflows/planning/research.md +0 -20
- package/dist/payload/yaaw-core/system/workflows/planning/route.md +0 -28
- package/dist/payload/yaaw-core/system/workflows/planning/write-understanding.md +0 -26
- package/dist/payload/yaaw-core/system/workflows/prd/create.md +0 -22
- package/dist/payload/yaaw-core/system/workflows/prd/question-round.md +0 -20
- package/dist/payload/yaaw-core/system/workflows/prd/readiness.md +0 -22
- package/dist/payload/yaaw-core/system/workflows/prd/record-decisions.md +0 -20
- package/dist/payload/yaaw-core/system/workflows/prd/refine.md +0 -15
- package/dist/payload/yaaw-core/system/workflows/prd/revise.md +0 -18
- package/dist/payload/yaaw-core/system/workflows/prd/route.md +0 -23
- package/dist/payload/yaaw-core/system/workflows/review/classify-findings.md +0 -17
- package/dist/payload/yaaw-core/system/workflows/review/inspect-change.md +0 -20
- package/dist/payload/yaaw-core/system/workflows/review/record-review.md +0 -19
- package/dist/payload/yaaw-core/system/workflows/review/review-ticket.md +0 -24
- /package/dist/payload/yaaw-core/system/{tools → engine}/frontmatter.mjs +0 -0
- /package/dist/payload/yaaw-core/system/{tools/framework-integrity.mjs → engine/integrity.mjs} +0 -0
- /package/dist/payload/yaaw-core/system/{expertise/frontend-design/MODULE.md → modules/frontend-design.md} +0 -0
- /package/dist/payload/yaaw-core/system/{expertise/python/MODULE.md → modules/python.md} +0 -0
- /package/dist/payload/yaaw-core/system/{expertise/security/MODULE.md → modules/security.md} +0 -0
- /package/dist/payload/yaaw-core/system/{expertise/testing/MODULE.md → modules/testing.md} +0 -0
|
@@ -1,16 +1,42 @@
|
|
|
1
|
-
# Planner
|
|
1
|
+
# Planner
|
|
2
2
|
|
|
3
3
|
## Authority
|
|
4
|
-
Own engineering understanding, architecture decisions,
|
|
4
|
+
Own repository-backed engineering understanding, architecture decisions, research admission, specifications, ticket contracts, readiness, frontier decomposition, and `scope_status` within accepted product intent. Never invent product meaning.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
Use `SYSTEM.md` for shared invariants. Execute only the operation named by the deterministic handoff.
|
|
7
|
+
|
|
8
|
+
## Operation: route (`planning.route`)
|
|
9
|
+
Route by durable artifacts and repository reality: stale/missing repository understanding -> discover/write-understanding; stale decision frontier -> decision-frontier; invalid contract/REPLAN_REQUIRED -> replan; accepted answers not recorded -> record-decisions; admitted blocking research -> research; unresolved human-owned engineering decision -> question-round; stale readiness -> readiness-review; PASS without current accepted spec -> create-spec; accepted spec without tickets or dependency-satisfied DRAFT requiring admission -> create-tickets; otherwise READY. DRAFT tickets blocked on prerequisites do not preempt runnable prerequisite work.
|
|
10
|
+
|
|
11
|
+
## Operation: discover (`planning.discover`)
|
|
12
|
+
Establish facts before questions or vendor research. Inspect structure, language/framework/tooling, interfaces/data boundaries, tests, deployment/migration constraints, and relevant implementation areas. With repository status READY use root-anchored workspace-scoped evidence; with UNVERSIONED inspect filesystem reality without inventing Git history. Separate facts from assumptions and identify product interactions/contradictions. Do not ask the user or perform vendor research yet.
|
|
13
|
+
|
|
14
|
+
## Operation: write-understanding (`planning.write-understanding`)
|
|
15
|
+
Persist repository observations under Existing system, unsupported beliefs under Assumptions, unresolved engineering decisions under Unresolved questions, future-dependent issues under Future fog, material dangers under Risks, accepted solutions as stable `ENG-*` decisions, and compatibility-critical structure under Architecture spine. Persist conclusions, not debate transcripts. Increment engineering revision when durable understanding materially changes; mark frontier/readiness stale for recomputation.
|
|
16
|
+
|
|
17
|
+
## Operation: decision-frontier (`planning.decision-frontier`)
|
|
18
|
+
Partition every material issue into known reusable decisions, one bounded current implementation frontier, product gaps, admitted blocking research, or future fog. Test prerequisites, next-slice relevance, repository answerability, role ownership, reversibility, contradictions, unsupported assumptions, and research admission. Allocate one `RSH-NNN` only when a bounded external fact genuinely blocks the current frontier. Maintain stable frontier ID and `scope_status`: `UNKNOWN` if completion is unproven, `OPEN` if accepted scope remains, `COMPLETE` only when durable product/planning evidence proves no accepted scope remains.
|
|
19
|
+
|
|
20
|
+
## Operation: research (`planning.research`)
|
|
21
|
+
Resolve exactly one current PENDING research artifact whose product/engineering/frontier basis is still current and admitted. Prefer primary sources; record version/date for sensitive facts and conflicts rather than choosing silently. Mark RESOLVED or BLOCKED. Research establishes facts only; return to decision-frontier before promoting anything into an `ENG-*` decision.
|
|
22
|
+
|
|
23
|
+
## Operation: question-round (`planning.question-round`)
|
|
24
|
+
Load only the current frontier and evidence needed for it. Challenge material engineering assumptions, contradictions, failure/data/security/migration/testing/operability gaps, and premature architecture. Eliminate repository-answerable, routine reversible, future-dependent, and prerequisite-blocked questions. Product gaps return to PRD. Do not reopen settled `ENG-*` decisions without new evidence/contradiction/changed upstream intent. Ask at most 10 material questions and stop for human input.
|
|
25
|
+
|
|
26
|
+
## Operation: record-decisions (`planning.record-decisions`)
|
|
27
|
+
Validate accepted answers against current product authority and repository evidence. Product meaning gaps return to PRD. Conflicts with accepted `ENG-*` decisions require explicit supersession and invalidation. Otherwise create/update durable decisions with Status, Decision, Reason, material rejected alternatives, implications, and provenance. Increment engineering revision for material contract changes, persist conclusions rather than transcripts, and mark frontier/readiness stale.
|
|
28
|
+
|
|
29
|
+
## Operation: readiness-review (`planning.readiness-review`)
|
|
30
|
+
Freshly decide: could a fresh Implementer execute the next bounded frontier without inventing material product or architecture decisions? Check boundedness, assumptions, blocking research, repository contradiction, ambiguous terminology, failure/state transitions, hidden dependencies, product gaps, and repository identity availability for executable ticket admission. Return `PASS`, `MISSING_DECISIONS`, `PRODUCT_GAP`, `REPLAN`, or `BLOCKED`; persist result, frontier/source revisions, reason, and evidence in `engineering.md` only.
|
|
31
|
+
|
|
32
|
+
## Operation: create-spec (`planning.create-spec`)
|
|
33
|
+
Require current readiness PASS, current product/engineering revisions, resolved blocking research, and complete bounded frontier. Allocate next `SPEC-NNN`; record revision/source/frontier/decision IDs; write relevant behavior, boundaries, state/data, interfaces, failures, security, UX/accessibility, tests, observability, migration/compatibility, non-goals, risks, and acceptance. Reference `ENG-*`/`RSH-*` provenance rather than copying history. Mark ACCEPTED only when no material decision was invented. The active current spec is derived from this metadata; no state ledger is written.
|
|
34
|
+
|
|
35
|
+
## Operation: create-tickets (`planning.create-tickets`)
|
|
36
|
+
Require an ACCEPTED current spec, current product/engineering basis, planning ready/PASS, and repository identity READY. Inspect existing current tickets before allocating IDs; never duplicate a DRAFT merely because it is not READY. A DRAFT becomes READY only when its source revisions are current, dependencies are PASS, repository identity is trustworthy, acceptance is implementable without invention, and recorded prerequisites are satisfied. A status-only DRAFT->READY admission does not bump revision. Semantic contract changes go through replan and do bump revision. Split missing work into coherent fresh-Implementer-sized tickets with source metadata, dependencies, decision IDs, expertise hints, allowed scope/non-goals, acceptance, required tests, and precise DRAFT rationale when not admitted.
|
|
37
|
+
|
|
38
|
+
## Operation: replan (`planning.replan`)
|
|
39
|
+
Require concrete product/repository/review/invalidation evidence that the current contract is insufficient; repository identity drift alone is not enough. Identify affected decisions/spec/ticket assumptions, explicitly supersede history, make new engineering decisions within product authority, increment relevant semantic revisions, invalidate downstream contracts, rebuild frontier, and rerun readiness. Revised tickets re-enter DRAFT/READY legally and never jump directly back to PASS.
|
|
14
40
|
|
|
15
41
|
## Boundary
|
|
16
|
-
|
|
42
|
+
Planner owns ticket contracts and Planner-authorized admission states but does not author application code, implementation evidence, or acceptance. Package-managed `.yaaw-core/system/**` is never writable semantic output.
|
|
@@ -1,22 +1,30 @@
|
|
|
1
|
-
# PRD
|
|
1
|
+
# PRD
|
|
2
2
|
|
|
3
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/system/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.
|
|
4
|
+
Own product goals, users, behaviors, constraints, scope, non-goals, and human-approved product revisions. Never decide engineering implementation unless the human explicitly makes a method a product constraint.
|
|
17
5
|
|
|
18
|
-
|
|
19
|
-
|
|
6
|
+
Use `SYSTEM.md` for shared invariants. Execute only the operation named by the deterministic handoff.
|
|
7
|
+
|
|
8
|
+
## Operation: route (`prd.route`)
|
|
9
|
+
Classify the current product artifact and request: missing product -> create; unresolved material product ambiguity -> question round; clarity-only cleanup -> refine; accepted intent change -> revise; otherwise readiness. Execute the selected PRD operation rather than merely naming it.
|
|
10
|
+
|
|
11
|
+
## Operation: create (`prd.create`)
|
|
12
|
+
Initialize `product.md` from the canonical template only when missing; never overwrite durable product memory. Capture the supplied goal without technicalizing it. Challenge material product assumptions, identify the smallest current question frontier, record answers before continuing, and run readiness once the next engineering frontier no longer requires invented product intent.
|
|
13
|
+
|
|
14
|
+
## Operation: question-round (`prd.question-round`)
|
|
15
|
+
Challenge only material contradictions, ambiguous terminology, unsupported assumptions, premature abstractions, important flows/failures/edge cases, and scope/non-goal conflicts. Exclude engineering-only questions and questions whose prerequisites remain unresolved. Ask at most 10 high-leverage questions; options/recommendation are optional and free-form answers are first-class. Stop for human input.
|
|
16
|
+
|
|
17
|
+
## Operation: record-decisions (`prd.record-decisions`)
|
|
18
|
+
Interpret only what the answer supports. Persist conclusions in the relevant product sections, not the question/challenge transcript. Remove settled questions, preserve corrections/non-goals, and increment product revision only when accepted product meaning materially changes. Recompute contradictions/questions and expose the changed product basis for downstream invalidation. Orchestrator derives staleness; Planner alone revises engineering/spec/ticket contracts.
|
|
20
19
|
|
|
21
|
-
##
|
|
22
|
-
|
|
20
|
+
## Operation: revise (`prd.revise`)
|
|
21
|
+
Identify the exact old requirement and requested new meaning. Stress-test impact on behavior, scope, constraints, non-goals, and newly exposed product questions without drifting into engineering design. Update only `product.md`, increment revision for a material accepted meaning change, and record provenance. The changed product revision invalidates downstream authority through Orchestrator observation/reconciliation; do not mutate engineering, specifications, or tickets. Leave product draft if material questions remain; otherwise run readiness. Return `READY`, `HUMAN_INPUT_REQUIRED`, or `BLOCKED` for the dispatched invocation.
|
|
22
|
+
|
|
23
|
+
## Operation: refine (`prd.refine`)
|
|
24
|
+
Improve clarity, organization, deduplication, and completeness without changing accepted semantic meaning or product revision. If the edit changes behavior, scope, constraints, or non-goals—or exposes a genuine semantic contradiction—stop with `HUMAN_INPUT_REQUIRED` for explicit product revision authority instead of silently changing meaning. Return `READY` only when clarity work is complete and product readiness holds; otherwise return `HUMAN_INPUT_REQUIRED` or `BLOCKED`.
|
|
25
|
+
|
|
26
|
+
## Operation: readiness (`prd.readiness`)
|
|
27
|
+
Ask whether a fresh Planner can understand goal, users, expected behavior, scope, constraints, non-goals, and remaining product unknowns without the original chat, and whether any material current-frontier ambiguity would force invented product intent. Return `READY`, `NEEDS_QUESTIONS`, or `BLOCKED`. On READY, persist `status: ready` in `product.md`. Future fog is allowed.
|
|
28
|
+
|
|
29
|
+
## Boundary
|
|
30
|
+
Never repair engineering artifacts yourself. Product changes invalidate their basis and return authority to Planner. Package-managed `.yaaw-core/system/**` is never a semantic write surface.
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
# Reviewer
|
|
1
|
+
# Reviewer
|
|
2
2
|
|
|
3
3
|
## Authority
|
|
4
|
-
Own independent acceptance judgment and `PASS`, `REPAIR`, `REPLAN`, or `BLOCKED
|
|
4
|
+
Own independent acceptance judgment and exactly one semantic result: `PASS`, `REPAIR`, `REPLAN`, or `BLOCKED`. Reviewer evaluates actual repository work, never Implementer summaries as proof.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
- Require repository `IDENTITY`, repository status `READY`, reconciled state read access, current source revisions, and current v3 PASS verification evidence.
|
|
8
|
-
- Inspect actual repository state rather than Implementer summaries.
|
|
9
|
-
- Tie the immutable review round to exact ticket/spec revisions, repository identity, and the PASS verification evidence ID.
|
|
10
|
-
- Apply changeability rules to concrete engineering impact, not style preference.
|
|
11
|
-
- Write only the immutable review artifact; never write `state.json`.
|
|
12
|
-
- Report the typed result to Orchestrator, which validates and adopts it.
|
|
6
|
+
Use `SYSTEM.md` for shared invariants. Execute only the operation named by the deterministic handoff.
|
|
13
7
|
|
|
14
|
-
##
|
|
15
|
-
-
|
|
16
|
-
- `REPAIR`: bounded implementation defect; contract remains valid.
|
|
17
|
-
- `REPLAN`: contract/architecture materially invalid or insufficient.
|
|
18
|
-
- `BLOCKED`: acceptance cannot be determined because required evidence is unavailable.
|
|
8
|
+
## Operation: inspect-change (`review.inspect-change`)
|
|
9
|
+
Require repository status READY, exact workspace-scoped identity, current product/engineering/spec/ticket revisions, current PASS verification, project rules, and relevant selected modules. Inspect actual diff/files/tests/evidence. Identify every acceptance criterion, failure path, regression, and domain-specific property that must be checked. Repository identity comes only from the canonical engine utility.
|
|
19
10
|
|
|
20
|
-
|
|
11
|
+
## Operation: review-ticket (`review.review-ticket`)
|
|
12
|
+
Ticket frontmatter status is canonical lifecycle admission and must be REVIEW_REQUIRED unless Orchestrator explicitly routes source-current stale-PASS revalidation. Use a fresh semantically independent review context from the Implementer when practical. Inspect actual change, check every acceptance criterion and required verification, inspect relevant regressions/failure/security/UX/accessibility/migration/compatibility behavior, and apply changeability only where concrete engineering impact exists. Then classify and record the review. Return exactly PASS, REPAIR, REPLAN, or BLOCKED.
|
|
13
|
+
|
|
14
|
+
## Operation: classify-findings (`review.classify-findings`)
|
|
15
|
+
PASS means the current contract is satisfied with adequate current evidence. REPAIR means a bounded implementation defect while the contract remains valid. REPLAN means the accepted ticket/spec/engineering contract is materially invalid or insufficient. BLOCKED means required evidence is unavailable. Assign durable `F-NNN` IDs and record category, concrete evidence, expected property, actual behavior/implementation, and bounded action. Style preference alone cannot fail review.
|
|
16
|
+
|
|
17
|
+
## Operation: record-review (`review.record-review`)
|
|
18
|
+
Create the next immutable `.yaaw-core/project/reviews/TASK-NNN-RK.md`. Bind it to ticket/spec revisions, exact reviewed repository identity, and PASS verification evidence IDs. Record findings, verification interpretation, and next action. Never overwrite prior rounds. Reviewer writes only the review artifact; Orchestrator validates it and adopts the exact authorized lifecycle status: PASS->PASS, REPAIR->REPAIR_REQUIRED, REPLAN->REPLAN_REQUIRED, BLOCKED->BLOCKED. Orchestrator may not substitute another semantic outcome.
|
|
19
|
+
|
|
20
|
+
## Boundary
|
|
21
|
+
Reviewer does not author implementation while acting as Reviewer. A later source revision or repository drift can stale prior acceptance without deleting historical review.
|
|
@@ -1,167 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "yaaw.handoff/
|
|
3
|
+
"$id": "yaaw.handoff/v4",
|
|
4
4
|
"type": "object",
|
|
5
|
-
"required": [
|
|
6
|
-
"schema",
|
|
7
|
-
"framework",
|
|
8
|
-
"role",
|
|
9
|
-
"workflow",
|
|
10
|
-
"desired_intent",
|
|
11
|
-
"active_artifact",
|
|
12
|
-
"references",
|
|
13
|
-
"reads",
|
|
14
|
-
"writes",
|
|
15
|
-
"forbidden_writes",
|
|
16
|
-
"revisions",
|
|
17
|
-
"expertise",
|
|
18
|
-
"host_expertise",
|
|
19
|
-
"expected_output",
|
|
20
|
-
"result_vocabulary",
|
|
21
|
-
"repository_requirement",
|
|
22
|
-
"repository",
|
|
23
|
-
"transition_sequence"
|
|
24
|
-
],
|
|
5
|
+
"required": ["schema","framework","role","workflow","operation","instruction","desired_intent","active_artifact","ticket","references","reads","writes","forbidden_writes","revisions","basis","expertise","host_expertise","expected_output","result_vocabulary","repository_requirement","repository"],
|
|
25
6
|
"properties": {
|
|
26
|
-
"schema":
|
|
27
|
-
|
|
28
|
-
},
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
},
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
},
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
},
|
|
48
|
-
"active_artifact": {
|
|
49
|
-
"type": [
|
|
50
|
-
"string",
|
|
51
|
-
"null"
|
|
52
|
-
]
|
|
53
|
-
},
|
|
54
|
-
"references": {
|
|
55
|
-
"type": "array",
|
|
56
|
-
"items": {
|
|
57
|
-
"type": "string"
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
"reads": {
|
|
61
|
-
"type": "array",
|
|
62
|
-
"items": {
|
|
63
|
-
"type": "string"
|
|
64
|
-
},
|
|
65
|
-
"uniqueItems": true
|
|
66
|
-
},
|
|
67
|
-
"writes": {
|
|
68
|
-
"type": "array",
|
|
69
|
-
"items": {
|
|
70
|
-
"type": "string"
|
|
71
|
-
},
|
|
72
|
-
"uniqueItems": true
|
|
73
|
-
},
|
|
74
|
-
"forbidden_writes": {
|
|
75
|
-
"type": "array",
|
|
76
|
-
"items": {
|
|
77
|
-
"type": "string"
|
|
78
|
-
},
|
|
79
|
-
"uniqueItems": true
|
|
80
|
-
},
|
|
81
|
-
"revisions": {
|
|
82
|
-
"type": "object",
|
|
83
|
-
"additionalProperties": {
|
|
84
|
-
"type": "integer",
|
|
85
|
-
"minimum": 0
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
"expertise": {
|
|
89
|
-
"type": "array",
|
|
90
|
-
"items": {
|
|
91
|
-
"type": "string"
|
|
92
|
-
},
|
|
93
|
-
"uniqueItems": true
|
|
94
|
-
},
|
|
95
|
-
"host_expertise": {
|
|
96
|
-
"type": "array",
|
|
97
|
-
"items": {
|
|
98
|
-
"type": "string"
|
|
99
|
-
},
|
|
100
|
-
"uniqueItems": true
|
|
101
|
-
},
|
|
102
|
-
"expected_output": {
|
|
103
|
-
"type": "string",
|
|
104
|
-
"minLength": 1
|
|
105
|
-
},
|
|
106
|
-
"result_vocabulary": {
|
|
107
|
-
"type": "array",
|
|
108
|
-
"items": {
|
|
109
|
-
"type": "string"
|
|
110
|
-
},
|
|
111
|
-
"minItems": 1,
|
|
112
|
-
"uniqueItems": true
|
|
113
|
-
},
|
|
114
|
-
"repository_requirement": {
|
|
115
|
-
"enum": [
|
|
116
|
-
"NONE",
|
|
117
|
-
"INSPECT",
|
|
118
|
-
"IDENTITY"
|
|
119
|
-
]
|
|
120
|
-
},
|
|
121
|
-
"repository": {
|
|
122
|
-
"$ref": "repository-identity.schema.json"
|
|
123
|
-
},
|
|
124
|
-
"transition_sequence": {
|
|
125
|
-
"type": "integer",
|
|
126
|
-
"minimum": 0
|
|
127
|
-
},
|
|
128
|
-
"framework": {
|
|
129
|
-
"type": "object",
|
|
130
|
-
"required": [
|
|
131
|
-
"yaaw_version",
|
|
132
|
-
"system_schema",
|
|
133
|
-
"installation_schema",
|
|
134
|
-
"project_schema",
|
|
135
|
-
"manifest_digest",
|
|
136
|
-
"integrity_status"
|
|
137
|
-
],
|
|
138
|
-
"properties": {
|
|
139
|
-
"yaaw_version": {
|
|
140
|
-
"type": "string",
|
|
141
|
-
"minLength": 1
|
|
142
|
-
},
|
|
143
|
-
"system_schema": {
|
|
144
|
-
"type": "integer",
|
|
145
|
-
"minimum": 1
|
|
146
|
-
},
|
|
147
|
-
"installation_schema": {
|
|
148
|
-
"type": "integer",
|
|
149
|
-
"minimum": 1
|
|
150
|
-
},
|
|
151
|
-
"project_schema": {
|
|
152
|
-
"type": "integer",
|
|
153
|
-
"minimum": 1
|
|
154
|
-
},
|
|
155
|
-
"manifest_digest": {
|
|
156
|
-
"type": "string",
|
|
157
|
-
"minLength": 1
|
|
158
|
-
},
|
|
159
|
-
"integrity_status": {
|
|
160
|
-
"const": "HEALTHY"
|
|
161
|
-
}
|
|
162
|
-
},
|
|
163
|
-
"additionalProperties": false
|
|
164
|
-
}
|
|
7
|
+
"schema":{"const":"yaaw.handoff/v4"},
|
|
8
|
+
"framework":{"type":"object"},
|
|
9
|
+
"role":{"enum":["prd","planner","implementer","reviewer","orchestrator"]},
|
|
10
|
+
"workflow":{"type":"string","minLength":1},
|
|
11
|
+
"operation":{"type":"string","minLength":1},
|
|
12
|
+
"instruction":{"type":"object","required":["document","operation"],"properties":{"document":{"type":"string","minLength":1},"operation":{"type":"string","minLength":1}},"additionalProperties":false},
|
|
13
|
+
"desired_intent":{"type":["string","null"]},
|
|
14
|
+
"active_artifact":{"type":["string","null"]},
|
|
15
|
+
"ticket":{"type":["string","null"]},
|
|
16
|
+
"references":{"type":"array","items":{"type":"string"},"uniqueItems":true},
|
|
17
|
+
"reads":{"type":"array","items":{"type":"string"},"uniqueItems":true},
|
|
18
|
+
"writes":{"type":"array","items":{"type":"string"},"uniqueItems":true},
|
|
19
|
+
"forbidden_writes":{"type":"array","items":{"type":"string"},"uniqueItems":true},
|
|
20
|
+
"revisions":{"type":"object","additionalProperties":{"type":"integer","minimum":0}},
|
|
21
|
+
"basis":{"type":"object","required":["product_digest","engineering_digest","spec_digest","ticket_digest","ticket_status"],"additionalProperties":true},
|
|
22
|
+
"expertise":{"type":"array","items":{"type":"string"},"uniqueItems":true},
|
|
23
|
+
"host_expertise":{"type":"array","items":{"type":"string"},"uniqueItems":true},
|
|
24
|
+
"expected_output":{"type":"string","minLength":1},
|
|
25
|
+
"result_vocabulary":{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true},
|
|
26
|
+
"repository_requirement":{"enum":["NONE","INSPECT","IDENTITY"]},
|
|
27
|
+
"repository":{"$ref":"repository-identity.schema.json"}
|
|
165
28
|
},
|
|
166
|
-
"additionalProperties":
|
|
29
|
+
"additionalProperties":false
|
|
167
30
|
}
|
|
@@ -1,70 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "yaaw.intent/
|
|
3
|
+
"$id": "yaaw.intent/v3",
|
|
4
4
|
"type": "object",
|
|
5
|
-
"required": [
|
|
6
|
-
"schema",
|
|
7
|
-
"source_skill",
|
|
8
|
-
"desired_outcome",
|
|
9
|
-
"requested_workflow",
|
|
10
|
-
"target_artifact",
|
|
11
|
-
"completion_kind",
|
|
12
|
-
"created_from_transition_sequence"
|
|
13
|
-
],
|
|
5
|
+
"required": ["schema","source_skill","desired_outcome","requested_workflow","target_artifact","completion_kind","created_from"],
|
|
14
6
|
"properties": {
|
|
15
|
-
"schema":
|
|
16
|
-
|
|
17
|
-
},
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
},
|
|
22
|
-
"
|
|
23
|
-
"enum": [
|
|
24
|
-
"CONTINUE",
|
|
25
|
-
"CONTINUE_PRODUCT",
|
|
26
|
-
"REVISE_PRODUCT",
|
|
27
|
-
"REFINE_PRODUCT",
|
|
28
|
-
"CONTINUE_PLANNING",
|
|
29
|
-
"PLANNING_REVIEW",
|
|
30
|
-
"CREATE_SPEC",
|
|
31
|
-
"CREATE_TICKETS",
|
|
32
|
-
"IMPLEMENT",
|
|
33
|
-
"REPAIR",
|
|
34
|
-
"REVIEW"
|
|
35
|
-
]
|
|
36
|
-
},
|
|
37
|
-
"requested_workflow": {
|
|
38
|
-
"type": "string",
|
|
39
|
-
"minLength": 1
|
|
40
|
-
},
|
|
41
|
-
"target_artifact": {
|
|
42
|
-
"type": [
|
|
43
|
-
"string",
|
|
44
|
-
"null"
|
|
45
|
-
]
|
|
46
|
-
},
|
|
47
|
-
"completion_kind": {
|
|
48
|
-
"enum": [
|
|
49
|
-
"CONTINUE_UNTIL_STOP",
|
|
50
|
-
"PRODUCT_READY",
|
|
51
|
-
"PRODUCT_REVISION_ADVANCED",
|
|
52
|
-
"PRODUCT_REFINED",
|
|
53
|
-
"PLANNING_READY",
|
|
54
|
-
"PLANNING_READINESS_DECIDED",
|
|
55
|
-
"CURRENT_SPEC_ACCEPTED",
|
|
56
|
-
"CURRENT_TICKETS_REGISTERED",
|
|
57
|
-
"TICKET_REVIEW_REQUIRED",
|
|
58
|
-
"TICKET_REVIEW_APPLIED"
|
|
59
|
-
]
|
|
60
|
-
},
|
|
61
|
-
"created_from_transition_sequence": {
|
|
62
|
-
"type": "integer",
|
|
63
|
-
"minimum": 0
|
|
64
|
-
},
|
|
65
|
-
"note": {
|
|
66
|
-
"type": "string"
|
|
67
|
-
}
|
|
7
|
+
"schema":{"const":"yaaw.intent/v3"},
|
|
8
|
+
"source_skill":{"type":"string","minLength":1},
|
|
9
|
+
"desired_outcome":{"enum":["CONTINUE","CONTINUE_PRODUCT","REVISE_PRODUCT","REFINE_PRODUCT","CONTINUE_PLANNING","PLANNING_REVIEW","CREATE_SPEC","CREATE_TICKETS","IMPLEMENT","REPAIR","REVIEW"]},
|
|
10
|
+
"requested_workflow":{"type":"string","minLength":1},
|
|
11
|
+
"target_artifact":{"type":["string","null"]},
|
|
12
|
+
"completion_kind":{"enum":["CONTINUE_UNTIL_STOP","PRODUCT_READY","PRODUCT_REVISION_ADVANCED","PRODUCT_REFINED","PLANNING_READY","PLANNING_READINESS_DECIDED","CURRENT_SPEC_ACCEPTED","CURRENT_TICKETS_REGISTERED","TICKET_REVIEW_REQUIRED","TICKET_REVIEW_APPLIED"]},
|
|
13
|
+
"created_from":{"type":"object"},
|
|
14
|
+
"note":{"type":"string"}
|
|
68
15
|
},
|
|
69
|
-
"additionalProperties":
|
|
16
|
+
"additionalProperties":false
|
|
70
17
|
}
|
|
@@ -1,168 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "yaaw.observed-state/
|
|
3
|
+
"$id": "yaaw.observed-state/v4",
|
|
4
4
|
"type": "object",
|
|
5
|
-
"required": [
|
|
6
|
-
"schema",
|
|
7
|
-
"framework",
|
|
8
|
-
"repository",
|
|
9
|
-
"transition_sequence",
|
|
10
|
-
"claims",
|
|
11
|
-
"artifacts",
|
|
12
|
-
"inconsistencies",
|
|
13
|
-
"candidate_actions",
|
|
14
|
-
"reconciliation"
|
|
15
|
-
],
|
|
5
|
+
"required": ["schema","framework","repository","derived","reconstructable","artifacts","inconsistencies","candidate_actions","reconciliation"],
|
|
16
6
|
"properties": {
|
|
17
|
-
"schema":
|
|
18
|
-
|
|
19
|
-
},
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
},
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
},
|
|
27
|
-
"claims": {
|
|
28
|
-
"type": "object"
|
|
29
|
-
},
|
|
30
|
-
"artifacts": {
|
|
31
|
-
"type": "object"
|
|
32
|
-
},
|
|
33
|
-
"inconsistencies": {
|
|
34
|
-
"type": "array",
|
|
35
|
-
"items": {
|
|
36
|
-
"type": "string"
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
"candidate_actions": {
|
|
40
|
-
"type": "array",
|
|
41
|
-
"items": {
|
|
42
|
-
"type": "string"
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
"framework": {
|
|
46
|
-
"type": "object",
|
|
47
|
-
"required": [
|
|
48
|
-
"yaaw_version",
|
|
49
|
-
"system_schema",
|
|
50
|
-
"installation_schema",
|
|
51
|
-
"project_schema",
|
|
52
|
-
"manifest_digest",
|
|
53
|
-
"integrity_status",
|
|
54
|
-
"modified",
|
|
55
|
-
"missing",
|
|
56
|
-
"local_overrides",
|
|
57
|
-
"repair_required"
|
|
58
|
-
],
|
|
59
|
-
"properties": {
|
|
60
|
-
"yaaw_version": {
|
|
61
|
-
"type": "string",
|
|
62
|
-
"minLength": 1
|
|
63
|
-
},
|
|
64
|
-
"system_schema": {
|
|
65
|
-
"type": "integer",
|
|
66
|
-
"minimum": 1
|
|
67
|
-
},
|
|
68
|
-
"installation_schema": {
|
|
69
|
-
"type": "integer",
|
|
70
|
-
"minimum": 1
|
|
71
|
-
},
|
|
72
|
-
"project_schema": {
|
|
73
|
-
"type": "integer",
|
|
74
|
-
"minimum": 1
|
|
75
|
-
},
|
|
76
|
-
"manifest_digest": {
|
|
77
|
-
"type": "string",
|
|
78
|
-
"minLength": 1
|
|
79
|
-
},
|
|
80
|
-
"integrity_status": {
|
|
81
|
-
"type": "string",
|
|
82
|
-
"enum": [
|
|
83
|
-
"HEALTHY",
|
|
84
|
-
"MODIFIED",
|
|
85
|
-
"MISSING",
|
|
86
|
-
"LOCAL_OVERRIDE",
|
|
87
|
-
"MANIFEST_INVALID",
|
|
88
|
-
"UNKNOWN",
|
|
89
|
-
"CONTRACT_INCONSISTENT"
|
|
90
|
-
]
|
|
91
|
-
},
|
|
92
|
-
"modified": {
|
|
93
|
-
"type": "array",
|
|
94
|
-
"items": {
|
|
95
|
-
"type": "string"
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
"missing": {
|
|
99
|
-
"type": "array",
|
|
100
|
-
"items": {
|
|
101
|
-
"type": "string"
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
"local_overrides": {
|
|
105
|
-
"type": "array",
|
|
106
|
-
"items": {
|
|
107
|
-
"type": "string"
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
"repair_required": {
|
|
111
|
-
"type": "boolean"
|
|
112
|
-
}
|
|
113
|
-
},
|
|
114
|
-
"additionalProperties": false
|
|
115
|
-
},
|
|
116
|
-
"reconciliation": {
|
|
117
|
-
"anyOf": [
|
|
118
|
-
{
|
|
119
|
-
"type": "null"
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
"type": "object",
|
|
123
|
-
"required": [
|
|
124
|
-
"id",
|
|
125
|
-
"kind",
|
|
126
|
-
"reason"
|
|
127
|
-
],
|
|
128
|
-
"properties": {
|
|
129
|
-
"id": {
|
|
130
|
-
"type": "string"
|
|
131
|
-
},
|
|
132
|
-
"kind": {
|
|
133
|
-
"enum": [
|
|
134
|
-
"STATE",
|
|
135
|
-
"BLOCKED"
|
|
136
|
-
]
|
|
137
|
-
},
|
|
138
|
-
"subject": {
|
|
139
|
-
"type": [
|
|
140
|
-
"string",
|
|
141
|
-
"null"
|
|
142
|
-
]
|
|
143
|
-
},
|
|
144
|
-
"from": {},
|
|
145
|
-
"to": {},
|
|
146
|
-
"reason": {
|
|
147
|
-
"type": "string"
|
|
148
|
-
},
|
|
149
|
-
"workflow": {
|
|
150
|
-
"type": [
|
|
151
|
-
"string",
|
|
152
|
-
"null"
|
|
153
|
-
]
|
|
154
|
-
},
|
|
155
|
-
"evidence": {
|
|
156
|
-
"type": "array",
|
|
157
|
-
"items": {
|
|
158
|
-
"type": "string"
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
"additionalProperties": true
|
|
163
|
-
}
|
|
164
|
-
]
|
|
165
|
-
}
|
|
7
|
+
"schema":{"const":"yaaw.observed-state/v4"},
|
|
8
|
+
"framework":{"type":"object"},
|
|
9
|
+
"repository":{"$ref":"repository-identity.schema.json"},
|
|
10
|
+
"derived":{"type":"object"},
|
|
11
|
+
"reconstructable":{"const":true},
|
|
12
|
+
"artifacts":{"type":"object"},
|
|
13
|
+
"inconsistencies":{"type":"array","items":{"type":"string"}},
|
|
14
|
+
"candidate_actions":{"type":"array","items":{"type":"string"}},
|
|
15
|
+
"reconciliation":{"anyOf":[{"type":"null"},{"type":"object","required":["id","kind","reason"],"properties":{"id":{"type":"string"},"kind":{"enum":["TICKET_STATUS","BLOCKED"]},"subject":{"type":["string","null"]},"from":{},"to":{},"reason":{"type":"string"},"workflow":{"type":["string","null"]},"evidence":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}]}
|
|
166
16
|
},
|
|
167
|
-
"additionalProperties":
|
|
17
|
+
"additionalProperties":false
|
|
168
18
|
}
|