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
|
@@ -4,44 +4,17 @@
|
|
|
4
4
|
"type": "object",
|
|
5
5
|
"required": ["schema","algorithm","status","workspace_scope","git_root_relation","head_commit","dirty","worktree_digest","components","changed_paths","error"],
|
|
6
6
|
"properties": {
|
|
7
|
-
"schema":
|
|
8
|
-
"algorithm":
|
|
9
|
-
"status":
|
|
10
|
-
"workspace_scope":
|
|
11
|
-
"git_root_relation":
|
|
12
|
-
"head_commit":
|
|
13
|
-
"dirty":
|
|
14
|
-
"worktree_digest":
|
|
15
|
-
"components":
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
{
|
|
19
|
-
"type": "object",
|
|
20
|
-
"required": ["status_sha256","unstaged_diff_sha256","staged_diff_sha256","untracked_manifest_sha256"],
|
|
21
|
-
"properties": {
|
|
22
|
-
"status_sha256": {"type": "string"},
|
|
23
|
-
"unstaged_diff_sha256": {"type": "string"},
|
|
24
|
-
"staged_diff_sha256": {"type": "string"},
|
|
25
|
-
"untracked_manifest_sha256": {"type": "string"}
|
|
26
|
-
},
|
|
27
|
-
"additionalProperties": false
|
|
28
|
-
}
|
|
29
|
-
]
|
|
30
|
-
},
|
|
31
|
-
"changed_paths": {
|
|
32
|
-
"type": "array",
|
|
33
|
-
"items": {
|
|
34
|
-
"type": "object",
|
|
35
|
-
"required": ["path","kind"],
|
|
36
|
-
"properties": {
|
|
37
|
-
"path": {"type": "string", "minLength": 1},
|
|
38
|
-
"kind": {"enum": ["tracked","untracked"]},
|
|
39
|
-
"sha256": {"type": "string"}
|
|
40
|
-
},
|
|
41
|
-
"additionalProperties": false
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
"error": {"type": ["string","null"]}
|
|
7
|
+
"schema":{"const":"yaaw.repository-identity/v2"},
|
|
8
|
+
"algorithm":{"type":["string","null"],"enum":["yaaw-worktree-v1","yaaw-worktree-v2","yaaw-worktree-v3",null]},
|
|
9
|
+
"status":{"enum":["READY","UNVERSIONED","UNAVAILABLE","ROOT_MISMATCH","IDENTITY_FAILED"]},
|
|
10
|
+
"workspace_scope":{"type":"string","minLength":1},
|
|
11
|
+
"git_root_relation":{"enum":["same","ancestor","none","unknown"]},
|
|
12
|
+
"head_commit":{"type":["string","null"]},
|
|
13
|
+
"dirty":{"type":["boolean","null"]},
|
|
14
|
+
"worktree_digest":{"type":["string","null"]},
|
|
15
|
+
"components":{"anyOf":[{"type":"null"},{"type":"object","required":["status_sha256","unstaged_diff_sha256","staged_diff_sha256","untracked_manifest_sha256"],"properties":{"status_sha256":{"type":"string"},"unstaged_diff_sha256":{"type":"string"},"staged_diff_sha256":{"type":"string"},"untracked_manifest_sha256":{"type":"string"}},"additionalProperties":false}]},
|
|
16
|
+
"changed_paths":{"type":"array","items":{"type":"object","required":["path","kind"],"properties":{"path":{"type":"string","minLength":1},"kind":{"enum":["tracked","untracked"]},"sha256":{"type":"string"}},"additionalProperties":false}},
|
|
17
|
+
"error":{"type":["string","null"]}
|
|
45
18
|
},
|
|
46
|
-
"additionalProperties":
|
|
19
|
+
"additionalProperties":false
|
|
47
20
|
}
|
|
@@ -6,24 +6,7 @@
|
|
|
6
6
|
"spec_revision": 1,
|
|
7
7
|
"kind": "implementation_verification",
|
|
8
8
|
"result": "PASS",
|
|
9
|
-
"repository": {
|
|
10
|
-
"schema": "yaaw.repository-identity/v2",
|
|
11
|
-
"algorithm": "yaaw-worktree-v2",
|
|
12
|
-
"status": "READY",
|
|
13
|
-
"workspace_scope": ".",
|
|
14
|
-
"git_root_relation": "same",
|
|
15
|
-
"head_commit": "COMMIT",
|
|
16
|
-
"dirty": false,
|
|
17
|
-
"worktree_digest": "sha256:DIGEST",
|
|
18
|
-
"components": {
|
|
19
|
-
"status_sha256": "HASH",
|
|
20
|
-
"unstaged_diff_sha256": "HASH",
|
|
21
|
-
"staged_diff_sha256": "HASH",
|
|
22
|
-
"untracked_manifest_sha256": "HASH"
|
|
23
|
-
},
|
|
24
|
-
"changed_paths": [],
|
|
25
|
-
"error": null
|
|
26
|
-
},
|
|
9
|
+
"repository": {"schema":"yaaw.repository-identity/v2","algorithm":"yaaw-worktree-v3","status":"READY","workspace_scope":".","git_root_relation":"same","head_commit":"COMMIT","dirty":false,"worktree_digest":"sha256:DIGEST","components":{"status_sha256":"HASH","unstaged_diff_sha256":"HASH","staged_diff_sha256":"HASH","untracked_manifest_sha256":"HASH"},"changed_paths":[],"error":null},
|
|
27
10
|
"workflow": "implementation.verify-ticket",
|
|
28
11
|
"commands": [],
|
|
29
12
|
"checks": []
|
|
@@ -1,39 +1,23 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schema": "yaaw.handoff/
|
|
3
|
-
"framework": {
|
|
4
|
-
"yaaw_version": "VERSION",
|
|
5
|
-
"system_schema": 3,
|
|
6
|
-
"installation_schema": 3,
|
|
7
|
-
"project_schema": 2,
|
|
8
|
-
"manifest_digest": "sha256:MANIFEST",
|
|
9
|
-
"integrity_status": "HEALTHY"
|
|
10
|
-
},
|
|
2
|
+
"schema": "yaaw.handoff/v4",
|
|
3
|
+
"framework": {},
|
|
11
4
|
"role": "implementer",
|
|
12
5
|
"workflow": "implementation.implement-ticket",
|
|
6
|
+
"operation": "implement-ticket",
|
|
7
|
+
"instruction": {"document":".yaaw-core/system/roles/implementer.md","operation":"implement-ticket"},
|
|
13
8
|
"desired_intent": "IMPLEMENT",
|
|
14
|
-
"active_artifact": "
|
|
9
|
+
"active_artifact": "ticket",
|
|
10
|
+
"ticket": "TASK-000",
|
|
15
11
|
"references": [],
|
|
16
12
|
"reads": [],
|
|
17
13
|
"writes": [],
|
|
18
14
|
"forbidden_writes": [],
|
|
19
|
-
"revisions": {"product":
|
|
15
|
+
"revisions": {"product":1,"engineering":1,"spec":1,"ticket":1},
|
|
16
|
+
"basis": {"product_digest":null,"engineering_digest":null,"spec_digest":null,"ticket_digest":null,"ticket_status":"READY"},
|
|
20
17
|
"expertise": [],
|
|
21
18
|
"host_expertise": [],
|
|
22
|
-
"expected_output": "implementation evidence",
|
|
23
|
-
"result_vocabulary": ["VERIFICATION_PASS","
|
|
19
|
+
"expected_output": "bounded implementation and evidence",
|
|
20
|
+
"result_vocabulary": ["VERIFICATION_PASS","BLOCKED"],
|
|
24
21
|
"repository_requirement": "IDENTITY",
|
|
25
|
-
"repository": {
|
|
26
|
-
"schema": "yaaw.repository-identity/v2",
|
|
27
|
-
"algorithm": "yaaw-worktree-v2",
|
|
28
|
-
"status": "READY",
|
|
29
|
-
"workspace_scope": ".",
|
|
30
|
-
"git_root_relation": "same",
|
|
31
|
-
"head_commit": "COMMIT",
|
|
32
|
-
"dirty": false,
|
|
33
|
-
"worktree_digest": "sha256:DIGEST",
|
|
34
|
-
"components": {"status_sha256": "HASH", "unstaged_diff_sha256": "HASH", "staged_diff_sha256": "HASH", "untracked_manifest_sha256": "HASH"},
|
|
35
|
-
"changed_paths": [],
|
|
36
|
-
"error": null
|
|
37
|
-
},
|
|
38
|
-
"transition_sequence": 0
|
|
22
|
+
"repository": {"schema":"yaaw.repository-identity/v2","algorithm":"yaaw-worktree-v3","status":"READY","workspace_scope":".","git_root_relation":"same","head_commit":"COMMIT","dirty":false,"worktree_digest":"sha256:DIGEST","components":{"status_sha256":"HASH","unstaged_diff_sha256":"HASH","staged_diff_sha256":"HASH","untracked_manifest_sha256":"HASH"},"changed_paths":[],"error":null}
|
|
39
23
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schema": "yaaw.intent/
|
|
2
|
+
"schema": "yaaw.intent/v3",
|
|
3
3
|
"source_skill": "yaaw-orchestrator",
|
|
4
4
|
"desired_outcome": "CONTINUE",
|
|
5
5
|
"requested_workflow": "orchestration.route",
|
|
6
6
|
"target_artifact": null,
|
|
7
7
|
"completion_kind": "CONTINUE_UNTIL_STOP",
|
|
8
|
-
"
|
|
8
|
+
"created_from": {}
|
|
9
9
|
}
|
|
@@ -1,32 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schema": "yaaw.observed-state/
|
|
3
|
-
"framework": {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"project_schema": 2,
|
|
8
|
-
"manifest_digest": "sha256:MANIFEST",
|
|
9
|
-
"integrity_status": "HEALTHY",
|
|
10
|
-
"modified": [],
|
|
11
|
-
"missing": [],
|
|
12
|
-
"local_overrides": [],
|
|
13
|
-
"repair_required": false
|
|
14
|
-
},
|
|
15
|
-
"repository": {
|
|
16
|
-
"schema": "yaaw.repository-identity/v2",
|
|
17
|
-
"algorithm": null,
|
|
18
|
-
"status": "UNVERSIONED",
|
|
19
|
-
"workspace_scope": ".",
|
|
20
|
-
"git_root_relation": "none",
|
|
21
|
-
"head_commit": null,
|
|
22
|
-
"dirty": null,
|
|
23
|
-
"worktree_digest": null,
|
|
24
|
-
"components": null,
|
|
25
|
-
"changed_paths": [],
|
|
26
|
-
"error": "workspace is not versioned"
|
|
27
|
-
},
|
|
28
|
-
"transition_sequence": 0,
|
|
29
|
-
"claims": {},
|
|
2
|
+
"schema": "yaaw.observed-state/v4",
|
|
3
|
+
"framework": {},
|
|
4
|
+
"repository": {"schema":"yaaw.repository-identity/v2","algorithm":null,"status":"UNVERSIONED","workspace_scope":".","git_root_relation":"none","head_commit":null,"dirty":null,"worktree_digest":null,"components":null,"changed_paths":[],"error":"workspace is not versioned"},
|
|
5
|
+
"derived": {},
|
|
6
|
+
"reconstructable": true,
|
|
30
7
|
"artifacts": {},
|
|
31
8
|
"inconsistencies": [],
|
|
32
9
|
"candidate_actions": [],
|
|
@@ -7,7 +7,7 @@ ticket_revision: 1
|
|
|
7
7
|
spec_revision: 1
|
|
8
8
|
repository:
|
|
9
9
|
schema: yaaw.repository-identity/v2
|
|
10
|
-
algorithm: yaaw-worktree-
|
|
10
|
+
algorithm: yaaw-worktree-v3
|
|
11
11
|
status: READY
|
|
12
12
|
workspace_scope: .
|
|
13
13
|
git_root_relation: same
|
|
@@ -28,7 +28,7 @@ evidence: []
|
|
|
28
28
|
## Findings
|
|
29
29
|
|
|
30
30
|
## Changeability assessment
|
|
31
|
-
Record only materially relevant principles. Use PASS, FAIL, or NOT_APPLICABLE;
|
|
31
|
+
Record only materially relevant principles. Use PASS, FAIL, or NOT_APPLICABLE; blocking failures require concrete engineering impact.
|
|
32
32
|
|
|
33
33
|
## Verification
|
|
34
34
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yaaw-se",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.13",
|
|
4
4
|
"description": "Artifact-first autonomous software engineering workflow installer.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -28,7 +28,10 @@
|
|
|
28
28
|
"prepack": "npm run test && npm run build",
|
|
29
29
|
"smoke:tarball": "npm run build && node scripts/smoke_npm_tarball.mjs",
|
|
30
30
|
"smoke:update": "npm run build && node scripts/smoke_npm_update.mjs",
|
|
31
|
-
"validate:schemas": "node scripts/validate_schemas.mjs"
|
|
31
|
+
"validate:schemas": "node scripts/validate_schemas.mjs",
|
|
32
|
+
"validate:contracts": "node scripts/validate_contracts.mjs .yaaw-core/system skills",
|
|
33
|
+
"smoke:dispatch-update": "npm run build && node scripts/smoke_dispatch_update.mjs",
|
|
34
|
+
"audit:workflows": "node scripts/audit_workflow_contracts.mjs .yaaw-core/system skills"
|
|
32
35
|
},
|
|
33
36
|
"dependencies": {
|
|
34
37
|
"@clack/prompts": "1.8.1",
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# Artifact model
|
|
2
|
-
|
|
3
|
-
Canonical consumer workspace root is the directory containing the active YAAW installation. Canonical durable **project memory root** is `.yaaw-core/project/`.
|
|
4
|
-
|
|
5
|
-
Ownership is separated under one YAAW root:
|
|
6
|
-
|
|
7
|
-
- `.yaaw-core/system/core/`, `.yaaw-core/system/roles/`, `.yaaw-core/system/workflows/`, `.yaaw-core/system/expertise/`, `.yaaw-core/system/rules/`, `.yaaw-core/system/registries/`, `.yaaw-core/system/schemas/`, `.yaaw-core/system/templates/`, and `.yaaw-core/system/tools/`: 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, future fog, and readiness.
|
|
16
|
-
- `research/RSH-*.md`: bounded external engineering research owned by Planner; research facts are not engineering decisions until promoted through normal planning.
|
|
17
|
-
- `specs/SPEC-*.md`: coherent engineering contracts referencing product/decision revisions.
|
|
18
|
-
- `tickets/TASK-*.md`: bounded implementation contracts.
|
|
19
|
-
- `reviews/TASK-*-R*.md`: immutable review rounds tied to exact source and repository revisions.
|
|
20
|
-
- `evidence/*.json`: machine-readable verification evidence tied to repository identity.
|
|
21
|
-
- `.yaaw-core/project/rules/`: project-specific reusable invariants promoted from real evidence.
|
|
22
|
-
- `state.json`: reconstructable routing cache and last transition provenance.
|
|
23
|
-
|
|
24
|
-
Replaceable runtime artifacts:
|
|
25
|
-
|
|
26
|
-
- `.yaaw-core/runtime/observed-state.json`: observed orchestration snapshot including repository capability.
|
|
27
|
-
- `.yaaw-core/runtime/handoff.json`: exact dispatch contract.
|
|
28
|
-
- `.yaaw-core/runtime/intent.json`: optional desired-outcome cache used while prerequisites are resolved.
|
|
29
|
-
- `.yaaw-core/runtime/dispatch-failures.json`: replaceable per-handoff execution-failure ledger used only for bounded host capability escalation.
|
|
30
|
-
|
|
31
|
-
Installer metadata:
|
|
32
|
-
|
|
33
|
-
- `.yaaw-core/install/manifest.json`: package/integration ownership and version state. It is never semantic project truth.
|
|
34
|
-
|
|
35
|
-
Markdown artifacts use YAML frontmatter for machine-readable identity/revision/status and a human-readable body for durable reasoning. Machine-readable ownership patterns live in `.yaaw-core/system/registries/artifacts.json`.
|
|
36
|
-
|
|
37
|
-
Conversation is never an artifact of record. Package update logic must never treat `.yaaw-core/project/` as replaceable framework content.
|
|
38
|
-
|
|
39
|
-
## Framework immutability
|
|
40
|
-
|
|
41
|
-
Package-managed `.yaaw-core/system/**` content is not a semantic output surface. Normal PRD, Planner, Implementer, Reviewer, and Orchestrator workflows must not modify it. The installation manifest and `.yaaw-core/system/core/framework-integrity.md` define the runtime trust boundary.
|
|
42
|
-
|
|
43
|
-
If package-managed framework bytes drift, semantic orchestration stops before project-state reconciliation. Installer repair may replace package content and runtime caches, but must preserve `.yaaw-core/project/**`.
|
|
@@ -1,21 +0,0 @@
|
|
|
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.
|
|
16
|
-
|
|
17
|
-
## Framework authority
|
|
18
|
-
|
|
19
|
-
Package-managed framework content is governed by `.yaaw-core/system/core/framework-integrity.md`. Semantic roles may report a framework defect but may not edit the framework to remove their own blocker. Installer authority is the only authority that may replace package-managed framework files in a consumer installation.
|
|
20
|
-
|
|
21
|
-
Transition ownership is semantic decision ownership. Physical mutation of `.yaaw-core/project/state.json` is performed by Orchestrator after it verifies the durable output that authorized the transition.
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# Context loading
|
|
2
|
-
|
|
3
|
-
Load the smallest authoritative context needed for the current judgment.
|
|
4
|
-
|
|
5
|
-
## Progressive-disclosure invariant
|
|
6
|
-
Workflow selection is metadata-first. Normal Orchestrator preparation is performed by `.yaaw-core/system/tools/orchestration-runtime.mjs`, which reads only durable metadata and the machine registries needed to produce one typed route/handoff. The Orchestrator consumes that result and **must not preload sibling or downstream workflow bodies**, templates, or expertise merely because they might be needed later.
|
|
7
|
-
|
|
8
|
-
After exactly one workflow is selected:
|
|
9
|
-
1. resolve that workflow through `.yaaw-core/system/registries/workflows.json`;
|
|
10
|
-
2. load its body;
|
|
11
|
-
3. load only handoff-declared/current artifact references and applicable rules;
|
|
12
|
-
4. load selected expertise only after relevance is established;
|
|
13
|
-
5. load a template only when the selected workflow will create that artifact.
|
|
14
|
-
|
|
15
|
-
After durable output, return to routing before opening another workflow contract.
|
|
16
|
-
|
|
17
|
-
## Fresh worker bootstrap
|
|
18
|
-
When an Orchestrator dispatch runs in a fresh host worker, the worker should receive only enough parent context to locate and execute the handoff:
|
|
19
|
-
- resolved workspace root;
|
|
20
|
-
- target semantic role;
|
|
21
|
-
- `.yaaw-core/runtime/handoff.json`;
|
|
22
|
-
- instruction to load the canonical role contract and resolve the workflow through registries;
|
|
23
|
-
- instruction to load only handoff-admitted artifacts/expertise/repository context;
|
|
24
|
-
- instruction not to route another YAAW authority role.
|
|
25
|
-
|
|
26
|
-
Do not copy the parent planning conversation, all project documents, all expertise, all workflows, review history, or a repository dump into a worker prompt. Those are either durable artifacts or discoverable only when admitted by the selected workflow.
|
|
27
|
-
|
|
28
|
-
## Normal semantic context
|
|
29
|
-
```text
|
|
30
|
-
role contract
|
|
31
|
-
+ selected workflow contract
|
|
32
|
-
+ active artifact and revision
|
|
33
|
-
+ directly referenced decisions/research
|
|
34
|
-
+ relevant product constraints
|
|
35
|
-
+ relevant project rules
|
|
36
|
-
+ relevant repository files/diff
|
|
37
|
-
+ selected expertise
|
|
38
|
-
+ prior review finding when repairing
|
|
39
|
-
+ current handoff/repository capability when dispatched
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Do not automatically load every PRD revision, research artifact, ticket, review, expertise module, template, or the full repository.
|
|
43
|
-
|
|
44
|
-
## Canonical artifact discovery
|
|
45
|
-
Exact YAAW reads come from the deterministic handoff and registries. Roles do not grep for alternate YAAW artifact locations.
|
|
46
|
-
|
|
47
|
-
## Handoff freshness
|
|
48
|
-
A handoff binds exact artifact revisions, read/write sets, selected expertise, repository requirement, canonical repository identity, transition sequence, installed YAAW version, installation/project-state schema versions, and manifest digest.
|
|
49
|
-
|
|
50
|
-
Immediately before dispatch, run:
|
|
51
|
-
|
|
52
|
-
```text
|
|
53
|
-
node .yaaw-core/system/tools/orchestration-runtime.mjs --workspace <WORKSPACE_ROOT> --check-handoff
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
Only `HANDOFF_FRESH` may execute. A stale result discards the handoff and returns to orchestration preparation. Runtime handoffs, intent, and observed-state snapshots are coordination caches, not semantic sources of truth.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# Dispatch execution contract
|
|
2
|
-
|
|
3
|
-
Dispatch executes exactly one already-selected semantic handoff.
|
|
4
|
-
|
|
5
|
-
## Canonical rules
|
|
6
|
-
1. Public skills first become durable runtime intent.
|
|
7
|
-
2. Orchestrator validates framework health, applies at most one reconciliation, validates source currency, and persists one exact handoff.
|
|
8
|
-
3. A non-Orchestrator authority executes that handoff using the active host adapter's supported isolation/profile mechanism.
|
|
9
|
-
4. The authority writes its durable semantic output and returns one allowed typed result.
|
|
10
|
-
5. A worker message is an execution signal, not project truth. After success, failure, interruption, or lost response, Orchestrator observes reality again before routing.
|
|
11
|
-
|
|
12
|
-
## Public invocation
|
|
13
|
-
Direct public invocation does not bypass Orchestrator. For example, `yaaw-implement` means desired outcome `IMPLEMENT`; missing product/planning/spec/ticket prerequisites are resolved first, and the shortcut completes at `REVIEW_REQUIRED` rather than automatically reviewing.
|
|
14
|
-
|
|
15
|
-
## Fresh-context invariant
|
|
16
|
-
An orchestrated Implementer execution context must never become the Reviewer execution context for the same work. A dead worker is not retried blindly; durable progress is inspected first.
|
|
17
|
-
|
|
18
|
-
## Authority execution profile fidelity invariant
|
|
19
|
-
Provider/model execution selection belongs to the active host adapter, but changing execution mechanism may not silently change the configured effective authority profile.
|
|
20
|
-
|
|
21
|
-
- `HOST_INHERIT` remains symbolic; unknown inherited model/reasoning values are never guessed.
|
|
22
|
-
- If an execution mechanism exists but cannot guarantee the required profile, return `BLOCKED:HOST_EXECUTION_PROFILE_UNAVAILABLE`.
|
|
23
|
-
- If strict isolation is required and no isolated mechanism exists, return `BLOCKED:HOST_ISOLATION_UNAVAILABLE`.
|
|
24
|
-
- A profile/isolation stop before child creation means no authority worker ran and must not increment the execution-failure ledger.
|
|
25
|
-
- Implementer/Reviewer capability fallback preserves the exact semantic role and handoff and is subject to the same profile-fidelity rule.
|
|
26
|
-
|
|
27
|
-
## Provider boundary
|
|
28
|
-
Provider/model mechanics remain adapter-owned. The canonical semantic path is provider-neutral and identical across supported host adapters.
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# Execution context
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
Define one runtime boundary for every YAAW workflow so ambient shell state and provider layout cannot silently change semantics.
|
|
5
|
-
|
|
6
|
-
## Canonical workspace root
|
|
7
|
-
The **workspace root** is the consumer directory that owns the active YAAW installation. Resolve it before repository or application inspection by walking from the provider's current location toward ancestors until `.yaaw-core/install/manifest.json` is found. During recovery of a damaged installation, `.yaaw-core/system/registries/paths.json` may be used as a fallback marker.
|
|
8
|
-
|
|
9
|
-
The process CWD is never authoritative. `.yaaw-core/project/` is project memory, not the workspace root.
|
|
10
|
-
|
|
11
|
-
## Framework integrity
|
|
12
|
-
After resolving the workspace and before semantic project recovery, run only the canonical package-owned integrity gate:
|
|
13
|
-
|
|
14
|
-
```text
|
|
15
|
-
node .yaaw-core/system/tools/framework-integrity.mjs --workspace <WORKSPACE_ROOT>
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Only `HEALTHY` permits semantic routing. Package drift, missing framework files, local framework overrides, or an invalid manifest produce a typed framework stop and invalidate executable handoffs. Orchestrator reports the condition; it never repairs package-managed files itself.
|
|
19
|
-
|
|
20
|
-
There is no second framework-integrity implementation outside `.yaaw-core/system/tools/`.
|
|
21
|
-
|
|
22
|
-
## Deterministic orchestration preparation
|
|
23
|
-
Normal Orchestrator routing uses one deterministic preparation entrypoint:
|
|
24
|
-
|
|
25
|
-
```text
|
|
26
|
-
node .yaaw-core/system/tools/orchestration-runtime.mjs --workspace <WORKSPACE_ROOT>
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
That one invocation performs the framework gate, canonical repository identity, durable metadata inspection, routing, and handoff construction from one basis. The Orchestrator consumes its typed result; it must not reimplement repository hashing, routing precedence, artifact discovery, or handoff serialization in ad-hoc shell/Python code.
|
|
30
|
-
|
|
31
|
-
Compatibility/debug inspection may use `--inspect-only`. Dispatch freshness uses `--check-handoff` immediately before execution.
|
|
32
|
-
|
|
33
|
-
## Repository capability
|
|
34
|
-
- `READY`: repository exists and exact identity is trustworthy.
|
|
35
|
-
- `UNVERSIONED`: valid workspace, no Git repository.
|
|
36
|
-
- `UNAVAILABLE`: Git or host permission unavailable.
|
|
37
|
-
- `ROOT_MISMATCH`: repository/workspace ownership cannot be reconciled.
|
|
38
|
-
- `IDENTITY_FAILED`: repository exists but exact identity failed.
|
|
39
|
-
|
|
40
|
-
## Root-anchored command rule
|
|
41
|
-
Every Git command is explicitly scoped:
|
|
42
|
-
|
|
43
|
-
```text
|
|
44
|
-
git -C <WORKSPACE_ROOT> ...
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
When Git top-level is an ancestor, inspection and identity remain workspace-scoped with `-- .`; unrelated sibling changes must not contaminate the active workspace identity.
|
|
48
|
-
|
|
49
|
-
## Canonical identity execution
|
|
50
|
-
For repository identity, every semantic workflow invokes or consumes output originating from:
|
|
51
|
-
|
|
52
|
-
```text
|
|
53
|
-
node .yaaw-core/system/tools/repository-identity.mjs --workspace <WORKSPACE_ROOT>
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
No role or workflow may independently compute or reserialize `worktree_digest`. Copy the returned repository identity into state, handoff, evidence, and review records.
|
|
57
|
-
|
|
58
|
-
## Workflow requirements
|
|
59
|
-
The machine policy in `.yaaw-core/system/registries/execution-policy.json` assigns one repository requirement to every workflow.
|
|
60
|
-
|
|
61
|
-
Provider adapters point to this contract; Codex, Claude Code, Gemini CLI, and Cline do not fork repository semantics.
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# Framework integrity contract
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
Keep autonomous project execution inside an immutable package boundary. Package-managed YAAW framework semantics are inputs to consumer workflows, never workflow outputs.
|
|
5
|
-
|
|
6
|
-
## Ownership classes
|
|
7
|
-
Package-managed framework content is everything under `.yaaw-core/system/**`, including core contracts, roles, workflows, expertise, shared rules, registries, schemas, templates, and tools.
|
|
8
|
-
|
|
9
|
-
The installer owns replacement of those files and records their package hashes in `.yaaw-core/install/manifest.json`.
|
|
10
|
-
|
|
11
|
-
Project-owned durable semantics live under `.yaaw-core/project/**`. Replaceable coordination lives under `.yaaw-core/runtime/**`.
|
|
12
|
-
|
|
13
|
-
## Runtime invariant
|
|
14
|
-
PRD, Planner, Implementer, Reviewer, and Orchestrator must never intentionally create, edit, delete, rename, or weaken package-managed framework content during normal consumer execution.
|
|
15
|
-
|
|
16
|
-
A role discovering a broken framework contract reports it. It does not repair the governing contract that constrained it.
|
|
17
|
-
|
|
18
|
-
Temporary framework edits are forbidden. Restoring the bytes later does not make intermediate execution trustworthy.
|
|
19
|
-
|
|
20
|
-
## Integrity gate
|
|
21
|
-
Before semantic reconciliation or dispatch, Orchestrator runs:
|
|
22
|
-
|
|
23
|
-
```text
|
|
24
|
-
node .yaaw-core/system/tools/framework-integrity.mjs --workspace <WORKSPACE_ROOT>
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Allowed runtime status is exactly `HEALTHY`.
|
|
28
|
-
|
|
29
|
-
The following statuses stop semantic routing:
|
|
30
|
-
|
|
31
|
-
- `MODIFIED`
|
|
32
|
-
- `MISSING`
|
|
33
|
-
- `LOCAL_OVERRIDE`
|
|
34
|
-
- `MANIFEST_INVALID`
|
|
35
|
-
- `UNKNOWN`
|
|
36
|
-
|
|
37
|
-
A framework-integrity stop does not authorize a ticket lifecycle transition. It invalidates executable handoffs and requires installer repair/update before orchestration resumes.
|
|
38
|
-
|
|
39
|
-
## Typed failures
|
|
40
|
-
Use:
|
|
41
|
-
|
|
42
|
-
- `FRAMEWORK_INTEGRITY_VIOLATION` when package-managed bytes differ from the installation manifest.
|
|
43
|
-
- `FRAMEWORK_INTEGRITY_UNKNOWN` when integrity cannot be established safely.
|
|
44
|
-
- `FRAMEWORK_CONTRACT_INCONSISTENCY` when intact canonical package contracts contradict one another.
|
|
45
|
-
|
|
46
|
-
These are installation/runtime trust failures, not ticket states.
|
|
47
|
-
|
|
48
|
-
## Repair authority
|
|
49
|
-
Orchestrator may recommend installer repair, but only installer authority may replace package-managed files.
|
|
50
|
-
|
|
51
|
-
The safe repair pattern is backup-and-replace. Package update/modify/repair invalidates replaceable runtime handoff/observation/intent caches so no dispatch survives a framework basis change:
|
|
52
|
-
|
|
53
|
-
```text
|
|
54
|
-
npx yaaw-se install --action repair --conflict-policy backup-replace --yes
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Repair preserves `.yaaw-core/project/**`, restores package-managed framework content, and commits installer metadata only after verification.
|
|
58
|
-
|
|
59
|
-
## No self-exemption
|
|
60
|
-
No role, workflow, expertise module, project rule, handoff, or runtime observation may weaken or override this contract during consumer execution.
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# Invalidation propagation
|
|
2
|
-
|
|
3
|
-
Prior reviews remain immutable historical evidence; current authority may become STALE without rewriting history.
|
|
4
|
-
|
|
5
|
-
## Contract staleness
|
|
6
|
-
For executable ticket states `READY`, `IN_PROGRESS`, `REVIEW_REQUIRED`, `REPAIR_REQUIRED`, and `PASS`, compare ticket product/engineering/spec revisions to current adopted sources before dispatch. Stable causes are `PRODUCT_SOURCE_STALE`, `ENGINEERING_SOURCE_STALE`, `SPEC_SOURCE_STALE`, `TICKET_SOURCE_STALE`, and `CONTRACT_INVALIDATED`. Their route is read from `routing-policy.json`; the current contract route is `REPLAN_REQUIRED`, and Orchestrator does not hard-code a second destination.
|
|
7
|
-
|
|
8
|
-
## Acceptance staleness
|
|
9
|
-
When source meaning remains current but current PASS verification/review repository identity is missing, stale, or legacy-unverifiable, preserve history and return current lifecycle authority to `REVIEW_REQUIRED`. Stable causes are `REVIEW_MISSING`, `REVIEW_REPOSITORY_STALE`, `VERIFICATION_MISSING`, `VERIFICATION_REPOSITORY_STALE`, and `LEGACY_IDENTITY_UNVERIFIABLE`.
|
|
10
|
-
|
|
11
|
-
Repository identity mismatch alone never proves an architecture replan is required.
|
|
12
|
-
|
|
13
|
-
Framework drift is neither contract nor acceptance invalidation. It stops orchestration fail-closed for installer repair.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Role I/O and communication contract
|
|
2
|
-
|
|
3
|
-
YAAW roles communicate through durable artifacts, exact Orchestrator handoffs, and typed results. Roles never privately command peer roles.
|
|
4
|
-
|
|
5
|
-
## Machine truth
|
|
6
|
-
Registries define artifact ownership, role I/O, workflow mapping, execution policy, public intent, reconciliation policy, and exact handoff construction.
|
|
7
|
-
|
|
8
|
-
## Public-entry invariant
|
|
9
|
-
Every public skill is an intent entrypoint. It invokes `orchestration-runtime.mjs --invoke-skill <skill>`; it does not execute semantic role logic directly. Intent may prefer a destination, but it never bypasses framework health, reconciliation, source-current checks, repository policy, or handoff construction.
|
|
10
|
-
|
|
11
|
-
## Communication topology
|
|
12
|
-
```text
|
|
13
|
-
public intent
|
|
14
|
-
-> Orchestrator observes/reconciles
|
|
15
|
-
-> one exact handoff
|
|
16
|
-
-> PRD / Planner / Implementer / Reviewer durable output
|
|
17
|
-
-> Orchestrator observes again
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
Worker text is an execution signal, not project truth. Filesystem access never grants semantic authority.
|
|
21
|
-
|
|
22
|
-
## Host-execution typed stops
|
|
23
|
-
`HOST_EXECUTION_PROFILE_UNAVAILABLE` means an execution mechanism existed, but it could not guarantee the configured authority profile. `HOST_ISOLATION_UNAVAILABLE` means strict isolation was required but unavailable. When either stop happens before child creation, no authority worker ran, so it is not an authority execution failure.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Lifecycle contract
|
|
2
|
-
|
|
3
|
-
YAAW advances only through durable facts adopted by Orchestrator.
|
|
4
|
-
|
|
5
|
-
```text
|
|
6
|
-
product missing/unready -> PRD
|
|
7
|
-
product ready, planning unresolved -> Planner
|
|
8
|
-
planning ready, spec missing -> create/adopt spec
|
|
9
|
-
spec accepted, tickets missing -> create/register tickets
|
|
10
|
-
registered DRAFT + dependencies PASS -> Planner re-evaluates admission
|
|
11
|
-
Planner persists current DRAFT -> READY -> Orchestrator adopts TICKET_ADMISSION
|
|
12
|
-
READY -> implementation_start fact -> IN_PROGRESS
|
|
13
|
-
IN_PROGRESS -> PASS verification fact -> REVIEW_REQUIRED
|
|
14
|
-
REVIEW_REQUIRED -> immutable Reviewer result -> PASS | REPAIR_REQUIRED | REPLAN_REQUIRED | BLOCKED
|
|
15
|
-
REPAIR_REQUIRED -> fresh PASS verification -> REVIEW_REQUIRED
|
|
16
|
-
PASS + scope_status OPEN/UNKNOWN -> Planner
|
|
17
|
-
all current tickets PASS/CANCELLED + scope_status COMPLETE -> COMPLETE
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
One reconciliation is applied per observation cycle; recovery never jumps directly from `READY` to `REVIEW_REQUIRED`. Recovery is interruption-only and must not be used as the fallback for a current `DRAFT` ticket or missing planning admission.
|
|
21
|
-
|
|
22
|
-
## Fresh-context invariant
|
|
23
|
-
Conversation may disappear at any point. Durable artifacts and repository evidence must still identify the correct next boundary.
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# Recovery contract
|
|
2
|
-
|
|
3
|
-
Recovery reconstructs the last trustworthy durable boundary; conversation loss is never permission to repeat semantic work.
|
|
4
|
-
|
|
5
|
-
- Accepted current spec not reflected in state -> adopt exactly that spec; multiple candidates block.
|
|
6
|
-
- Current ticket file absent from state -> register one ticket per reconciliation cycle.
|
|
7
|
-
- `READY` plus valid implementation-start evidence -> `IN_PROGRESS`.
|
|
8
|
-
- `IN_PROGRESS` plus current PASS verification -> `REVIEW_REQUIRED`.
|
|
9
|
-
- `IN_PROGRESS` plus start evidence but no PASS verification -> `implementation.verify-ticket`.
|
|
10
|
-
- `REVIEW_REQUIRED` plus a valid current immutable review that references current PASS verification -> adopt its result before another Reviewer dispatch.
|
|
11
|
-
- `REVIEW_REQUIRED` plus missing/stale/non-PASS implementation verification -> dispatch `implementation.verify-ticket` without rolling lifecycle state backward.
|
|
12
|
-
- `REVIEW_REQUIRED` plus current PASS verification but missing/stale/non-referencing review -> dispatch `review.review-ticket` for a fresh immutable review round.
|
|
13
|
-
- Source drift -> use routing-policy invalidation, normally `REPLAN_REQUIRED`.
|
|
14
|
-
- Source-current acceptance/repository drift -> `REVIEW_REQUIRED`.
|
|
15
|
-
- Missing proof is `BLOCKED` only when no authorized deterministic workflow can safely regenerate or refresh that proof; recoverable proof gaps route to their owning workflow.
|
|
16
|
-
|
|
17
|
-
Each observation applies at most one legal reconciliation and increments transition provenance once.
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# Routing contract
|
|
2
|
-
|
|
3
|
-
Routing chooses exactly one next canonical workflow from observed durable reality. Production semantics live in `.yaaw-core/system/tools/orchestration-engine.mjs`; `orchestration-runtime.mjs` is the filesystem/CLI shell.
|
|
4
|
-
|
|
5
|
-
Before semantic routing:
|
|
6
|
-
1. framework integrity must be `HEALTHY`;
|
|
7
|
-
2. apply at most one highest-priority reconciliation, then observe again;
|
|
8
|
-
3. validate ticket source currency;
|
|
9
|
-
4. enforce repository requirement;
|
|
10
|
-
5. consider public intent only as a destination preference.
|
|
11
|
-
|
|
12
|
-
## Priority
|
|
13
|
-
1. If a ticket is `REPLAN_REQUIRED`, route Planner.
|
|
14
|
-
2. If a ticket is `REPAIR_REQUIRED`, route bounded repair.
|
|
15
|
-
3. If a ticket is `REVIEW_REQUIRED`, route Reviewer unless a valid durable review result must first be adopted.
|
|
16
|
-
4. If a ticket is `IN_PROGRESS`, current PASS verification is adopted; otherwise valid start evidence routes standalone verification, never blind reimplementation.
|
|
17
|
-
5. If a dependency-satisfied ticket is `READY`, route Implementer.
|
|
18
|
-
6. Missing current spec/tickets route Planner prerequisites.
|
|
19
|
-
7. When all current tickets are `PASS`/`CANCELLED`, `scope_status COMPLETE` permits completion; `OPEN` or `UNKNOWN` routes Planner.
|
|
20
|
-
|
|
21
|
-
Intent never skips these rules. `yaaw-implement` from an idea-only project can therefore route PRD -> planning -> spec -> tickets -> implementation while preserving desired outcome IMPLEMENT.
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# State model
|
|
2
|
-
|
|
3
|
-
Canonical project state is `.yaaw-core/project/state.json` using `yaaw.project-state/v2`.
|
|
4
|
-
|
|
5
|
-
State is a routing/adoption ledger, not semantic authority. Ticket frontmatter is admission/history metadata and never directly overrides the reconciled ticket lifecycle value in state. A Planner-owned `DRAFT -> READY` artifact change is instead a candidate durable admission fact: Orchestrator validates current sources, planning readiness, dependency completion, repository identity, and the legal transition before adopting it as `TICKET_ADMISSION`.
|
|
6
|
-
|
|
7
|
-
## State writer
|
|
8
|
-
Orchestrator is the only physical writer of `state.json`. Semantic roles create durable facts: Planner creates engineering/spec/ticket facts, Implementer creates start/verification evidence, Reviewer creates immutable review results. Orchestrator validates and adopts those facts through legal transitions.
|
|
9
|
-
|
|
10
|
-
## Planning completion
|
|
11
|
-
`planning.scope_status` mirrors Planner-owned `engineering.md`: `UNKNOWN`, `OPEN`, or `COMPLETE`. Orchestrator never infers COMPLETE from absence of runnable tickets.
|
|
12
|
-
|
|
13
|
-
## Provenance
|
|
14
|
-
Every adopted mutation increments `transition_sequence` and records subject, from/to, workflow, reason, evidence, and observed commit.
|