@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
|
@@ -9,20 +9,30 @@ export const WORKFLOW_COMMANDS = [
|
|
|
9
9
|
".openworkflow/context/CONTEXT_MAP.yaml",
|
|
10
10
|
]),
|
|
11
11
|
command("vision", ["build-vision"], "Create or refine the product vision contract through focused collaboration.", "vision", [".openworkflow/vision/VISION.md", ".openworkflow/vision/VISION_CONTRACT.yaml"], visionProtocol()),
|
|
12
|
-
command("validation", ["build-validation"], "
|
|
13
|
-
command("proto", ["build-prototype"
|
|
14
|
-
command("
|
|
12
|
+
command("validation", ["build-validation"], "Compile proto-ready vision into one prototype validation target.", "validation", [".openworkflow/validation/"], validationProtocol()),
|
|
13
|
+
command("build-proto-prompt", ["build-prototype-prompt"], "Internally compile ready vision and validation into ready prototype prompt packs.", "prototype", [".openworkflow/prototypes/"], buildProtoPromptProtocol(), "internal"),
|
|
14
|
+
command("vision2prompt", ["vision-to-strategic-prototype-prompt"], "Internally compile ready vision and validation into strategic prototype prompt text.", "prototype", [".openworkflow/prototypes/"], vision2PromptProtocol(), "internal"),
|
|
15
|
+
command("prompt2proto", ["prompt-to-prototype-images"], "Internally generate high-fidelity prototype image groups from prepared prompt text.", "prototype", [".openworkflow/prototypes/"], prompt2ProtoProtocol(), "internal"),
|
|
16
|
+
command("proto", ["build-prototype", "ow:prototype"], "Create image-first strategic prototype prompt packs from vision or validation context.", "prototype", [".openworkflow/prototypes/"], prototypeProtocol()),
|
|
17
|
+
command("tune", ["tune-prototype", "ow:tune:proto"], "Refine accepted prototype screens or prompt packs and record the decision audit automatically.", "prototype", [".openworkflow/prototypes/", ".openworkflow/decisions/"], tuneProtocol()),
|
|
15
18
|
command("decision", ["build-decision"], "Internally record prototype review outcomes for audit.", "decision", [".openworkflow/decisions/"], decisionProtocol(), "internal"),
|
|
16
19
|
command("design", ["build-design"], "Convert accepted prototype evidence into product design for production specification.", "design", [".openworkflow/design/"], designProtocol()),
|
|
17
|
-
command("spec", ["build-spec"], "Create one focused production spec from accepted product design.", "spec", [
|
|
18
|
-
|
|
19
|
-
]),
|
|
20
|
-
command("
|
|
21
|
-
".
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
]),
|
|
20
|
+
command("spec", ["build-spec"], "Create one focused production spec from accepted product design.", "spec", [".openworkflow/specs/"], specProtocol()),
|
|
21
|
+
command("change", ["build-change"], "Create one focused production change for the current core feature.", "change", [".openworkflow/changes/"], changeProtocol()),
|
|
22
|
+
command("team", ["run-team", "build-team"], "Execute approved production work through the Agent Team runtime.", "runtime", [".openworkflow/runtime/"], teamProtocol()),
|
|
23
|
+
command("decompose-to-changes", [], "Create, update, query, or maintain an OpenWorkflow candidate change queue.", "planning", [
|
|
24
|
+
"changes/<plan_id>/CANDIDATE_CHANGES.yaml",
|
|
25
|
+
"changes/<plan_id>/CANDIDATE_CHANGES.md",
|
|
26
|
+
"changes/<plan_id>/SUMMARY.yaml",
|
|
27
|
+
], decomposeToChangesProtocol()),
|
|
28
|
+
command("analyze-changes", [], "Analyze multiple candidate change queues and recommend the next queue and candidate without selecting it.", "planning", ["changes/<analysis_id>/CHANGE_ANALYSIS.yaml", "changes/<analysis_id>/CHANGE_ANALYSIS.md"], analyzeChangesProtocol()),
|
|
29
|
+
command("select-change", [], "Select one implementable candidate change and create implementation-ready planning artifacts.", "planning", [
|
|
30
|
+
"changes/<plan_id>/<candidate-id>-<slug>/SELECTED_CHANGE.yaml",
|
|
31
|
+
"changes/<plan_id>/<candidate-id>-<slug>/ATOM_TASKS.yaml",
|
|
32
|
+
"changes/<plan_id>/<candidate-id>-<slug>/IMPLEMENTATION_BRIEF.md",
|
|
33
|
+
], selectChangeProtocol()),
|
|
34
|
+
command("git-automation", [], "Operate the managed git lifecycle shell for local branch, commit, PR-ready summary, and remote approval gates.", "governance", ["changes/<plan_id>/CANDIDATE_CHANGES.yaml", "changes/<plan_id>/PR_READY_SUMMARY.md"], gitAutomationProtocol()),
|
|
35
|
+
command("coder", ["code-quality-governor", "engineering-quality"], "Govern source edits with internal Agent-only code quality preflight, RED/GREEN evidence, self-check, validation, and evidence binding.", "execution", [], coderProtocol(), "internal"),
|
|
26
36
|
];
|
|
27
37
|
export function getWorkflowCommands() {
|
|
28
38
|
return WORKFLOW_COMMANDS;
|
|
@@ -40,10 +50,409 @@ function command(id, legacyIds, description, stage, targetArtifacts, protocol, v
|
|
|
40
50
|
protocol,
|
|
41
51
|
};
|
|
42
52
|
}
|
|
53
|
+
function decomposeToChangesProtocol() {
|
|
54
|
+
return {
|
|
55
|
+
depth: "deep",
|
|
56
|
+
interactionMode: "candidate-queue-decomposition-and-maintenance",
|
|
57
|
+
requiredContext: [
|
|
58
|
+
"references/planning-artifact-contracts.md",
|
|
59
|
+
"skills/decompose-to-changes/references/decomposition-protocol.md",
|
|
60
|
+
],
|
|
61
|
+
optionalContext: [
|
|
62
|
+
"changes/<plan_id>/CANDIDATE_CHANGES.yaml",
|
|
63
|
+
"changes/<plan_id>/SUMMARY.yaml",
|
|
64
|
+
"changes/<plan_id>/HIGH_RISK_DECISION_REPORT.md",
|
|
65
|
+
"docs/OW_DEVELOP_PLAN.md",
|
|
66
|
+
"docs/OW_DEVELOP_PLAN_Phase2.md",
|
|
67
|
+
"user-provided planning source",
|
|
68
|
+
],
|
|
69
|
+
forbiddenContext: [],
|
|
70
|
+
allowedOutputs: [
|
|
71
|
+
"changes/<plan_id>/CANDIDATE_CHANGES.yaml",
|
|
72
|
+
"changes/<plan_id>/CANDIDATE_CHANGES.md",
|
|
73
|
+
"changes/<plan_id>/SUMMARY.yaml",
|
|
74
|
+
"changes/<plan_id>/HIGH_RISK_DECISION_REPORT.md when the next actionable work is high risk",
|
|
75
|
+
],
|
|
76
|
+
conditionalOutputs: [
|
|
77
|
+
"high-risk decision report when a risk: high candidate becomes the next actionable work",
|
|
78
|
+
"queue maintenance operation entries for add, update, split, merge, defer, block, supersede, restore, or complete",
|
|
79
|
+
],
|
|
80
|
+
forbiddenOutputs: [
|
|
81
|
+
"SELECTED_CHANGE.yaml",
|
|
82
|
+
"ATOM_TASKS.yaml",
|
|
83
|
+
"IMPLEMENTATION_BRIEF.md",
|
|
84
|
+
"implementation code changes",
|
|
85
|
+
"generated .agents/** or .openworkflow/** edits unless selected and explicitly approved",
|
|
86
|
+
],
|
|
87
|
+
auditCheckpoints: {
|
|
88
|
+
before: [
|
|
89
|
+
"Run git status --short --branch and record branch and dirty-tree state.",
|
|
90
|
+
"Decide whether this is new decomposition or maintenance of an existing queue.",
|
|
91
|
+
"Run the queue scope gate: choose one feature, bounded module, command surface, artifact family, or workflow slice for this queue.",
|
|
92
|
+
"Read existing queue YAML before changing candidate ids or statuses.",
|
|
93
|
+
],
|
|
94
|
+
during: [
|
|
95
|
+
"For every new CANDIDATE_CHANGES queue, set queue_policy.git_lifecycle_gate: strict and a plan-owned queue_policy.branch_boundary before selecting work.",
|
|
96
|
+
"Preserve stable candidate ids, git_lifecycle_gate, and branch_boundary when updating an existing queue.",
|
|
97
|
+
"Record features outside the current queue boundary as deferred refs instead of current candidates.",
|
|
98
|
+
"Keep candidates focused, dependency-aware, and bounded by owned paths.",
|
|
99
|
+
"Append an operation entry for every queue maintenance edit.",
|
|
100
|
+
],
|
|
101
|
+
after: [
|
|
102
|
+
"Refresh CANDIDATE_CHANGES.md as a readable view of YAML source truth.",
|
|
103
|
+
"Refresh SUMMARY.yaml with candidate count, next recommended candidate, risks, and validation evidence.",
|
|
104
|
+
"Do not mark a queue completed until PR evidence is recorded through DRAFT_PR_OPERATION_EVIDENCE.yaml or the queue is explicitly blocked before PR creation.",
|
|
105
|
+
"Stop with a high-risk report instead of selecting or implementing risk: high candidates.",
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
antiPatterns: [
|
|
109
|
+
"Do not select a candidate from decompose-to-changes.",
|
|
110
|
+
"Do not implement code from decompose-to-changes.",
|
|
111
|
+
"Do not create a new top-level changes folder for every small candidate inside the same feat boundary.",
|
|
112
|
+
"Do not turn one CANDIDATE_CHANGES queue into a roadmap bucket for multiple features or a large module family.",
|
|
113
|
+
"Do not delete historical candidate ids; use status transitions and operation evidence.",
|
|
114
|
+
],
|
|
115
|
+
handoffCommands: ["/ow:analyze-changes", "/ow:select-change"],
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function analyzeChangesProtocol() {
|
|
119
|
+
return {
|
|
120
|
+
depth: "deep",
|
|
121
|
+
interactionMode: "read-only-cross-queue-priority-analysis",
|
|
122
|
+
requiredContext: [
|
|
123
|
+
"references/planning-artifact-contracts.md",
|
|
124
|
+
"skills/analyze-changes/references/analysis-protocol.md",
|
|
125
|
+
"changes/<plan_id>/CANDIDATE_CHANGES.yaml",
|
|
126
|
+
],
|
|
127
|
+
optionalContext: [
|
|
128
|
+
"references/git-version-control-governance.md",
|
|
129
|
+
"references/issue-governance.md",
|
|
130
|
+
"changes/*/CANDIDATE_CHANGES.yaml when the user asks for global or cross-queue analysis",
|
|
131
|
+
"changes/<plan_id>/SUMMARY.yaml",
|
|
132
|
+
"changes/<plan_id>/HIGH_RISK_DECISION_REPORT.md",
|
|
133
|
+
],
|
|
134
|
+
forbiddenContext: [],
|
|
135
|
+
allowedOutputs: [
|
|
136
|
+
"changes/<analysis_id>/CHANGE_ANALYSIS.yaml",
|
|
137
|
+
"changes/<analysis_id>/CHANGE_ANALYSIS.md",
|
|
138
|
+
],
|
|
139
|
+
conditionalOutputs: [
|
|
140
|
+
"high-risk stop recommendation that points to the needed HIGH_RISK_DECISION_REPORT.md",
|
|
141
|
+
"queue maintenance recommendation when no candidate is safe to select",
|
|
142
|
+
],
|
|
143
|
+
forbiddenOutputs: [
|
|
144
|
+
"CANDIDATE_CHANGES.yaml mutations unless the user separately requests maintenance",
|
|
145
|
+
"SELECTED_CHANGE.yaml",
|
|
146
|
+
"ATOM_TASKS.yaml",
|
|
147
|
+
"IMPLEMENTATION_BRIEF.md",
|
|
148
|
+
"implementation code changes",
|
|
149
|
+
"high-risk implementation approval",
|
|
150
|
+
],
|
|
151
|
+
auditCheckpoints: {
|
|
152
|
+
before: [
|
|
153
|
+
"Run git status --short --branch and record branch and dirty-tree state.",
|
|
154
|
+
"Confirm this is a cross-queue decision; when only one queue is active, hand off to select-change.",
|
|
155
|
+
"Discover only user-provided queues, or obvious changes/*/CANDIDATE_CHANGES.yaml files when global analysis is requested.",
|
|
156
|
+
"Read YAML queues as source truth and Markdown views only as aids.",
|
|
157
|
+
],
|
|
158
|
+
during: [
|
|
159
|
+
"Score candidates by readiness, dependency unlock value, risk, branch fit, dirty-tree fit, Issue linkage, validation realism, and user recency.",
|
|
160
|
+
"Treat high-risk candidates as stop recommendations unless a concrete high-risk option is already approved.",
|
|
161
|
+
"Recommend exactly one target plan id and candidate id only when evidence supports selection.",
|
|
162
|
+
],
|
|
163
|
+
after: [
|
|
164
|
+
"Write CHANGE_ANALYSIS.yaml before CHANGE_ANALYSIS.md.",
|
|
165
|
+
"Record rejected alternatives with plan id, candidate id, and concise reasons.",
|
|
166
|
+
"Hand off to select-change without mutating selection artifacts.",
|
|
167
|
+
],
|
|
168
|
+
},
|
|
169
|
+
antiPatterns: [
|
|
170
|
+
"Do not select candidates from analyze-changes.",
|
|
171
|
+
"Do not implement candidates from analyze-changes.",
|
|
172
|
+
"Do not treat CHANGE_ANALYSIS.yaml as approval for high-risk implementation.",
|
|
173
|
+
"Do not discover every queue unless the user requests global comparison.",
|
|
174
|
+
"Do not use analyze-changes as a mandatory pre-step for single-queue selection.",
|
|
175
|
+
],
|
|
176
|
+
handoffCommands: ["/ow:select-change", "/ow:decompose-to-changes"],
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
function selectChangeProtocol() {
|
|
180
|
+
return {
|
|
181
|
+
depth: "deep",
|
|
182
|
+
interactionMode: "single-candidate-selection-and-atomization",
|
|
183
|
+
requiredContext: [
|
|
184
|
+
"references/planning-artifact-contracts.md",
|
|
185
|
+
"skills/select-change/references/selection-protocol.md",
|
|
186
|
+
"changes/<plan_id>/CANDIDATE_CHANGES.yaml",
|
|
187
|
+
],
|
|
188
|
+
optionalContext: [
|
|
189
|
+
"changes/<plan_id>/CANDIDATE_CHANGES.md",
|
|
190
|
+
"changes/<analysis_id>/CHANGE_ANALYSIS.yaml only for cross-queue recommendations",
|
|
191
|
+
"changes/<plan_id>/SUMMARY.yaml",
|
|
192
|
+
"changes/<plan_id>/HIGH_RISK_DECISION_REPORT.md",
|
|
193
|
+
],
|
|
194
|
+
forbiddenContext: [],
|
|
195
|
+
allowedOutputs: [
|
|
196
|
+
"changes/<plan_id>/<candidate-id>-<slug>/SELECTED_CHANGE.yaml",
|
|
197
|
+
"changes/<plan_id>/<candidate-id>-<slug>/ATOM_TASKS.yaml",
|
|
198
|
+
"changes/<plan_id>/<candidate-id>-<slug>/IMPLEMENTATION_BRIEF.md",
|
|
199
|
+
"selection and operation entries in changes/<plan_id>/CANDIDATE_CHANGES.yaml",
|
|
200
|
+
"refreshed changes/<plan_id>/CANDIDATE_CHANGES.md",
|
|
201
|
+
],
|
|
202
|
+
conditionalOutputs: [
|
|
203
|
+
"rejected alternatives copied from CHANGE_ANALYSIS.yaml when consuming cross-queue analysis",
|
|
204
|
+
"targeted readiness report when the user asks to inspect a candidate without selecting it",
|
|
205
|
+
],
|
|
206
|
+
forbiddenOutputs: [
|
|
207
|
+
"implementation code changes",
|
|
208
|
+
"local commits, stashes, resets, branch switches, or destructive git operations",
|
|
209
|
+
"risk: high selection without explicit approval of a concrete option from HIGH_RISK_DECISION_REPORT.md",
|
|
210
|
+
"generated .agents/** or .openworkflow/** edits unless selected and explicitly approved",
|
|
211
|
+
],
|
|
212
|
+
auditCheckpoints: {
|
|
213
|
+
before: [
|
|
214
|
+
"Run git status --short --branch and compare current branch with queue_policy.branch_boundary.",
|
|
215
|
+
"Check dirty-tree state and stop if unrelated work would contaminate the selected change.",
|
|
216
|
+
"For a single active queue, rank candidates directly without requiring analyze-changes.",
|
|
217
|
+
"Confirm candidate dependencies, readiness, risk, owned paths, validation, and acceptance.",
|
|
218
|
+
],
|
|
219
|
+
during: [
|
|
220
|
+
"Use next_recommended_candidate_id, dependency satisfaction, unlock value, selection_policy, risk, owned paths, and validation realism to choose inside one queue.",
|
|
221
|
+
"Select exactly one candidate inside the owning queue folder.",
|
|
222
|
+
"Re-check high-risk approval before writing selection artifacts for risk: high candidates.",
|
|
223
|
+
"Keep atom tasks small enough for one focused implementation pass.",
|
|
224
|
+
],
|
|
225
|
+
after: [
|
|
226
|
+
"Update candidate status to selected and append a selection operation.",
|
|
227
|
+
"Refresh the readable Markdown queue view.",
|
|
228
|
+
"Stop before implementation unless the user explicitly asks to continue.",
|
|
229
|
+
],
|
|
230
|
+
},
|
|
231
|
+
antiPatterns: [
|
|
232
|
+
"Do not silently select a high-risk candidate.",
|
|
233
|
+
"Do not select on the wrong branch without an explicit planning-only exception.",
|
|
234
|
+
"Do not mark the candidate done from select-change.",
|
|
235
|
+
"Do not create a new top-level changes folder for a candidate inside an existing feat queue.",
|
|
236
|
+
],
|
|
237
|
+
handoffCommands: ["/ow:change", "/ow:team", "/ow:git-automation"],
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
function gitAutomationProtocol() {
|
|
241
|
+
return {
|
|
242
|
+
depth: "deep",
|
|
243
|
+
interactionMode: "managed-git-lifecycle-shell",
|
|
244
|
+
requiredContext: [
|
|
245
|
+
"references/git-version-control-governance.md",
|
|
246
|
+
"references/gh-operation-governance.md",
|
|
247
|
+
"changes/<plan_id>/CANDIDATE_CHANGES.yaml",
|
|
248
|
+
],
|
|
249
|
+
optionalContext: [
|
|
250
|
+
"changes/<plan_id>/HIGH_RISK_DECISION_REPORT.md",
|
|
251
|
+
"changes/<plan_id>/PR_READY_SUMMARY.md",
|
|
252
|
+
"changes/<plan_id>/<candidate-id>-<slug>/LOCAL_COMMIT_EVIDENCE.yaml",
|
|
253
|
+
],
|
|
254
|
+
forbiddenContext: [],
|
|
255
|
+
allowedOutputs: [
|
|
256
|
+
"local branch checkout or creation through openworkflow git-automation branch",
|
|
257
|
+
"local selected-change commit through openworkflow git-automation commit",
|
|
258
|
+
"local PR_READY_SUMMARY.md through openworkflow git-automation summary",
|
|
259
|
+
"remote operation plan through openworkflow git-automation remote",
|
|
260
|
+
"remote read-only PR-ready plan through openworkflow git-automation remote-plan",
|
|
261
|
+
"draft PR pilot preview or explicitly gated mutation through openworkflow git-automation draft-pr",
|
|
262
|
+
"local evidence artifacts under changes/<plan_id>/",
|
|
263
|
+
],
|
|
264
|
+
conditionalOutputs: [
|
|
265
|
+
"high-risk decision report when remote mutation or autonomous mode is requested",
|
|
266
|
+
"follow-up CANDIDATE_CHANGES entry for autonomous git automation",
|
|
267
|
+
],
|
|
268
|
+
forbiddenOutputs: [
|
|
269
|
+
"git push without explicit operation-level user approval",
|
|
270
|
+
"gh pr create/edit/merge without explicit operation-level user approval",
|
|
271
|
+
"gh issue create/edit/close without explicit operation-level user approval",
|
|
272
|
+
"git reset, rebase, force-push, or destructive branch deletion",
|
|
273
|
+
],
|
|
274
|
+
auditCheckpoints: {
|
|
275
|
+
before: [
|
|
276
|
+
"Read the queue branch boundary and confirm current git state.",
|
|
277
|
+
"Confirm whether the requested mode is managed or autonomous.",
|
|
278
|
+
"Stop on autonomous or remote mutation requests unless a high-risk approval exists for exact operations.",
|
|
279
|
+
],
|
|
280
|
+
during: [
|
|
281
|
+
"Use dry-run or preview before any local mutation.",
|
|
282
|
+
"Record plan id, candidate id, branch, dirty paths, command preview, validation evidence, and affected paths.",
|
|
283
|
+
"Keep local branch, commit, and summary actions scoped to the selected queue.",
|
|
284
|
+
"When committing implementation work, write LOCAL_COMMIT_EVIDENCE.yaml under the selected-change folder and reference it from completion evidence.",
|
|
285
|
+
],
|
|
286
|
+
after: [
|
|
287
|
+
"Record commit hash and evidence path when a local commit is created.",
|
|
288
|
+
"Confirm the selected candidate completion records implementation_changed_files: true and a repo-relative LOCAL_COMMIT_EVIDENCE.yaml path.",
|
|
289
|
+
"Regenerate PR_READY_SUMMARY.md after commit evidence changes when appropriate.",
|
|
290
|
+
"Report remote operations as gated and include ordered commit or queue evidence for push, PR, and merge planning.",
|
|
291
|
+
],
|
|
292
|
+
},
|
|
293
|
+
antiPatterns: [
|
|
294
|
+
"Do not treat git-automation enabled as permission to push, merge, or mutate GitHub in this G015 shell.",
|
|
295
|
+
"Do not hide dirty paths or omit command previews from evidence.",
|
|
296
|
+
"Do not create a selected change with no local commit when implementation changed files.",
|
|
297
|
+
"Do not batch multiple completed selected changes into one checkpoint commit to satisfy commit evidence.",
|
|
298
|
+
"Do not amend only to force a commit to contain its own hash.",
|
|
299
|
+
],
|
|
300
|
+
handoffCommands: [
|
|
301
|
+
"openworkflow git-automation branch --root . --queue changes/<plan_id>/CANDIDATE_CHANGES.yaml --json",
|
|
302
|
+
"openworkflow git-automation commit --root . --queue changes/<plan_id>/CANDIDATE_CHANGES.yaml --candidate <id> --message <msg> --validation-evidence <cmds> --commit-evidence --json",
|
|
303
|
+
"openworkflow git-automation summary --root . --queue changes/<plan_id>/CANDIDATE_CHANGES.yaml --json",
|
|
304
|
+
"openworkflow git-automation simulate --root . --queue changes/<plan_id>/CANDIDATE_CHANGES.yaml --base <base-ref> --json",
|
|
305
|
+
"openworkflow git-automation remote-plan --root . --queue changes/<plan_id>/CANDIDATE_CHANGES.yaml --base <base-ref> --remote <remote> --target-base <branch> --json",
|
|
306
|
+
"openworkflow git-automation draft-pr --root . --queue changes/<plan_id>/CANDIDATE_CHANGES.yaml --base <base-ref> --remote <remote> --target-base <branch> --json",
|
|
307
|
+
],
|
|
308
|
+
internalSections: [
|
|
309
|
+
{
|
|
310
|
+
tag: "mode_policy",
|
|
311
|
+
items: [
|
|
312
|
+
"managed mode may perform approved local branch, commit, and summary operations with previews and evidence.",
|
|
313
|
+
"managed mode must gate remote push, PR, Issue, and merge operations behind explicit user approval while producing a clear operation plan.",
|
|
314
|
+
"remote-plan mode may read remote refs and PR metadata, but must not push, create PRs, edit PRs, merge, or mutate Issues.",
|
|
315
|
+
"draft-pr mode is disabled by default; mutation requires --write, --allow-draft-pr, current remote-plan evidence, and rollback guidance.",
|
|
316
|
+
"autonomous mode is a future high-risk path and is not implemented by the G015 command shell.",
|
|
317
|
+
],
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
tag: "evidence_policy",
|
|
321
|
+
items: [
|
|
322
|
+
"Every git operation must be traceable to a plan id, candidate id, command preview, before and after state, and validation evidence when applicable.",
|
|
323
|
+
"Remote approval handoff must include branch, target base, ordered local commits, PR-ready summary path, conflict-resolution checkpoint, and merge evidence expectations.",
|
|
324
|
+
"A selected change must have at least one local commit when implementation changed files, recorded in changes/<plan_id>/<candidate-id>-<slug>/LOCAL_COMMIT_EVIDENCE.yaml.",
|
|
325
|
+
"The owning queue completion must reference the selected-change LOCAL_COMMIT_EVIDENCE.yaml path; manual checkpoint batching is a failure mode, not valid evidence.",
|
|
326
|
+
"Follow-up evidence commits are allowed when they preserve the selected-change HEAD relationship.",
|
|
327
|
+
],
|
|
328
|
+
},
|
|
329
|
+
],
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
function coderProtocol() {
|
|
333
|
+
return {
|
|
334
|
+
depth: "deep",
|
|
335
|
+
interactionMode: "internal-agent-code-execution-governance",
|
|
336
|
+
requiredContext: [
|
|
337
|
+
"references/internal-coder-protocol.md",
|
|
338
|
+
"skills/coder/SKILL.md",
|
|
339
|
+
"changes/<plan_id>/CANDIDATE_CHANGES.yaml when queue-driven",
|
|
340
|
+
"changes/<plan_id>/<candidate-id>-<slug>/SELECTED_CHANGE.yaml when selected-change-driven",
|
|
341
|
+
"git status --short --branch",
|
|
342
|
+
],
|
|
343
|
+
optionalContext: [
|
|
344
|
+
"references/validation-trust-domains.md",
|
|
345
|
+
"references/skill-system-lifecycle.md",
|
|
346
|
+
"references/git-version-control-governance.md",
|
|
347
|
+
"changes/<plan_id>/<candidate-id>-<slug>/ATOM_TASKS.yaml",
|
|
348
|
+
"changes/<plan_id>/<candidate-id>-<slug>/IMPLEMENTATION_BRIEF.md",
|
|
349
|
+
"changes/<plan_id>/<candidate-id>-<slug>/LOCAL_COMMIT_EVIDENCE.yaml",
|
|
350
|
+
],
|
|
351
|
+
forbiddenContext: [
|
|
352
|
+
".openworkflow/runtime/** unless the active task is /ow:team execution",
|
|
353
|
+
"generated .agents/** as source truth",
|
|
354
|
+
],
|
|
355
|
+
allowedOutputs: [
|
|
356
|
+
"source edits already allowed by the current selected change",
|
|
357
|
+
"test, fixture, verifier, or reference edits already allowed by the current selected change",
|
|
358
|
+
"selected-change evidence updates under changes/<plan_id>/<candidate-id>-<slug>/",
|
|
359
|
+
"source-driven generated surfaces only after sync when the selected change owns them",
|
|
360
|
+
],
|
|
361
|
+
conditionalOutputs: [
|
|
362
|
+
"LOCAL_COMMIT_EVIDENCE.yaml through openworkflow git-automation commit when implementation files changed",
|
|
363
|
+
"future optional CODER_EVIDENCE.yaml only after a later selected change defines the artifact contract",
|
|
364
|
+
],
|
|
365
|
+
forbiddenOutputs: [
|
|
366
|
+
"user-facing command handoff to /ow:coder",
|
|
367
|
+
"new mandatory CODER_EVIDENCE.yaml",
|
|
368
|
+
"generated .agents/** hand edits",
|
|
369
|
+
".openworkflow/** mutation unless the active user-facing command owns that output",
|
|
370
|
+
"git push, PR creation, Issue mutation, merge, reset, rebase, force-push, or destructive branch operations",
|
|
371
|
+
],
|
|
372
|
+
auditCheckpoints: {
|
|
373
|
+
before: [
|
|
374
|
+
"Recover trust with repo-local resume, handoff, inspect --strict, and git status before source edits.",
|
|
375
|
+
"Identify selected plan id, candidate id, selected-change artifact, owned paths, forbidden paths, and validation commands when queue-driven.",
|
|
376
|
+
"Build an owner/file/dependency map that names source truth, derived surfaces, validators, tests or fixtures, public report surfaces, and docs or skills.",
|
|
377
|
+
"Decide whether RED evidence is required for the change type; for docs-only or contract-only work, record why RED is not applicable.",
|
|
378
|
+
],
|
|
379
|
+
during: [
|
|
380
|
+
"Change the source owner first and regenerate derived surfaces only through the repo-local sync path when generated surfaces are in scope.",
|
|
381
|
+
"For behavior, validator, CLI report, generated-surface, path-safety, summary, queue, or git-evidence changes, produce RED evidence before production edits when practical.",
|
|
382
|
+
"After edits, rerun the RED evidence or nearest equivalent and record GREEN evidence for the touched trust domain.",
|
|
383
|
+
"Keep /ow:change responsible for selected-change boundaries and /ow:team responsible for managed execution; coder governance constrains source edits but does not replace either command.",
|
|
384
|
+
],
|
|
385
|
+
after: [
|
|
386
|
+
"Run the post-write self-check from skills/coder/SKILL.md before final validation.",
|
|
387
|
+
"Run the narrowest honest validation ladder for the touched trust domain.",
|
|
388
|
+
"Bind validation evidence to SELECTED_CHANGE.yaml, ATOM_TASKS.yaml, IMPLEMENTATION_BRIEF.md, or LOCAL_COMMIT_EVIDENCE.yaml as appropriate.",
|
|
389
|
+
"Report generated surfaces as source-driven or intentionally untouched; do not present /ow:coder as a normal user-facing next step.",
|
|
390
|
+
],
|
|
391
|
+
},
|
|
392
|
+
antiPatterns: [
|
|
393
|
+
"Do not expose /ow:coder as a normal user-facing workflow entrypoint.",
|
|
394
|
+
"Do not use /ow:coder to bypass /ow:change selected-change boundaries or /ow:team execution governance.",
|
|
395
|
+
"Do not patch generated .agents surfaces as the durable fix.",
|
|
396
|
+
"Do not require CODER_EVIDENCE.yaml before a later candidate defines and proves the evidence contract.",
|
|
397
|
+
"Do not treat npm run build alone as sufficient validation for behavior, validator, generated-surface, summary, or git-evidence changes.",
|
|
398
|
+
"Do not hide historical validation debt; classify it separately from active-change failures.",
|
|
399
|
+
],
|
|
400
|
+
internalSections: [
|
|
401
|
+
{
|
|
402
|
+
tag: "internal_command_boundary",
|
|
403
|
+
items: [
|
|
404
|
+
"/ow:coder is internal and Agent-only.",
|
|
405
|
+
"It is not a normal user-facing coding command and must not appear as the recommended handoff for product work.",
|
|
406
|
+
"It constrains source-edit quality inside /ow:change, /ow:team, git-automation, and other implementation flows.",
|
|
407
|
+
"Its source behavior lives in skills/coder/SKILL.md and references/internal-coder-protocol.md.",
|
|
408
|
+
],
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
tag: "preflight_owner_map",
|
|
412
|
+
items: [
|
|
413
|
+
"Identify source truth before edits: command registry, artifact registry, schema, validator, adapter template, source skill, or planning queue.",
|
|
414
|
+
"Identify derived surfaces such as .agents/**, .openworkflow/audit/**, summaries, fixtures, and readable Markdown views.",
|
|
415
|
+
"Name forbidden paths and dependency order before writing across multiple concerns.",
|
|
416
|
+
"If two owners define the same rule, either collapse the duplication or record a temporary compatibility boundary.",
|
|
417
|
+
],
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
tag: "red_green_evidence",
|
|
421
|
+
items: [
|
|
422
|
+
"For behavior, validator, CLI report, generated-surface, path-safety, summary, queue, or git-evidence changes, prefer RED evidence before production edits.",
|
|
423
|
+
"Valid RED evidence can be a failing parsed JSON/YAML assertion, fixture, generated-surface parity check, summary or resume health assertion, compile failure, or runtime verifier failure.",
|
|
424
|
+
"After edits, rerun the RED evidence or nearest equivalent and record GREEN evidence.",
|
|
425
|
+
"For docs-only, contract-only, mechanical rename, or exploratory work, mark RED not applicable and use the nearest structural check.",
|
|
426
|
+
],
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
tag: "validation_ladder",
|
|
430
|
+
items: [
|
|
431
|
+
"Use the narrowest honest validation ladder for the touched trust domain.",
|
|
432
|
+
"Source skill or generated protocol work requires build, sync, generated diff review, strict inspect, and diff check.",
|
|
433
|
+
"Command registry or generated runtime surface work requires build, sync, runtime-surface verification, and generated diff review.",
|
|
434
|
+
"Artifact, schema, or validator work requires build, validate, and targeted valid/invalid fixtures.",
|
|
435
|
+
"Git evidence work requires git-automation preview/write plus strict read-model commands.",
|
|
436
|
+
],
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
tag: "evidence_binding",
|
|
440
|
+
items: [
|
|
441
|
+
"Bind scope and acceptance to SELECTED_CHANGE.yaml.",
|
|
442
|
+
"Bind task status and verification results to ATOM_TASKS.yaml.",
|
|
443
|
+
"Bind handoff instructions to IMPLEMENTATION_BRIEF.md.",
|
|
444
|
+
"Bind local commit hashes and validation evidence to LOCAL_COMMIT_EVIDENCE.yaml when implementation files changed.",
|
|
445
|
+
"Do not batch multiple completed selected changes into one checkpoint commit.",
|
|
446
|
+
],
|
|
447
|
+
},
|
|
448
|
+
],
|
|
449
|
+
handoffCommands: [],
|
|
450
|
+
};
|
|
451
|
+
}
|
|
43
452
|
function visionProtocol() {
|
|
44
453
|
return {
|
|
45
454
|
depth: "deep",
|
|
46
|
-
interactionMode: "
|
|
455
|
+
interactionMode: "delayed-compile-product-interrogation",
|
|
47
456
|
requiredContext: [
|
|
48
457
|
".openworkflow/workflow/WORKFLOW_INDEX.yaml",
|
|
49
458
|
".openworkflow/audit/ARTIFACT_CONTRACTS.yaml",
|
|
@@ -74,33 +483,70 @@ function visionProtocol() {
|
|
|
74
483
|
auditCheckpoints: {
|
|
75
484
|
before: [
|
|
76
485
|
"Confirm workflow and context indexes exist.",
|
|
77
|
-
"
|
|
486
|
+
"Load CURRENT_STATE.yaml when present to avoid stale stage routing.",
|
|
487
|
+
"Enter interview mode as product partner, requirements interrogator, and intent compiler.",
|
|
488
|
+
"Ask the next useful vision question before writing artifacts; do not start by creating or updating durable vision files.",
|
|
489
|
+
"If resuming, load only current vision/context state needed to continue the conversation and identify any stale current_question.",
|
|
78
490
|
],
|
|
79
491
|
during: [
|
|
80
492
|
"Ask one focused question at a time and make each question depend on the previous answer.",
|
|
81
|
-
"
|
|
493
|
+
"Keep brainstorming in conversation memory until a meaningful checkpoint, pause request, or compile readiness boundary.",
|
|
494
|
+
"Challenge thin, generic, contradictory, or implementation-shaped answers until the strategic product intent is clear.",
|
|
495
|
+
"Cover mandatory vision and proto-readiness dimensions before validation handoff.",
|
|
82
496
|
"Provide concrete examples or options when the user is stuck.",
|
|
83
497
|
],
|
|
84
498
|
after: [
|
|
85
|
-
"Persist artifacts only after stable answers, explicit save request, or readiness checkpoint.",
|
|
86
|
-
"
|
|
499
|
+
"Persist artifacts only in checkpoint mode or compile mode after stable answers, explicit save request, or readiness checkpoint.",
|
|
500
|
+
"Compile durable VISION artifacts only after proto_readiness.status can be ready or blockers are explicit and the user confirms the interview can stop.",
|
|
501
|
+
"Handoff to validation only after mandatory coverage, proto-readiness, unresolved blockers, and user readiness are explicit.",
|
|
502
|
+
"When handing off, mark the vision session active or reviewed, clear stale current_question when answered, and update CURRENT_STATE.yaml.",
|
|
87
503
|
"Confirm no validation, prototype, spec, change, or runtime artifacts were created.",
|
|
88
504
|
],
|
|
89
505
|
},
|
|
90
506
|
antiPatterns: [
|
|
507
|
+
"Do not write durable vision artifacts after every user answer.",
|
|
91
508
|
"Do not open by writing vision artifacts before the conversation has stable answers.",
|
|
92
509
|
"Do not create validation rankings during vision work.",
|
|
510
|
+
"Do not create prototype prompt packs during vision work; record proto-readiness inputs and hand off to /ow:proto later.",
|
|
93
511
|
"Do not create specs, changes, tasks, or teams from a vision session.",
|
|
94
512
|
"Do not batch many interview questions into one turn.",
|
|
95
513
|
"Do not hand off to validation after a fixed small number of questions.",
|
|
514
|
+
"Do not hide thin or conflicted answers as polished product truth.",
|
|
96
515
|
],
|
|
97
516
|
internalSections: [
|
|
517
|
+
{
|
|
518
|
+
tag: "vision_role",
|
|
519
|
+
items: [
|
|
520
|
+
"Act as product partner: improve the product thesis, surface sharper alternatives, and protect the user from weak strategic defaults.",
|
|
521
|
+
"Act as requirements interrogator: probe unclear assumptions, contradictions, target user ambiguity, trust boundaries, and success criteria.",
|
|
522
|
+
"Act as intent compiler: convert conversation into structured strategic_core, product_system_seed, proto_readiness, and coverage fields only when the intent is stable.",
|
|
523
|
+
],
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
tag: "interaction_modes",
|
|
527
|
+
items: [
|
|
528
|
+
"Interview mode is the default: ask one focused question at a time and do not write durable .openworkflow/vision artifacts after each answer.",
|
|
529
|
+
"Checkpoint mode writes a lightweight durable snapshot only when the user asks to save, the session is pausing, a topic has closed, or a load-bearing ambiguity must not be lost.",
|
|
530
|
+
"Compile mode writes VISION.md, VISION_CONTRACT.yaml, VISION_SESSION.yaml, and NOTE.md only after mandatory discovery coverage and proto-readiness are sufficient or explicitly blocked.",
|
|
531
|
+
],
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
tag: "agent_first_consumer",
|
|
535
|
+
items: [
|
|
536
|
+
"Treat the next implementing Agent as the first consumer of vision artifacts.",
|
|
537
|
+
"Before persistence or handoff, make the compact vision state answer: current state, read-first pointers, source-of-truth artifact, unresolved blockers, safe write boundary, proto-readiness, validation target, and next command.",
|
|
538
|
+
"The vision_delta must preserve enough handoff intelligence for a low-context Agent: one sentence, users, core problem, goals, non-goals, quality bar, AI-native role, success signals, and failure signals.",
|
|
539
|
+
"The strategic_core and product_system_seed must let /ow:proto generate prototype directions without inventing the core strategy.",
|
|
540
|
+
"If those handoff fields are thin, continue the conversation or record explicit unresolved questions instead of presenting the artifact as ready.",
|
|
541
|
+
],
|
|
542
|
+
},
|
|
98
543
|
{
|
|
99
544
|
tag: "conversation_first",
|
|
100
545
|
items: [
|
|
101
546
|
"Treat /ow:vision as a focused product conversation, not an artifact fill-out task.",
|
|
102
547
|
"Ask exactly one question unless the user explicitly requests a summary or save checkpoint.",
|
|
103
548
|
"Let each answer drive the next deeper question; do not run a generic questionnaire mechanically.",
|
|
549
|
+
"A long interview is acceptable when it improves product truth; auditability is preserved through checkpoints and compile, not per-answer file churn.",
|
|
104
550
|
],
|
|
105
551
|
},
|
|
106
552
|
{
|
|
@@ -114,199 +560,700 @@ function visionProtocol() {
|
|
|
114
560
|
"Cover privacy, data, sharing, and retention assumptions.",
|
|
115
561
|
"Cover alternatives or competing mental models.",
|
|
116
562
|
"Cover success signals and failure signals.",
|
|
563
|
+
"Cover prototype direction seeds and prompt constraints needed by /ow:proto.",
|
|
564
|
+
],
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
tag: "proto_readiness_gate",
|
|
568
|
+
items: [
|
|
569
|
+
"VISION.md is ready only when /ow:proto can derive 3-5 strategically distinct prototype directions without inventing the product strategy.",
|
|
570
|
+
"Before compile, verify target user, behavior change, mechanism, differentiator, boundary conditions, trust controls, anti-goals, strongest success signal, failure signals, prototype direction seeds, prompt constraints, and validation target.",
|
|
571
|
+
"If proto_readiness.status is missing or thin, keep interviewing or record explicit blockers; do not hand off as ready.",
|
|
572
|
+
"If the user asks for prototype prompts directly and proto-readiness is ready, hand off to /ow:proto; otherwise continue the vision interview.",
|
|
573
|
+
],
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
tag: "readiness_gate",
|
|
577
|
+
items: [
|
|
578
|
+
"Do not hand off to /ow:validation until mandatory coverage is addressed, proto-readiness is ready or explicitly blocked, unresolved questions are explicit, and the user confirms readiness.",
|
|
579
|
+
"If a dimension is thin, ask another targeted question instead of writing a final artifact.",
|
|
580
|
+
"Vision readiness is based on strategic depth, proto-readiness, and user confirmation, not on a fixed number of turns.",
|
|
581
|
+
],
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
tag: "artifact_checkpoint",
|
|
585
|
+
items: [
|
|
586
|
+
"Write VISION_SESSION.yaml, VISION_CONTRACT.yaml, VISION.md, or context updates only after stable answers, explicit checkpoint request, pause boundary, or compile readiness.",
|
|
587
|
+
"Keep brainstorming and tentative hypotheses in NOTE.md or unresolved_questions rather than presenting them as stable product truth.",
|
|
588
|
+
"Summarize at meaningful checkpoints before persisting durable vision state.",
|
|
589
|
+
],
|
|
590
|
+
},
|
|
591
|
+
],
|
|
592
|
+
handoffCommands: ["/ow:validation"],
|
|
593
|
+
};
|
|
594
|
+
}
|
|
595
|
+
function validationProtocol() {
|
|
596
|
+
return {
|
|
597
|
+
depth: "deep",
|
|
598
|
+
interactionMode: "prototype-validation-target-compiler",
|
|
599
|
+
requiredContext: [
|
|
600
|
+
".openworkflow/workflow/WORKFLOW_INDEX.yaml",
|
|
601
|
+
".openworkflow/audit/ARTIFACT_CONTRACTS.yaml",
|
|
602
|
+
".openworkflow/vision/VISION_CONTRACT.yaml",
|
|
603
|
+
],
|
|
604
|
+
optionalContext: [
|
|
605
|
+
".openworkflow/validation/VALIDATION_INDEX.yaml",
|
|
606
|
+
".openworkflow/vision/VISION.md",
|
|
607
|
+
".openworkflow/context/CONTEXT.md",
|
|
608
|
+
".openworkflow/context/CONTEXT_MAP.yaml",
|
|
609
|
+
],
|
|
610
|
+
forbiddenContext: [".openworkflow/runtime/**", ".openworkflow/changes/**"],
|
|
611
|
+
allowedOutputs: [
|
|
612
|
+
".openworkflow/validation/VALIDATION_INDEX.yaml",
|
|
613
|
+
".openworkflow/validation/<id>/VALIDATION.yaml",
|
|
614
|
+
".openworkflow/validation/<id>/NOTE.md",
|
|
615
|
+
],
|
|
616
|
+
forbiddenOutputs: [
|
|
617
|
+
".openworkflow/prototypes/**",
|
|
618
|
+
".openworkflow/specs/**",
|
|
619
|
+
".openworkflow/changes/**",
|
|
620
|
+
".openworkflow/runtime/**",
|
|
621
|
+
],
|
|
622
|
+
auditCheckpoints: {
|
|
623
|
+
before: [
|
|
624
|
+
"Confirm a vision contract exists and is proto-ready enough to validate.",
|
|
625
|
+
"Load CURRENT_STATE.yaml when present.",
|
|
626
|
+
"Load only vision, validation index, and build-validation context.",
|
|
627
|
+
"Return to /ow:vision when missing vision fields would force /ow:proto to invent product strategy.",
|
|
628
|
+
],
|
|
629
|
+
during: [
|
|
630
|
+
"Select exactly one central uncertainty for the next prototype to reduce.",
|
|
631
|
+
"Define target_behavior and the minimum prototype_experiment needed to observe it.",
|
|
632
|
+
"Write observable_signals for pass, fail, and ambiguous evidence.",
|
|
633
|
+
"Write decision_rules for continue, revise, pivot, stop, and needs_more_evidence.",
|
|
634
|
+
"Record vision_gaps and agent_readiness_gate without generating prototype artifacts.",
|
|
635
|
+
],
|
|
636
|
+
after: [
|
|
637
|
+
"Record central_uncertainty, hypothesis, target_behavior, prototype_experiment, observable_signals, decision_rules, vision_gaps, and agent_readiness_gate.",
|
|
638
|
+
"Set agent_readiness_gate.status to ready_for_proto, thin_validation, stale_validation, or return_to_vision.",
|
|
639
|
+
"Update CURRENT_STATE.yaml with current_validation, active_stage validation, and the next command.",
|
|
640
|
+
"Mark superseded validation targets accordingly when a new validation target replaces them.",
|
|
641
|
+
"Confirm no prototype, spec, change, or runtime artifacts were created.",
|
|
642
|
+
],
|
|
643
|
+
},
|
|
644
|
+
antiPatterns: [
|
|
645
|
+
"Do not treat feature classification or backlog ranking as the validation outcome.",
|
|
646
|
+
"Do not generate prototype prompts, images, HTML, specs, changes, or runtime artifacts.",
|
|
647
|
+
"Do not hide missing vision evidence by writing a polished but unsupported validation target.",
|
|
648
|
+
"Do not select multiple unrelated validation targets in one artifact.",
|
|
649
|
+
],
|
|
650
|
+
handoffCommands: ["/ow:proto", "/ow:vision"],
|
|
651
|
+
};
|
|
652
|
+
}
|
|
653
|
+
function prototypeProtocol() {
|
|
654
|
+
return {
|
|
655
|
+
depth: "deep",
|
|
656
|
+
interactionMode: "image-first-strategic-proto-prompt-pack",
|
|
657
|
+
requiredContext: [
|
|
658
|
+
".openworkflow/workflow/WORKFLOW_INDEX.yaml",
|
|
659
|
+
".openworkflow/audit/ARTIFACT_CONTRACTS.yaml",
|
|
660
|
+
],
|
|
661
|
+
optionalContext: [
|
|
662
|
+
".openworkflow/vision/VISION_CONTRACT.yaml",
|
|
663
|
+
".openworkflow/vision/VISION.md",
|
|
664
|
+
".openworkflow/validation/VALIDATION_INDEX.yaml",
|
|
665
|
+
".openworkflow/validation/**/VALIDATION.yaml",
|
|
666
|
+
".openworkflow/prototypes/PROTOTYPE_INDEX.yaml",
|
|
667
|
+
".openworkflow/context/CONTEXT.md",
|
|
668
|
+
".openworkflow/context/CONTEXT_MAP.yaml",
|
|
669
|
+
"package.json",
|
|
670
|
+
],
|
|
671
|
+
forbiddenContext: [".openworkflow/runtime/**", ".openworkflow/changes/**", ".openworkflow/specs/**"],
|
|
672
|
+
allowedOutputs: [
|
|
673
|
+
".openworkflow/prototypes/PROTOTYPE_INDEX.yaml",
|
|
674
|
+
".openworkflow/prototypes/<id>/PROTO_PROMPT_PACK.yaml",
|
|
675
|
+
".openworkflow/prototypes/<id>/PROTO_PROMPT_PACK.md",
|
|
676
|
+
".openworkflow/prototypes/<id>/REVIEW_PLAN.md",
|
|
677
|
+
".openworkflow/prototypes/<id>/EVIDENCE.yaml",
|
|
678
|
+
".openworkflow/prototypes/<id>/NOTE.md",
|
|
679
|
+
".openworkflow/prototypes/<id>/images/**",
|
|
680
|
+
".openworkflow/decisions/DECISION_INDEX.yaml",
|
|
681
|
+
".openworkflow/decisions/<id>/DECISION.yaml",
|
|
682
|
+
".openworkflow/decisions/<id>/NOTE.md",
|
|
683
|
+
],
|
|
684
|
+
conditionalOutputs: [
|
|
685
|
+
".openworkflow/validation/VALIDATION_INDEX.yaml",
|
|
686
|
+
".openworkflow/validation/<id>/VALIDATION.yaml",
|
|
687
|
+
".openworkflow/validation/<id>/NOTE.md",
|
|
688
|
+
],
|
|
689
|
+
forbiddenOutputs: [
|
|
690
|
+
".openworkflow/prototypes/<id>/review.html",
|
|
691
|
+
".openworkflow/specs/**",
|
|
692
|
+
".openworkflow/changes/**",
|
|
693
|
+
".openworkflow/runtime/**",
|
|
694
|
+
],
|
|
695
|
+
auditCheckpoints: {
|
|
696
|
+
before: [
|
|
697
|
+
"Act as the user-facing orchestrator for the internal proto pipeline: proto-preflight, /ow:build-proto-prompt or compatible /ow:vision2prompt compiler path, then /ow:prompt2proto/build-prototype consumption.",
|
|
698
|
+
"Load vision and current validation context; validation is required before prototype generation.",
|
|
699
|
+
"If current_validation is missing, auto-run /ow:validation first and write VALIDATION.yaml, NOTE.md, and VALIDATION_INDEX.yaml with trigger.mode agent_auto, requested_command /ow:proto, and reason missing_current_validation.",
|
|
700
|
+
"Proceed only after validation_input.mode can reference a durable validation artifact; do not use ephemeral vision_only validation context.",
|
|
701
|
+
"Verify vision and validation artifact quality before prompt work; if either is missing, thin, stale, or not strong enough for high-quality prototype prompts, route back to /ow:vision with focused follow-up questions instead of generating prompts.",
|
|
702
|
+
"If the user has not specified the number of strategically different prototype directions, askUserQuestion for the count; use 3 only when the user explicitly delegates that decision to the agent.",
|
|
703
|
+
"Extract the strategic core: target user, behavior change, mechanism, differentiator, boundary conditions, and central uncertainty.",
|
|
704
|
+
],
|
|
705
|
+
during: [
|
|
706
|
+
"Before strategic directions, require /ow:build-proto-prompt or compatible /ow:vision2prompt compiler path to infer product_experience_model: product archetype, primary canvas, information architecture, domain objects, task loop, interaction states, data realism, visual language, and anti-generic constraints.",
|
|
707
|
+
"Before /ow:prompt2proto, require prototype_system_contract so stable app shell, navigation, data vocabulary, object anatomy, action bar, audit pattern, copy tone, and allowed deltas are explicit.",
|
|
708
|
+
"Treat scenarios such as planning, incident, or capacity as possible modules, layers, workflows, or states inside one product shell unless they truly imply different product forms.",
|
|
709
|
+
"Internally trigger /ow:build-proto-prompt or compatible /ow:vision2prompt compiler path to generate 5-8 strategic prototype hypotheses, select the resolved direction count, and write all multi-direction, multi-image prompt text.",
|
|
710
|
+
"Do not internally trigger /ow:prompt2proto until prompt_text_manifest.status is ready_for_image_generation and every selected direction has concrete screen prompts.",
|
|
711
|
+
"Do not internally trigger /ow:prompt2proto until prototype_system_contract exists, prompt_pack_integrity_gate.status and prototype_reality_gate.status are pass and quality_rubric.prompt_executability is pass.",
|
|
712
|
+
"Do not internally trigger /ow:prompt2proto until post_validate.status is pass for resolved_count 2 or more, or skipped when the user explicitly requested exactly one strategic direction.",
|
|
713
|
+
"If post_validate.status is fail, or if prompt_pack_integrity_gate, prototype_reality_gate, prompt executability, prototype_system_contract, paragraph quality, or philosophy readiness fails, route back through /ow:build-proto-prompt or compatible /ow:vision2prompt prompt repair instead of starting image generation.",
|
|
714
|
+
"After prompt_text_manifest.status is ready_for_image_generation and post_validate.status is pass or skipped, Batch-generate prototype images by internally triggering /ow:prompt2proto/build-prototype only after ready prompt-pack artifacts exist; build-prototype consumes the ready pack and must not recompile vision into prompt text.",
|
|
715
|
+
"Recommend the first direction to generate based on risk reduction, observability, feasibility, and closeness to the success signal.",
|
|
716
|
+
],
|
|
717
|
+
after: [
|
|
718
|
+
"Write PROTO_PROMPT_PACK.yaml, PROTO_PROMPT_PACK.md, REVIEW_PLAN.md, compact EVIDENCE.yaml, prompt_text_manifest, and image_generation collection state.",
|
|
719
|
+
"Record review evidence and a decision audit record internally after prompt-pack evidence changes.",
|
|
720
|
+
"Refresh prototype SUMMARY.yaml when summary_policy is configured and update CURRENT_STATE.yaml with current_prototype, last_decision, and next_command.",
|
|
721
|
+
"Confirm no HTML, design, spec, change, team, persistence, or production hardening was created.",
|
|
722
|
+
],
|
|
723
|
+
},
|
|
724
|
+
antiPatterns: [
|
|
725
|
+
"Do not generate HTML, CSS, local runnable apps, or implementation tasks from /ow:proto.",
|
|
726
|
+
"Do not treat visual style variants as strategic directions.",
|
|
727
|
+
"Do not hide missing validation or proceed in ephemeral vision_only mode.",
|
|
728
|
+
"Do not convert prompt packs into production specs or change backlogs.",
|
|
729
|
+
"Do not create design, specs, changes, or teams from unaccepted prompt-pack evidence.",
|
|
730
|
+
"Do not ask the user to manually invoke /ow:decision after prototype work; record the decision audit internally.",
|
|
731
|
+
],
|
|
732
|
+
internalSections: [
|
|
733
|
+
{
|
|
734
|
+
tag: "internal_proto_pipeline",
|
|
735
|
+
items: [
|
|
736
|
+
"/ow:proto is the only user-facing command in this chain; /ow:build-proto-prompt, /ow:vision2prompt compatibility, and /ow:prompt2proto are internal commands.",
|
|
737
|
+
"/ow:vision2prompt and /ow:prompt2proto are internal commands; do not expose them as normal user-facing handoffs from /ow:proto.",
|
|
738
|
+
"Run proto-preflight first, then /ow:build-proto-prompt or compatible /ow:vision2prompt compiler path, then /ow:prompt2proto/build-prototype consumption.",
|
|
739
|
+
"Record internal_pipeline.stages with stage ids proto-preflight, build-proto-prompt or vision2prompt-compatible compiler, and prompt2proto in EVIDENCE.yaml.",
|
|
740
|
+
"Do not expose /ow:build-proto-prompt, /ow:vision2prompt, or /ow:prompt2proto as normal user-facing handoffs.",
|
|
741
|
+
],
|
|
742
|
+
},
|
|
743
|
+
{
|
|
744
|
+
tag: "validation_consumption",
|
|
745
|
+
items: [
|
|
746
|
+
"If validation artifacts are absent but a vision exists, auto-run /ow:validation first and persist VALIDATION.yaml, NOTE.md, and VALIDATION_INDEX.yaml.",
|
|
747
|
+
"Auto validation must set trigger.mode: agent_auto, trigger.requested_command: /ow:proto, and trigger.reason: missing_current_validation.",
|
|
748
|
+
"If VALIDATION.yaml exists, consume it and preserve central_uncertainty, prototype_experiment, observable_signals, decision_rules, and include/exclude boundaries.",
|
|
749
|
+
"Before prompt generation, verify that both VISION.md or VISION_CONTRACT.yaml and VALIDATION.yaml are high-quality enough to produce high-quality prototype prompts.",
|
|
750
|
+
"If source quality is insufficient, record preflight_quality_gate.can_proceed false and hand back to /ow:vision with targeted missing questions.",
|
|
751
|
+
"If validation conflicts with vision, stop for a decision instead of broadening scope silently.",
|
|
752
|
+
],
|
|
753
|
+
},
|
|
754
|
+
{
|
|
755
|
+
tag: "preflight_quality_gate",
|
|
756
|
+
items: [
|
|
757
|
+
"Set preflight_quality_gate.vision_status and validation_status to missing, thin, or ready before prompt work.",
|
|
758
|
+
"Set preflight_quality_gate.can_proceed true only when vision and validation can support high-quality prototype prompt generation without agent invention.",
|
|
759
|
+
"When can_proceed is false, set next_command_when_blocked: /ow:vision and include required_followup_questions for the user's supplemental interview.",
|
|
760
|
+
],
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
tag: "direction_count_policy",
|
|
764
|
+
items: [
|
|
765
|
+
"If the user did not specify NUMBER_OF_TYPES or a strategic direction count, askUserQuestion before generating prompt directions.",
|
|
766
|
+
"If the user answers with a count, set source: user_input and resolved_count to that number.",
|
|
767
|
+
"If the user delegates direction count to the agent, set source: agent_default_after_user_delegation and resolved_count: 3.",
|
|
768
|
+
"Do not silently default to 3 before the user either provides a count or delegates the choice.",
|
|
769
|
+
],
|
|
770
|
+
},
|
|
771
|
+
{
|
|
772
|
+
tag: "strategic_prompt_pack",
|
|
773
|
+
items: [
|
|
774
|
+
"Write prompt_pack_type: strategic_proto_prompt_pack.",
|
|
775
|
+
"Normalize product domain, primary user, usage context, current alternative, core pain, desired behavior change, strongest success signal, core differentiator, emotional value, functional value, trust requirements, privacy requirements, non-goals, future opportunities, and validation target.",
|
|
776
|
+
"Represent strategic_core as target user plus behavior change plus mechanism plus differentiator plus boundary conditions.",
|
|
777
|
+
"Write product_experience_model before directions: product_archetype, primary_canvas, information_architecture, domain_object_model, primary_task_loop, interaction_state_model, data_realism_requirements, visual_language, anti_generic_constraints, and category_quality_bar.",
|
|
778
|
+
"Use product_experience_model to decide whether source concepts are separate strategic directions or modules, scenarios, layers, states, or workflows inside one product shell.",
|
|
779
|
+
"Convert non-goals and category anti-patterns into negative_constraints; explicitly block generic AI dashboards, consulting-report layouts, and card walls when the target product category implies a richer product shell.",
|
|
780
|
+
"Generate more candidate hypotheses than needed, then select the resolved direction count with maximum strategic diversity.",
|
|
781
|
+
"Each direction must include direction_id, name, strategic_hypothesis, validates, main_risk, distinctness_rationale, prototype_prompt, screen_prompts, and pm_judgment.",
|
|
782
|
+
],
|
|
783
|
+
},
|
|
784
|
+
{
|
|
785
|
+
tag: "prompt_text_manifest",
|
|
786
|
+
items: [
|
|
787
|
+
"Write complete prompt text for every selected direction before invoking image generation.",
|
|
788
|
+
"Each direction should include multi-image screen prompt text with prompt_id, screen_name, image_role, prompt, and acceptance_criteria.",
|
|
789
|
+
"Set prompt_text_manifest.status: ready_for_image_generation only after every selected direction has concrete, directly executable prompt text and screen-bound prompt refs.",
|
|
790
|
+
"Do not set prompt_text_manifest.status: ready_for_image_generation when prompt_pack_integrity_gate, prototype_reality_gate, screen_manifest coverage, or quality_rubric.prompt_executability is missing or failing.",
|
|
791
|
+
],
|
|
792
|
+
},
|
|
793
|
+
{
|
|
794
|
+
tag: "prompt_pack_handoff_gate",
|
|
795
|
+
items: [
|
|
796
|
+
"Before /ow:prompt2proto, require prompt_pack_integrity_gate.status: pass.",
|
|
797
|
+
"Before /ow:prompt2proto, require prototype_reality_gate.status: pass.",
|
|
798
|
+
"Before /ow:prompt2proto, require screen_manifest entries and direction screen_prompts to resolve by target_screen_id.",
|
|
799
|
+
"Before /ow:prompt2proto, require quality_rubric.prompt_executability.status: pass.",
|
|
800
|
+
"If any required gate fails or is missing, keep image_generation.status: not_started and repair inside /ow:vision2prompt.",
|
|
801
|
+
],
|
|
802
|
+
},
|
|
803
|
+
{
|
|
804
|
+
tag: "post_validate_gate",
|
|
805
|
+
items: [
|
|
806
|
+
"Run prompt asset post-validation after prompt_text_manifest.status is ready_for_image_generation and before /ow:prompt2proto.",
|
|
807
|
+
"Require post_validate.status: pass when direction_count_policy.resolved_count is 2 or more.",
|
|
808
|
+
"Set post_validate.status: skipped only when direction_count_policy.resolved_count is 1 because the user explicitly requested exactly one strategic direction.",
|
|
809
|
+
"Do not start image_generation or invoke /ow:prompt2proto when post_validate.status is fail; route back to /ow:vision2prompt prompt repair.",
|
|
810
|
+
],
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
tag: "image_generation",
|
|
814
|
+
items: [
|
|
815
|
+
"After prompt_text_manifest.status is ready_for_image_generation and post_validate.status is pass or skipped, Batch-generate prototype images from the prepared prompt text.",
|
|
816
|
+
"Generate image groups by direction and screen prompt; keep each generated image linked to direction_id and prompt_id.",
|
|
817
|
+
"Record image_generation.status, batch_strategy, generated_images, and collection_notes in EVIDENCE.yaml.",
|
|
818
|
+
"Do not use image generation as a substitute for missing strategy or incomplete prompt text.",
|
|
819
|
+
],
|
|
820
|
+
},
|
|
821
|
+
{
|
|
822
|
+
tag: "image_only_boundary",
|
|
823
|
+
items: [
|
|
824
|
+
"/ow:proto creates prompt packs and image groups for high-fidelity static prototype images.",
|
|
825
|
+
"Do not write HTML, CSS, runnable prototypes, production code, deployment config, auth, persistence, or team runtime.",
|
|
826
|
+
"Hand off to /ow:tune when generated images or accepted baseline screens need refinement.",
|
|
827
|
+
],
|
|
828
|
+
},
|
|
829
|
+
{
|
|
830
|
+
tag: "review_evidence",
|
|
831
|
+
items: [
|
|
832
|
+
"Record selected direction, user feedback, accepted elements, rejected elements, tune requests, and recommendation.",
|
|
833
|
+
"Use recommendation continue, tune, pivot, stop, or needs_more_evidence.",
|
|
834
|
+
"Reference generated images by path when present; do not embed large binary evidence.",
|
|
835
|
+
],
|
|
836
|
+
},
|
|
837
|
+
{
|
|
838
|
+
tag: "internal_decision_audit",
|
|
839
|
+
items: [
|
|
840
|
+
"After creating or revising prototype evidence, write or update a decision audit record without asking the user to invoke /ow:decision.",
|
|
841
|
+
"Use revise when the user asks for another tuning pass, continue when the user explicitly accepts evidence for design, pivot or stop when explicitly directed, and needs_more_evidence when evidence is inconclusive.",
|
|
842
|
+
"Keep decision audit output in .openworkflow/decisions/** and do not expose internal bookkeeping as the user-facing workflow step.",
|
|
843
|
+
],
|
|
844
|
+
},
|
|
845
|
+
],
|
|
846
|
+
handoffCommands: ["/ow:tune", "/ow:design", "/ow:validation"],
|
|
847
|
+
};
|
|
848
|
+
}
|
|
849
|
+
function vision2PromptProtocol() {
|
|
850
|
+
return {
|
|
851
|
+
depth: "deep",
|
|
852
|
+
interactionMode: "internal-vision-to-strategic-prompt-text",
|
|
853
|
+
requiredContext: [
|
|
854
|
+
".openworkflow/workflow/WORKFLOW_INDEX.yaml",
|
|
855
|
+
".openworkflow/audit/ARTIFACT_CONTRACTS.yaml",
|
|
856
|
+
".openworkflow/vision/VISION_CONTRACT.yaml",
|
|
857
|
+
".openworkflow/vision/VISION.md",
|
|
858
|
+
".openworkflow/validation/**/VALIDATION.yaml",
|
|
859
|
+
],
|
|
860
|
+
optionalContext: [
|
|
861
|
+
".openworkflow/context/CONTEXT.md",
|
|
862
|
+
".openworkflow/context/CONTEXT_MAP.yaml",
|
|
863
|
+
".openworkflow/prototypes/PROTOTYPE_INDEX.yaml",
|
|
864
|
+
],
|
|
865
|
+
forbiddenContext: [".openworkflow/runtime/**", ".openworkflow/changes/**", ".openworkflow/specs/**"],
|
|
866
|
+
allowedOutputs: [
|
|
867
|
+
".openworkflow/prototypes/PROTOTYPE_INDEX.yaml",
|
|
868
|
+
".openworkflow/prototypes/<id>/PROTO_PROMPT_PACK.yaml",
|
|
869
|
+
".openworkflow/prototypes/<id>/PROTO_PROMPT_PACK.md",
|
|
870
|
+
".openworkflow/prototypes/<id>/REVIEW_PLAN.md",
|
|
871
|
+
".openworkflow/prototypes/<id>/EVIDENCE.yaml",
|
|
872
|
+
".openworkflow/prototypes/<id>/NOTE.md",
|
|
873
|
+
],
|
|
874
|
+
forbiddenOutputs: [
|
|
875
|
+
".openworkflow/prototypes/<id>/images/**",
|
|
876
|
+
".openworkflow/prototypes/<id>/review.html",
|
|
877
|
+
".openworkflow/specs/**",
|
|
878
|
+
".openworkflow/changes/**",
|
|
879
|
+
".openworkflow/runtime/**",
|
|
880
|
+
],
|
|
881
|
+
auditCheckpoints: {
|
|
882
|
+
before: [
|
|
883
|
+
"Run only as an internal stage after /ow:proto preflight has confirmed vision and validation are ready.",
|
|
884
|
+
"Consume durable VISION and VALIDATION artifacts; do not ask broad product questions or generate images.",
|
|
885
|
+
"Adopt the co-founder plus senior product-manager perspective engine before running references; the references are tools, not a checklist that proves quality by itself.",
|
|
886
|
+
"Load skills/build-prototype/references/strategic-prompt-pack-protocol.md, then run references/vision2prompt/01_input_contract.md through 07_quality_rubric.md in order before writing PROTO_PROMPT_PACK.",
|
|
887
|
+
"Resolve direction_count_policy before writing prompt text; use resolved_count from /ow:proto preflight.",
|
|
888
|
+
"Prepare to infer product_experience_model before strategic directions; do not start directions from scenario labels or visual style variants.",
|
|
889
|
+
"Prepare to write prototype_system_contract before screen prompt text so stable app shell, navigation taxonomy, data vocabulary, object anatomy, action bar, audit pattern, copy tone, and allowed screen deltas are explicit.",
|
|
890
|
+
"Prepare to write dailin-grade long-form prompt paragraphs; direction and screen prompt text must include journey, interaction behavior, system response, trust controls, anti-goals, visual direction, desired user feeling, and concrete content.",
|
|
891
|
+
"Prepare to run prompt_pack_integrity_gate, prototype_reality_gate, quality_rubric.prompt_executability, and post_validate after prompt assets are complete; do not hand off to /ow:prompt2proto while any required gate is missing or failing.",
|
|
892
|
+
],
|
|
893
|
+
during: [
|
|
894
|
+
"Apply the OW vision2prompt reference pipeline inside OW artifacts and keep intermediate reasoning outputs compactly represented in PROTO_PROMPT_PACK.yaml or NOTE.md.",
|
|
895
|
+
"Record the intermediate pipeline outputs: perspective engine, normalized input contract, vision decomposition, candidate strategic hypotheses, product experience model, prototype_system_contract, screen_manifest, prototype prompt schema, output manifest, and quality rubric.",
|
|
896
|
+
"Each selected direction must carry product_thesis, user_transformation, reason_to_exist, differentiated product form, and pm_judgment before screen prompt anatomy.",
|
|
897
|
+
"Infer product_experience_model from VISION and VALIDATION: product archetype, primary canvas, information architecture, domain object model, primary task loop, interaction state model, data realism requirements, visual language, anti-generic constraints, and category quality bar.",
|
|
898
|
+
"Decide whether scenario names are separate strategic product forms or modules, layers, workflows, or states inside one product shell; do not split directions by scenario labels alone.",
|
|
899
|
+
"Generate more candidate hypotheses than needed and select the resolved direction count for maximum strategic diversity.",
|
|
900
|
+
"Only select directions that differ by product form, product loop, initiation trigger, interaction model, emotional driver, retention mechanism, validation metric, or main risk.",
|
|
901
|
+
"Write prototype_system_contract cross-screen invariants before complete multi-image prompt text so downstream prompt2proto preserves technical screen coherence instead of inventing it from visual judgment.",
|
|
902
|
+
"Write complete multi-image prompt text for every selected direction with screen_prompts, negative_prompt, example_copy, and acceptance criteria tied to screen_manifest target_screen_id values.",
|
|
903
|
+
"Populate quality_rubric.prompt_paragraph_quality and prompt_text_manifest.paragraph_quality_status before handoff; fail closed when paragraph_quality_dimensions are missing.",
|
|
904
|
+
"Do not set prompt_text_manifest.status to ready_for_image_generation until prompt_pack_integrity_gate.status, prototype_reality_gate.status, quality_rubric.prompt_executability.status, and prompt_text_manifest.paragraph_quality_status are pass.",
|
|
905
|
+
"After prompt text is ready, run the deterministic post_validate gate over strategic_fingerprint dimensions when resolved_count is 2 or more.",
|
|
906
|
+
"When the user explicitly requested exactly one strategic direction, set post_validate.status: skipped and record the skip reason instead of running diversity comparison.",
|
|
907
|
+
],
|
|
908
|
+
after: [
|
|
909
|
+
"Write PROTO_PROMPT_PACK.yaml, PROTO_PROMPT_PACK.md, REVIEW_PLAN.md, and EVIDENCE.yaml with product_experience_model, prototype_system_contract, screen_manifest, screen_prompts, prompt_pack_integrity_gate, prototype_reality_gate, quality_rubric, prompt_text_manifest.status ready_for_image_generation, and post_validate status.",
|
|
910
|
+
"Hand internally to /ow:prompt2proto only when prototype_system_contract is present, prompt_pack_integrity_gate.status and prototype_reality_gate.status are pass, quality_rubric.prompt_executability.status is pass, prompt_text_manifest.paragraph_quality_status is pass, and post_validate.status is pass or skipped.",
|
|
911
|
+
"If any readiness gate fails, keep handoff blocked and repair prompt directions through /ow:vision2prompt.",
|
|
912
|
+
"Record internal_pipeline stage vision2prompt status and outputs.",
|
|
913
|
+
"Do not generate images; hand internally to /ow:prompt2proto.",
|
|
914
|
+
],
|
|
915
|
+
},
|
|
916
|
+
antiPatterns: [
|
|
917
|
+
"Do not expose /ow:vision2prompt as a user-facing workflow step.",
|
|
918
|
+
"Do not generate prototype images from this stage.",
|
|
919
|
+
"Do not invent strategy when vision or validation is thin; return control to /ow:proto preflight.",
|
|
920
|
+
"Do not treat dailin-derived references or YAML field completion as quality when the prompt lacks product thesis, user transformation, reason-to-exist, or design philosophy.",
|
|
921
|
+
"Do not treat screen_prompts[].prompt as image-generation-ready when it reads like a screen-state instruction instead of a dailin-grade prototype-generation brief.",
|
|
922
|
+
"Do not hand off to /ow:prompt2proto when post_validate.status is fail or missing for multi-direction prompt packs.",
|
|
923
|
+
"Do not hand off to /ow:prompt2proto when prototype_system_contract, prompt_pack_integrity_gate, prototype_reality_gate, screen_manifest coverage, or prompt executability is missing or failing.",
|
|
924
|
+
"Do not create HTML, specs, changes, or runtime artifacts.",
|
|
925
|
+
],
|
|
926
|
+
internalSections: [
|
|
927
|
+
{
|
|
928
|
+
tag: "internal_command_boundary",
|
|
929
|
+
items: [
|
|
930
|
+
"/ow:vision2prompt is internal and is invoked by /ow:proto, not by the user.",
|
|
931
|
+
"Its only job is strategic prompt text generation from ready vision and validation artifacts.",
|
|
932
|
+
"Its output must be ready for /ow:prompt2proto consumption.",
|
|
933
|
+
],
|
|
934
|
+
},
|
|
935
|
+
{
|
|
936
|
+
tag: "perspective_engine",
|
|
937
|
+
items: [
|
|
938
|
+
"Start from a co-founder plus 15-year senior product-manager perspective before executing the reference pipeline.",
|
|
939
|
+
"Treat dailin-derived references as tools for judgment, not a checklist whose completion alone proves quality.",
|
|
940
|
+
"Ask what product should exist, why this prototype matters, which form best expresses the vision, and what user transformation should become visible.",
|
|
941
|
+
"Every selected direction must include product_thesis, user_transformation, differentiated product form, reason_to_exist, and pm_judgment.",
|
|
942
|
+
"Reject complete-but-soulless prompt paragraphs that list screens but do not make a product argument.",
|
|
943
|
+
],
|
|
944
|
+
},
|
|
945
|
+
{
|
|
946
|
+
tag: "vision2prompt_reference_pipeline",
|
|
947
|
+
items: [
|
|
948
|
+
"Run skills/build-prototype/references/strategic-prompt-pack-protocol.md as the governing protocol.",
|
|
949
|
+
"Load references/vision2prompt/01_input_contract.md to normalize vision, validation, direction count, target tool, fidelity, constraints, and missing inputs.",
|
|
950
|
+
"Load references/vision2prompt/02_vision_decomposition.md before strategic hypotheses.",
|
|
951
|
+
"Load references/vision2prompt/03_strategy_hypothesis_generation.md to create 5-8 candidates and select materially distinct directions.",
|
|
952
|
+
"Load references/vision2prompt/04_product_system_extraction.md before writing screen_manifest or product_experience_model.",
|
|
953
|
+
"Load references/vision2prompt/05_prototype_prompt_schema.md before writing direction screen_prompts.",
|
|
954
|
+
"Load references/vision2prompt/06_output_templates.md so YAML remains source of truth and Markdown remains a readable view.",
|
|
955
|
+
"Load references/vision2prompt/07_quality_rubric.md before marking prompt_text_manifest ready.",
|
|
956
|
+
],
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
tag: "prompt_paragraph_quality",
|
|
960
|
+
items: [
|
|
961
|
+
"Before writing prompt text, run the mapped OW equivalents of dailin 01-06 references in order; references are mandatory generation tools, not optional background.",
|
|
962
|
+
"Every direction prototype_prompt must be a dailin-grade long-form prototype-generation brief, not a short image prompt.",
|
|
963
|
+
"Every screen_prompts[].prompt must include journey stage, interaction behavior, system response, trust controls, anti-goals, visual direction, desired user feeling, concrete content, and screen-bound acceptance criteria.",
|
|
964
|
+
"quality_rubric.prompt_paragraph_quality must record pass/fail evidence for product context, target user, journey, screens/components, interaction/system response, concrete content, trust/user control, visual direction, anti-goals, desired user feeling, and the perspective engine.",
|
|
965
|
+
"prompt_text_manifest.paragraph_quality_status must be pass before /ow:prompt2proto handoff, with paragraph_quality_dimensions listing the dimensions that were checked.",
|
|
966
|
+
],
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
tag: "product_experience_model",
|
|
970
|
+
items: [
|
|
971
|
+
"Before directions, write product_experience_model with product_archetype, primary_canvas, information_architecture, domain_object_model, primary_task_loop, interaction_state_model, data_realism_requirements, visual_language, anti_generic_constraints, and category_quality_bar.",
|
|
972
|
+
"Use the model to preserve target product category reality from VISION-only input.",
|
|
973
|
+
"Do not treat modules, scenarios, layers, workflows, or interaction states as separate strategic directions unless they imply different product forms or loops.",
|
|
974
|
+
"Block generic AI dashboard, report-screen, or card-wall drift through anti_generic_constraints and negative_constraints.",
|
|
975
|
+
],
|
|
976
|
+
},
|
|
977
|
+
{
|
|
978
|
+
tag: "prototype_system_contract",
|
|
979
|
+
items: [
|
|
980
|
+
"Before screen prompts, write prototype_system_contract as the technical multi-screen coherence contract.",
|
|
981
|
+
"The contract must cover stable_app_shell, navigation_taxonomy, data_vocabulary, domain_object_anatomy, object_detail_anatomy, action_bar_contract, audit_trust_pattern, copy_tone, and allowed_screen_deltas.",
|
|
982
|
+
"Use the contract to separate cross-screen invariants from screen-specific workflow deltas.",
|
|
983
|
+
"Treat multi-screen drift as a prompt-pack consistency issue, not as provider image quality, human visual review, or visual parity proof.",
|
|
117
984
|
],
|
|
118
985
|
},
|
|
119
986
|
{
|
|
120
|
-
tag: "
|
|
987
|
+
tag: "prompt_pack_readiness_gate",
|
|
121
988
|
items: [
|
|
122
|
-
"
|
|
123
|
-
"
|
|
124
|
-
"
|
|
989
|
+
"prompt_text_manifest.status cannot become ready_for_image_generation until prompt_pack_integrity_gate.status is pass.",
|
|
990
|
+
"prompt_text_manifest.status cannot become ready_for_image_generation until prototype_reality_gate.status is pass.",
|
|
991
|
+
"prompt_text_manifest.status cannot become ready_for_image_generation until prototype_system_contract records cross-screen invariants and allowed deltas.",
|
|
992
|
+
"prompt_text_manifest.status cannot become ready_for_image_generation until quality_rubric.prompt_executability.status is pass.",
|
|
993
|
+
"prompt_text_manifest.status cannot become ready_for_image_generation until prompt_text_manifest.paragraph_quality_status is pass.",
|
|
994
|
+
"prompt_text_manifest.status cannot become ready_for_image_generation until every direction screen_prompt target_screen_id resolves to screen_manifest.",
|
|
995
|
+
"When a gate fails or is missing, set image_generation.status: not_started and repair through /ow:vision2prompt before handoff.",
|
|
125
996
|
],
|
|
126
997
|
},
|
|
127
998
|
{
|
|
128
|
-
tag: "
|
|
999
|
+
tag: "post_validate_gate",
|
|
129
1000
|
items: [
|
|
130
|
-
"
|
|
131
|
-
"
|
|
132
|
-
"
|
|
1001
|
+
"Run post_validate after prompt assets are ready and before /ow:prompt2proto handoff.",
|
|
1002
|
+
"For resolved_count 2 or more, require post_validate.status: pass before image generation.",
|
|
1003
|
+
"For resolved_count 1 from explicit user input, set post_validate.status: skipped and record why the diversity gate did not run.",
|
|
1004
|
+
"For post_validate.status: fail, repair strategic prompt directions inside /ow:vision2prompt instead of invoking /ow:prompt2proto.",
|
|
133
1005
|
],
|
|
134
1006
|
},
|
|
135
1007
|
],
|
|
136
|
-
handoffCommands: ["/ow:
|
|
1008
|
+
handoffCommands: ["/ow:prompt2proto"],
|
|
137
1009
|
};
|
|
138
1010
|
}
|
|
139
|
-
function
|
|
1011
|
+
function buildProtoPromptProtocol() {
|
|
140
1012
|
return {
|
|
141
1013
|
depth: "deep",
|
|
142
|
-
interactionMode: "
|
|
1014
|
+
interactionMode: "internal-build-proto-prompt-pack-compiler",
|
|
143
1015
|
requiredContext: [
|
|
144
1016
|
".openworkflow/workflow/WORKFLOW_INDEX.yaml",
|
|
145
1017
|
".openworkflow/audit/ARTIFACT_CONTRACTS.yaml",
|
|
146
1018
|
".openworkflow/vision/VISION_CONTRACT.yaml",
|
|
1019
|
+
".openworkflow/vision/VISION.md",
|
|
1020
|
+
".openworkflow/validation/**/VALIDATION.yaml",
|
|
147
1021
|
],
|
|
148
1022
|
optionalContext: [
|
|
149
|
-
".openworkflow/validation/VALIDATION_INDEX.yaml",
|
|
150
|
-
".openworkflow/vision/VISION.md",
|
|
151
1023
|
".openworkflow/context/CONTEXT.md",
|
|
152
1024
|
".openworkflow/context/CONTEXT_MAP.yaml",
|
|
1025
|
+
".openworkflow/prototypes/PROTOTYPE_INDEX.yaml",
|
|
1026
|
+
"skills/build-proto-prompt/SKILL.md",
|
|
1027
|
+
"skills/build-proto-prompt/references/prompt-pack-compiler-protocol.md",
|
|
1028
|
+
"skills/build-proto-prompt/references/output-boundary.md",
|
|
153
1029
|
],
|
|
154
|
-
forbiddenContext: [".openworkflow/runtime/**", ".openworkflow/changes/**"],
|
|
1030
|
+
forbiddenContext: [".openworkflow/runtime/**", ".openworkflow/changes/**", ".openworkflow/specs/**"],
|
|
155
1031
|
allowedOutputs: [
|
|
156
|
-
".openworkflow/
|
|
157
|
-
".openworkflow/
|
|
158
|
-
".openworkflow/
|
|
1032
|
+
".openworkflow/prototypes/PROTOTYPE_INDEX.yaml",
|
|
1033
|
+
".openworkflow/prototypes/<id>/PROTO_PROMPT_PACK.yaml",
|
|
1034
|
+
".openworkflow/prototypes/<id>/PROTO_PROMPT_PACK.md",
|
|
1035
|
+
".openworkflow/prototypes/<id>/REVIEW_PLAN.md",
|
|
1036
|
+
".openworkflow/prototypes/<id>/EVIDENCE.yaml",
|
|
1037
|
+
".openworkflow/prototypes/<id>/NOTE.md",
|
|
159
1038
|
],
|
|
160
1039
|
forbiddenOutputs: [
|
|
161
|
-
".openworkflow/prototypes/**",
|
|
1040
|
+
".openworkflow/prototypes/<id>/images/**",
|
|
1041
|
+
".openworkflow/prototypes/<id>/review.html",
|
|
162
1042
|
".openworkflow/specs/**",
|
|
163
1043
|
".openworkflow/changes/**",
|
|
164
1044
|
".openworkflow/runtime/**",
|
|
165
1045
|
],
|
|
166
1046
|
auditCheckpoints: {
|
|
167
|
-
before: [
|
|
168
|
-
|
|
169
|
-
|
|
1047
|
+
before: [
|
|
1048
|
+
"Run only as an internal prompt-pack compiler stage after /ow:proto preflight has confirmed vision and validation are ready.",
|
|
1049
|
+
"Load skills/build-proto-prompt/SKILL.md and its references before compiling PROTO_PROMPT_PACK.",
|
|
1050
|
+
"Adopt the Co-Founder plus Chief PM / senior product strategist perspective engine before generating directions.",
|
|
1051
|
+
"Resolve direction_count_policy before writing prompt text; do not silently default the direction count.",
|
|
1052
|
+
"Prepare to infer product_experience_model before strategic directions, including product archetype, primary canvas, information architecture, domain objects, state model, data realism, visual language, anti-generic constraints, and category quality bar.",
|
|
1053
|
+
"Prepare to write prototype_system_contract before screen prompts, covering stable app shell, navigation taxonomy, data vocabulary, object anatomy, action bar, audit pattern, copy tone, and allowed screen deltas.",
|
|
1054
|
+
"Prepare to write dailin-grade long-form prompt paragraphs; prompt text must include journey, interaction behavior, system response, trust controls, anti-goals, visual direction, desired user feeling, and concrete content.",
|
|
1055
|
+
],
|
|
1056
|
+
during: [
|
|
1057
|
+
"Compile durable vision and validation into strategic_core, prototype_brief, product_experience_model, prototype_system_contract, screen_manifest, global_design_system_prompt, directions, screen_prompts, review_plan, and readiness gates.",
|
|
1058
|
+
"Each selected direction must carry product_thesis, user_transformation, differentiated product form, reason_to_exist, and pm_judgment before screen prompt anatomy.",
|
|
1059
|
+
"Decide whether source concepts are separate strategic product forms or modules, layers, workflows, or states inside one product shell; do not split directions by scenario labels alone.",
|
|
1060
|
+
"Write prototype_system_contract cross-screen invariants before complete multi-image prompt text so downstream prompt2proto preserves technical screen coherence instead of inventing it from visual judgment.",
|
|
1061
|
+
"Write complete multi-image prompt text for every selected direction with screen_prompts, negative_prompt, example_copy, and acceptance criteria tied to screen_manifest target_screen_id values.",
|
|
1062
|
+
"Populate prompt_pack_integrity_gate, prototype_reality_gate, quality_rubric.prompt_executability, quality_rubric.prompt_paragraph_quality, prompt_text_manifest.paragraph_quality_status, and post_validate before handoff.",
|
|
1063
|
+
"Keep image_generation.status: not_started while this compiler stage runs.",
|
|
1064
|
+
],
|
|
1065
|
+
after: [
|
|
1066
|
+
"Write PROTO_PROMPT_PACK.yaml, PROTO_PROMPT_PACK.md, REVIEW_PLAN.md, and EVIDENCE.yaml with prototype_system_contract and prompt_text_manifest.status ready_for_image_generation only when all readiness gates pass.",
|
|
1067
|
+
"Hand internally to /ow:prompt2proto only when prototype_system_contract is present, prompt_pack_integrity_gate.status and prototype_reality_gate.status are pass, quality_rubric.prompt_executability.status is pass, prompt_text_manifest.paragraph_quality_status is pass, and post_validate.status is pass or skipped.",
|
|
1068
|
+
"If any readiness gate fails, keep handoff blocked and repair prompt directions through /ow:build-proto-prompt.",
|
|
1069
|
+
"Do not generate images; do not consume provider image output or prototype review artifacts.",
|
|
1070
|
+
],
|
|
170
1071
|
},
|
|
171
1072
|
antiPatterns: [
|
|
172
|
-
"Do not
|
|
173
|
-
"Do not prototype
|
|
174
|
-
"Do not
|
|
1073
|
+
"Do not expose /ow:build-proto-prompt as a user-facing workflow step.",
|
|
1074
|
+
"Do not generate prototype images from this stage.",
|
|
1075
|
+
"Do not consume provider image output, human visual review, visual parity scores, proto2html artifacts, specs, changes, or runtime state.",
|
|
1076
|
+
"Do not invent strategy when vision or validation is thin; return control to /ow:proto preflight.",
|
|
1077
|
+
"Do not treat YAML field completion as quality when the prompt lacks product thesis, user transformation, reason-to-exist, or design philosophy.",
|
|
1078
|
+
"Do not hand off to /ow:prompt2proto when post_validate.status is fail or missing for multi-direction prompt packs.",
|
|
1079
|
+
"Do not hand off to /ow:prompt2proto when prototype_system_contract, prompt_pack_integrity_gate, prototype_reality_gate, screen_manifest coverage, paragraph quality, or prompt executability is missing or failing.",
|
|
175
1080
|
],
|
|
176
|
-
|
|
1081
|
+
internalSections: [
|
|
1082
|
+
{
|
|
1083
|
+
tag: "internal_command_boundary",
|
|
1084
|
+
items: [
|
|
1085
|
+
"/ow:build-proto-prompt is internal and is invoked by /ow:proto orchestration, not by the user.",
|
|
1086
|
+
"Its only job is prompt-pack compilation from ready vision and validation artifacts.",
|
|
1087
|
+
"Its output must be ready for prompt2proto consumption.",
|
|
1088
|
+
"Keep /ow:vision2prompt compatibility until a later migration candidate explicitly removes or aliases it.",
|
|
1089
|
+
],
|
|
1090
|
+
},
|
|
1091
|
+
{
|
|
1092
|
+
tag: "prompt_pack_compiler_role",
|
|
1093
|
+
items: [
|
|
1094
|
+
"Start from a Co-Founder plus Chief PM / senior product strategist perspective before executing the prompt-pack compiler references.",
|
|
1095
|
+
"Ask what product should exist, why this prototype matters, which form best expresses the vision, and what user transformation should become visible.",
|
|
1096
|
+
"Every selected direction must include product_thesis, user_transformation, differentiated product form, reason_to_exist, and pm_judgment.",
|
|
1097
|
+
"Reject complete-but-soulless prompt paragraphs that list screens but do not make a product argument.",
|
|
1098
|
+
],
|
|
1099
|
+
},
|
|
1100
|
+
{
|
|
1101
|
+
tag: "source_skill_reference",
|
|
1102
|
+
items: [
|
|
1103
|
+
"Load skills/build-proto-prompt/SKILL.md as the source behavior for this command.",
|
|
1104
|
+
"Load skills/build-proto-prompt/references/prompt-pack-compiler-protocol.md before writing prompt-pack outputs.",
|
|
1105
|
+
"Load skills/build-proto-prompt/references/output-boundary.md before handoff.",
|
|
1106
|
+
"The legacy vision2prompt references may be reused as detailed prompt-generation tools until the compiler references are fully split.",
|
|
1107
|
+
],
|
|
1108
|
+
},
|
|
1109
|
+
{
|
|
1110
|
+
tag: "prototype_system_contract",
|
|
1111
|
+
items: [
|
|
1112
|
+
"Write prototype_system_contract as the build-proto-prompt technical multi-screen coherence contract.",
|
|
1113
|
+
"Required fields: stable_app_shell, navigation_taxonomy, data_vocabulary, domain_object_anatomy, object_detail_anatomy, action_bar_contract, audit_trust_pattern, copy_tone, and allowed_screen_deltas.",
|
|
1114
|
+
"Use it to tell prompt2proto what must remain stable across screens and what may change by workflow state.",
|
|
1115
|
+
"This is a consistency contract, not density philosophy, provider image quality, visual review, or visual parity scoring.",
|
|
1116
|
+
],
|
|
1117
|
+
},
|
|
1118
|
+
{
|
|
1119
|
+
tag: "prompt_pack_readiness_gate",
|
|
1120
|
+
items: [
|
|
1121
|
+
"prompt_text_manifest.status cannot become ready_for_image_generation until prompt_pack_integrity_gate.status is pass.",
|
|
1122
|
+
"prompt_text_manifest.status cannot become ready_for_image_generation until prototype_reality_gate.status is pass.",
|
|
1123
|
+
"prompt_text_manifest.status cannot become ready_for_image_generation until prototype_system_contract records cross-screen invariants and allowed deltas.",
|
|
1124
|
+
"prompt_text_manifest.status cannot become ready_for_image_generation until quality_rubric.prompt_executability.status is pass.",
|
|
1125
|
+
"prompt_text_manifest.status cannot become ready_for_image_generation until prompt_text_manifest.paragraph_quality_status is pass.",
|
|
1126
|
+
"prompt_text_manifest.status cannot become ready_for_image_generation until every direction screen_prompt target_screen_id resolves to screen_manifest.",
|
|
1127
|
+
"When a gate fails or is missing, set image_generation.status: not_started and repair through /ow:build-proto-prompt before handoff.",
|
|
1128
|
+
],
|
|
1129
|
+
},
|
|
1130
|
+
{
|
|
1131
|
+
tag: "downstream_boundary",
|
|
1132
|
+
items: [
|
|
1133
|
+
"Do not generate images.",
|
|
1134
|
+
"Do not perform human visual review.",
|
|
1135
|
+
"Do not claim visual reference parity.",
|
|
1136
|
+
"Do not create proto2html, specs, changes, or runtime artifacts.",
|
|
1137
|
+
"Do not narrow build-prototype behavior in this command-boundary candidate.",
|
|
1138
|
+
],
|
|
1139
|
+
},
|
|
1140
|
+
],
|
|
1141
|
+
handoffCommands: ["/ow:prompt2proto"],
|
|
177
1142
|
};
|
|
178
1143
|
}
|
|
179
|
-
function
|
|
1144
|
+
function prompt2ProtoProtocol() {
|
|
180
1145
|
return {
|
|
181
1146
|
depth: "deep",
|
|
182
|
-
interactionMode: "
|
|
1147
|
+
interactionMode: "internal-prompt-text-to-prototype-images",
|
|
183
1148
|
requiredContext: [
|
|
184
1149
|
".openworkflow/workflow/WORKFLOW_INDEX.yaml",
|
|
185
1150
|
".openworkflow/audit/ARTIFACT_CONTRACTS.yaml",
|
|
186
|
-
".openworkflow/
|
|
1151
|
+
".openworkflow/prototypes/**/PROTO_PROMPT_PACK.yaml",
|
|
1152
|
+
".openworkflow/prototypes/**/EVIDENCE.yaml",
|
|
187
1153
|
],
|
|
188
1154
|
optionalContext: [
|
|
189
|
-
".openworkflow/prototypes/PROTOTYPE_INDEX.yaml",
|
|
190
1155
|
".openworkflow/validation/**/VALIDATION.yaml",
|
|
191
|
-
".openworkflow/
|
|
192
|
-
"
|
|
1156
|
+
".openworkflow/prototypes/PROTOTYPE_INDEX.yaml",
|
|
1157
|
+
".openworkflow/prototypes/**/NOTE.md",
|
|
193
1158
|
],
|
|
194
1159
|
forbiddenContext: [".openworkflow/runtime/**", ".openworkflow/changes/**", ".openworkflow/specs/**"],
|
|
195
1160
|
allowedOutputs: [
|
|
196
1161
|
".openworkflow/prototypes/PROTOTYPE_INDEX.yaml",
|
|
197
1162
|
".openworkflow/prototypes/<id>/EVIDENCE.yaml",
|
|
198
1163
|
".openworkflow/prototypes/<id>/NOTE.md",
|
|
199
|
-
".openworkflow/prototypes/<id>/
|
|
200
|
-
".openworkflow/prototypes/<id>/evidence/**",
|
|
1164
|
+
".openworkflow/prototypes/<id>/images/**",
|
|
201
1165
|
".openworkflow/decisions/DECISION_INDEX.yaml",
|
|
202
1166
|
".openworkflow/decisions/<id>/DECISION.yaml",
|
|
203
1167
|
".openworkflow/decisions/<id>/NOTE.md",
|
|
204
|
-
".openworkflow/decisions/<id>/review.html",
|
|
205
1168
|
],
|
|
206
|
-
forbiddenOutputs: [
|
|
1169
|
+
forbiddenOutputs: [
|
|
1170
|
+
".openworkflow/prototypes/<id>/review.html",
|
|
1171
|
+
".openworkflow/specs/**",
|
|
1172
|
+
".openworkflow/changes/**",
|
|
1173
|
+
".openworkflow/runtime/**",
|
|
1174
|
+
],
|
|
207
1175
|
auditCheckpoints: {
|
|
208
1176
|
before: [
|
|
209
|
-
"
|
|
210
|
-
"
|
|
211
|
-
"
|
|
1177
|
+
"Run only as an internal stage after /ow:vision2prompt has written prompt_text_manifest.status ready_for_image_generation, prompt_text_manifest.paragraph_quality_status pass, and post_validate.status pass or skipped.",
|
|
1178
|
+
"Treat prompt2proto as the internal build-prototype consumption boundary: consume ready PROTO_PROMPT_PACK artifacts and do not recompile vision or validation into prompt text.",
|
|
1179
|
+
"Load prepared prompt text and verify every selected direction has screen_prompts before image generation.",
|
|
1180
|
+
"Verify prototype_system_contract, prompt_pack_integrity_gate.status: pass, prototype_reality_gate.status: pass, quality_rubric.prompt_executability.status: pass, prompt_text_manifest.paragraph_quality_status: pass, and screen_manifest linkage before image generation.",
|
|
1181
|
+
"Apply the build-prototype philosophy engine before image generation: Chief PM plus Principal UI/UX judgment must set product intent, information hierarchy, density calibration, affordance clarity, and UI/UX credibility boundaries.",
|
|
1182
|
+
"Block image generation when prototype_system_contract, prompt_pack_integrity_gate, prototype_reality_gate, prompt executability, paragraph quality, screen_manifest linkage, or post_validate is fail or missing.",
|
|
212
1183
|
],
|
|
213
1184
|
during: [
|
|
214
|
-
"
|
|
215
|
-
"
|
|
216
|
-
"
|
|
217
|
-
"
|
|
1185
|
+
"Batch-generate high-fidelity prototype images by direction_id and prompt_id.",
|
|
1186
|
+
"Calibrate prototype instructions so information is visible, grouped, collapsed, delayed, or drilled into based on industry, user role, task risk, screen size, task frequency, and the user's next decision.",
|
|
1187
|
+
"If the prompt pack is missing, thin, stale, incoherent, or lacks prompt2proto philosophy readiness, refuse and route repair back to /ow:build-proto-prompt or compatible /ow:vision2prompt.",
|
|
1188
|
+
"Write one metadata record for every generated image with image_id, direction_id, prompt_id, screen_name, path, source_prompt_ref, generator, and status.",
|
|
1189
|
+
"Do not revise product strategy or prompt text during image generation.",
|
|
218
1190
|
],
|
|
219
1191
|
after: [
|
|
220
|
-
"
|
|
221
|
-
"
|
|
222
|
-
"
|
|
223
|
-
"Confirm no design, spec, change, team, persistence, or production hardening was created.",
|
|
1192
|
+
"Update image_generation.status, generated_images, collection_notes, and internal_pipeline stage prompt2proto outputs.",
|
|
1193
|
+
"Record decision audit internally after image evidence changes.",
|
|
1194
|
+
"Hand the user-facing flow back to /ow:proto for summary and next command.",
|
|
224
1195
|
],
|
|
225
1196
|
},
|
|
226
1197
|
antiPatterns: [
|
|
227
|
-
"Do not
|
|
228
|
-
"Do not
|
|
229
|
-
"Do not
|
|
230
|
-
"Do not
|
|
231
|
-
"Do not
|
|
232
|
-
"Do not
|
|
233
|
-
"Do not
|
|
1198
|
+
"Do not expose /ow:prompt2proto as a user-facing workflow step.",
|
|
1199
|
+
"Do not start image generation when prompt text is not ready.",
|
|
1200
|
+
"Do not start image generation when prompt_text_manifest.paragraph_quality_status is missing, fail, or unchecked.",
|
|
1201
|
+
"Do not start image generation when prompt_pack_integrity_gate or prototype_reality_gate is missing or failing.",
|
|
1202
|
+
"Do not start image generation when prototype_system_contract is missing stable app shell, navigation taxonomy, data vocabulary, object anatomy, action bar, audit trust pattern, copy tone, or allowed screen deltas.",
|
|
1203
|
+
"Do not start image generation when screen prompts are detached from screen_manifest or prompt executability has not passed.",
|
|
1204
|
+
"Do not create HTML, specs, changes, or runtime artifacts.",
|
|
1205
|
+
"Do not allow generated images without per-image metadata.",
|
|
234
1206
|
],
|
|
235
1207
|
internalSections: [
|
|
236
1208
|
{
|
|
237
|
-
tag: "
|
|
238
|
-
items: [
|
|
239
|
-
"Classify the prototype as visual, interaction, technical feasibility, 3D/material, workflow, or data/logic before choosing tools or writing files.",
|
|
240
|
-
"Name the validation question, the riskiest assumption, and the smallest success signal.",
|
|
241
|
-
"If classification is ambiguous, ask one clarifying question; otherwise proceed with the most likely mode and record the assumption.",
|
|
242
|
-
],
|
|
243
|
-
},
|
|
244
|
-
{
|
|
245
|
-
tag: "reference_extraction",
|
|
246
|
-
items: [
|
|
247
|
-
"When the user provides a target image, URL, screenshot, HTML/CSS, or reference artifact, perform reference-pattern extraction before visual generation or HTML implementation.",
|
|
248
|
-
"Extract transferable patterns: information architecture, layout rhythm, component grammar, typography posture, palette, motion, interaction details, and anti-patterns to avoid.",
|
|
249
|
-
"Record reference analysis as evidence by path or URL; do not paste bulky source or screenshots into YAML.",
|
|
250
|
-
],
|
|
251
|
-
},
|
|
252
|
-
{
|
|
253
|
-
tag: "visual_first_path",
|
|
254
|
-
items: [
|
|
255
|
-
"For visual, product-experience, 3D/material, and aesthetic-sensitive interaction prototypes, default to a high-fidelity static concept before runnable HTML.",
|
|
256
|
-
"Use image generation as the default first visual pass for composition, mood, material, visual hierarchy, and brand direction unless the user asks to skip image generation.",
|
|
257
|
-
"Record visual_concept_policy.image_generation as generated, skipped_by_user, or not_applicable; skipped_by_user requires a concrete skip reason.",
|
|
258
|
-
"Discuss or confirm the static concept before spending implementation effort when the user is actively collaborating; if the user asked for autonomous execution, proceed after the concept establishes clear direction.",
|
|
259
|
-
"Do not require image generation for data/logic, API, or pure technical feasibility prototypes.",
|
|
260
|
-
],
|
|
261
|
-
},
|
|
262
|
-
{
|
|
263
|
-
tag: "design_seed_protocol",
|
|
264
|
-
items: [
|
|
265
|
-
"Do not design from a blank aesthetic when a direction, design system, template seed, or reference exists.",
|
|
266
|
-
"Derive a compact visual packet before implementation: background, surface, foreground, muted, border, accent, display font, body font, radius, spacing, motion, and density.",
|
|
267
|
-
"Choose domain-appropriate posture: operational tools should be dense and restrained, editorial surfaces can be expressive, games can be playful, and dashboards should avoid marketing hero treatment.",
|
|
268
|
-
],
|
|
269
|
-
},
|
|
270
|
-
{
|
|
271
|
-
tag: "implementation_protocol",
|
|
1209
|
+
tag: "build_prototype_consumption_boundary",
|
|
272
1210
|
items: [
|
|
273
|
-
"
|
|
274
|
-
"
|
|
275
|
-
"
|
|
1211
|
+
"build-prototype consumes ready prompt-pack artifacts through prompt2proto.",
|
|
1212
|
+
"build-prototype must not compile prompt packs from vision or validation.",
|
|
1213
|
+
"Missing or incoherent prompt packs repair through /ow:build-proto-prompt or compatible /ow:vision2prompt, not inside prompt2proto.",
|
|
1214
|
+
"Refuse thin, missing, or incoherent prompt packs before image generation.",
|
|
276
1215
|
],
|
|
277
1216
|
},
|
|
278
1217
|
{
|
|
279
|
-
tag: "
|
|
1218
|
+
tag: "prompt_pack_readiness_gate",
|
|
280
1219
|
items: [
|
|
281
|
-
"
|
|
282
|
-
"
|
|
283
|
-
"
|
|
1220
|
+
"Refuse prompt packs whose prompt_pack_integrity_gate.status is not pass.",
|
|
1221
|
+
"Refuse prompt packs whose prototype_reality_gate.status is not pass.",
|
|
1222
|
+
"Refuse prompt packs whose quality_rubric.prompt_executability.status is not pass.",
|
|
1223
|
+
"Refuse prompt packs whose prompt_text_manifest.paragraph_quality_status is not pass.",
|
|
1224
|
+
"Refuse prompt packs whose prototype_system_contract does not define stable_app_shell, navigation_taxonomy, data_vocabulary, domain_object_anatomy, object_detail_anatomy, action_bar_contract, audit_trust_pattern, copy_tone, and allowed_screen_deltas.",
|
|
1225
|
+
"Refuse prompt packs whose screen_prompts[].prompt paragraphs omit journey, interaction behavior, system response, trust controls, anti-goals, visual direction, desired user feeling, or concrete content.",
|
|
1226
|
+
"Refuse prompt packs whose direction screen_prompts do not resolve to screen_manifest target_screen_id values.",
|
|
1227
|
+
"When a prompt pack is refused, keep image_generation.status: not_started and hand back to /ow:vision2prompt repair.",
|
|
284
1228
|
],
|
|
285
1229
|
},
|
|
286
1230
|
{
|
|
287
|
-
tag: "
|
|
1231
|
+
tag: "build_prototype_philosophy_engine",
|
|
288
1232
|
items: [
|
|
289
|
-
"
|
|
290
|
-
"
|
|
291
|
-
"
|
|
1233
|
+
"Chief PM plus Principal UI/UX judgment must run before visual translation.",
|
|
1234
|
+
"The Chief PM protects product intent, user decision context, domain fit, workflow priority, and evidence value.",
|
|
1235
|
+
"The Principal UI/UX lead protects information hierarchy, density calibration, layout anatomy, affordance clarity, interaction believability, and UI/UX credibility.",
|
|
1236
|
+
"Density calibration is product and design judgment, not a mechanical prompt dimension or paragraph length target.",
|
|
1237
|
+
"Use prototype_system_contract for technical screen coherence; use this philosophy engine for visual information judgment.",
|
|
1238
|
+
"Reject under-specified mockups that hide operational decisions and overstuffed concept posters that make every element equally important.",
|
|
292
1239
|
],
|
|
293
1240
|
},
|
|
294
1241
|
{
|
|
295
|
-
tag: "
|
|
1242
|
+
tag: "image_metadata_contract",
|
|
296
1243
|
items: [
|
|
297
|
-
"
|
|
298
|
-
"
|
|
299
|
-
"
|
|
1244
|
+
"Every generated image must record image_id, direction_id, prompt_id, screen_name, path, and metadata.",
|
|
1245
|
+
"metadata must include source_prompt_ref, generated_at, generator, generation_status, and review_status.",
|
|
1246
|
+
"Images without metadata are not valid prototype evidence.",
|
|
300
1247
|
],
|
|
301
1248
|
},
|
|
302
1249
|
],
|
|
303
|
-
handoffCommands: ["/ow:
|
|
1250
|
+
handoffCommands: ["/ow:proto"],
|
|
304
1251
|
};
|
|
305
1252
|
}
|
|
306
1253
|
function tuneProtocol() {
|
|
307
1254
|
return {
|
|
308
1255
|
depth: "deep",
|
|
309
|
-
interactionMode: "prototype-
|
|
1256
|
+
interactionMode: "screen-bound-prototype-refinement",
|
|
310
1257
|
requiredContext: [
|
|
311
1258
|
".openworkflow/workflow/WORKFLOW_INDEX.yaml",
|
|
312
1259
|
".openworkflow/audit/ARTIFACT_CONTRACTS.yaml",
|
|
@@ -316,6 +1263,8 @@ function tuneProtocol() {
|
|
|
316
1263
|
".openworkflow/validation/**/VALIDATION.yaml",
|
|
317
1264
|
".openworkflow/prototypes/PROTOTYPE_INDEX.yaml",
|
|
318
1265
|
".openworkflow/prototypes/**/EVIDENCE.yaml",
|
|
1266
|
+
".openworkflow/prototypes/**/PROTO_PROMPT_PACK.yaml",
|
|
1267
|
+
".openworkflow/prototypes/**/REFINED_PROTO_PROMPT_PACK.yaml",
|
|
319
1268
|
".openworkflow/prototypes/**/NOTE.md",
|
|
320
1269
|
".openworkflow/decisions/DECISION_INDEX.yaml",
|
|
321
1270
|
".openworkflow/decisions/**/DECISION.yaml",
|
|
@@ -324,63 +1273,133 @@ function tuneProtocol() {
|
|
|
324
1273
|
forbiddenContext: [".openworkflow/runtime/**", ".openworkflow/changes/**", ".openworkflow/specs/**"],
|
|
325
1274
|
allowedOutputs: [
|
|
326
1275
|
".openworkflow/prototypes/PROTOTYPE_INDEX.yaml",
|
|
1276
|
+
".openworkflow/prototypes/<id>/REFINED_PROTO_PROMPT_PACK.yaml",
|
|
1277
|
+
".openworkflow/prototypes/<id>/REFINED_PROTO_PROMPT_PACK.md",
|
|
1278
|
+
".openworkflow/prototypes/<id>/REVIEW_PLAN.md",
|
|
327
1279
|
".openworkflow/prototypes/<id>/EVIDENCE.yaml",
|
|
328
1280
|
".openworkflow/prototypes/<id>/NOTE.md",
|
|
329
|
-
".openworkflow/prototypes/<id>/
|
|
330
|
-
".openworkflow/prototypes/<id>/evidence/**",
|
|
1281
|
+
".openworkflow/prototypes/<id>/images/**",
|
|
331
1282
|
".openworkflow/decisions/DECISION_INDEX.yaml",
|
|
332
1283
|
".openworkflow/decisions/<id>/DECISION.yaml",
|
|
333
1284
|
".openworkflow/decisions/<id>/NOTE.md",
|
|
334
|
-
".openworkflow/decisions/<id>/review.html",
|
|
335
1285
|
],
|
|
336
|
-
forbiddenOutputs: [
|
|
1286
|
+
forbiddenOutputs: [
|
|
1287
|
+
".openworkflow/prototypes/<id>/review.html",
|
|
1288
|
+
".openworkflow/specs/**",
|
|
1289
|
+
".openworkflow/changes/**",
|
|
1290
|
+
".openworkflow/runtime/**",
|
|
1291
|
+
],
|
|
337
1292
|
auditCheckpoints: {
|
|
338
1293
|
before: [
|
|
339
|
-
"Resolve tune target: /ow:tune
|
|
340
|
-
"
|
|
341
|
-
"
|
|
1294
|
+
"Resolve tune target: /ow:tune defaults to the latest approved prototype prompt pack, refined prompt pack, or accepted baseline screen group.",
|
|
1295
|
+
"Require baseline screens, screenshots, screen descriptions, generated images, or an accepted PROTO_PROMPT_PACK plus a tune request.",
|
|
1296
|
+
"Normalize tune inputs before baseline audit: baseline source type, baseline refs, tune request, target form factor, regeneration scope, screen count, locked screens, locked elements, and constraints.",
|
|
1297
|
+
"Record baseline_resolution before auditing: latest approved baseline group id, latest approved baseline ref, lineage, resolution rule, and stale source guard.",
|
|
1298
|
+
"Assign stable source screen ids and target screen ids when the baseline or request does not provide them.",
|
|
1299
|
+
"Load only the baseline prompt pack, current prototype evidence, relevant validation or vision context, and latest decision audit context.",
|
|
342
1300
|
],
|
|
343
1301
|
during: [
|
|
344
|
-
"
|
|
345
|
-
"
|
|
346
|
-
"
|
|
1302
|
+
"Audit the full baseline screen group before writing refined prompts.",
|
|
1303
|
+
"Carry forward locked screens, locked elements, and accepted improvements from previous tune passes unless the current user request explicitly unlocks them.",
|
|
1304
|
+
"Extract the product system and preserve product thesis, primary loop, component vocabulary, copy tone, AI/system behavior, trust boundaries, and user controls.",
|
|
1305
|
+
"Interpret the tune request as visual refinement, brand alignment, screen-specific correction, feature addition, feature removal, form-factor transformation, group expansion, group compression, IA adaptation, copy/localization adjustment, interaction-state coverage, design-system pass, or selected-screen regeneration.",
|
|
1306
|
+
"Detect conflicts between the tune request, locked elements, product boundaries, non-goals, privacy controls, safety boundaries, and accepted prototype evidence before prompt writing.",
|
|
1307
|
+
"Write MUST_INHERIT, MUST_ADD, MUST_REMOVE, and FLEXIBLE_CHANGE rules globally and per target screen.",
|
|
1308
|
+
"Build a screen_delta_matrix that binds each target screen to source screen ids, preserve/add/remove/transform/flexible rules, and acceptance criteria.",
|
|
1309
|
+
"Bind every refined prompt to target screen id, source screen id(s), generation scope, target form factor, negative constraints, and acceptance criteria.",
|
|
1310
|
+
"Write generation_order and acceptance_checklist so downstream generation agents can run the refined prompt pack without guessing.",
|
|
347
1311
|
"Record decision audit outcome as revise, continue, pivot, stop, or needs_more_evidence.",
|
|
348
1312
|
],
|
|
349
1313
|
after: [
|
|
350
|
-
"Write
|
|
1314
|
+
"Write REFINED_PROTO_PROMPT_PACK.yaml, REFINED_PROTO_PROMPT_PACK.md, REVIEW_PLAN.md, and compact EVIDENCE.yaml.",
|
|
351
1315
|
"Write or update the internal decision audit record.",
|
|
1316
|
+
"Refresh prototype SUMMARY.yaml and CURRENT_STATE.yaml after the revision outcome is known.",
|
|
352
1317
|
"Show the user only the tuning result, unresolved question if any, and the next user-facing command.",
|
|
353
1318
|
],
|
|
354
1319
|
},
|
|
355
1320
|
antiPatterns: [
|
|
356
1321
|
"Do not ask the user to manually invoke /ow:decision during a tune loop.",
|
|
357
|
-
"Do not restart full prototype discovery when a focused
|
|
1322
|
+
"Do not restart full strategic prototype discovery when a focused refinement is enough.",
|
|
1323
|
+
"Do not tune from one representative screen when the input is a screen group unless the user explicitly limits scope.",
|
|
1324
|
+
"Do not silently drop accepted baseline controls, privacy affordances, memory controls, or non-goals.",
|
|
1325
|
+
"Do not generate HTML, CSS, or runnable app work from /ow:tune.",
|
|
358
1326
|
"Do not create design, specs, changes, or runtime work from unaccepted tune evidence.",
|
|
359
|
-
"Do not
|
|
1327
|
+
"Do not ignore the current validation scope when one is explicitly present and accepted for the prototype.",
|
|
360
1328
|
],
|
|
361
1329
|
internalSections: [
|
|
362
1330
|
{
|
|
363
1331
|
tag: "target_resolution",
|
|
364
1332
|
items: [
|
|
365
|
-
"/ow:tune resolves to the
|
|
1333
|
+
"/ow:tune resolves to the latest approved prototype prompt pack, refined prompt pack, or accepted baseline screen group by default.",
|
|
366
1334
|
"/ow:tune:proto is an explicit alias for tuning the current prototype.",
|
|
367
|
-
"
|
|
1335
|
+
"If no baseline prototype exists, return to /ow:proto instead of inventing refinement context.",
|
|
1336
|
+
],
|
|
1337
|
+
},
|
|
1338
|
+
{
|
|
1339
|
+
tag: "multi_round_baseline_inheritance",
|
|
1340
|
+
items: [
|
|
1341
|
+
"Before baseline audit, write baseline_resolution with latest_approved_baseline_group_id, latest_approved_baseline_ref, baseline_lineage, resolution_rule, and stale_source_guard.",
|
|
1342
|
+
"Use the latest approved baseline group by default; only use an older source screen group when the user explicitly names it.",
|
|
1343
|
+
"Write carry_forward with locked_screens, locked_elements, preserved_improvements, explicit_unlocks, and cumulative_drift_guard.",
|
|
1344
|
+
"Carry forward accepted improvements and locked elements across tune rounds unless the tune request explicitly unlocks or removes them.",
|
|
1345
|
+
"Never silently regenerate from stale source screens when a newer accepted tune pass exists.",
|
|
1346
|
+
],
|
|
1347
|
+
},
|
|
1348
|
+
{
|
|
1349
|
+
tag: "input_normalization",
|
|
1350
|
+
items: [
|
|
1351
|
+
"Normalize baseline_source_type, baseline_refs, tune_request, target_form_factor, regeneration_scope, target_screen_count, locked_screens, locked_elements, output_language, target_tool, and constraints before audit.",
|
|
1352
|
+
"Assign source ids such as SRC_M01, SRC_W01, or SRC_01 when baseline screens lack stable ids.",
|
|
1353
|
+
"Assign target ids such as MOB_S01, WEB_S01, TAB_S01, or VAR_A_S01 before writing screen-bound prompts.",
|
|
1354
|
+
],
|
|
1355
|
+
},
|
|
1356
|
+
{
|
|
1357
|
+
tag: "baseline_screen_audit",
|
|
1358
|
+
items: [
|
|
1359
|
+
"For each source screen, record screen id, screen name, journey stage, user goal, system state, components, copy tone, represented feature, AI/system behavior, trust controls, visual cues, must-preserve elements, platform artifacts to transform or remove, and assumptions.",
|
|
1360
|
+
"Treat the screen group as one product system, not unrelated images.",
|
|
1361
|
+
"State excluded source screens explicitly when the user limits scope.",
|
|
1362
|
+
],
|
|
1363
|
+
},
|
|
1364
|
+
{
|
|
1365
|
+
tag: "product_system_extraction",
|
|
1366
|
+
items: [
|
|
1367
|
+
"Extract product thesis, target user, core behavior, primary product loop, brand promise, interaction model, information architecture, design language, component vocabulary, copywriting style, feature system, trust and boundary system, and anti-goals.",
|
|
1368
|
+
"Separate stable_constants from adaptable_variables before interpreting the tune request.",
|
|
1369
|
+
"Preserve product meaning and interaction logic over raw geometry when adapting form factors.",
|
|
1370
|
+
],
|
|
1371
|
+
},
|
|
1372
|
+
{
|
|
1373
|
+
tag: "tune_request_interpretation",
|
|
1374
|
+
items: [
|
|
1375
|
+
"Classify the request into visual refinement, brand alignment, screen-specific correction, feature addition, feature removal, form-factor transformation, screen group expansion, screen group compression, layout or IA adaptation, copy/localization adjustment, interaction-state coverage, design-system pass, or selected-screen regeneration.",
|
|
1376
|
+
"Apply conflict priority in this order: latest explicit user request, hard constraints, product vision/non-goals/privacy/safety/trust boundaries, locked screens or elements, baseline product system, original upstream prompt, then agent aesthetic judgment.",
|
|
1377
|
+
"If a request conflicts with a product boundary or locked constraint, record the conflict and generate the closest valid alternative instead of drifting silently.",
|
|
1378
|
+
],
|
|
1379
|
+
},
|
|
1380
|
+
{
|
|
1381
|
+
tag: "inheritance_delta_rules",
|
|
1382
|
+
items: [
|
|
1383
|
+
"Build MUST_INHERIT, MUST_ADD, MUST_REMOVE, and FLEXIBLE_CHANGE buckets before writing prompts.",
|
|
1384
|
+
"Requested removals must appear in global negative constraints, per-screen negative constraints, and acceptance checks.",
|
|
1385
|
+
"Flexible changes must remain inside the product thesis, brand promise, non-goals, and screen purpose.",
|
|
1386
|
+
"Build screen_delta_matrix rows with target screen id, source screen ids, preserve, add, remove, transform, flexible, and acceptance criteria.",
|
|
368
1387
|
],
|
|
369
1388
|
},
|
|
370
1389
|
{
|
|
371
|
-
tag: "
|
|
1390
|
+
tag: "screen_manifest",
|
|
372
1391
|
items: [
|
|
373
|
-
"
|
|
374
|
-
"
|
|
375
|
-
"
|
|
1392
|
+
"Preserve target screen ids across rounds unless screens are deleted, split, merged, or explicitly renamed.",
|
|
1393
|
+
"Every screen prompt must include prompt_id, target_screen_id, screen_name, source_screen_ids, target form factor, generation scope, dependencies, prompt, negative prompt, and acceptance criteria.",
|
|
1394
|
+
"Do not output anonymous prompts that downstream generation cannot map back to screens.",
|
|
376
1395
|
],
|
|
377
1396
|
},
|
|
378
1397
|
{
|
|
379
|
-
tag: "
|
|
1398
|
+
tag: "refined_prompt_pack_output",
|
|
380
1399
|
items: [
|
|
381
|
-
"
|
|
382
|
-
"
|
|
383
|
-
"
|
|
1400
|
+
"Output Baseline System Summary, Tuning Intent Summary, Inheritance and Delta Rules, Screen Mapping / Prompt Manifest, Global Design System Prompt, Screen-Specific Refined Prompts, Negative Prompt / Exclusion Rules, Generation Order, and Acceptance Checklist.",
|
|
1401
|
+
"Every screen-specific refined prompt must be standalone and bound to a target screen id plus source screen ids.",
|
|
1402
|
+
"Output prompt text only unless a later internal generation stage is explicitly selected; /ow:tune itself does not generate images.",
|
|
384
1403
|
],
|
|
385
1404
|
},
|
|
386
1405
|
{
|
|
@@ -421,7 +1440,13 @@ function decisionProtocol() {
|
|
|
421
1440
|
auditCheckpoints: {
|
|
422
1441
|
before: ["Confirm prototype evidence exists.", "Load only prototype evidence, user feedback summary, and decision index context."],
|
|
423
1442
|
during: ["Record audit outcome as continue, revise, pivot, stop, or needs_more_evidence.", "Keep only decision-rich evidence."],
|
|
424
|
-
after: [
|
|
1443
|
+
after: [
|
|
1444
|
+
"Write the decision record.",
|
|
1445
|
+
"Update CURRENT_STATE.yaml last_decision and next_command.",
|
|
1446
|
+
"Set prototype status to accepted only when outcome is continue, revise_requested when outcome is revise, or superseded when pivoted.",
|
|
1447
|
+
"Authorize /ow:design only when outcome is continue.",
|
|
1448
|
+
"Return control to the user-facing proto or tune command.",
|
|
1449
|
+
],
|
|
425
1450
|
},
|
|
426
1451
|
antiPatterns: [
|
|
427
1452
|
"Do not infer acceptance without user review or explicit evidence.",
|
|
@@ -485,6 +1510,7 @@ function designProtocol() {
|
|
|
485
1510
|
],
|
|
486
1511
|
after: [
|
|
487
1512
|
"Write PRODUCT_DESIGN.yaml only after enough design meaning is stable.",
|
|
1513
|
+
"Refresh design SUMMARY.yaml when summary_policy is configured and update CURRENT_STATE.yaml with current_design and spec readiness.",
|
|
488
1514
|
"Hand off to /ow:spec only when spec readiness is true and blockers are explicit.",
|
|
489
1515
|
],
|
|
490
1516
|
},
|
|
@@ -536,4 +1562,257 @@ function designProtocol() {
|
|
|
536
1562
|
handoffCommands: ["/ow:spec", "/ow:tune", "/ow:validation"],
|
|
537
1563
|
};
|
|
538
1564
|
}
|
|
1565
|
+
function specProtocol() {
|
|
1566
|
+
return {
|
|
1567
|
+
depth: "deep",
|
|
1568
|
+
interactionMode: "accepted-design-to-production-spec",
|
|
1569
|
+
requiredContext: [
|
|
1570
|
+
".openworkflow/workflow/WORKFLOW_INDEX.yaml",
|
|
1571
|
+
".openworkflow/audit/ARTIFACT_CONTRACTS.yaml",
|
|
1572
|
+
".openworkflow/design/DESIGN_INDEX.yaml",
|
|
1573
|
+
],
|
|
1574
|
+
optionalContext: [
|
|
1575
|
+
".openworkflow/design/**/PRODUCT_DESIGN.yaml",
|
|
1576
|
+
".openworkflow/design/**/TECH_SPEC.yaml",
|
|
1577
|
+
".openworkflow/design/**/FRONTEND_SPEC.yaml",
|
|
1578
|
+
".openworkflow/design/**/BACKEND_SPEC.yaml",
|
|
1579
|
+
".openworkflow/design/**/API_CONTRACT.yaml",
|
|
1580
|
+
".openworkflow/design/**/DB_SCHEMA_MODEL.yaml",
|
|
1581
|
+
".openworkflow/specs/SPEC_INDEX.yaml",
|
|
1582
|
+
"AGENT.md",
|
|
1583
|
+
"package.json",
|
|
1584
|
+
],
|
|
1585
|
+
forbiddenContext: [".openworkflow/runtime/**", ".openworkflow/changes/**"],
|
|
1586
|
+
allowedOutputs: [
|
|
1587
|
+
".openworkflow/specs/SPEC_INDEX.yaml",
|
|
1588
|
+
".openworkflow/specs/<id>/SPEC.yaml",
|
|
1589
|
+
".openworkflow/specs/<id>/NOTE.md",
|
|
1590
|
+
],
|
|
1591
|
+
forbiddenOutputs: [".openworkflow/changes/**", ".openworkflow/runtime/**"],
|
|
1592
|
+
auditCheckpoints: {
|
|
1593
|
+
before: [
|
|
1594
|
+
"Confirm a product design exists and spec_readiness.ready is true.",
|
|
1595
|
+
"Load only the current design and any conditional design packets named by that design.",
|
|
1596
|
+
"Lazy-create the specs index and spec artifact only when /ow:spec is invoked.",
|
|
1597
|
+
],
|
|
1598
|
+
during: [
|
|
1599
|
+
"Translate accepted product behavior into one implementable production slice.",
|
|
1600
|
+
"Preserve traceability to design evidence, accepted scope, and known blockers.",
|
|
1601
|
+
"Separate user-facing requirements, technical constraints, interfaces, acceptance criteria, and verification plan.",
|
|
1602
|
+
],
|
|
1603
|
+
after: [
|
|
1604
|
+
"Write the spec artifact and update SPEC_INDEX.yaml.",
|
|
1605
|
+
"Refresh spec SUMMARY.yaml when summary_policy is configured and update CURRENT_STATE.yaml with current_spec and change readiness.",
|
|
1606
|
+
"Hand off to /ow:change only when the spec has bounded scope, acceptance, and verification.",
|
|
1607
|
+
"Confirm no change or runtime artifacts were created.",
|
|
1608
|
+
],
|
|
1609
|
+
},
|
|
1610
|
+
antiPatterns: [
|
|
1611
|
+
"Do not create specs from unaccepted or unready product design.",
|
|
1612
|
+
"Do not turn a broad product design into a multi-feature implementation plan.",
|
|
1613
|
+
"Do not create change or runtime artifacts during spec work.",
|
|
1614
|
+
"Do not precreate spec artifacts during init or sync; create them only on /ow:spec.",
|
|
1615
|
+
],
|
|
1616
|
+
internalSections: [
|
|
1617
|
+
{
|
|
1618
|
+
tag: "lazy_create",
|
|
1619
|
+
items: [
|
|
1620
|
+
"OpenWorkflow init is minimal: it creates only workflow, audit, and config files.",
|
|
1621
|
+
"If .openworkflow/specs/ or SPEC_INDEX.yaml is absent, create it during /ow:spec from ARTIFACT_CONTRACTS.yaml.",
|
|
1622
|
+
"Do not create unrelated stage directories, templates, changes, or runtime files while authoring the spec.",
|
|
1623
|
+
],
|
|
1624
|
+
},
|
|
1625
|
+
{
|
|
1626
|
+
tag: "spec_quality_bar",
|
|
1627
|
+
items: [
|
|
1628
|
+
"A production spec must be enough for an implementation agent to work without rereading the full discovery history.",
|
|
1629
|
+
"Name the exact scope, affected user behavior, interface contracts, non-goals, acceptance checks, verification commands, and risks.",
|
|
1630
|
+
"Keep rationale compact and reference source artifacts by path instead of copying long evidence.",
|
|
1631
|
+
],
|
|
1632
|
+
},
|
|
1633
|
+
{
|
|
1634
|
+
tag: "readiness_gate",
|
|
1635
|
+
items: [
|
|
1636
|
+
"Do not hand off to /ow:change until implementation scope, acceptance, and test plan are explicit.",
|
|
1637
|
+
"If design packets are missing or contradictory, ask one focused question or hand back to /ow:design.",
|
|
1638
|
+
],
|
|
1639
|
+
},
|
|
1640
|
+
],
|
|
1641
|
+
handoffCommands: ["/ow:change", "/ow:design"],
|
|
1642
|
+
};
|
|
1643
|
+
}
|
|
1644
|
+
function changeProtocol() {
|
|
1645
|
+
return {
|
|
1646
|
+
depth: "deep",
|
|
1647
|
+
interactionMode: "production-change-planning",
|
|
1648
|
+
requiredContext: [
|
|
1649
|
+
".openworkflow/workflow/WORKFLOW_INDEX.yaml",
|
|
1650
|
+
".openworkflow/audit/ARTIFACT_CONTRACTS.yaml",
|
|
1651
|
+
".openworkflow/specs/SPEC_INDEX.yaml",
|
|
1652
|
+
],
|
|
1653
|
+
optionalContext: [
|
|
1654
|
+
".openworkflow/specs/**/SPEC.yaml",
|
|
1655
|
+
".openworkflow/specs/**/NOTE.md",
|
|
1656
|
+
".openworkflow/changes/CHANGE_INDEX.yaml",
|
|
1657
|
+
"AGENT.md",
|
|
1658
|
+
"package.json",
|
|
1659
|
+
],
|
|
1660
|
+
forbiddenContext: [".openworkflow/runtime/**"],
|
|
1661
|
+
allowedOutputs: [
|
|
1662
|
+
".openworkflow/changes/CHANGE_INDEX.yaml",
|
|
1663
|
+
".openworkflow/changes/<id>/CHANGE.yaml",
|
|
1664
|
+
".openworkflow/changes/<id>/NOTE.md",
|
|
1665
|
+
".openworkflow/changes/<id>/WORK_ITEMS.yaml",
|
|
1666
|
+
],
|
|
1667
|
+
forbiddenOutputs: [".openworkflow/runtime/**"],
|
|
1668
|
+
auditCheckpoints: {
|
|
1669
|
+
before: [
|
|
1670
|
+
"Confirm a focused production spec exists.",
|
|
1671
|
+
"Inspect the repository just enough to identify affected paths, integration points, and verification commands.",
|
|
1672
|
+
"Apply coder preflight before finalizing selected implementation boundaries: identify source truth, owned paths, forbidden paths, generated surfaces, and the honest validation ladder.",
|
|
1673
|
+
"Lazy-create the changes index, change artifact, and work items only when /ow:change is invoked.",
|
|
1674
|
+
],
|
|
1675
|
+
during: [
|
|
1676
|
+
"Convert the spec into one bounded implementation change with non-goals and rollback notes.",
|
|
1677
|
+
"Split work into ordered items with owned paths, dependencies, acceptance, verification, and coder evidence expectations when source edits are likely.",
|
|
1678
|
+
"Record unresolved implementation risks instead of expanding scope.",
|
|
1679
|
+
],
|
|
1680
|
+
after: [
|
|
1681
|
+
"Write CHANGE.yaml, WORK_ITEMS.yaml, and CHANGE_INDEX.yaml.",
|
|
1682
|
+
"Refresh change SUMMARY.yaml when summary_policy is configured and update CURRENT_STATE.yaml with current_change and runtime readiness.",
|
|
1683
|
+
"Hand off to /ow:team only when work items are implementable, verification is explicit, and coder preflight expectations are visible to the execution agent.",
|
|
1684
|
+
"Confirm no runtime artifacts were created.",
|
|
1685
|
+
],
|
|
1686
|
+
},
|
|
1687
|
+
antiPatterns: [
|
|
1688
|
+
"Do not implement product code during /ow:change.",
|
|
1689
|
+
"Do not create runtime or agent team files before the change plan is accepted.",
|
|
1690
|
+
"Do not plan work that is not traceable to the current spec.",
|
|
1691
|
+
"Do not precreate change artifacts during init or sync; create them only on /ow:change.",
|
|
1692
|
+
],
|
|
1693
|
+
internalSections: [
|
|
1694
|
+
{
|
|
1695
|
+
tag: "lazy_create",
|
|
1696
|
+
items: [
|
|
1697
|
+
"OpenWorkflow init is minimal and does not create .openworkflow/changes/.",
|
|
1698
|
+
"If CHANGE_INDEX.yaml is absent, create it together with the first change artifact during /ow:change.",
|
|
1699
|
+
"Create WORK_ITEMS.yaml only for the active change, not as a global task backlog.",
|
|
1700
|
+
],
|
|
1701
|
+
},
|
|
1702
|
+
{
|
|
1703
|
+
tag: "planning_quality_bar",
|
|
1704
|
+
items: [
|
|
1705
|
+
"A change plan must let an implementation agent start with bounded files, ordered tasks, acceptance checks, and rollback awareness.",
|
|
1706
|
+
"Prefer small coherent work items with explicit owned_paths and verification over broad task buckets.",
|
|
1707
|
+
"Keep the user-facing summary short and keep detailed implementation intelligence in the artifacts.",
|
|
1708
|
+
],
|
|
1709
|
+
},
|
|
1710
|
+
{
|
|
1711
|
+
tag: "coder_preflight",
|
|
1712
|
+
items: [
|
|
1713
|
+
"Before work items are ready for implementation, apply coder preflight from skills/coder/SKILL.md.",
|
|
1714
|
+
"Record source truth, derived generated surfaces, owned_paths, forbidden paths, and validation ladder expectations in the change artifacts.",
|
|
1715
|
+
"For behavior, validator, CLI report, generated-surface, summary, queue, or git-evidence changes, require the implementation agent to plan RED/GREEN evidence or explicitly mark RED not applicable.",
|
|
1716
|
+
"/ow:change remains planning; coder governance constrains the future source edits and does not execute them.",
|
|
1717
|
+
],
|
|
1718
|
+
},
|
|
1719
|
+
{
|
|
1720
|
+
tag: "readiness_gate",
|
|
1721
|
+
items: [
|
|
1722
|
+
"Do not hand off to /ow:team until CHANGE.yaml and WORK_ITEMS.yaml agree on scope and verification.",
|
|
1723
|
+
"If the spec is too broad or thin, ask one focused question or hand back to /ow:spec.",
|
|
1724
|
+
],
|
|
1725
|
+
},
|
|
1726
|
+
],
|
|
1727
|
+
handoffCommands: ["/ow:team", "/ow:spec"],
|
|
1728
|
+
};
|
|
1729
|
+
}
|
|
1730
|
+
function teamProtocol() {
|
|
1731
|
+
return {
|
|
1732
|
+
depth: "deep",
|
|
1733
|
+
interactionMode: "approved-change-team-execution",
|
|
1734
|
+
requiredContext: [
|
|
1735
|
+
".openworkflow/workflow/WORKFLOW_INDEX.yaml",
|
|
1736
|
+
".openworkflow/audit/ARTIFACT_CONTRACTS.yaml",
|
|
1737
|
+
".openworkflow/changes/CHANGE_INDEX.yaml",
|
|
1738
|
+
],
|
|
1739
|
+
optionalContext: [
|
|
1740
|
+
".openworkflow/changes/**/CHANGE.yaml",
|
|
1741
|
+
".openworkflow/changes/**/WORK_ITEMS.yaml",
|
|
1742
|
+
".openworkflow/runtime/RUNTIME_INDEX.yaml",
|
|
1743
|
+
".openworkflow/runtime/**/STATE.yaml",
|
|
1744
|
+
"AGENT.md",
|
|
1745
|
+
"package.json",
|
|
1746
|
+
],
|
|
1747
|
+
forbiddenContext: [],
|
|
1748
|
+
allowedOutputs: [
|
|
1749
|
+
".openworkflow/runtime/RUNTIME_INDEX.yaml",
|
|
1750
|
+
".openworkflow/runtime/<id>/STATE.yaml",
|
|
1751
|
+
".openworkflow/runtime/<id>/NOTE.md",
|
|
1752
|
+
".openworkflow/runtime/<id>/ISSUES.yaml",
|
|
1753
|
+
".openworkflow/runtime/<id>/CHECKPOINTS.yaml",
|
|
1754
|
+
],
|
|
1755
|
+
forbiddenOutputs: [],
|
|
1756
|
+
auditCheckpoints: {
|
|
1757
|
+
before: [
|
|
1758
|
+
"Confirm an approved or active change plan and work items exist.",
|
|
1759
|
+
"Audit git status, relevant source files, and any existing runtime state before execution.",
|
|
1760
|
+
"Recover coder governance expectations from the change plan before source edits: owner map, RED/GREEN target, self-check, validation ladder, and evidence binding.",
|
|
1761
|
+
"Lazy-create runtime state only when /ow:team is invoked for an approved change.",
|
|
1762
|
+
],
|
|
1763
|
+
during: [
|
|
1764
|
+
"Execute work items in dependency order and keep runtime state current.",
|
|
1765
|
+
"Delegate only when the task can run independently with clear owned paths and acceptance.",
|
|
1766
|
+
"Preserve RED/GREEN evidence, post-write self-check notes, verification results, checkpoints, and residual risks as development proceeds.",
|
|
1767
|
+
],
|
|
1768
|
+
after: [
|
|
1769
|
+
"Update runtime state, issues, and checkpoints.",
|
|
1770
|
+
"Refresh runtime SUMMARY.yaml when summary_policy is configured and update CURRENT_STATE.yaml with current_run, blockers, and next action.",
|
|
1771
|
+
"Run the verification named by the change plan when practical.",
|
|
1772
|
+
"Report changed artifacts, coder evidence status, verification result, and remaining blockers.",
|
|
1773
|
+
],
|
|
1774
|
+
},
|
|
1775
|
+
antiPatterns: [
|
|
1776
|
+
"Do not start runtime work without a current change plan and work items.",
|
|
1777
|
+
"Do not create team runtime during init, sync, spec, or change planning.",
|
|
1778
|
+
"Do not leave delegated work without ownership, acceptance, or status.",
|
|
1779
|
+
"Do not hide failed verification; record it in runtime issues or checkpoints.",
|
|
1780
|
+
],
|
|
1781
|
+
internalSections: [
|
|
1782
|
+
{
|
|
1783
|
+
tag: "lazy_create",
|
|
1784
|
+
items: [
|
|
1785
|
+
"OpenWorkflow init is minimal and does not create .openworkflow/runtime/.",
|
|
1786
|
+
"Create RUNTIME_INDEX.yaml and the first runtime state only when /ow:team begins approved execution.",
|
|
1787
|
+
"If runtime already exists, reconcile it instead of replacing historical state.",
|
|
1788
|
+
],
|
|
1789
|
+
},
|
|
1790
|
+
{
|
|
1791
|
+
tag: "execution_quality_bar",
|
|
1792
|
+
items: [
|
|
1793
|
+
"Team runtime must preserve enough state for another agent to continue without reading the full conversation.",
|
|
1794
|
+
"Track active change, active work item, assigned owner or agent, status, verification, issues, and checkpoints.",
|
|
1795
|
+
"Keep implementation and QA evidence linked to the change plan.",
|
|
1796
|
+
],
|
|
1797
|
+
},
|
|
1798
|
+
{
|
|
1799
|
+
tag: "coder_execution_gate",
|
|
1800
|
+
items: [
|
|
1801
|
+
"For source-edit work, follow skills/coder/SKILL.md before completion: owner/file/dependency map, RED evidence when applicable, GREEN evidence after edits, and post-write self-check.",
|
|
1802
|
+
"Bind coder validation evidence to runtime checkpoints, issues, or the selected-change LOCAL_COMMIT_EVIDENCE.yaml when implementation files changed.",
|
|
1803
|
+
"Missing coder evidence is guidance at this stage, not a hard failure; record the reason when RED evidence is not applicable.",
|
|
1804
|
+
"/ow:team remains execution governance and must not turn /ow:coder into a user-facing command.",
|
|
1805
|
+
],
|
|
1806
|
+
},
|
|
1807
|
+
{
|
|
1808
|
+
tag: "handoff_gate",
|
|
1809
|
+
items: [
|
|
1810
|
+
"When work is incomplete, leave the next action and blocker explicit in runtime state.",
|
|
1811
|
+
"When work is complete, record verification and checkpoint readiness before final handoff.",
|
|
1812
|
+
],
|
|
1813
|
+
},
|
|
1814
|
+
],
|
|
1815
|
+
handoffCommands: ["/ow:change"],
|
|
1816
|
+
};
|
|
1817
|
+
}
|
|
539
1818
|
//# sourceMappingURL=registry.js.map
|