@jsonstudio/appsdk-linux-x64-gnu 0.0.0-stage → 0.1.15
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 +8 -2
- package/artifact.json +25 -0
- package/bin/appsdk +0 -0
- package/bin/project-memory +0 -0
- package/package.json +24 -4
- package/skills/appsdk-migration/SKILL.md +429 -0
- package/skills/appsdk-project-governance/SKILL.md +664 -0
- package/skills/appsdk-project-governance/agents/openai.yaml +4 -0
- package/skills/appsdk-project-governance/appsdk-guidance.json +201 -0
- package/skills/appsdk-project-governance/references/authoritative-review-template.md +230 -0
- package/skills/appsdk-project-governance/references/bootstrap-migration.md +482 -0
- package/skills/appsdk-project-governance/references/command-surface.md +111 -0
- package/skills/appsdk-project-governance/references/contracts-and-failures.md +74 -0
- package/skills/appsdk-project-governance/references/development-debug.md +86 -0
- package/skills/appsdk-project-governance/references/goal-prompt.md +69 -0
- package/skills/appsdk-project-governance/references/init-prompts.md +212 -0
- package/skills/appsdk-project-governance/references/process-control-harness.md +162 -0
- package/skills/appsdk-project-governance/references/review-delivery.md +127 -0
- package/skills/appsdk-project-governance/references/state-paths.md +157 -0
- package/skills/appsdk-project-governance/references/subagents-config.md +134 -0
- package/skills/project-memory/SKILL.md +160 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"skill_id": "appsdk-project-governance",
|
|
4
|
+
"guidance_version": "1",
|
|
5
|
+
"rules": [
|
|
6
|
+
{"rule_id": "use-declared-sources", "severity": "forbidden", "description": "Read only rule sources declared by the project contract."},
|
|
7
|
+
{"rule_id": "adjacent-transition", "severity": "forbidden", "description": "Execute only the projected node and adjacent workflow edges."},
|
|
8
|
+
{"rule_id": "evidence-required", "severity": "forbidden", "description": "A passing required step must bind evidence."},
|
|
9
|
+
{"rule_id": "context-drift", "severity": "forbidden", "description": "Revise the plan after project, goal, source, scope, owner, or rule-context drift."},
|
|
10
|
+
{"rule_id": "append-only-history", "severity": "forbidden", "description": "Do not overwrite or delete plan revisions and execution events."},
|
|
11
|
+
{"rule_id": "lifecycle-truth", "severity": "forbidden", "description": "Do not claim lifecycle completion before canonical AppSDK gates pass."},
|
|
12
|
+
{"rule_id": "changed-scope-control-truth", "severity": "forbidden", "description": "New or changed control and configuration behavior must use declared typed control resources, error chains, or project configuration sources, never payloads, metadata, debug logs, or implicit context."},
|
|
13
|
+
{"rule_id": "changed-scope-single-owner", "severity": "forbidden", "description": "New or changed behavior must retain one semantic owner and one implementation, with no duplicate path, fallback, or temporary bypass."},
|
|
14
|
+
{"rule_id": "changed-scope-configured-orchestration", "severity": "forbidden", "description": "Preserve fixed operation/hook/gate boundaries only where the project declares them. Missing required capabilities fail explicitly; never mock success."},
|
|
15
|
+
{"rule_id": "changed-scope-ablation-and-sharing", "severity": "advisory", "description": "Compare deletion, reuse and direct implementation by actual complexity. Optional simplification does not block; concrete quality, safety or ownership regressions remain forbidden."},
|
|
16
|
+
{"rule_id": "historical-architecture-debt", "severity": "advisory", "description": "Report untouched historical violations as recommendations; do not block the candidate unless they enter changed scope or affect safety, ownership, evidence truth, or required delivery."},
|
|
17
|
+
{"rule_id": "project-context-binding", "severity": "warning", "description": "Locate feature and debug work in the declared function and verification maps before implementation."},
|
|
18
|
+
{"rule_id": "debug-notes-required", "severity": "warning", "description": "During debug exploration, append observations, hypotheses, and evidence to the active run notes before resolution."},
|
|
19
|
+
{"rule_id": "map-gate-update", "severity": "advisory", "description": "Update function ownership and verification gates in the same change when the implementation changes them."},
|
|
20
|
+
{"rule_id": "recommended-design", "severity": "warning", "description": "Record requirement, architecture, and detailed-design closure before feature implementation."},
|
|
21
|
+
{"rule_id": "prior-record-search", "severity": "advisory", "description": "Check prior verified successes and failures before repeating exploration."}
|
|
22
|
+
],
|
|
23
|
+
"workflows": [
|
|
24
|
+
{
|
|
25
|
+
"domain": "bootstrap",
|
|
26
|
+
"objective": "Enter AppSDK governance without destroying existing project truth.",
|
|
27
|
+
"entry_node": "prepare",
|
|
28
|
+
"nodes": [
|
|
29
|
+
{"node_id": "prepare", "instruction": "Run prepare and confirm scope, roots, boundaries, and acceptance.", "owner": "project", "evidence": ["preparation-record"]},
|
|
30
|
+
{"node_id": "initialize", "instruction": "Run idempotent initialization for the confirmed project root.", "owner": "project", "evidence": ["initialized-layout"]},
|
|
31
|
+
{"node_id": "baseline_verify", "instruction": "Verify the initialized governance baseline.", "owner": "project", "evidence": ["verify-result"]}
|
|
32
|
+
],
|
|
33
|
+
"edges": [{"from": "prepare", "to": "initialize"}, {"from": "initialize", "to": "baseline_verify"}]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"domain": "migration",
|
|
37
|
+
"objective": "Reconcile or reset legacy governance through an explicit, auditable route.",
|
|
38
|
+
"entry_node": "inspect_legacy",
|
|
39
|
+
"nodes": [
|
|
40
|
+
{"node_id": "inspect_legacy", "instruction": "Inventory old governance truth and disposable runtime state.", "owner": "project", "evidence": ["legacy-inventory"]},
|
|
41
|
+
{"node_id": "choose_route", "instruction": "Choose preserve-and-migrate or the explicitly authorized clean-epoch reset for each named control-plane owner.", "owner": "project", "evidence": ["migration-route"]},
|
|
42
|
+
{"node_id": "apply_route", "instruction": "Execute the canonical AppSDK migration/reset and the separate Collab migration/reset through their respective owners; never substitute one transaction for the other.", "owner": "project", "evidence": ["migration-record"]},
|
|
43
|
+
{"node_id": "migration_verify", "instruction": "Verify the resulting single governance truth.", "owner": "project", "evidence": ["verify-result"]}
|
|
44
|
+
],
|
|
45
|
+
"edges": [{"from": "inspect_legacy", "to": "choose_route"}, {"from": "choose_route", "to": "apply_route"}, {"from": "apply_route", "to": "migration_verify"}]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"domain": "governance-preflight",
|
|
49
|
+
"objective": "Bind goal, module, owner, maps, worktree, and required gates before code work.",
|
|
50
|
+
"entry_node": "goal_scope",
|
|
51
|
+
"nodes": [
|
|
52
|
+
{"node_id": "goal_scope", "instruction": "Confirm objective, scope, acceptance, non-goals, and owner.", "owner": "project", "evidence": ["goal-record"]},
|
|
53
|
+
{"node_id": "architecture_maps", "instruction": "Bind resource, function, mainline, verification, and module maps.", "owner": "project", "evidence": ["map-check"]},
|
|
54
|
+
{"node_id": "owner_worktree", "instruction": "Create the clean owner worktree from latest origin/main.", "owner": "project", "evidence": ["worktree-record"]},
|
|
55
|
+
{"node_id": "preflight_verify", "instruction": "Run the applicable AppSDK and project preflight checks.", "owner": "project", "evidence": ["verify-result"]}
|
|
56
|
+
],
|
|
57
|
+
"edges": [{"from": "goal_scope", "to": "architecture_maps"}, {"from": "architecture_maps", "to": "owner_worktree"}, {"from": "owner_worktree", "to": "preflight_verify"}]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"domain": "develop",
|
|
61
|
+
"objective": "Develop features through project context, proportionate design, exact validation, and verified cleanup.",
|
|
62
|
+
"entry_node": "requirements",
|
|
63
|
+
"nodes": [
|
|
64
|
+
{"node_id": "requirements", "instruction": "Define the user-visible contract, scope, non-goals, acceptance, and required evidence; reuse an existing confirmed decision when present.", "owner": "project", "evidence": ["requirements"]},
|
|
65
|
+
{"node_id": "map_check", "instruction": "Read the declared function and verification maps, bind the owner, allowed and forbidden paths, required gates, and prior records, and note any map entry that the change must add.", "owner": "project", "evidence": ["function-map-binding", "verification-map-binding"]},
|
|
66
|
+
{"node_id": "architecture", "instruction": "For a new project or meaningful cross-module or semantic change, close top-down modules, resources, boundaries, and mainline flow; otherwise record why existing architecture is sufficient.", "owner": "project", "evidence": ["architecture-design"]},
|
|
67
|
+
{"node_id": "detailed_design", "instruction": "When the change introduces non-trivial behavior, close calls, data, errors, and verification mapping before implementation.", "owner": "project", "evidence": ["detailed-design"]},
|
|
68
|
+
{"node_id": "implementation", "instruction": "Implement the smallest change through the mapped owner in a clean owner worktree.", "owner": "project", "evidence": ["source-diff", "worktree-record"]},
|
|
69
|
+
{"node_id": "candidate", "instruction": "Create and bind the exact candidate commit and tree.", "owner": "project", "evidence": ["candidate-record"]},
|
|
70
|
+
{"node_id": "validation", "instruction": "Run focused tests and mapped gates, then add build, install, restart, and same-entry replay only when the change affects those surfaces.", "owner": "project", "evidence": ["validation-record"]},
|
|
71
|
+
{"node_id": "map_update", "instruction": "Update declared function ownership, paths, call edges, and verification gates when the validated change altered them.", "owner": "project", "evidence": ["function-map-binding", "verification-map-binding"]},
|
|
72
|
+
{"node_id": "review", "instruction": "Review the validated candidate against applicable quality, safety, evidence and owner contracts. Block concrete regressions; optional simplification and unrelated historical debt are advisory.", "owner": "project", "evidence": ["architecture-conformance", "review-record"], "reminders": [{"kind": "memory_review", "blocking": false, "command": "project-memory review --run <run-id>"}]},
|
|
73
|
+
{"node_id": "effectiveness", "instruction": "Check effectiveness identity and freshness; reuse valid unchanged candidate evidence and rerun only affected checks on drift.", "owner": "project", "evidence": ["effectiveness-record"]},
|
|
74
|
+
{"node_id": "integration", "instruction": "Integrate on latest main and verify the exact integration tree.", "owner": "project", "evidence": ["mainline-receipt"]},
|
|
75
|
+
{"node_id": "promotion", "instruction": "Compile, publish Active, archive Protected, and freeze when required.", "owner": "project", "evidence": ["freeze-record"]},
|
|
76
|
+
{"node_id": "cleanup", "instruction": "Record actual retained resources and owner or verified authorized removal. Delivery can complete with retention; do not claim Collab resource close before its cleanup requirements pass.", "owner": "project", "evidence": ["cleanup-record"]}
|
|
77
|
+
],
|
|
78
|
+
"edges": [
|
|
79
|
+
{"from": "requirements", "to": "map_check"},
|
|
80
|
+
{"from": "map_check", "to": "architecture"}, {"from": "map_check", "to": "implementation"},
|
|
81
|
+
{"from": "architecture", "to": "detailed_design"}, {"from": "architecture", "to": "implementation"},
|
|
82
|
+
{"from": "detailed_design", "to": "implementation"}, {"from": "implementation", "to": "candidate"},
|
|
83
|
+
{"from": "candidate", "to": "validation"}, {"from": "validation", "to": "map_update"},
|
|
84
|
+
{"from": "validation", "to": "review"}, {"from": "map_update", "to": "review"},
|
|
85
|
+
{"from": "review", "to": "effectiveness"}, {"from": "effectiveness", "to": "integration"},
|
|
86
|
+
{"from": "integration", "to": "promotion"}, {"from": "integration", "to": "cleanup"}, {"from": "promotion", "to": "cleanup"}
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"domain": "debug",
|
|
91
|
+
"objective": "Orient to project truth, record evidence while exploring, and resolve through the unique mapped owner.",
|
|
92
|
+
"entry_node": "orient",
|
|
93
|
+
"nodes": [
|
|
94
|
+
{"node_id": "orient", "instruction": "Read project AGENTS, declared function and verification maps, and existing run notes and records; bind the failing request to an owner and required gates.", "owner": "project", "evidence": ["orientation-record", "function-map-binding", "verification-map-binding"]},
|
|
95
|
+
{"node_id": "explore", "instruction": "Append observations, one active hypothesis, confirmation and falsification signals, and evidence to run notes; reproduce when feasible and locate the first semantic divergence.", "owner": "project", "evidence": ["exploration-record", "debug-notes"]},
|
|
96
|
+
{"node_id": "resolve", "instruction": "After causal evidence, fix the unique mapped owner, add proportionate regression coverage, and update maps or gates when their truth changed.", "owner": "project", "evidence": ["resolution-record", "red-green-test"]},
|
|
97
|
+
{"node_id": "candidate", "instruction": "Create and bind the exact fix candidate.", "owner": "project", "evidence": ["candidate-record"]},
|
|
98
|
+
{"node_id": "validation", "instruction": "Run focused tests and mapped gates, then choose build, install, restart, and original-input replay according to runtime impact.", "owner": "project", "evidence": ["validation-record"]},
|
|
99
|
+
{"node_id": "review", "instruction": "Review the validated fix against applicable quality, safety, evidence and owner contracts. Block concrete regressions; optional simplification and unrelated historical debt are advisory.", "owner": "project", "evidence": ["architecture-conformance", "review-record"], "reminders": [{"kind": "memory_review", "blocking": false, "command": "project-memory review --run <run-id>"}]},
|
|
100
|
+
{"node_id": "integration", "instruction": "Integrate on latest main and verify the exact tree.", "owner": "project", "evidence": ["mainline-receipt"]},
|
|
101
|
+
{"node_id": "cleanup", "instruction": "Record evidence and actual retained resources or verified authorized removal; delivery and resource closure are separate.", "owner": "project", "evidence": ["cleanup-record"]}
|
|
102
|
+
],
|
|
103
|
+
"edges": [
|
|
104
|
+
{"from": "orient", "to": "explore"}, {"from": "explore", "to": "resolve"},
|
|
105
|
+
{"from": "resolve", "to": "candidate"}, {"from": "candidate", "to": "validation"},
|
|
106
|
+
{"from": "validation", "to": "review"}, {"from": "review", "to": "integration"},
|
|
107
|
+
{"from": "integration", "to": "cleanup"}
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"domain": "review",
|
|
112
|
+
"objective": "Admit and review the exact evidence-bound candidate.",
|
|
113
|
+
"entry_node": "review_admission",
|
|
114
|
+
"nodes": [
|
|
115
|
+
{"node_id": "review_admission", "instruction": "Pass AppSDK review admission for the exact candidate.", "owner": "project", "evidence": ["pre-review-validation"]},
|
|
116
|
+
{"node_id": "architecture_review", "instruction": "Run the user-selected or configured review route. Block concrete quality, safety, contract and material structural regressions; optional simplifications are advisory.", "owner": "project", "evidence": ["architecture-conformance", "review-record"], "reminders": [{"kind": "memory_review", "blocking": false, "command": "project-memory review --run <run-id>"}]},
|
|
117
|
+
{"node_id": "unchanged_effectiveness", "instruction": "Replay effectiveness without source drift.", "owner": "project", "evidence": ["effectiveness-record"]}
|
|
118
|
+
],
|
|
119
|
+
"edges": [{"from": "review_admission", "to": "architecture_review"}, {"from": "architecture_review", "to": "unchanged_effectiveness"}]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"domain": "delivery",
|
|
123
|
+
"objective": "Prove the candidate through its real deployed entrypoint.",
|
|
124
|
+
"entry_node": "whitebox",
|
|
125
|
+
"nodes": [
|
|
126
|
+
{"node_id": "whitebox", "instruction": "Run project-owned internal validation.", "owner": "project", "evidence": ["whitebox-evidence"]},
|
|
127
|
+
{"node_id": "build", "instruction": "Build the exact candidate artifact.", "owner": "project", "evidence": ["artifact"]},
|
|
128
|
+
{"node_id": "install", "instruction": "Install the exact artifact into the declared environment.", "owner": "project", "evidence": ["install-receipt"]},
|
|
129
|
+
{"node_id": "restart", "instruction": "Restart the declared runtime when required.", "owner": "project", "evidence": ["restart-receipt"]},
|
|
130
|
+
{"node_id": "blackbox", "instruction": "Replay through the public deployed entrypoint.", "owner": "project", "evidence": ["blackbox-evidence"]},
|
|
131
|
+
{"node_id": "bind_validation", "instruction": "Bind whitebox, artifact, deployment, and blackbox evidence.", "owner": "project", "evidence": ["pre-review-validation"]}
|
|
132
|
+
],
|
|
133
|
+
"edges": [{"from": "whitebox", "to": "build"}, {"from": "build", "to": "install"}, {"from": "build", "to": "restart"}, {"from": "build", "to": "blackbox"}, {"from": "install", "to": "restart"}, {"from": "install", "to": "blackbox"}, {"from": "restart", "to": "blackbox"}, {"from": "blackbox", "to": "bind_validation"}]
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"domain": "communication-recovery",
|
|
137
|
+
"objective": "Restore communication after an exact route, identity, daemon, or transport failure and prove the original native path again.",
|
|
138
|
+
"entry_node": "preserve_error",
|
|
139
|
+
"nodes": [
|
|
140
|
+
{"node_id": "preserve_error", "instruction": "Persist the exact error, durable IDs, source commit, installed binary, daemon PID/socket, and current task/bug binding; do not classify ACK, notification acceptance, health, or timeout as delivery.", "owner": "project", "evidence": ["communication-failure-record"]},
|
|
141
|
+
{"node_id": "inspect_state", "instruction": "Run `collab context` once and read the returned identity, route, daemon, task, inbox, and authority state. If the daemon is explicitly down or context returns a runtime error, preserve the exact error and stop; daemon maintenance is human-authorized.", "owner": "project", "evidence": ["communication-state"]},
|
|
142
|
+
{"node_id": "recover_route", "instruction": "If context returns `required_fields`, supply only those real facts once with `collab context --provide '<JSON>'`. The supplement may contain only requested `session_id`, `thread_id`, `endpoint`, or `namespace` facts; it never supplies a worker, approval, token, route, or binding. The daemon owns identity creation, selection, recovery, registration, route publication, and lease restoration. Do not choose or hunt a worker and do not run a separate recovery command.", "owner": "project", "evidence": ["recovery-receipt"]},
|
|
143
|
+
{"node_id": "verify_route", "instruction": "Use the snapshot returned by context or its one factual supplement. Continue only when it is registered and the target route is live; otherwise preserve the exact failure and stop.", "owner": "project", "evidence": ["recovered-route"]},
|
|
144
|
+
{"node_id": "replay_native", "instruction": "Replay the same native target through the installed binary and record the target result item; queue acceptance or a daemon health response alone is insufficient.", "owner": "project", "evidence": ["native-target-result"]},
|
|
145
|
+
{"node_id": "consume_receipt", "instruction": "Consume the durable receipt for the target result through the canonical receive/consume operation; read-only inspection alone does not close. Update the bound bug or feature record and close only when the result and receipt evidence are present.", "owner": "project", "evidence": ["durable-receipt", "issue-update"]}
|
|
146
|
+
],
|
|
147
|
+
"edges": [
|
|
148
|
+
{"from": "preserve_error", "to": "inspect_state"},
|
|
149
|
+
{"from": "inspect_state", "to": "recover_route"},
|
|
150
|
+
{"from": "recover_route", "to": "verify_route"},
|
|
151
|
+
{"from": "verify_route", "to": "replay_native"},
|
|
152
|
+
{"from": "replay_native", "to": "consume_receipt"}
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"domain": "integration",
|
|
157
|
+
"objective": "Merge only an exact candidate verified against latest main.",
|
|
158
|
+
"entry_node": "refresh_main",
|
|
159
|
+
"nodes": [
|
|
160
|
+
{"node_id": "refresh_main", "instruction": "Fetch latest origin/main and refresh the integration base.", "owner": "project", "evidence": ["main-base"]},
|
|
161
|
+
{"node_id": "integration_verify", "instruction": "Verify the exact integrated tree and affected gates.", "owner": "project", "evidence": ["integration-record"]},
|
|
162
|
+
{"node_id": "merge_push", "instruction": "Merge and push through the protected mainline route.", "owner": "project", "evidence": ["merge-record"]},
|
|
163
|
+
{"node_id": "remote_receipt", "instruction": "Observe the remote main ref and bind its receipt.", "owner": "project", "evidence": ["mainline-receipt"]}
|
|
164
|
+
],
|
|
165
|
+
"edges": [{"from": "refresh_main", "to": "integration_verify"}, {"from": "integration_verify", "to": "merge_push"}, {"from": "merge_push", "to": "remote_receipt"}]
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"domain": "promotion",
|
|
169
|
+
"objective": "Turn a verified mainline source into immutable consumable output.",
|
|
170
|
+
"entry_node": "regression",
|
|
171
|
+
"nodes": [
|
|
172
|
+
{"node_id": "regression", "instruction": "Run and bind the required merged-source regression suite.", "owner": "project", "evidence": ["regression-report"]},
|
|
173
|
+
{"node_id": "compile", "instruction": "Compile the canonical merged project artifact.", "owner": "project", "evidence": ["compiled-artifact"]},
|
|
174
|
+
{"node_id": "publish", "instruction": "Publish the immutable Active artifact.", "owner": "project", "evidence": ["promotion-record"]}
|
|
175
|
+
],
|
|
176
|
+
"edges": [{"from": "regression", "to": "compile"}, {"from": "compile", "to": "publish"}]
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"domain": "freeze",
|
|
180
|
+
"objective": "Protect the exact published source, contracts, and artifact.",
|
|
181
|
+
"entry_node": "archive",
|
|
182
|
+
"nodes": [
|
|
183
|
+
{"node_id": "archive", "instruction": "Create the canonical Protected archive.", "owner": "project", "evidence": ["protected-archive"]},
|
|
184
|
+
{"node_id": "freeze_record", "instruction": "Bind source, artifact, API, regression, and promotion truth.", "owner": "project", "evidence": ["freeze-record"]},
|
|
185
|
+
{"node_id": "freeze_verify", "instruction": "Verify Active and Protected immutability.", "owner": "project", "evidence": ["verify-result"]}
|
|
186
|
+
],
|
|
187
|
+
"edges": [{"from": "archive", "to": "freeze_record"}, {"from": "freeze_record", "to": "freeze_verify"}]
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"domain": "cleanup",
|
|
191
|
+
"objective": "Release only resources whose delivery and retention evidence is complete.",
|
|
192
|
+
"entry_node": "cleanup_record",
|
|
193
|
+
"nodes": [
|
|
194
|
+
{"node_id": "cleanup_record", "instruction": "Record retained evidence and disposable state.", "owner": "project", "evidence": ["cleanup-record"]},
|
|
195
|
+
{"node_id": "remove_worktree", "instruction": "Remove the merged clean owner worktree and branch.", "owner": "project", "evidence": ["worktree-removal"]},
|
|
196
|
+
{"node_id": "release_claim", "instruction": "Release the task claim after worktree cleanup.", "owner": "project", "evidence": ["claim-release"]}
|
|
197
|
+
],
|
|
198
|
+
"edges": [{"from": "cleanup_record", "to": "remove_worktree"}, {"from": "remove_worktree", "to": "release_claim"}]
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# Authoritative Requirement Review Template
|
|
2
|
+
|
|
3
|
+
This is the AppSDK-owned source template for a review packet. It defines the
|
|
4
|
+
fixed SDK review duties and the project facts that an executing agent must
|
|
5
|
+
load or provide. It is not a requirement store, an authorization service, a
|
|
6
|
+
runtime command, or a second review schema.
|
|
7
|
+
|
|
8
|
+
The SDK bundle distributes this source as an installed resource. The user's
|
|
9
|
+
explicit conversation instruction authorizes the specified change.
|
|
10
|
+
|
|
11
|
+
## Authority and roles
|
|
12
|
+
|
|
13
|
+
| Artifact | Authority |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| Review procedure and fixed reviewer duties | AppSDK review governance owner, using this template |
|
|
16
|
+
| Effective project requirement, original text, version, and change history | Project requirement owner and its declared authoritative source |
|
|
17
|
+
| Candidate, scope, design, implementation, and author evidence | Task author |
|
|
18
|
+
| Requirement change authorization | The user's explicit instruction in the conversation, preserved with its source |
|
|
19
|
+
| Review findings | Independent reviewer |
|
|
20
|
+
| Final admission decision | Existing AppSDK review controller or gate, using the reviewer's evidence |
|
|
21
|
+
|
|
22
|
+
An executing agent may assemble project facts and evidence references. It must
|
|
23
|
+
not create a user instruction or edit this template for a task. It may transcribe
|
|
24
|
+
the actual user instruction and source into the requirement change record. A reviewer may report that
|
|
25
|
+
authorization is absent, invalid, or unreadable. A reviewer must not approve a
|
|
26
|
+
requirement change for the user.
|
|
27
|
+
|
|
28
|
+
## Fixed SDK obligations
|
|
29
|
+
|
|
30
|
+
The executing agent must satisfy these duties before dispatch:
|
|
31
|
+
|
|
32
|
+
1. Read the effective requirement from the project-declared authoritative
|
|
33
|
+
source and record its exact identity and version.
|
|
34
|
+
2. Preserve the user's original requirement text and acceptance criteria. A
|
|
35
|
+
plan, design, code summary, test result, or author message cannot replace
|
|
36
|
+
them.
|
|
37
|
+
3. Load the prior reviewed version when a change is claimed. Record the exact
|
|
38
|
+
user change instruction and source for every changed, replaced, revoked, or
|
|
39
|
+
removed requirement item.
|
|
40
|
+
4. Bind the packet to the exact review stage, candidate, base, scope, allowed
|
|
41
|
+
paths, forbidden paths, and applicable evidence.
|
|
42
|
+
5. Map every applicable requirement item to its design or implementation
|
|
43
|
+
reference and to the available stage evidence.
|
|
44
|
+
6. Leave missing, conflicting, or unreadable required sources visible. Do not
|
|
45
|
+
fill the gap with an agent-authored interpretation.
|
|
46
|
+
7. Reuse the backend-supplied JSON output contract and the existing AppSDK
|
|
47
|
+
EvidenceRecord and ReviewRecord contracts. Do not add a local review schema
|
|
48
|
+
or a second evidence store.
|
|
49
|
+
8. For a design review, provide the design, DAG, owner/path mapping, capability
|
|
50
|
+
evidence, and planned acceptance path. Do not require tests for code that is
|
|
51
|
+
not implemented yet.
|
|
52
|
+
9. For an architecture review, provide the exact candidate and the author's
|
|
53
|
+
applicable development, E2E, black-box, runtime, and side-effect evidence.
|
|
54
|
+
A design statement cannot replace executed behavior evidence.
|
|
55
|
+
10. State that the reviewer is independent. The author must not write the
|
|
56
|
+
reviewer's finding or admission decision.
|
|
57
|
+
|
|
58
|
+
The reviewer must independently read the declared sources, compare each
|
|
59
|
+
applicable item with the current version and any change authorization, and
|
|
60
|
+
record the requirement version plus the item-to-design/implementation/evidence
|
|
61
|
+
mapping. The reviewer cannot rely on the packet's transcription as proof.
|
|
62
|
+
|
|
63
|
+
For a project with an established requirement ledger, load all effective items
|
|
64
|
+
and their history from `.appsdk/requirements.json` through `appsdk requirements
|
|
65
|
+
show` and `history`. The task goal's `requirements_version` is a reference to
|
|
66
|
+
the ledger version. The SDK review context supplies the complete ledger under
|
|
67
|
+
`long_term_requirements`; an author must not replace it with selected items.
|
|
68
|
+
Compare the recorded user instruction with its conversation source and the
|
|
69
|
+
previous requirement version. Conversation authorization is sufficient; do not
|
|
70
|
+
require biometric authentication, signatures, or an external identity service.
|
|
71
|
+
|
|
72
|
+
## Agent-filled review packet
|
|
73
|
+
|
|
74
|
+
Copy the packet below into the review dispatch. Replace every placeholder with
|
|
75
|
+
observed project facts. Keep an unavailable field as `not available` with its
|
|
76
|
+
reason and evidence. Do not invent a command, path, version, or approval.
|
|
77
|
+
|
|
78
|
+
```markdown
|
|
79
|
+
# Authoritative Requirement Review Packet
|
|
80
|
+
|
|
81
|
+
## 1. Review identity
|
|
82
|
+
|
|
83
|
+
- Stage: design | architecture
|
|
84
|
+
- AppSDK architecture context_id (exact public review-context output):
|
|
85
|
+
- Architecture observation acknowledgement: requirements_review with that context_id and checked: true. With a fixed backend JSON schema, the reviewer records the exact context_id and explicit check in the existing evidence fields; the lifecycle adapter may map that received acknowledgement into the observation. It must not invent a check or add fields to the backend schema. The executing agent must not fill the reviewer's acknowledgement.
|
|
86
|
+
- Project:
|
|
87
|
+
- Task/issue:
|
|
88
|
+
- Requirement owner:
|
|
89
|
+
- Authoritative source owner:
|
|
90
|
+
- Unique read path or reference:
|
|
91
|
+
- Exact source version/revision:
|
|
92
|
+
- Source read result and evidence reference:
|
|
93
|
+
|
|
94
|
+
## 2. Candidate and scope
|
|
95
|
+
|
|
96
|
+
- Review mode: base | commit | uncommitted
|
|
97
|
+
- Candidate commit/tree:
|
|
98
|
+
- Base:
|
|
99
|
+
- Scope paths:
|
|
100
|
+
- Allowed paths:
|
|
101
|
+
- Forbidden paths:
|
|
102
|
+
- Applicable modules/owners:
|
|
103
|
+
- AppSDK candidate/evidence records:
|
|
104
|
+
- Existing ReviewRecord target or reference:
|
|
105
|
+
|
|
106
|
+
## 3. Authoritative requirement
|
|
107
|
+
|
|
108
|
+
- Requirement ID:
|
|
109
|
+
- Effective status:
|
|
110
|
+
- Effective version:
|
|
111
|
+
- User original text:
|
|
112
|
+
- Normative statement:
|
|
113
|
+
- Acceptance criteria:
|
|
114
|
+
- Applicable scope:
|
|
115
|
+
- Source and version evidence:
|
|
116
|
+
|
|
117
|
+
## 4. Applicable item map
|
|
118
|
+
|
|
119
|
+
| Item | Authority version | Requirement text or exact quote | Acceptance | Candidate/design reference | Implementation reference | Stage evidence reference | Reviewer result |
|
|
120
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
121
|
+
| | | | | | | | pending |
|
|
122
|
+
|
|
123
|
+
## 5. Requirement changes
|
|
124
|
+
|
|
125
|
+
- Changed since the prior reviewed version: yes | no
|
|
126
|
+
- Prior version:
|
|
127
|
+
- Current version:
|
|
128
|
+
- Exact user change instruction:
|
|
129
|
+
- User source:
|
|
130
|
+
- Covered requirement items:
|
|
131
|
+
- Items explicitly replaced, revoked, or removed:
|
|
132
|
+
- No-change statement, when applicable:
|
|
133
|
+
- Agent interpretation, if any, and why it is not authorization:
|
|
134
|
+
|
|
135
|
+
If no change is claimed, state: `No requirement change authorization is
|
|
136
|
+
claimed.`
|
|
137
|
+
|
|
138
|
+
## 6. Current-stage evidence
|
|
139
|
+
|
|
140
|
+
### Design review
|
|
141
|
+
|
|
142
|
+
- Design artifact:
|
|
143
|
+
- Design DAG and entry/exit:
|
|
144
|
+
- Owner and affected path binding:
|
|
145
|
+
- Capability and dependency evidence:
|
|
146
|
+
- Planned acceptance and evidence path:
|
|
147
|
+
- Known blockers or unavailable sources:
|
|
148
|
+
|
|
149
|
+
### Architecture review
|
|
150
|
+
|
|
151
|
+
- Exact candidate artifact/build reference:
|
|
152
|
+
- Author development test evidence:
|
|
153
|
+
- Author E2E/public-entry evidence:
|
|
154
|
+
- Black-box success, failure, and side-effect evidence:
|
|
155
|
+
- Install/restart/runtime evidence, when applicable:
|
|
156
|
+
- Evidence freshness and candidate binding:
|
|
157
|
+
- Known blockers or unavailable sources:
|
|
158
|
+
|
|
159
|
+
## 7. Backend and AppSDK record mapping
|
|
160
|
+
|
|
161
|
+
- Backend-supplied JSON schema reference:
|
|
162
|
+
- `contract_version`:
|
|
163
|
+
- `scope.mode`, `scope.commit`, `scope.base`:
|
|
164
|
+
- `module_boundary_evidence[].resources` authority source/version:
|
|
165
|
+
- `module_boundary_evidence[].edges` requirement-to-design/implementation mapping:
|
|
166
|
+
- `module_boundary_evidence[].gates` requirement-to-evidence mapping:
|
|
167
|
+
- AppSDK EvidenceRecord references:
|
|
168
|
+
- AppSDK ReviewRecord reference:
|
|
169
|
+
- Any existing-contract gap:
|
|
170
|
+
|
|
171
|
+
Do not add fields to the supplied backend schema. If the existing AppSDK
|
|
172
|
+
records cannot express a required fact, report the gap to the AppSDK review
|
|
173
|
+
governance owner.
|
|
174
|
+
|
|
175
|
+
## 8. Reviewer instruction
|
|
176
|
+
|
|
177
|
+
Read the authoritative source directly. Verify the original text, version,
|
|
178
|
+
acceptance, change instruction, candidate scope, and stage evidence. Compare
|
|
179
|
+
each applicable item with the current requirement and the prior version. Do not
|
|
180
|
+
use the plan, author summary, current code, or a successful test as a
|
|
181
|
+
replacement for the authoritative requirement.
|
|
182
|
+
|
|
183
|
+
Record the source/version you read and the item-to-design,
|
|
184
|
+
item-to-implementation, and item-to-evidence correspondence in the existing
|
|
185
|
+
backend output fields. Return findings for missing sources, stale versions,
|
|
186
|
+
unauthorized changes, reduced acceptance, missing required evidence, or a
|
|
187
|
+
candidate/scope mismatch. Do not output a verdict. The controller decides.
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Blocking conditions
|
|
191
|
+
|
|
192
|
+
Return a blocking finding when any applicable condition is true:
|
|
193
|
+
|
|
194
|
+
- The authoritative source, effective version, original text, or acceptance
|
|
195
|
+
criteria is missing, unreadable, stale, or internally conflicting.
|
|
196
|
+
- A requirement was changed, replaced, revoked, removed, or given lower
|
|
197
|
+
acceptance without an exact user instruction and source.
|
|
198
|
+
- A requirement change is supported only by an agent-authored summary,
|
|
199
|
+
confirmation field, plan, current implementation, test result, or
|
|
200
|
+
recomputable hash.
|
|
201
|
+
- The candidate, base, scope, paths, or requirement version does not match the
|
|
202
|
+
review material.
|
|
203
|
+
- A design review lacks the applicable design closure or capability evidence.
|
|
204
|
+
- An architecture review lacks the author's applicable public-entry behavior
|
|
205
|
+
evidence for the exact candidate.
|
|
206
|
+
- An applicable requirement item has no design, implementation, or evidence
|
|
207
|
+
mapping.
|
|
208
|
+
- The backend output is missing, invalid, uses a new schema, or cannot be tied
|
|
209
|
+
to the existing AppSDK evidence and ReviewRecord.
|
|
210
|
+
- The packet asks the reviewer to approve a requirement change, edit the
|
|
211
|
+
template, or invent a user instruction.
|
|
212
|
+
|
|
213
|
+
## Stage boundary
|
|
214
|
+
|
|
215
|
+
| Stage | Read | Do not require |
|
|
216
|
+
| --- | --- | --- |
|
|
217
|
+
| Design review | Effective requirements, source/version, change authorization, design, DAG, owner/path binding, capability evidence, planned acceptance | Implemented code, implementation tests, deployed runtime receipts |
|
|
218
|
+
| Architecture review | The same authority material plus exact candidate, author development/E2E evidence, public-entry black-box evidence, and applicable runtime evidence | A new requirement source, an agent-created authorization, or a second review schema |
|
|
219
|
+
|
|
220
|
+
The current stage determines the evidence boundary. Do not promote a design
|
|
221
|
+
statement into architecture evidence. Do not demand future implementation
|
|
222
|
+
evidence during design review.
|
|
223
|
+
|
|
224
|
+
## Limits
|
|
225
|
+
|
|
226
|
+
This template provides a procedure and a packet shape. It does not prove that a
|
|
227
|
+
requirement was authenticated, that the authoritative store is physically
|
|
228
|
+
tamper-proof, or that the template was distributed. Those claims require the
|
|
229
|
+
separate owner, contract, and live evidence. Until then, report them as
|
|
230
|
+
unverified and block only the affected admission path.
|