Boundary Placement
Where AXIS or ARBITER sits relative to the request path, approval services, and downstream systems.
This page exposes the public artifacts technical buyers and engineers usually inspect first: integration boundaries, policy objects, decision outcomes, and audit record shape.
This pack stays honest about scope. It contains public technical material only. Environment-specific deployment detail, benchmarks, and customer-specific workflows are discussed during direct review.
The material here is designed to remove ambiguity around where control lives, what policy decides, and how evidence survives review.
Where AXIS or ARBITER sits relative to the request path, approval services, and downstream systems.
The fields used to classify a request, match policy, and decide whether to allow, block, or require approval.
What changes when the outcome is allow, block, or approval-required, and which assumptions stay out of band.
The actor, surface, policy, approval, and execution data preserved for review and retention.
Both products follow the same operating sequence even though the request surface changes: classify the action, evaluate policy, attach approval if needed, then preserve evidence.
What matters most in the first architecture review is not the total platform diagram. It is the exact point where state-changing work crosses from intent into execution.
Collect the minimum identity, target, and context fields needed to evaluate the action without guessing.
Reduce database writes or agent tool calls into a stable shape the policy engine can classify consistently.
Return allow, block, or require-approval using explicit policy objects and narrow approval rules.
Persist the decision record with reason codes, approval lineage, and execution timing before the action is treated as complete.
AXIS and ARBITER do not pretend every surface is the same. They do share the same decision grammar: scoped match inputs, explicit effect, and reviewable evidence fields.
AXIS policies typically classify statement type, scope, environment, and approval requirements before any write reaches production state.
{
"id": "axis.write_requires_approval",
"surface": "postgres.write",
"match": {
"statement_class": ["UPDATE", "DELETE", "DDL"],
"table": ["customers", "accounts"],
"environment": ["production"]
},
"decision": {
"effect": "require_approval",
"approval_scope": "customers.balance"
},
"evidence": {
"reason_code": "WRITE_REQUIRES_APPROVAL",
"log_timing": "pre_exec"
}
}
ARBITER policies usually classify agent identity, requested tool, target resource, and whether the action can proceed without a narrow approval path.
{
"id": "arbiter.tool.requires_human",
"surface": "agent.tool_call",
"match": {
"agent_id": ["ops-assistant"],
"tool": ["github.merge_pull_request"],
"environment": ["production"]
},
"decision": {
"effect": "require_approval",
"approval_scope": "repo.merge"
},
"evidence": {
"reason_code": "TOOL_CALL_REQUIRES_APPROVAL",
"log_timing": "pre_exec"
}
}
Reviewability breaks when the evidence trail depends on post-event reconstruction. The sample below shows the minimum fields we treat as first-class in a decision record.
{
"request_id": "req_92af01",
"surface": "postgres.write",
"actor": "app_role",
"target": "customers.balance",
"policy_id": "axis.write_requires_approval",
"decision": "require_approval",
"reason_code": "WRITE_REQUIRES_APPROVAL",
"approval_state": "pending",
"evidence_timing": "pre_exec",
"trace_id": "8b14e2c1c0a34a4aa1726f5d"
}
{
"request_id": "req_4b0d3a",
"surface": "agent.tool_call",
"agent_id": "ops-assistant",
"tool": "github.merge_pull_request",
"user_scope": "release-manager",
"policy_id": "arbiter.tool.requires_human",
"decision": "require_approval",
"reason_code": "TOOL_CALL_REQUIRES_APPROVAL",
"approval_state": "pending",
"evidence_timing": "pre_exec",
"session_id": "sess_f5ac12"
}
The best first conversation is narrow and technical. It should be obvious which boundary matters and what evidence the team expects to keep.
Use the public material here to decide whether a direct technical review is worth the time. If it is, bring one real boundary rather than a generic platform request.