Generated from
corpus/lines/services/workflows/engagement.yml. Do not edit by hand — runpython scripts/generate-corpus-docs.py.
corpus/lines/services/workflows/engagement.yml¶
Title / id: workflow.services
id: workflow.services
status: active
line: services
stages:
- id: offer
entry:
- A repeatable client outcome or capability is identified.
bindings:
- inv.services.catalog
roles:
- role.practice-lead
artifacts:
- services.offer-definition
evidence:
- Outcome
- scope boundaries
- buyer
- delivery assumptions
exit:
- The offer is clear enough for lead qualification.
next_stages:
- lead
validation:
mode: judgment
checks:
- scope and exclusions are explicit
- unsupported claims are removed
on_gap: gap.stage.services.offer
recovery:
action: remain_at_stage
preserve:
- artifacts
- evidence
- decision_log
- id: lead
entry:
- A potential client and relevant offer are known.
bindings:
- inv.services.lead-status
roles:
- role.bd-sales
artifacts:
- services.lead-record
evidence:
- Need
- fit
- authority
- timing
- privacy constraints
exit:
- The lead is qualified, nurtured, declined, or parked.
next_stages:
- propose
validation:
mode: judgment
checks:
- status rationale and next action are recorded
on_gap: gap.stage.services.lead
recovery:
action: remain_at_stage
preserve:
- artifacts
- evidence
- decision_log
- id: propose
entry:
- A qualified lead has a defined need and decision process.
bindings: []
roles:
- role.bd-sales
- role.engagement-manager
artifacts:
- services.proposal
evidence:
- Scope
- deliverables
- timeline
- price
- assumptions
- exclusions
exit:
- The client can accept or reject an unambiguous proposal.
next_stages:
- contract
validation:
mode: judgment
checks:
- deliverables and acceptance are testable
- commercial assumptions are explicit
on_gap: gap.stage.services.propose
recovery:
action: return_to_previous_stage
preserve:
- artifacts
- evidence
- decision_log
- id: contract
entry:
- Proposal terms are agreed in principle.
bindings: []
roles:
- role.engagement-manager
artifacts:
- services.contract-record
evidence:
- Executed agreement
- privacy terms
- start authorization
exit:
- Delivery is authorized under an executed agreement.
next_stages:
- deliver
validation:
mode: deterministic
checks:
- required signatures and terms exist
- privacy obligations are bound
on_gap: gap.stage.services.contract
recovery:
action: return_to_previous_stage
preserve:
- artifacts
- evidence
- decision_log
- id: deliver
entry:
- Contract, scope, privacy profile, and delivery owner are active.
bindings:
- inv.services.engagement-type
roles:
- role.delivery-consultant
- role.engagement-manager
artifacts:
- services.delivery-set
evidence:
- Work products
- client feedback
- acceptance evidence
exit:
- Contracted deliverables meet acceptance or deviations are agreed.
next_stages:
- invoice
validation:
mode: judgment
checks:
- each deliverable maps to scope
- deviations have client evidence
on_gap: gap.stage.services.deliver
recovery:
action: return_to_previous_stage
preserve:
- artifacts
- evidence
- decision_log
- id: invoice
entry:
- A billable milestone and contractual billing basis exist.
bindings: []
roles:
- role.billing
artifacts:
- services.invoice-record
evidence:
- Invoice
- amount calculation
- delivery milestone
exit:
- A correct invoice is issued and traceable to the agreement.
next_stages:
- complete
validation:
mode: deterministic
checks:
- rate and amount reproduce
- invoice references contract and milestone
on_gap: gap.stage.services.invoice
recovery:
action: return_to_previous_stage
preserve:
- artifacts
- evidence
- decision_log
- id: complete
entry:
- Deliverables are accepted and billing obligations are resolved.
bindings: []
roles:
- role.engagement-manager
artifacts:
- services.completion-record
evidence:
- Acceptance
- payment status
- retained obligations
- lessons
exit:
- The engagement is closed or remaining obligations are explicitly assigned.
next_stages:
- archive
validation:
mode: deterministic
checks:
- acceptance and billing status are recorded
- open obligations have owners
on_gap: gap.stage.services.complete
recovery:
action: return_to_previous_stage
preserve:
- artifacts
- evidence
- decision_log
- id: archive
entry:
- The engagement is complete and retention rules are known.
bindings: []
roles:
- role.engagement-manager
artifacts:
- services.archive-record
evidence:
- Retention decision
- archive location
- deletion evidence where required
exit:
- Records are retained or deleted according to contract and privacy policy.
next_stages: []
validation:
mode: deterministic
checks:
- archive location resolves
- required deletions have evidence
on_gap: gap.stage.services.archive
recovery:
action: remain_at_stage
preserve:
- artifacts
- evidence
- decision_log
schema_version: corpus-unit.v2
kind: workflow
version: 1.0.0
layer: organization
depends_on:
- id: core.stage-contract
version: ^1.0.0
- id: org.roles
version: ^1.0.0