byteor-actiongraph
byteor-actiongraph is the enterprise runtime surface for side-effecting stages. Use it when the spec needs to call an external HTTP target or launch an approved local program as part of pipeline execution.
Action-stage resolution
ActionGraph publishes two resolver-key stage families today:
The resolver is intentionally thin glue over byteor-actions plus byteor-policy defaults. That matters operationally because the same authored stage key can lead to four different outcomes depending on environment and replay posture:
AllowDryRunOnlyRequireApprovalDeny
For that reason, always read ActionGraph execution through the policy decision, not only through the presence of a stage key in the spec.
Approval-aware execution
The current operator posture is conservative:
devmay allow side effects for iteration,stagingandprodgenerally require approval for side-effecting actions,- replay should begin in dry-run mode rather than live execution.
Credential and trust lookup follow the shared enterprise conventions:
- pass a credential explicitly with
--approval=..., - or place
approval.crednext to the extractedspec.kv, - pass trusted keys with
--approval-key-set=..., - or place
signing_keys.jsonnext to the extractedspec.kv.
If BYTEOR_API_BASE_URL, BYTEOR_AGENT_ID, and BYTEOR_AGENT_API_KEY are all present, ActionGraph can refresh trusted signing keys before verification. If refresh fails, the local key cache remains the fallback path.
Operator constraints
ActionGraph is intentionally not a free-form side-effect runner.
http_post:*
- URLs must start with
http://orhttps://. BYTEOR_HTTP_POST_TIMEOUToverrides the default request timeout.BYTEOR_HTTP_POST_ALLOWLISTcan restrict the permitted URL prefixes.BYTEOR_ACTION_MAX_RETRIESandBYTEOR_ACTION_RETRY_BASE_MSshape retry behavior for retryable failures.
exec:*
- process execution is disabled by default,
BYTEOR_EXEC_ALLOWLISTmust name the permitted program strings exactly,- approval and policy checks still apply even when a program is allowlisted.
These constraints are deliberate. They keep authored stage identities stable while leaving the final live-execution decision under operator control.
Execution modes that matter in practice
runis the normal long-running or continuous execution path.run --spis the fastest way to prove one-shot bring-up with--input-hex=...or--input-ascii=....--dry-runis the safe first step for new side-effecting paths and for replay promotion.
The product surface also preserves the shared runtime tooling:
doctorfor host-readiness checks,snapshotfor current runtime state,incident-bundlefor reproducible triage export.
Recommended operator flow
- Start with
validateanddescribeso the exact stage keys are reviewable. - Use
--dry-runfirst for newhttp_post:*orexec:*deployments. - Confirm the approval credential, signing keys, and environment posture before enabling live side effects.
- Keep the resulting policy audit and replay audit artifacts with the deployment or incident record.
Use policy-and-approvals.md for the shared approval model and operator-flow.md for the end-to-end operator runbook.