524 lines
35 KiB
YAML
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] }
|