Files

524 lines
35 KiB
YAML

workflow-contracts:
version: 1
purpose: >
Cascade runtime의 artifact vocabulary, stage bundle, reviewer 권한을 한 곳에서 정의한다.
state_engine은 이 파일에서 artifact-kind와 bundle을 직접 읽으며 command는 gate fact를
인자로 전달하지 않는다.
default-payload-schema-ref: generic-workflow-artifact-payload.schema.json
payload-enforcement:
strict-tiers: [standard, heavy]
# Light remains a deliberate low-paperwork path. These kinds use their dedicated
# schemas and full required fields only in standard/heavy; light keeps the listed core.
tiered-kinds:
executive-decision-packet: [recommendation]
overall-design: [basis-artifact-id, basis-artifact-sha256]
api-design: [basis-artifact-id, basis-artifact-sha256]
threat-model: [basis-artifact-id, basis-artifact-sha256]
ui-design: [basis-artifact-id, basis-artifact-sha256]
prd: [basis-artifact-id, basis-artifact-sha256]
api-contract: [basis-artifact-id, basis-artifact-sha256]
data-contract: [basis-artifact-id, basis-artifact-sha256]
migration-plan: [basis-artifact-id, basis-artifact-sha256]
wave-plan: []
company-context: []
venture-validation: []
competitive-experience-benchmark: []
experience-strategy: []
experience-blueprint: []
wireframe-set: []
design-system-release: []
design-engine-output: []
approved-direction: [parent-workflow-id, child-workflow-id, product-decision-id, direction-input-brief-sha256, selected-direction-ref, selected-direction-sha256, winner-prototype-ref, winner-prototype-sha256]
role-capabilities:
transition-executor: [OPS-ORCH]
artifact-reviewer: [EXEC-CEO, EXEC-CPO, EXEC-CTO, EXEC-CPTO, EXEC-VPENG, PROD-PO, PROD-TPO, PROD-PPO, QA, HUMAN-001]
decision-approver: [HUMAN-001, EXEC-CEO]
design-approver: [EXEC-CPO, EXEC-CPTO, PROD-PO, DES-DIRECTOR, HUMAN-001]
spec-approver: [PROD-PO, PROD-TPO, PROD-PPO, EXEC-CPO, EXEC-CPTO, HUMAN-001]
quality-auditor: [QA, EXEC-VPENG, SEC-ENGINEER, SEC-APPSEC, HUMAN-001]
data-quality-auditor: [QA, ARCH-DATA, EXEC-CPO, EXEC-CTO, HUMAN-001]
architecture-auditor: [ARCH-EA, ARCH-SOLUTION, ARCH-SWAT, EXEC-CTO, HUMAN-001]
security-auditor: [SEC-ENGINEER, SEC-APPSEC, SEC-CHAMPION, QA, HUMAN-001]
product-quality-auditor: [PROD-PO, EXEC-CPO, EXEC-CPTO, QA, HUMAN-001]
infrastructure-auditor: [SRE, INFRA-PLATFORM, SEC-DEVSECOPS, EXEC-VPENG, HUMAN-001]
technical-accuracy-auditor: [ARCH-TECH, ARCH-APP, ARCH-SWAT, QA, EXEC-VPENG, HUMAN-001]
documentation-approver: [DOC-LEAD, EXEC-CPO, HUMAN-001]
release-decider: [HUMAN-001, EXEC-CEO]
# Runtime state graph SSOT. Each transition is derived from a stage's next + exit-gate.
# execution-plans.yaml and state-transition-rules.yaml are compatibility/documentation mirrors.
workflows:
cascade:
terminal-stage: released
stages:
intake:
command: ceo-intake
next: discovery
actor: { executor: [OPS-ORCH], decision-author-capability: [decision-approver] }
outputs: { bundle: [decision-brief, workload-profile] }
exit-gate: [decision-brief-present, workload-profile-present, company-context-ready]
discovery:
command: ground
next: decide
actor: { executor: [OPS-ORCH] }
inputs: [decision-brief, workload-profile]
outputs: { bundle: [grounding-contribution, competitive-market-grounding, grounding-package] }
exit-gate: [grounding-evidence-present, option-set-present, grounding-lens-coverage-satisfied]
decide:
command: decide
next: design
actor: { executor: [OPS-ORCH], decision-author-capability: [decision-approver] }
outputs: { bundle: [executive-decision-packet] }
exit-gate: [decision-packet-accepted, evidence-grade-min]
design:
command: design
next: spec
actor: { executor: [OPS-ORCH], decision-author-capability: [design-approver] }
outputs: { dynamic-bundle: design-bundle }
exit-gate: [design-accepted, experience-foundation-gate-satisfied, design-system-release-attached, design-direction-gate-satisfied]
spec:
command: spec
next: build
actor: { executor: [OPS-ORCH], decision-author-capability: [spec-approver] }
outputs: { dynamic-bundle: spec-bundle }
exit-gate: [spec-accepted, must-read-designs-accepted]
build:
command: build
next: verification
actor: { executor: [OPS-ORCH] }
outputs: { bundle: [completion-record] }
exit-gate: [completion-record-present]
verification:
command: review-output
next: acceptance
actor: { executor: [OPS-ORCH], decision-author-capability: [quality-auditor] }
outputs: { bundle: [quality-gate-review] }
exit-gate: [quality-gate-passed, blocker-open-false]
acceptance:
command: release-check
next: released
actor: { executor: [OPS-ORCH], decision-author-capability: [release-decider] }
outputs: { bundle: [release-decision] }
exit-gate: [release-approved, no-unresolved-critical-risks, human-gate]
released:
command: null
actor: { executor: [OPS-ORCH] }
exit-gate: []
additional-transitions:
- from: verification
to: build
allowed-by: { executor: [OPS-ORCH] }
required-conditions: [quality-gate-failed]
wave:
terminal-stage: released
stages:
intake: { command: ceo-intake, next: plan, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [decision-brief, workload-profile] }, exit-gate: [decision-brief-present, workload-profile-present, company-context-ready] }
plan: { command: plan-wave, next: run, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [wave-plan] }, exit-gate: [wave-plan-present] }
run: { command: run-wave, next: verification, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [completion-record] }, exit-gate: [completion-record-present] }
verification: { command: review-output, next: acceptance, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [quality-gate-review] }, exit-gate: [quality-gate-passed, blocker-open-false] }
acceptance: { command: release-check, next: released, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [release-decision] }, exit-gate: [release-approved, no-unresolved-critical-risks, human-gate] }
released: { command: null, actor: { executor: [OPS-ORCH] }, exit-gate: [] }
light:
terminal-stage: acceptance
stages:
intake: { command: ceo-intake, next: run, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [decision-brief, workload-profile] }, exit-gate: [decision-brief-present, workload-profile-present, company-context-ready] }
run: { command: run-wave, next: verification, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [completion-record] }, exit-gate: [completion-record-present] }
verification: { command: review-output, next: acceptance, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [quality-gate-review] }, exit-gate: [quality-gate-passed, blocker-open-false] }
acceptance: { command: null, actor: { executor: [OPS-ORCH] }, exit-gate: [] }
venture-bootstrap:
terminal-stage: bootstrap-complete
stages:
intake: { command: ceo-intake, next: founder-setup, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [decision-brief] }, exit-gate: [decision-brief-present] }
founder-setup: { command: venture-validate, next: opportunity-discovery, actor: { executor: [OPS-ORCH] }, exit-gate: [founder-context-present] }
opportunity-discovery: { command: venture-validate, next: venture-validation, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [opportunity-cluster] }, exit-gate: [opportunity-clusters-present] }
venture-validation: { command: venture-validate, next: venture-decision, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [venture-validation] }, exit-gate: [venture-options-validated] }
venture-decision: { command: company-bootstrap, next: company-context-commit, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [venture-decision] }, exit-gate: [venture-decision-accepted, human-acceptance-receipt-present] }
company-context-commit: { command: company-bootstrap, next: bootstrap-complete, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [company-context] }, exit-gate: [company-context-provisional-committed, company-context-lint-passed, company-context-artifact-recorded] }
bootstrap-complete: { command: null, actor: { executor: [OPS-ORCH] }, exit-gate: [] }
experience-foundation:
terminal-stage: foundation-approved
stages:
experience-foundation-intake: { command: experience-foundation, next: experience-benchmark, actor: { executor: [OPS-ORCH] }, exit-gate: [experience-parent-binding-present] }
experience-benchmark: { command: experience-foundation, next: experience-strategy, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [competitive-experience-benchmark] }, exit-gate: [competitive-benchmark-accepted] }
experience-strategy: { command: experience-foundation, next: information-architecture, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [experience-strategy, experience-technical-feasibility, experience-operational-feasibility] }, exit-gate: [experience-strategy-accepted, experience-technical-feasibility-accepted, experience-operational-feasibility-accepted] }
information-architecture: { command: experience-foundation, next: wireframes, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [experience-blueprint] }, exit-gate: [experience-blueprint-accepted] }
wireframes: { command: experience-foundation, next: foundation-approved, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [wireframe-set] }, exit-gate: [wireframe-set-accepted, experience-foundation-link-recorded] }
foundation-approved: { command: null, actor: { executor: [OPS-ORCH] }, exit-gate: [] }
design-direction:
terminal-stage: design-direction-approved
stages:
design-direction-intake: { command: design-direction, next: design-direction-discovery, actor: { executor: [OPS-ORCH] }, exit-gate: [parent-binding-present, direction-input-brief-valid, experience-foundation-gate-satisfied] }
design-direction-discovery: { command: design-direction, next: design-direction-divergence, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [pre-direction-framing, direction-discovery, divergence-charter] }, exit-gate: [direction-discovery-present, divergence-charter-present] }
design-direction-divergence: { command: design-direction, next: design-direction-decision, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [direction-set, comparative-divergence-audit] }, exit-gate: [directions-diverged, divergence-audit-passed] }
design-direction-decision: { command: design-direction, next: design-direction-prototype, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [selected-direction] }, exit-gate: [selected-direction-accepted] }
design-direction-prototype: { command: design-direction, next: design-direction-critique, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [winner-prototype] }, exit-gate: [winner-prototype-present] }
design-direction-critique: { command: design-direction, next: design-direction-finalize, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [design-lens-review, design-review-panel] }, exit-gate: [direction-critique-passed] }
design-direction-finalize: { command: design-direction, next: design-direction-approved, actor: { executor: [OPS-ORCH] }, outputs: { bundle: [approved-direction] }, exit-gate: [approved-direction-valid, approval-receipt-bound, parent-approval-link-recorded] }
design-direction-approved: { command: null, actor: { executor: [OPS-ORCH] }, exit-gate: [] }
additional-transitions:
- { from: design-direction-decision, to: design-direction-discovery, allowed-by: { executor: [OPS-ORCH] }, required-conditions: [none-of-the-above-recorded] }
- { from: design-direction-critique, to: design-direction-prototype, allowed-by: { executor: [OPS-ORCH] }, required-conditions: [critique-revision-requested] }
- { from: design-direction-critique, to: design-direction-divergence, allowed-by: { executor: [OPS-ORCH] }, required-conditions: [concept-rejection-recorded] }
side-transitions:
- { from: "*", to: blocked, allowed-by: { executor: [OPS-ORCH] }, required-conditions: [blocked-report-present, resume-condition-present] }
- { from: blocked, to: "<resume>", allowed-by: { executor: [OPS-ORCH] }, required-conditions: [resume-condition-satisfied, human-instruction-applied-if-needed] }
artifact-kinds:
decision-brief:
producer-roles: [EXEC-CEO]
reviewer-capability: decision-approver
required-payload-fields: [mode, tier, candidate-families]
payload-schema-ref: decision-brief.artifact.schema.json
method-binding: { mode: workflow-control }
workload-profile:
producer-roles: [EXEC-CEO]
reviewer-capability: decision-approver
required-payload-fields: [surfaces, risk, required-capabilities]
payload-schema-ref: workload-profile.artifact.schema.json
method-binding: { mode: workflow-control }
competitive-experience-benchmark:
producer-roles: [GTM-CI]
reviewer-capability: product-quality-auditor
required-payload-fields: [parent-workflow-id, product-decision-id, category, target-job, surface-archetype, references, synthesis, no-copy-attestation]
payload-schema-ref: competitive-experience-benchmark.artifact.schema.json
method-binding: { mode: stage-synthesis }
experience-strategy:
producer-roles: [EXEC-CPO]
reviewer-capability: decision-approver
required-payload-fields: [parent-workflow-id, product-decision-id, benchmark-ref, benchmark-sha256, experience-thesis, target-users, jobs-to-be-done, value-proposition, differentiation, message-hierarchy, success-metrics, decision]
payload-schema-ref: experience-strategy.artifact.schema.json
method-binding: { mode: stage-synthesis }
experience-technical-feasibility:
producer-roles: [EXEC-CTO, EXEC-CPTO]
reviewer-capability: decision-approver
required-payload-fields: [parent-workflow-id, product-decision-id, strategy-ref, strategy-sha256, architecture-fit, delivery-sustainability, constraints, risks, mitigations, verdict]
allow-empty-payload-fields: [risks, mitigations]
payload-schema-ref: experience-technical-feasibility.artifact.schema.json
method-binding: { mode: stage-synthesis }
experience-operational-feasibility:
producer-roles: [EXEC-COO]
reviewer-capability: decision-approver
required-payload-fields: [parent-workflow-id, product-decision-id, strategy-ref, strategy-sha256, operating-model, content-operations, support-and-recovery, constraints, risks, mitigations, verdict]
allow-empty-payload-fields: [risks, mitigations]
payload-schema-ref: experience-operational-feasibility.artifact.schema.json
method-binding: { mode: stage-synthesis }
experience-blueprint:
producer-roles: [DOC-IA]
reviewer-capability: product-quality-auditor
required-payload-fields: [parent-workflow-id, product-decision-id, benchmark-ref, benchmark-sha256, strategy-ref, strategy-sha256, experience-thesis, target-users, jobs-to-be-done, value-proposition, differentiation, content-model, page-inventory, navigation-model, message-hierarchy, task-flows, state-matrix, responsive-priorities, accessibility-intent, success-metrics]
payload-schema-ref: experience-blueprint.artifact.schema.json
method-binding: { mode: stage-synthesis }
wireframe-set:
producer-roles: [DES-PROD]
reviewer-capability: design-approver
required-payload-fields: [parent-workflow-id, product-decision-id, blueprint-ref, blueprint-sha256, screens, validation, art-direction-deferred]
payload-schema-ref: wireframe-set.artifact.schema.json
method-binding: { mode: stage-synthesis }
design-system-release:
producer-roles: [DES-PLATFORM]
reviewer-capability: design-approver
required-payload-fields: [release-id, version, state, source-ref, source-sha256, principles-ref, taste-profile-ref, token-source-ref, component-ids, pattern-ids, page-archetype-ids, generated-artifacts]
payload-schema-ref: design-system-release.artifact.schema.json
method-binding: { mode: stage-synthesis }
design-engine-output:
producer-roles: [DES-PROD, DES-VISUAL, DES-PLATFORM, ENG-FEUX]
reviewer-capability: design-approver
required-payload-fields: [engine, screen-refs, editable-source, preview-url, screenshots, design-system-ref, source-provenance, verification]
payload-schema-ref: design-engine-output.artifact.schema.json
method-binding: { mode: stage-synthesis }
first-draft-evaluation:
producer-roles: [UX-RESEARCHER, DES-DIRECTOR]
reviewer-capability: product-quality-auditor
required-reviewer-roles: [HUMAN-001]
required-payload-fields: [experiment-id, subject, arm-id, model-id, request-sha256, first-result-only, revision-count-at-capture, output-ref, output-sha256, screenshots, evaluator-blinded, metrics]
payload-schema-ref: first-draft-evaluation.artifact.schema.json
method-binding: { mode: independent-review }
grounding-package:
producer-roles: [STR-ANALYST]
reviewer-capability: decision-approver
required-payload-fields: [problem-structure, analysis-synthesis, evidence, options, source-contributions, lens-coverage]
option-count-min: 2
payload-schema-ref: grounding-package.artifact.schema.json
method-binding:
mode: aggregate
role-methods:
STR-ANALYST:
method-id: strategy-analysis
checkpoint-step-id: diverge-options
embedded-outputs:
grounding-evidence: [problem-structure, evidence]
analysis-synthesis: [analysis-synthesis]
option-set: [options]
grounding-contribution:
producer-roles: [EXEC-CEO, EXEC-CTO, EXEC-CPO, EXEC-CFO, EXEC-COO, EXEC-CPTO, EXEC-VPENG, PROD-PM, PROD-PO, PROD-TPO, PROD-PPO, UX-RESEARCHER, DATA-ANALYST, DES-DIRECTOR, DES-PROD, DES-PLATFORM, DES-INTERNAL, DES-VISUAL, STR-ANALYST, ENG-FE, ENG-FEPLAT, ENG-FEUX, ENG-BE, ENG-BEGEN, ENG-PRODSERVER, ENG-PLATSERVER, ENG-PRODUCTMINDED, ENG-SW, ENG-DESKTOP, ENG-PRODCHAPTER, INFRA-DEV, INFRA-PLATFORM, INFRA-DEVOPS, SRE, SEC-DEVSECOPS, ARCH-EA, ARCH-SOLUTION, ARCH-APP, ARCH-TECH, ARCH-IT, ARCH-SYSANALYST, ARCH-SWAT, ARCH-BA, ARCH-BIZANALYST, ARCH-DATA, DATA-ENGINEER, DATA-BIGDATA, QA, SEC-ENGINEER, SEC-APPSEC, SEC-CHAMPION, OPS-CH, OPS-CREW, GTM-GROWTHPM, GTM-DEMANDGEN, GTM-PMM, GTM-CI, GTM-SALES, GTM-CS, GTM-PARTNER, GTM-REVOPS, GTM-PRICING, GTM-LEGAL, CONSULT-EM, CONSULT-STRAT, CONSULT-OPS, CONSULT-ORG, CONSULT-DIGITAL, CONSULT-FIN, DOC-LEAD, DOC-WRITER, DOC-IA, DOC-VISUAL, DOC-EDU]
reviewer-capability: decision-approver
required-payload-fields: [assigned-lens, producer-run-id, context-package-ref, context-package-sha256, findings, evidence-urls]
payload-schema-ref: grounding-contribution.artifact.schema.json
method-binding: { mode: lens-contribution }
competitive-market-grounding:
producer-roles: [GTM-CI]
reviewer-capability: product-quality-auditor
required-payload-fields: [assigned-lens, producer-run-id, context-package-ref, context-package-sha256, competitors-and-substitutes, current-alternatives, strengths-weaknesses, differentiation-hypotheses, evidence-urls]
payload-schema-ref: competitive-market-grounding.artifact.schema.json
method-binding: { mode: lens-contribution }
executive-decision-packet:
producer-roles: [EXEC-CEO]
reviewer-capability: decision-approver
required-payload-fields: [recommendation, selected-option-id, evaluation-criteria, option-evaluations, tradeoffs, dissent, kill-criteria, revisit-conditions, evidence-refs]
allow-empty-payload-fields: [dissent]
payload-schema-ref: executive-decision-packet.artifact.schema.json
method-binding:
mode: aggregate
role-methods:
EXEC-CEO:
method-id: decide-direction
checkpoint-step-id: converge-decision
embedded-outputs:
evidence-digest: [evidence-refs]
option-evaluation: [evaluation-criteria, option-evaluations]
product-decision: [recommendation, selected-option-id, tradeoffs, kill-criteria, revisit-conditions]
overall-design:
producer-roles: [ARCH-SOLUTION]
reviewer-capability: architecture-auditor
required-payload-fields: [basis-artifact-id, basis-artifact-sha256, source-artifact-refs, summary, architecture-boundaries, quality-attributes, decisions, dependencies, compatibility-assumptions]
allow-empty-payload-fields: [dependencies]
payload-schema-ref: overall-design.artifact.schema.json
method-binding: { mode: stage-synthesis }
api-design:
producer-roles: [ARCH-APP, ARCH-TECH]
reviewer-capability: technical-accuracy-auditor
required-payload-fields: [basis-artifact-id, basis-artifact-sha256, summary, resources, auth-model, error-model, versioning, compatibility-assumptions]
payload-schema-ref: api-design.artifact.schema.json
data-model:
producer-roles: [ARCH-DATA]
reviewer-capability: data-quality-auditor
required-payload-fields: [basis-artifact-id, basis-artifact-sha256, conceptual, logical, physical, ownership, classification, lineage, retention, compatibility, data-quality-thresholds]
payload-schema-ref: data-model.artifact.schema.json
metrics-analysis:
producer-roles: [DATA-ANALYST]
reviewer-capability: data-quality-auditor
required-payload-fields: [metric-contract, dataset-snapshot, analysis-run, findings, limitations]
payload-schema-ref: metrics-analysis.artifact.schema.json
data-pipeline:
producer-roles: [DATA-ENGINEER]
reviewer-capability: data-quality-auditor
required-payload-fields: [source-contract, schema-contract, correctness, time-semantics, lineage, operations, evidence-receipt-ids]
payload-schema-ref: data-pipeline.artifact.schema.json
bigdata-pipeline:
producer-roles: [DATA-BIGDATA]
reviewer-capability: data-quality-auditor
required-payload-fields: [source-contract, schema-contract, processing-semantics, correctness, performance, recovery-tests, lineage, evidence-receipt-ids]
payload-schema-ref: bigdata-pipeline.artifact.schema.json
threat-model:
producer-roles: [SEC-APPSEC, SEC-ENGINEER]
reviewer-capability: security-auditor
required-payload-fields: [basis-artifact-id, basis-artifact-sha256, dfd, trust-boundaries, threats, mitigations, residual-risks]
allow-empty-payload-fields: [residual-risks]
payload-schema-ref: threat-model.artifact.schema.json
ui-design:
producer-roles: [DES-PROD, DES-VISUAL, DES-DIRECTOR]
reviewer-capability: product-quality-auditor
required-payload-fields: [basis-artifact-id, basis-artifact-sha256, user-flows, screen-inventory, state-matrix, accessibility, design-system-bindings, visual-rationale]
payload-schema-ref: ui-design.artifact.schema.json
approved-design-direction:
producer-roles: [DES-DIRECTOR]
reviewer-capability: design-approver
required-payload-fields: [basis-artifact-id, basis-artifact-sha256]
prd:
producer-roles: [PROD-PM, PROD-PO, PROD-TPO]
reviewer-capability: product-quality-auditor
required-payload-fields: [basis-artifact-id, basis-artifact-sha256, problem, outcomes, non-goals, user-stories, success-metrics, constraints]
allow-empty-payload-fields: [non-goals, constraints]
payload-schema-ref: prd.artifact.schema.json
acceptance-criteria:
producer-roles: [PROD-PO, PROD-PM]
reviewer-capability: spec-approver
required-payload-fields: [basis-artifact-id, basis-artifact-sha256, criteria]
payload-schema-ref: acceptance-criteria.artifact.schema.json
api-contract:
producer-roles: [ARCH-TECH, ARCH-APP, ENG-BE, ENG-PRODSERVER]
reviewer-capability: technical-accuracy-auditor
required-payload-fields: [basis-artifact-id, basis-artifact-sha256, summary, protocol, version, operations, schemas, errors, compatibility]
payload-schema-ref: api-contract.artifact.schema.json
data-contract:
producer-roles: [ARCH-DATA, DATA-ENGINEER]
reviewer-capability: data-quality-auditor
required-payload-fields: [basis-artifact-id, basis-artifact-sha256, datasets, schemas, ownership, quality-rules, privacy, versioning]
payload-schema-ref: data-contract.artifact.schema.json
migration-plan:
producer-roles: [ARCH-DATA, DATA-ENGINEER, ENG-BE]
reviewer-capability: data-quality-auditor
required-payload-fields: [basis-artifact-id, basis-artifact-sha256, phases, rollback-plan, validation-plan, data-loss-tolerance, cutover-criteria]
payload-schema-ref: migration-plan.artifact.schema.json
completion-record:
producer-roles: [ENG-BE, ENG-FE, ENG-BEGEN, ENG-PRODSERVER, ENG-SW, ENG-FEUX, ENG-PRODUCTMINDED, ENG-DESKTOP, DATA-ENGINEER, DATA-BIGDATA, DATA-ANALYST, ARCH-DATA, INFRA-DEVOPS, INFRA-PLATFORM, SRE, SEC-DEVSECOPS, SEC-ENGINEER, SEC-APPSEC, OPS-ORCH]
reviewer-capability: quality-auditor
required-payload-fields: [summary, source-revision, primary-artifacts, acceptance-criteria-coverage, verification-receipt-ids, remaining-risks]
allow-empty-payload-fields: [remaining-risks]
payload-schema-ref: completion-record.artifact.schema.json
quality-gate-review:
producer-roles: [QA, EXEC-VPENG, SEC-ENGINEER, SEC-APPSEC, ARCH-DATA]
reviewer-capability: quality-auditor
required-payload-fields: [quality-gate, blocker-open, reviewed-artifact-id, reviewed-artifact-sha256, checks, findings]
allow-empty-payload-fields: [findings]
payload-schema-ref: quality-gate-review.artifact.schema.json
method-binding: { mode: independent-review }
release-decision:
producer-roles: [EXEC-CEO, HUMAN-001]
reviewer-capability: release-decider
required-payload-fields: [release-decision, unresolved-critical-risks, reviewed-completion-artifact-id, reviewed-completion-artifact-sha256, reviewed-quality-event-id, reviewed-quality-artifact-id, reviewed-quality-artifact-sha256]
payload-schema-ref: release-decision.artifact.schema.json
method-binding: { mode: workflow-control }
blocked-report:
reviewer-capability: artifact-reviewer
required-payload-fields: [blocker, resume-condition]
payload-schema-ref: blocked-report.artifact.schema.json
resume-evidence:
producer-roles: [OPS-ORCH, HUMAN-001]
reviewer-capability: artifact-reviewer
required-payload-fields: [resume-condition-satisfied]
payload-schema-ref: resume-evidence.artifact.schema.json
company-context:
producer-roles: [OPS-ORCH]
reviewer-capability: decision-approver
required-payload-fields: [status, company, products, operating-constraints, assumptions, evidence-refs]
allow-empty-payload-fields: [operating-constraints, assumptions]
payload-schema-ref: company-context.artifact.schema.json
opportunity-cluster:
producer-roles: [STR-ANALYST]
reviewer-capability: decision-approver
required-payload-fields: [source-artifact-refs, id, problem-domain, target-user, triggering-event, current-alternative, why-now, founder-fit]
payload-schema-ref: opportunity-cluster.artifact.schema.json
method-binding: { mode: stage-synthesis }
venture-validation:
producer-roles: [EXEC-CEO]
reviewer-capability: product-quality-auditor
required-payload-fields: [source-artifact-refs, hypotheses, experiments, evidence, option-evaluations, kill-criteria, recommendation]
payload-schema-ref: venture-validation.artifact.schema.json
method-binding: { mode: stage-synthesis }
venture-decision:
producer-roles: [EXEC-CEO]
reviewer-capability: decision-approver
required-payload-fields: [recommendation, selected-option-id, evaluation-criteria, option-evaluations, tradeoffs, dissent, kill-criteria, revisit-conditions, evidence-refs]
allow-empty-payload-fields: [dissent]
payload-schema-ref: executive-decision-packet.artifact.schema.json
method-binding:
mode: aggregate
role-methods:
EXEC-CEO:
method-id: decide-direction
checkpoint-step-id: converge-decision
embedded-outputs:
evidence-digest: [evidence-refs]
option-evaluation: [evaluation-criteria, option-evaluations]
product-decision: [recommendation, selected-option-id, tradeoffs, kill-criteria, revisit-conditions]
direction-discovery:
producer-roles: [DES-DIRECTOR]
reviewer-capability: design-approver
required-payload-fields: [direction-input-brief-sha256, findings, constraints-restated]
divergence-charter:
producer-roles: [DES-DIRECTOR]
reviewer-capability: design-approver
required-payload-fields: [direction-cycle-id, representative-screen, directions, pairwise-separation]
direction-set:
producer-roles: [DES-VISUAL]
reviewer-capability: design-approver
required-payload-fields: [direction-cycle-id, divergence-charter-ref, divergence-charter-sha256, representative-screen, directions, comparison-preview]
comparative-divergence-audit:
producer-roles: [DES-VISUAL]
reviewer-capability: design-approver
required-payload-fields: [direction-cycle-id, divergence-charter-ref, divergence-charter-sha256, direction-set-ref, direction-set-sha256, reviewer-role-id, reviewer-run-id, verdict, pairwise-comparisons, full-size-previews, blocking-findings]
allow-empty-payload-fields: [blocking-findings]
selected-direction:
producer-roles: [DES-DIRECTOR]
reviewer-capability: design-approver
required-reviewer-roles: [HUMAN-001]
required-payload-fields: [direction-set-ref, direction-set-sha256, rejected-directions, parent-workflow-id, product-decision-id, direction-input-brief-sha256, selection-acceptance-receipt]
winner-prototype:
producer-roles: [DES-PLATFORM, ENG-FEUX, ENG-FE]
reviewer-capability: design-approver
required-payload-fields: [selected-direction-ref, selected-direction-sha256, source-artifact-refs, prototype-path, prototype-sha256, preview-receipt-ref, revision]
method-binding: { mode: stage-synthesis }
design-review-panel:
producer-roles: [DES-DIRECTOR]
reviewer-capability: design-approver
required-payload-fields: [direction-cycle-id, target-prototype-id, target-prototype-sha256, reviews, synthesis]
payload-schema-ref: design-review-panel.artifact.schema.json
design-lens-review:
producer-roles: [DES-PROD, UX-RESEARCHER, DES-VISUAL, DES-PLATFORM, GTM-PMM, ENG-FE]
reviewer-capability: design-approver
required-payload-fields: [direction-cycle-id, target-prototype-id, target-prototype-sha256, reviewer-role-id, reviewer-run-id, lens, verdict, findings]
allow-empty-payload-fields: [findings]
payload-schema-ref: design-lens-review.artifact.schema.json
method-binding: { mode: independent-review }
approved-direction:
producer-roles: [DES-DIRECTOR]
reviewer-capability: design-approver
required-payload-fields: [parent-workflow-id, child-workflow-id, product-decision-id, direction-input-brief-sha256, selected-direction-ref, selected-direction-sha256, winner-prototype-ref, winner-prototype-sha256, visual-thesis, interaction-model, design-token-contract, acceptance-receipt-ref]
payload-schema-ref: approved-direction.artifact.schema.json
pre-direction-framing:
producer-roles: [DES-PROD]
reviewer-capability: design-approver
required-payload-fields: [brief, experience-constraints, direction-input-brief]
method-binding:
mode: aggregate
role-methods:
DES-PROD:
method-id: pre-direction
checkpoint-step-id: author-input-brief
embedded-outputs:
design-brief: [brief]
experience-constraints: [experience-constraints]
direction-input-brief: [direction-input-brief]
wave-plan:
producer-roles: [OPS-ORCH]
reviewer-capability: architecture-auditor
required-payload-fields: [scope, work-items, dependencies, acceptance-criteria, risks, owners]
allow-empty-payload-fields: [dependencies, risks]
payload-schema-ref: wave-plan.artifact.schema.json
compatibility-review:
producer-roles: [QA, ARCH-SOLUTION, ARCH-SWAT, ARCH-DATA, SEC-ENGINEER]
reviewer-capability: quality-auditor
required-payload-fields: [left, right, dimensions, findings, verdict, reviewer-role-id]
allow-empty-payload-fields: [findings]
payload-schema-ref: compatibility-review.artifact.schema.json
method-binding: { mode: independent-review }
method-judgment-review:
producer-roles: [QA, ARCH-SWAT, ARCH-DATA, SEC-ENGINEER, SEC-APPSEC, DES-DIRECTOR, DES-PROD, UX-RESEARCHER, EXEC-VPENG]
reviewer-capability: quality-auditor
required-payload-fields: [method-role-id, method-id, step-id, gate-id, criterion, reviewed-artifact-id, reviewed-artifact-sha256, reviewer-role-id, verdict, findings]
allow-empty-payload-fields: [findings]
payload-schema-ref: method-judgment-review.artifact.schema.json
method-binding: { mode: independent-review }
compatibility-contracts:
- { left: overall-design, right: api-design, dimensions: [boundary, auth, versioning] }
- { left: overall-design, right: data-model, dimensions: [ownership, lifecycle, consistency] }
- { left: overall-design, right: threat-model, dimensions: [trust-boundary, controls, residual-risk] }
- { left: approved-design-direction, right: ui-design, dimensions: [interaction, tokens, accessibility] }
- { left: prd, right: api-contract, dimensions: [use-case, error-semantics, acceptance] }
- { left: data-contract, right: migration-plan, dimensions: [schema, cutover, rollback] }
- { left: api-contract, right: data-contract, dimensions: [identity, consistency, versioning] }
artifact-bundles:
design-bundle:
always: [overall-design]
conditional:
- { when: public-api, require: [api-design] }
- { when: persistence, require: [data-model] }
- { when: security-bearing, require: [threat-model] }
- { when: ui, require: [approved-design-direction, ui-design] }
spec-bundle:
always: [acceptance-criteria]
conditional:
- { when: product-feature, require: [prd] }
- { when: public-api, require: [api-contract] }
- { when: persistence, require: [data-contract, migration-plan] }