Society · Protocols
Workflow
Directed graph of operations
Definition
Mechanism
A directed graph of Steps in which completion or output from one Solver can enable another. It defines the operation topology required to pursue a complex objective and can express branching, parallelism, conditional logic, or declared recursion. An edge may carry a typed Artifact with an AcceptSpec, and a step may bind one or more Roles without instantiating performers. Edge payloads, acceptance policy, and role bindings remain optional unless a descendant requires them.
Invariants
- Causality: Step B cannot start before Step A's prerequisites are met.
- Cycle Declaration: A dependency cycle is permitted only when its recursion or daemon semantics are explicit; otherwise dependencies are acyclic.
- Declared Edge Data: When an edge carries data, it names a typed Artifact rather than untyped raw data.
- Binding Separation: Any declared role binding names one or more Roles without instantiating performers.
Risks
Failure modes
Unresolved Cycle
A dependency cycle has no declared recursion or daemon semantics and prevents progress.
Cascade Failure
One node failure propagates to all dependents.
Orphan Output
A node produces artifacts that no downstream node consumes.
Relationships
Builds on
References
Infrastructure
Non-compensatory acceptance contract; consumer Verify yields Solution or FrameError
Infrastructure
Immutable data unit
Infrastructure
Assignable contextual function
Mind
Abstract five-surface contract: Manifest, Execute, Consult, Verify, Feedback
Infrastructure
Atomic action with pre/post conditions
Used by
References
Interpret-Plan-Rollout Lifecycle
Reference
Data schema
{
"type": "object",
"required": [
"steps",
"dependencies"
],
"properties": {
"steps": {
"type": "array",
"description": "List of executable units"
},
"dependencies": {
"type": "array",
"description": "Directed prerequisite edges (step_A -> step_B)"
},
"artifacts": {
"type": "object",
"description": "Typed outputs flowing on edges"
},
"accept_specs": {
"type": "object",
"description": "Optional mapping from edge identifiers to AcceptSpec identifiers"
},
"role_bindings": {
"type": "object",
"description": "Mapping from step identifiers to one or more Role identifiers; selects required roles without instantiating performers"
}
}
}