@tiic-tech/openworkflow 0.1.1 → 0.1.2
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/adapters/codex/src/cleanCodexAdapter.js +4 -1
- package/dist/adapters/codex/src/cleanCodexAdapter.js.map +1 -1
- package/dist/adapters/codex/src/constants.d.ts +1 -0
- package/dist/adapters/codex/src/constants.js +2 -0
- package/dist/adapters/codex/src/constants.js.map +1 -0
- package/dist/adapters/codex/src/generateCommands.js +14 -9
- package/dist/adapters/codex/src/generateCommands.js.map +1 -1
- package/dist/adapters/codex/src/generateSkills.js +13 -0
- package/dist/adapters/codex/src/generateSkills.js.map +1 -1
- package/dist/adapters/codex/src/generatedFiles.js +1 -1
- package/dist/adapters/codex/src/manifest.js +11 -2
- package/dist/adapters/codex/src/manifest.js.map +1 -1
- package/dist/adapters/codex/src/templates.d.ts +0 -1
- package/dist/adapters/codex/src/templates.js +0 -1
- package/dist/adapters/codex/src/templates.js.map +1 -1
- package/dist/adapters/src/registry.d.ts +20 -0
- package/dist/adapters/src/registry.js +81 -0
- package/dist/adapters/src/registry.js.map +1 -0
- package/dist/cli/src/commands/brief.d.ts +46 -0
- package/dist/cli/src/commands/brief.js +294 -0
- package/dist/cli/src/commands/brief.js.map +1 -0
- package/dist/cli/src/commands/check.d.ts +42 -0
- package/dist/cli/src/commands/check.js +326 -0
- package/dist/cli/src/commands/check.js.map +1 -0
- package/dist/cli/src/commands/clean.js +46 -1
- package/dist/cli/src/commands/clean.js.map +1 -1
- package/dist/cli/src/commands/context.d.ts +1 -0
- package/dist/cli/src/commands/context.js +471 -0
- package/dist/cli/src/commands/context.js.map +1 -0
- package/dist/cli/src/commands/doctor.js +122 -12
- package/dist/cli/src/commands/doctor.js.map +1 -1
- package/dist/cli/src/commands/draft.d.ts +1 -0
- package/dist/cli/src/commands/draft.js +175 -0
- package/dist/cli/src/commands/draft.js.map +1 -0
- package/dist/cli/src/commands/gitAutomation.d.ts +1 -0
- package/dist/cli/src/commands/gitAutomation.js +378 -0
- package/dist/cli/src/commands/gitAutomation.js.map +1 -0
- package/dist/cli/src/commands/handoff.d.ts +22 -0
- package/dist/cli/src/commands/handoff.js +122 -0
- package/dist/cli/src/commands/handoff.js.map +1 -0
- package/dist/cli/src/commands/init.js +52 -1
- package/dist/cli/src/commands/init.js.map +1 -1
- package/dist/cli/src/commands/inspect.d.ts +23 -0
- package/dist/cli/src/commands/inspect.js +157 -0
- package/dist/cli/src/commands/inspect.js.map +1 -0
- package/dist/cli/src/commands/register.d.ts +1 -0
- package/dist/cli/src/commands/register.js +251 -0
- package/dist/cli/src/commands/register.js.map +1 -0
- package/dist/cli/src/commands/resume.d.ts +59 -0
- package/dist/cli/src/commands/resume.js +280 -0
- package/dist/cli/src/commands/resume.js.map +1 -0
- package/dist/cli/src/commands/shared.js +6 -2
- package/dist/cli/src/commands/shared.js.map +1 -1
- package/dist/cli/src/commands/summaries.d.ts +1 -0
- package/dist/cli/src/commands/summaries.js +77 -0
- package/dist/cli/src/commands/summaries.js.map +1 -0
- package/dist/cli/src/commands/summarize.d.ts +1 -0
- package/dist/cli/src/commands/summarize.js +316 -0
- package/dist/cli/src/commands/summarize.js.map +1 -0
- package/dist/cli/src/commands/sync.js +135 -12
- package/dist/cli/src/commands/sync.js.map +1 -1
- package/dist/cli/src/commands/validate.js +25 -1
- package/dist/cli/src/commands/validate.js.map +1 -1
- package/dist/cli/src/dev/verifyAgentE2E.d.ts +2 -0
- package/dist/cli/src/dev/verifyAgentE2E.js +391 -0
- package/dist/cli/src/dev/verifyAgentE2E.js.map +1 -0
- package/dist/cli/src/dev/verifyCleanCommand.js +213 -2
- package/dist/cli/src/dev/verifyCleanCommand.js.map +1 -1
- package/dist/cli/src/dev/verifyRuntimeSurface.js +4940 -54
- package/dist/cli/src/dev/verifyRuntimeSurface.js.map +1 -1
- package/dist/cli/src/dev/verifyWorkflowE2E.js +477 -45
- package/dist/cli/src/dev/verifyWorkflowE2E.js.map +1 -1
- package/dist/cli/src/index.js +184 -6
- package/dist/cli/src/index.js.map +1 -1
- package/dist/cli/src/report.d.ts +26 -0
- package/dist/cli/src/report.js +17 -0
- package/dist/cli/src/report.js.map +1 -0
- package/dist/core/src/artifacts/readiness.d.ts +7 -0
- package/dist/core/src/artifacts/readiness.js +240 -0
- package/dist/core/src/artifacts/readiness.js.map +1 -0
- package/dist/core/src/artifacts/registry.d.ts +9 -2
- package/dist/core/src/artifacts/registry.js +687 -60
- package/dist/core/src/artifacts/registry.js.map +1 -1
- package/dist/core/src/commands/registry.js +1425 -146
- package/dist/core/src/commands/registry.js.map +1 -1
- package/dist/core/src/contracts/index.d.ts +1 -1
- package/dist/core/src/fs/index.d.ts +24 -0
- package/dist/core/src/fs/index.js +48 -1
- package/dist/core/src/fs/index.js.map +1 -1
- package/dist/core/src/git/autonomousSimulator.d.ts +46 -0
- package/dist/core/src/git/autonomousSimulator.js +163 -0
- package/dist/core/src/git/autonomousSimulator.js.map +1 -0
- package/dist/core/src/git/branchIdentity.d.ts +19 -0
- package/dist/core/src/git/branchIdentity.js +75 -0
- package/dist/core/src/git/branchIdentity.js.map +1 -0
- package/dist/core/src/git/draftPrPilot.d.ts +47 -0
- package/dist/core/src/git/draftPrPilot.js +196 -0
- package/dist/core/src/git/draftPrPilot.js.map +1 -0
- package/dist/core/src/git/localEvidenceReader.d.ts +21 -0
- package/dist/core/src/git/localEvidenceReader.js +142 -0
- package/dist/core/src/git/localEvidenceReader.js.map +1 -0
- package/dist/core/src/git/localGitAutomation.d.ts +68 -0
- package/dist/core/src/git/localGitAutomation.js +470 -0
- package/dist/core/src/git/localGitAutomation.js.map +1 -0
- package/dist/core/src/git/mergeReadinessCheckpoint.d.ts +31 -0
- package/dist/core/src/git/mergeReadinessCheckpoint.js +110 -0
- package/dist/core/src/git/mergeReadinessCheckpoint.js.map +1 -0
- package/dist/core/src/git/prReadySummary.d.ts +16 -0
- package/dist/core/src/git/prReadySummary.js +144 -0
- package/dist/core/src/git/prReadySummary.js.map +1 -0
- package/dist/core/src/git/remoteReadonlyPlanner.d.ts +60 -0
- package/dist/core/src/git/remoteReadonlyPlanner.js +223 -0
- package/dist/core/src/git/remoteReadonlyPlanner.js.map +1 -0
- package/dist/core/src/onboarding/agentsGuide.d.ts +32 -0
- package/dist/core/src/onboarding/agentsGuide.js +164 -0
- package/dist/core/src/onboarding/agentsGuide.js.map +1 -0
- package/dist/core/src/validators/validateOpenWorkflow.js +1331 -15
- package/dist/core/src/validators/validateOpenWorkflow.js.map +1 -1
- package/dist/core/src/validators/validateRepositoryContracts.js +2321 -306
- package/dist/core/src/validators/validateRepositoryContracts.js.map +1 -1
- package/dist/core/src/workflow/cleanOpenWorkflow.d.ts +2 -0
- package/dist/core/src/workflow/cleanOpenWorkflow.js +97 -8
- package/dist/core/src/workflow/cleanOpenWorkflow.js.map +1 -1
- package/dist/core/src/workflow/doctorOpenWorkflow.d.ts +7 -0
- package/dist/core/src/workflow/doctorOpenWorkflow.js +26 -0
- package/dist/core/src/workflow/doctorOpenWorkflow.js.map +1 -0
- package/dist/core/src/workflow/initOpenWorkflow.d.ts +7 -0
- package/dist/core/src/workflow/initOpenWorkflow.js +96 -8
- package/dist/core/src/workflow/initOpenWorkflow.js.map +1 -1
- package/dist/core/src/workflow/planningQueueResume.d.ts +105 -0
- package/dist/core/src/workflow/planningQueueResume.js +596 -0
- package/dist/core/src/workflow/planningQueueResume.js.map +1 -0
- package/dist/core/src/workflow/readWorkflowConfig.d.ts +6 -0
- package/dist/core/src/workflow/readWorkflowConfig.js +28 -0
- package/dist/core/src/workflow/readWorkflowConfig.js.map +1 -0
- package/dist/core/src/workflow/summaryHealth.d.ts +60 -0
- package/dist/core/src/workflow/summaryHealth.js +713 -0
- package/dist/core/src/workflow/summaryHealth.js.map +1 -0
- package/dist/core/src/workflow/syncOpenWorkflow.d.ts +22 -0
- package/dist/core/src/workflow/syncOpenWorkflow.js +235 -0
- package/dist/core/src/workflow/syncOpenWorkflow.js.map +1 -0
- package/package.json +2 -1
- package/references/artifact-authoring-templates.md +14 -12
- package/references/artifact-instruction-envelope.md +133 -0
- package/references/coder-continuous-growth-loop.md +68 -0
- package/references/gh-operation-governance.md +114 -0
- package/references/git-automation-governance.md +324 -0
- package/references/git-version-control-governance.md +227 -0
- package/references/internal-coder-protocol.md +202 -0
- package/references/issue-governance.md +115 -0
- package/references/planning-artifact-contracts.md +595 -0
- package/references/planning-skill-runtime-exposure.md +159 -0
- package/references/proto-redesign-artifact-contracts.md +217 -0
- package/references/proto2html-artifact-contracts.md +113 -0
- package/references/skill-system-lifecycle.md +198 -0
- package/references/validation-trust-domains.md +286 -0
- package/references/workflow-blueprint-runtime-alignment.md +287 -0
- package/schemas/atom-tasks.schema.json +101 -0
- package/schemas/candidate-changes.schema.json +323 -0
- package/schemas/current-state.schema.json +113 -0
- package/schemas/html-prototype.schema.json +288 -0
- package/schemas/openworkflow-contract.schema.json +9 -1
- package/schemas/proto-prompt-pack.schema.json +1333 -0
- package/schemas/prototype-evidence.schema.json +684 -142
- package/schemas/selected-change.schema.json +104 -0
- package/schemas/validation-target.schema.json +187 -1
- package/schemas/validation.schema.json +187 -1
- package/schemas/vision-session.schema.json +151 -0
- package/skills/analyze-changes/SKILL.md +92 -0
- package/skills/analyze-changes/agents/openai.yaml +4 -0
- package/skills/analyze-changes/references/analysis-protocol.md +116 -0
- package/skills/build-proto-prompt/SKILL.md +125 -0
- package/skills/build-proto-prompt/references/output-boundary.md +54 -0
- package/skills/build-proto-prompt/references/prompt-pack-compiler-protocol.md +80 -0
- package/skills/build-prototype/SKILL.md +162 -38
- package/skills/build-prototype/agents/openai.yaml +2 -2
- package/skills/build-prototype/references/philosophy-engine.md +61 -0
- package/skills/build-prototype/references/strategic-prompt-pack-protocol.md +365 -0
- package/skills/build-prototype/references/vision2prompt/01_input_contract.md +84 -0
- package/skills/build-prototype/references/vision2prompt/02_vision_decomposition.md +108 -0
- package/skills/build-prototype/references/vision2prompt/03_strategy_hypothesis_generation.md +89 -0
- package/skills/build-prototype/references/vision2prompt/04_product_system_extraction.md +78 -0
- package/skills/build-prototype/references/vision2prompt/05_prototype_prompt_schema.md +189 -0
- package/skills/build-prototype/references/vision2prompt/06_output_templates.md +125 -0
- package/skills/build-prototype/references/vision2prompt/07_quality_rubric.md +171 -0
- package/skills/build-validation/SKILL.md +136 -54
- package/skills/build-validation/references/prototype-validation-target-rubric.md +35 -0
- package/skills/build-validation/references/return-to-vision-gate.md +32 -0
- package/skills/build-vision/SKILL.md +192 -0
- package/skills/build-vision/references/proto-readiness-rubric.md +48 -0
- package/skills/build-vision/references/vision-interview-protocol.md +48 -0
- package/skills/coder/SKILL.md +204 -0
- package/skills/decompose-to-changes/SKILL.md +176 -0
- package/skills/decompose-to-changes/agents/openai.yaml +4 -0
- package/skills/decompose-to-changes/references/decomposition-protocol.md +278 -0
- package/skills/prompt2proto/SKILL.md +157 -0
- package/skills/prompt2proto/agents/openai.yaml +4 -0
- package/skills/prompt2proto/references/00_role_philosophy_engine.md +96 -0
- package/skills/prompt2proto/references/01_input_contract.md +53 -0
- package/skills/prompt2proto/references/02_prompt_pack_readiness.md +50 -0
- package/skills/prompt2proto/references/03_visual_translation_workflow.md +64 -0
- package/skills/prompt2proto/references/04_output_contract.md +67 -0
- package/skills/prompt2proto/references/05_quality_rubric.md +46 -0
- package/skills/proto2html/SKILL.md +136 -0
- package/skills/proto2html/agents/openai.yaml +4 -0
- package/skills/proto2html/references/proto2html-protocol.md +115 -0
- package/skills/run-team/SKILL.md +4 -0
- package/skills/select-change/SKILL.md +200 -0
- package/skills/select-change/agents/openai.yaml +4 -0
- package/skills/select-change/references/selection-protocol.md +281 -0
- package/skills/tune-prototype/SKILL.md +121 -0
- package/skills/tune-prototype/agents/openai.yaml +4 -0
- package/skills/tune-prototype/references/refined-prompt-pack-protocol.md +161 -0
|
@@ -0,0 +1,595 @@
|
|
|
1
|
+
# Planning Artifact Contracts
|
|
2
|
+
|
|
3
|
+
This reference defines the first durable planning artifacts used by
|
|
4
|
+
`decompose-to-changes` and `select-change`.
|
|
5
|
+
|
|
6
|
+
## Source Of Truth Rule
|
|
7
|
+
|
|
8
|
+
`CANDIDATE_CHANGES.yaml` is the source of truth. `CANDIDATE_CHANGES.md` is a
|
|
9
|
+
human-readable view. If they disagree, update YAML first, then refresh the
|
|
10
|
+
Markdown view.
|
|
11
|
+
|
|
12
|
+
Do not delete candidate entries when selection or implementation progresses.
|
|
13
|
+
Update status and attach selection or completion evidence.
|
|
14
|
+
|
|
15
|
+
Queues may also carry a top-level `operations` list. Use it to audit targeted
|
|
16
|
+
maintenance such as adding a candidate, updating a scope, changing priority,
|
|
17
|
+
selecting a candidate, or marking completion.
|
|
18
|
+
|
|
19
|
+
## Feat And Commit Cadence
|
|
20
|
+
|
|
21
|
+
Each `CANDIDATE_CHANGES.yaml` queue is a feat boundary. The top-level
|
|
22
|
+
`changes/<plan_id>/` folder owns the feature-sized planning source, readable
|
|
23
|
+
view, summary, operation log, and candidate-specific selection artifacts.
|
|
24
|
+
|
|
25
|
+
The queue boundary is intentionally smaller than a roadmap. A queue may own one
|
|
26
|
+
feature, bounded module, command surface, artifact family, or workflow slice. It
|
|
27
|
+
must not include multiple independent features or a large module family just
|
|
28
|
+
because the source discussion contains a deep product plan.
|
|
29
|
+
|
|
30
|
+
When planning input contains more features than the current queue should own,
|
|
31
|
+
record the extra features as deferred refs, usually under
|
|
32
|
+
`scope_control.deferred_features` in `CANDIDATE_CHANGES.yaml` and mirrored in
|
|
33
|
+
`SUMMARY.yaml`. Deferred refs are not candidates, do not participate in
|
|
34
|
+
dependencies or unlocks, and require a later `decompose-to-changes` pass before
|
|
35
|
+
selection or implementation.
|
|
36
|
+
|
|
37
|
+
Each candidate inside that queue is a commit-sized change. A selected candidate
|
|
38
|
+
should normally write its `SELECTED_CHANGE.yaml`, `ATOM_TASKS.yaml`, and
|
|
39
|
+
`IMPLEMENTATION_BRIEF.md` under `changes/<plan_id>/<candidate-id>-<slug>/` and
|
|
40
|
+
complete with one coherent git commit.
|
|
41
|
+
|
|
42
|
+
Do not create a new top-level `changes/<id>/` folder for every candidate. Open a
|
|
43
|
+
new top-level folder only when `decompose-to-changes` creates a new queue for a
|
|
44
|
+
new feat, product theme, or broad planning source.
|
|
45
|
+
|
|
46
|
+
## Git Governance Link
|
|
47
|
+
|
|
48
|
+
Use `references/git-version-control-governance.md` as the source contract for
|
|
49
|
+
git and version-control boundaries. In that model:
|
|
50
|
+
|
|
51
|
+
- atom tasks are implementation checklist items
|
|
52
|
+
- selected changes are commit-sized units
|
|
53
|
+
- `CANDIDATE_CHANGES.yaml` queues are feat boundaries
|
|
54
|
+
- feat queues should have owning branches when they opt into branch governance
|
|
55
|
+
- pull requests summarize feat branches, not individual atom tasks
|
|
56
|
+
- merge or release is the integration boundary after review
|
|
57
|
+
|
|
58
|
+
Skills may inspect git state for planning and audit, but they must not perform
|
|
59
|
+
destructive or remote-impacting git operations unless the user explicitly asks
|
|
60
|
+
for that specific operation. Remote gh operations require separate governance.
|
|
61
|
+
|
|
62
|
+
Approved local git automation is limited to the boundaries in
|
|
63
|
+
`references/git-version-control-governance.md`: local feat branch handling,
|
|
64
|
+
one selected change to one local commit, and local `PR_READY_SUMMARY.md`
|
|
65
|
+
generation. Remote push, remote PR creation, Issue mutation, and merge require
|
|
66
|
+
separate explicit approval.
|
|
67
|
+
|
|
68
|
+
## Issue Governance Link
|
|
69
|
+
|
|
70
|
+
Use `references/issue-governance.md` as the source contract for Issue
|
|
71
|
+
source-of-truth rules. Issues are intent sources, not direct selected changes.
|
|
72
|
+
When `gh` is unavailable or unauthorized, local issue artifacts may be tracked
|
|
73
|
+
in git. When the user authorizes `gh` and GitHub Issues are configured as the
|
|
74
|
+
source of truth, local OW artifacts should store linkage and audit evidence
|
|
75
|
+
rather than duplicate remote Issue bodies as authoritative text.
|
|
76
|
+
|
|
77
|
+
## Skill Lifecycle Link
|
|
78
|
+
|
|
79
|
+
When a selected planning change touches runtime skill generation, adapter
|
|
80
|
+
delivery, generated `.agents/**` files, or `.openworkflow/audit/**`, read
|
|
81
|
+
`references/skill-system-lifecycle.md` before implementation. That reference
|
|
82
|
+
defines OpenWorkflow's native skill file shape, XML-like protocol block
|
|
83
|
+
semantics, generated-surface ownership, and drift expectations.
|
|
84
|
+
|
|
85
|
+
## Planning Artifact Registration
|
|
86
|
+
|
|
87
|
+
Planning artifacts can appear in Agent read models only through summary-first
|
|
88
|
+
registration. Runtime or adapter exposure must not load full planning history
|
|
89
|
+
by default.
|
|
90
|
+
|
|
91
|
+
Registration roles:
|
|
92
|
+
|
|
93
|
+
- `CANDIDATE_CHANGES.yaml`: source of truth for one feat queue. Load only when
|
|
94
|
+
selecting, maintaining, completing, or auditing that queue.
|
|
95
|
+
- `SUMMARY.yaml`: default queue handoff and read-model artifact. It should name
|
|
96
|
+
source refs, branch boundary, candidate count, completed candidate, next
|
|
97
|
+
recommended candidate, high-risk report paths, validation, and unresolved
|
|
98
|
+
questions.
|
|
99
|
+
- `CHANGE_ANALYSIS.yaml`: advisory cross-queue recommendation evidence. It may
|
|
100
|
+
recommend a `target_plan_id` and `target_candidate_id`, but it must not
|
|
101
|
+
mutate queues or authorize high-risk implementation.
|
|
102
|
+
- `SELECTED_CHANGE.yaml`: implementation boundary for one selected candidate.
|
|
103
|
+
It should be loaded before `ATOM_TASKS.yaml` when executing or reviewing the
|
|
104
|
+
selected change.
|
|
105
|
+
- `ATOM_TASKS.yaml`: task breakdown for the selected candidate. It is not a
|
|
106
|
+
source of product scope beyond the selected change.
|
|
107
|
+
- `LOCAL_COMMIT_EVIDENCE.yaml`: local implementation evidence for a selected
|
|
108
|
+
change. It records commit hashes and validation evidence, but does not imply
|
|
109
|
+
remote push, PR creation, merge, or Issue mutation.
|
|
110
|
+
- `HIGH_RISK_DECISION_REPORT.md`: stop packet for high-risk candidates. It is
|
|
111
|
+
evidence, not approval.
|
|
112
|
+
|
|
113
|
+
Minimum summary fields for planning queues:
|
|
114
|
+
|
|
115
|
+
- `plan_id`
|
|
116
|
+
- `branch_boundary`
|
|
117
|
+
- `candidate_count`
|
|
118
|
+
- `completed_candidate_id`
|
|
119
|
+
- `completed_change_id`
|
|
120
|
+
- `next_recommended_candidate_id`
|
|
121
|
+
- `outputs`
|
|
122
|
+
- `key_dependencies`
|
|
123
|
+
- `risks`
|
|
124
|
+
- `unresolved_questions`
|
|
125
|
+
- `validation`
|
|
126
|
+
|
|
127
|
+
Read-model order for planning work:
|
|
128
|
+
|
|
129
|
+
1. `SUMMARY.yaml`
|
|
130
|
+
2. `HIGH_RISK_DECISION_REPORT.md` only when the next candidate is high risk
|
|
131
|
+
3. `CHANGE_ANALYSIS.yaml` only when consuming a cross-queue recommendation
|
|
132
|
+
4. `SELECTED_CHANGE.yaml`
|
|
133
|
+
5. `ATOM_TASKS.yaml`
|
|
134
|
+
6. `CANDIDATE_CHANGES.yaml` only when source truth is needed
|
|
135
|
+
|
|
136
|
+
Validators should reject malformed source artifacts, but summary freshness and
|
|
137
|
+
quality are separate trust signals. Use `openworkflow summaries --json` or
|
|
138
|
+
handoff/inspect quality fields for summary trust rather than treating
|
|
139
|
+
`validate` alone as proof that a summary is sufficient.
|
|
140
|
+
|
|
141
|
+
## Agent Resume Packet Contract
|
|
142
|
+
|
|
143
|
+
`resume --json` is a read-only Agent recovery packet. It aggregates existing
|
|
144
|
+
trust gates and planning evidence into one startup cockpit without repairing
|
|
145
|
+
state, selecting candidates, updating summaries, creating commits, or changing
|
|
146
|
+
workflow pointers.
|
|
147
|
+
|
|
148
|
+
The JSON command must use the standard OpenWorkflow report envelope:
|
|
149
|
+
|
|
150
|
+
- `schema_version`
|
|
151
|
+
- `command: resume`
|
|
152
|
+
- `ok`
|
|
153
|
+
- `root`
|
|
154
|
+
- `data`
|
|
155
|
+
- `warnings`
|
|
156
|
+
- `errors`
|
|
157
|
+
- `health_errors`
|
|
158
|
+
- `effects`
|
|
159
|
+
- `next_actions`
|
|
160
|
+
|
|
161
|
+
The `data` packet should include these top-level sections:
|
|
162
|
+
|
|
163
|
+
- `resume_version`: contract version for the packet shape.
|
|
164
|
+
- `command_boundary`: read-only semantics, planned writes, forbidden writes,
|
|
165
|
+
and deferred non-goals.
|
|
166
|
+
- `trust`: handoff-quality and readiness signals sourced from existing
|
|
167
|
+
handoff, inspect, summaries, and check models.
|
|
168
|
+
- `workflow`: active stage, active pointers, current next command, and read
|
|
169
|
+
order.
|
|
170
|
+
- `active_queue`: the most relevant planning queue when one can be identified,
|
|
171
|
+
including plan id, queue path, branch boundary, queue status, selected
|
|
172
|
+
candidate, completed candidate, next recommended candidate, and uncertainty.
|
|
173
|
+
- `current_work_item`: selected candidate or atom-task context when available,
|
|
174
|
+
including selected-change id, status, title, risk, owned paths, atom task
|
|
175
|
+
path, and implementation brief path.
|
|
176
|
+
- `actions`: recommended next action plus allowed actions, forbidden actions,
|
|
177
|
+
and stop conditions derived from trust gates and queue boundaries.
|
|
178
|
+
- `evidence`: primary, auxiliary, comparison, and missing evidence paths.
|
|
179
|
+
- `git`: branch, cleanliness, dirty paths, and commit-evidence state when
|
|
180
|
+
available without mutation.
|
|
181
|
+
- `sources`: source commands and files consulted to build the packet.
|
|
182
|
+
|
|
183
|
+
Text output should be a concise human-readable rendering of the same packet:
|
|
184
|
+
trust status, active queue/current work item, next action, blockers, and the
|
|
185
|
+
smallest read order. Text output must not hide JSON-only blockers.
|
|
186
|
+
|
|
187
|
+
Read-only boundary:
|
|
188
|
+
|
|
189
|
+
- The command may read `.openworkflow/CURRENT_STATE.yaml`, summary/current-slice
|
|
190
|
+
artifacts, handoff/inspect/summaries/check models, planning queue summaries,
|
|
191
|
+
selected-change artifacts, atom tasks, and git status.
|
|
192
|
+
- The command must not write workflow artifacts, summarize files, queue
|
|
193
|
+
statuses, generated adapters, git evidence, branches, commits, or remote
|
|
194
|
+
state.
|
|
195
|
+
- The command must report uncertainty instead of selecting work when multiple
|
|
196
|
+
active queues compete or when queue evidence is stale.
|
|
197
|
+
|
|
198
|
+
Deferred work:
|
|
199
|
+
|
|
200
|
+
- Base aggregation and executable CLI entrypoint belong to the implementation
|
|
201
|
+
candidate after the contract boundary.
|
|
202
|
+
- Active queue scanning beyond obvious current planning evidence belongs to a
|
|
203
|
+
separate candidate.
|
|
204
|
+
- Detailed action/evidence classification belongs to a later candidate.
|
|
205
|
+
- Artifact lineage graph, prompt2proto strategy, provider/fallback metadata,
|
|
206
|
+
and a write preflight compiler are out of scope for the resume packet.
|
|
207
|
+
|
|
208
|
+
Selected-change commit gate:
|
|
209
|
+
|
|
210
|
+
- New or actively touched branch-governed queues may opt into
|
|
211
|
+
`queue_policy.selected_change_commit_gate: strict`.
|
|
212
|
+
- In strict mode, a `done` selected change must set
|
|
213
|
+
`completion.implementation_changed_files` to `true` or `false`.
|
|
214
|
+
- When `implementation_changed_files: true`, `completion.evidence` must include
|
|
215
|
+
a repo-relative `LOCAL_COMMIT_EVIDENCE.yaml` path for that selected change.
|
|
216
|
+
- When `implementation_changed_files: false`, completion must include
|
|
217
|
+
`commit_not_required_reason` explaining why no implementation commit is
|
|
218
|
+
required.
|
|
219
|
+
- Historical queues without the strict policy remain migration-mode artifacts
|
|
220
|
+
until they are touched or intentionally opted into the gate.
|
|
221
|
+
|
|
222
|
+
## CANDIDATE_CHANGES.yaml
|
|
223
|
+
|
|
224
|
+
Purpose: hold one active planning queue for a topic, milestone, or session.
|
|
225
|
+
|
|
226
|
+
Required top-level fields:
|
|
227
|
+
|
|
228
|
+
- `schema_version`
|
|
229
|
+
- `contract_id`
|
|
230
|
+
- `contract_type: planning`
|
|
231
|
+
- `planning_artifact_type: candidate_changes`
|
|
232
|
+
- `plan_id`
|
|
233
|
+
- `title`
|
|
234
|
+
- `status`
|
|
235
|
+
- `source`
|
|
236
|
+
- `queue_policy`
|
|
237
|
+
- `selection_policy`
|
|
238
|
+
- `changes`
|
|
239
|
+
|
|
240
|
+
Optional but recommended after maintenance:
|
|
241
|
+
|
|
242
|
+
- `scope_control` when the source discussion spans multiple possible features
|
|
243
|
+
- `operations`
|
|
244
|
+
|
|
245
|
+
Recommended `scope_control` fields:
|
|
246
|
+
|
|
247
|
+
- `current_boundary`
|
|
248
|
+
- `boundary_type`
|
|
249
|
+
- `in_scope_rule`
|
|
250
|
+
- `out_of_scope_rule`
|
|
251
|
+
- `deferred_features`
|
|
252
|
+
|
|
253
|
+
Each deferred feature should include:
|
|
254
|
+
|
|
255
|
+
- `title`
|
|
256
|
+
- `reason`
|
|
257
|
+
- `suggested_plan_id` when a likely future queue name is clear
|
|
258
|
+
|
|
259
|
+
Each candidate change requires:
|
|
260
|
+
|
|
261
|
+
- `id`
|
|
262
|
+
- `status`
|
|
263
|
+
- `title`
|
|
264
|
+
- `purpose`
|
|
265
|
+
- `scope.includes`
|
|
266
|
+
- `scope.excludes`
|
|
267
|
+
- `owned_paths`
|
|
268
|
+
- `dependencies`
|
|
269
|
+
- `unlocks`
|
|
270
|
+
- `risk`
|
|
271
|
+
- `size`
|
|
272
|
+
- `validation`
|
|
273
|
+
- `acceptance`
|
|
274
|
+
|
|
275
|
+
Candidate statuses:
|
|
276
|
+
|
|
277
|
+
- `candidate`: captured but not ready to implement.
|
|
278
|
+
- `ready`: implementable when selected.
|
|
279
|
+
- `selected`: chosen for a concrete selected change artifact.
|
|
280
|
+
- `in_progress`: implementation has started.
|
|
281
|
+
- `done`: completed and backed by evidence.
|
|
282
|
+
- `blocked`: cannot proceed without a blocker resolution.
|
|
283
|
+
- `deferred`: intentionally postponed.
|
|
284
|
+
- `superseded`: replaced by another candidate.
|
|
285
|
+
|
|
286
|
+
Operation types:
|
|
287
|
+
|
|
288
|
+
- `query`
|
|
289
|
+
- `add`
|
|
290
|
+
- `update`
|
|
291
|
+
- `status_change`
|
|
292
|
+
- `split`
|
|
293
|
+
- `merge`
|
|
294
|
+
- `priority_change`
|
|
295
|
+
- `select`
|
|
296
|
+
- `complete`
|
|
297
|
+
- `remove`
|
|
298
|
+
|
|
299
|
+
Hard removal is discouraged. Use `superseded`, `deferred`, or `blocked` for
|
|
300
|
+
historical candidates. Only remove malformed candidates created in the same
|
|
301
|
+
uncommitted operation, and record why.
|
|
302
|
+
|
|
303
|
+
## SELECTED_CHANGE.yaml
|
|
304
|
+
|
|
305
|
+
Purpose: preserve why one candidate was selected and define implementation
|
|
306
|
+
boundaries before atom tasks begin.
|
|
307
|
+
|
|
308
|
+
Required fields:
|
|
309
|
+
|
|
310
|
+
- `schema_version`
|
|
311
|
+
- `contract_id`
|
|
312
|
+
- `contract_type: planning`
|
|
313
|
+
- `planning_artifact_type: selected_change`
|
|
314
|
+
- `selected_change_id`
|
|
315
|
+
- `source_plan_id`
|
|
316
|
+
- `source_candidate_id`
|
|
317
|
+
- `title`
|
|
318
|
+
- `status`
|
|
319
|
+
- `selection_reason`
|
|
320
|
+
- `scope.includes`
|
|
321
|
+
- `scope.excludes`
|
|
322
|
+
- `owned_paths`
|
|
323
|
+
- `forbidden_paths`
|
|
324
|
+
- `acceptance`
|
|
325
|
+
- `validation`
|
|
326
|
+
|
|
327
|
+
The selected change must name rejected alternatives when the choice is not
|
|
328
|
+
obvious. Rejected alternatives should be short and should reference candidate
|
|
329
|
+
ids, not copy the full candidate body.
|
|
330
|
+
|
|
331
|
+
When selection consumes a cross-queue recommendation, rejected alternatives
|
|
332
|
+
must include both `plan_id` and `candidate_id`:
|
|
333
|
+
|
|
334
|
+
```yaml
|
|
335
|
+
rejected_alternatives:
|
|
336
|
+
- plan_id: M68-post-proto-workflow-planning
|
|
337
|
+
candidate_id: H003
|
|
338
|
+
reason: High risk and missing a local high-risk decision report.
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Use a short `id` field only when the rejected candidate belongs to the same
|
|
342
|
+
`source_plan_id` as the selected change.
|
|
343
|
+
|
|
344
|
+
## ATOM_TASKS.yaml
|
|
345
|
+
|
|
346
|
+
Purpose: break one selected change into focused tasks an Agent can execute
|
|
347
|
+
without widening scope.
|
|
348
|
+
|
|
349
|
+
Required top-level fields:
|
|
350
|
+
|
|
351
|
+
- `schema_version`
|
|
352
|
+
- `contract_id`
|
|
353
|
+
- `contract_type: planning`
|
|
354
|
+
- `planning_artifact_type: atom_tasks`
|
|
355
|
+
- `selected_change_id`
|
|
356
|
+
- `title`
|
|
357
|
+
- `status`
|
|
358
|
+
- `tasks`
|
|
359
|
+
|
|
360
|
+
Each atom task requires:
|
|
361
|
+
|
|
362
|
+
- `task_id`
|
|
363
|
+
- `title`
|
|
364
|
+
- `status`
|
|
365
|
+
- `type`
|
|
366
|
+
- `owned_paths`
|
|
367
|
+
- `done_when`
|
|
368
|
+
|
|
369
|
+
Task types:
|
|
370
|
+
|
|
371
|
+
- `read`: inspect existing context.
|
|
372
|
+
- `edit`: modify source artifacts.
|
|
373
|
+
- `verify`: run commands or checks.
|
|
374
|
+
- `document`: update planning or handoff artifacts.
|
|
375
|
+
|
|
376
|
+
An atom task should own one coherent area. If a task needs unrelated paths, split
|
|
377
|
+
it.
|
|
378
|
+
|
|
379
|
+
## IMPLEMENTATION_BRIEF.md
|
|
380
|
+
|
|
381
|
+
Purpose: provide a low-context implementation entry for the selected change.
|
|
382
|
+
|
|
383
|
+
Required sections:
|
|
384
|
+
|
|
385
|
+
- `Goal`
|
|
386
|
+
- `Read First`
|
|
387
|
+
- `Do`
|
|
388
|
+
- `Do Not`
|
|
389
|
+
- `Owned Paths`
|
|
390
|
+
- `Validation`
|
|
391
|
+
- `Stop Conditions`
|
|
392
|
+
|
|
393
|
+
The brief should be short. It should not duplicate the entire candidate queue or
|
|
394
|
+
long product discussion.
|
|
395
|
+
|
|
396
|
+
## LOCAL_COMMIT_EVIDENCE.yaml
|
|
397
|
+
|
|
398
|
+
Purpose: record the local commit evidence for one selected change without
|
|
399
|
+
implying any remote operation.
|
|
400
|
+
|
|
401
|
+
Required fields for new evidence files:
|
|
402
|
+
|
|
403
|
+
- `schema_version`
|
|
404
|
+
- `contract_id`
|
|
405
|
+
- `contract_type: planning`
|
|
406
|
+
- `planning_artifact_type: implementation_evidence`
|
|
407
|
+
- `source_plan_id`
|
|
408
|
+
- `source_candidate_id`
|
|
409
|
+
- `selected_change_id`
|
|
410
|
+
- `primary_commit`
|
|
411
|
+
- `validation_evidence`
|
|
412
|
+
|
|
413
|
+
Optional `coder_evidence` fields may be embedded in
|
|
414
|
+
`LOCAL_COMMIT_EVIDENCE.yaml` when an implementation change needs to bind
|
|
415
|
+
`/ow:coder` evidence beyond the guidance-only `coder_gate` state:
|
|
416
|
+
|
|
417
|
+
```yaml
|
|
418
|
+
coder_evidence:
|
|
419
|
+
status: recorded # recorded | skipped | not_applicable
|
|
420
|
+
enforcement: guidance_only
|
|
421
|
+
preflight:
|
|
422
|
+
- checked owned paths and validation ladder
|
|
423
|
+
red_evidence:
|
|
424
|
+
- failing structural assertion before implementation
|
|
425
|
+
green_evidence:
|
|
426
|
+
- passing structural assertion after implementation
|
|
427
|
+
self_check:
|
|
428
|
+
- reviewed generated surfaces and trust boundaries
|
|
429
|
+
validation_ladder:
|
|
430
|
+
- npm run build
|
|
431
|
+
- npm run verify:runtime-surface
|
|
432
|
+
lessons:
|
|
433
|
+
- promote only repeated quality lessons into source policy
|
|
434
|
+
notes: Optional concise context for later Agents.
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
`coder_evidence` is optional. Validators must accept missing coder evidence and
|
|
438
|
+
must reject malformed present coder evidence. Standalone `CODE_EVIDENCE.yaml`
|
|
439
|
+
or `CODER_EVIDENCE.yaml` is intentionally deferred to a separate future
|
|
440
|
+
candidate change.
|
|
441
|
+
|
|
442
|
+
Historical evidence files may use older field names such as `plan_id`,
|
|
443
|
+
`candidate_id`, `change_id`, and `implementation_commit`; validators accept
|
|
444
|
+
those during migration, but new git-automation evidence should use the source
|
|
445
|
+
field names above.
|
|
446
|
+
|
|
447
|
+
The owning `CANDIDATE_CHANGES.yaml` completion should reference the file in
|
|
448
|
+
`completion.evidence` using a repo-relative path:
|
|
449
|
+
|
|
450
|
+
```yaml
|
|
451
|
+
completion:
|
|
452
|
+
implementation_changed_files: true
|
|
453
|
+
evidence:
|
|
454
|
+
- changes/<plan_id>/<candidate-id>-<slug>/LOCAL_COMMIT_EVIDENCE.yaml
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
## HIGH_RISK_DECISION_REPORT.md
|
|
458
|
+
|
|
459
|
+
Purpose: stop high-risk implementation before it starts and give the user a
|
|
460
|
+
concrete decision packet. Use this report when the next candidate is
|
|
461
|
+
`risk: high`, when a selected candidate's blast radius grows into high risk, or
|
|
462
|
+
when continuing would require changing trust, delivery, generated-runtime, data,
|
|
463
|
+
security, or architecture boundaries.
|
|
464
|
+
|
|
465
|
+
The report belongs to the queue that encountered the high-risk stop:
|
|
466
|
+
|
|
467
|
+
```text
|
|
468
|
+
changes/<plan_id>/
|
|
469
|
+
CANDIDATE_CHANGES.yaml
|
|
470
|
+
CANDIDATE_CHANGES.md
|
|
471
|
+
SUMMARY.yaml
|
|
472
|
+
HIGH_RISK_DECISION_REPORT.md
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
If a queue needs multiple high-risk reports over time, update the existing
|
|
476
|
+
report when it covers the same decision boundary. Create a named variant only
|
|
477
|
+
when the new stop covers a materially different boundary.
|
|
478
|
+
|
|
479
|
+
Required sections:
|
|
480
|
+
|
|
481
|
+
- `Trigger`: why execution stopped now.
|
|
482
|
+
- `Change`: candidate id, title, status, and why the candidate is high risk.
|
|
483
|
+
- `Concrete Risks`: specific ways implementation could damage correctness,
|
|
484
|
+
trust, generated surfaces, architecture, data, or user workflow.
|
|
485
|
+
- `Decision Options`: at least defer, design-only, narrow spike, and full
|
|
486
|
+
implementation when those options make sense.
|
|
487
|
+
- `Recommended Path`: one recommended option with reasoning.
|
|
488
|
+
- `Guardrails`: constraints that must hold if the user approves progress.
|
|
489
|
+
- `Go Criteria`: what explicit user decision is required before implementation
|
|
490
|
+
resumes.
|
|
491
|
+
- `Stop Criteria`: conditions that force another stop even after approval.
|
|
492
|
+
- `Validation Expectations`: commands or evidence required for any approved
|
|
493
|
+
follow-up.
|
|
494
|
+
|
|
495
|
+
The report is evidence, not approval. Implementation may resume only after the
|
|
496
|
+
user explicitly approves a concrete decision option or narrower replacement
|
|
497
|
+
candidate.
|
|
498
|
+
|
|
499
|
+
Queue linkage:
|
|
500
|
+
|
|
501
|
+
- Add the report path to `SUMMARY.yaml` outputs or notes.
|
|
502
|
+
- Append an `operations` entry with `operation_type: query` or
|
|
503
|
+
`operation_type: block` for the high-risk stop.
|
|
504
|
+
- Keep the high-risk candidate status unchanged unless the report recommends
|
|
505
|
+
and the user approves a status transition such as `blocked`, `deferred`, or
|
|
506
|
+
`superseded`.
|
|
507
|
+
- Do not create `SELECTED_CHANGE.yaml` for a high-risk candidate solely because
|
|
508
|
+
the report exists.
|
|
509
|
+
|
|
510
|
+
## CHANGE_ANALYSIS.yaml
|
|
511
|
+
|
|
512
|
+
Purpose: compare one or more candidate queues and recommend the next `plan_id`
|
|
513
|
+
and `candidate_id` for `select-change` without selecting or implementing the
|
|
514
|
+
candidate.
|
|
515
|
+
|
|
516
|
+
Required top-level fields:
|
|
517
|
+
|
|
518
|
+
- `schema_version`
|
|
519
|
+
- `contract_id`
|
|
520
|
+
- `contract_type: planning`
|
|
521
|
+
- `planning_artifact_type: change_analysis`
|
|
522
|
+
- `analysis_id`
|
|
523
|
+
- `status`
|
|
524
|
+
- `source`
|
|
525
|
+
- `git_state`
|
|
526
|
+
- `recommendation`
|
|
527
|
+
- `rejected_alternatives`
|
|
528
|
+
- `high_risk_stop`
|
|
529
|
+
- `validation`
|
|
530
|
+
|
|
531
|
+
`recommendation` should include:
|
|
532
|
+
|
|
533
|
+
- `target_plan_id`
|
|
534
|
+
- `target_candidate_id`
|
|
535
|
+
- `action`
|
|
536
|
+
- `reason`
|
|
537
|
+
|
|
538
|
+
Allowed actions include `handoff_to_select_change`, `queue_maintenance`,
|
|
539
|
+
`high_risk_report`, and `commit_current_work`.
|
|
540
|
+
|
|
541
|
+
The analysis artifact is advisory. It must not create
|
|
542
|
+
`SELECTED_CHANGE.yaml`, mutate candidate status, or authorize high-risk
|
|
543
|
+
implementation. `select-change` owns selection artifacts after consuming a
|
|
544
|
+
recommended target.
|
|
545
|
+
|
|
546
|
+
When `select-change` consumes the recommendation, it should create selection
|
|
547
|
+
artifacts inside `changes/<target_plan_id>/`, re-check current readiness gates,
|
|
548
|
+
and copy only the decision-relevant rejected alternatives into
|
|
549
|
+
`SELECTED_CHANGE.yaml`. The analysis folder remains evidence for why the
|
|
550
|
+
cross-queue comparison happened; it is not the owning feat folder for the
|
|
551
|
+
selected candidate.
|
|
552
|
+
|
|
553
|
+
## PR_READY_SUMMARY.md
|
|
554
|
+
|
|
555
|
+
Purpose: summarize a feat branch for human PR review without creating,
|
|
556
|
+
editing, or opening a remote pull request.
|
|
557
|
+
|
|
558
|
+
The summary belongs to the completed or review-ready queue:
|
|
559
|
+
|
|
560
|
+
```text
|
|
561
|
+
changes/<plan_id>/PR_READY_SUMMARY.md
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
Required sections:
|
|
565
|
+
|
|
566
|
+
- `Feat`: plan id, title, branch boundary, and source queue path.
|
|
567
|
+
- `Completed Changes`: selected change ids, candidate ids, and commit evidence
|
|
568
|
+
when available.
|
|
569
|
+
- `Deferred Or Blocked Changes`: candidates intentionally left out of the PR.
|
|
570
|
+
- `High-Risk Decisions`: linked reports and unresolved approvals.
|
|
571
|
+
- `Validation`: commands run and results.
|
|
572
|
+
- `Review Notes`: risks, assumptions, and follow-up queues.
|
|
573
|
+
|
|
574
|
+
The artifact is a handoff packet, not a remote operation. It must not imply
|
|
575
|
+
that a PR was opened, edited, pushed, merged, or approved. Any gh or GitHub
|
|
576
|
+
mutation must follow separate operation governance and user authorization.
|
|
577
|
+
|
|
578
|
+
## Status Update Rules
|
|
579
|
+
|
|
580
|
+
When select-change chooses a candidate:
|
|
581
|
+
|
|
582
|
+
1. Set candidate `status` to `selected`.
|
|
583
|
+
2. Add `selection.selected_change_id`.
|
|
584
|
+
3. Add concise `selection.reason`.
|
|
585
|
+
4. Append an `operations` entry with `operation_type: select`.
|
|
586
|
+
5. Write `SELECTED_CHANGE.yaml`, `ATOM_TASKS.yaml`, and
|
|
587
|
+
`IMPLEMENTATION_BRIEF.md`.
|
|
588
|
+
|
|
589
|
+
When the selected change completes:
|
|
590
|
+
|
|
591
|
+
1. Set candidate `status` to `done`.
|
|
592
|
+
2. Add `completion.completed_by_change_id`.
|
|
593
|
+
3. Add evidence such as change artifacts, validation commands, or commit ids.
|
|
594
|
+
4. Append an `operations` entry with `operation_type: complete`.
|
|
595
|
+
5. Leave other candidates in place for future selection.
|