Control participant input and output¶
Use participant control to set three things. Set what may cross a participant boundary. Set who may direct the participant. Set what proof a run retains. This guide explains the shipped RAES model. It serves five reader roles. It does not define participant-control semantics.
Read ADR-085, ADR-095, SEM-230 information-flow specification, and the API-423 crossing schema. They own the rules. Follow them if this guide seems to differ.
Keep four planes separate¶
Plane |
What it contains |
What it does not imply |
|---|---|---|
World truth |
Backend or environment state under its owning semantics |
Participant visibility |
Participant view |
A projection authorized for one participant and audience at an exact policy state cut |
Complete world truth or future delivery |
Participant-visible history |
The append-only actions, controls, views, deliveries, and observations exposed to that participant |
Administrative crossing history |
Archival evidence |
Crossing decisions, operations, audit, provenance, and conformance records retained for authorized review |
Participant disclosure |
Projection, disclosure, delivery, and observation are different facts. A permitted projection can still fail before delivery. A delivered value may never be observed. Audit retention does not put a value in the participant view.
The crossing history keeps each API-423 stage apart. The stages are request, decision, change, release, delivery attempt, delivery, observation, and audit. Each stage refers to an existing carrier. It does not copy the carrier payload into a generic participant message.
Choose the route for your role¶
Runtime operator¶
Select participant control by backend profile and feature strength. Governed operation requires:
a trusted participant crossing policy resolver;
authenticated caller and exact runtime-target binding;
a participant/controller binding for ingress or one participant/audience binding for egress;
exact policy-decision and state-cut evidence;
the applicable API-407 feature, strength, required contracts, limitations, and evidence;
a compatible append-only store; and
the shared RUN-319 crossing mediator.
Missing policy meaning fails closed. So does a missing identity or evidence. Missing contracts or backend support also fail closed. Each check fails at its own gate. Only the API-407 policy path can allow a downgrade. Record its real strength. Record its limits, release, and source. Missing support is not a downgrade.
Legacy API-408 status, context, and history retrieval remains available when no crossing resolver is set. That legacy mode is not governed egress. With a resolver, the HTTP adapter binds the audience before lookup. It resolves trusted evidence. It commits crossing facts before it writes the view.
Use the participant-control migration guide for legacy, opt-in, required, rollout, and rollback steps. After the first governed write, keep a resolver-aware reader. Keep the crossing history, operation, idempotency, and audit write set. Never delete crossing facts. Do not rebuild them from policy, time stamps, logs, or empty defaults.
Build a backend¶
Declare each participant-policy feature on its own. Use the API-407 backend manifest. A positive entry needs an exact support strength. It also needs the required contracts, limits, release, and proof. A method or valid schema does not show runtime support.
Run the participant-policy conformance harness only against behavior the
target may test. Keep the target and profile in the report. Keep the probe-set
digest and case IDs. Keep the finite scope, errors, and real support. A feature
without an allowed probe result is unsupported. It is not conformant.
The shipped reference backend currently declares all six participant-policy
features unsupported. Some tests use stronger manifests. Those tests do not
turn the reference backend into a native implementation. Start with the
backend guide. Then read the
feature-admission implementation,
and
finite participant-policy probes.
Researcher¶
Name the question first. Then select a relation. Record the subject and carriers. Record the direction and projection revision. Name all quantifiers. State the scheduler, setting, and order assumptions. State the evidence bound, status, limits, and nonclaims.
Finite examples can find faults in their stated bounds. So can conformance probes. They do not prove a broad property. Keep each failed case as a counterexample. Do not average it away. Do not give a finite report a stronger relation.
Read the crossing examples¶
The examples below use synthetic identifiers and summarize existing evidence. They are explanatory illustrations, not new API payloads.
Denial¶
An egress request names participant red-1. It also names audience
red-primary. A policy or audience gate returns deny at the exact state cut.
The runtime records the request. It also records the deny result. It releases
no value and makes no backend call. Safe audit proof may retain the refusal.
It does not reveal the rejected value or a hidden participant.
The ASR-535 denial case checks the refusal and those side-effect boundaries
through the shipped runtime. It is one named finite case. It is not a broad
information-flow result.
Withholding¶
Withholding is a choice not to release an available item. It is not packet
loss. It is not a backend fault or missing record. API-423 can record a
withhold result. It can keep safe proof of why the crossing stopped.
The current RUN-319 decision mapper does not emit withhold. Its finite
ASR-535 probe accepts a deny as refusal proof. The probe tests nonrelease. It
does not show that the runtime made a distinct withholding fact.
Redaction¶
For an allowed status projection, policy can select redaction. It can also select a governed change before release. The result keeps a typed subject. It records the source and result link. It records loss, markings, the policy result, and proof. Only the new carrier may be written to the view.
Redaction does not allow a crossing. It does not declassify the source. An
ingress change creates a new typed subject. That subject needs fresh checks
and full action admission. The ASR-535 redaction case gives bounded runtime
proof of this split.
Governed declassification¶
Declassification needs an exact authority basis. It needs the policy result, state cut, source mark, allowed release, order, and proof. Authority at one cut does not change the past. It does not survive an unrelated policy revision. The result is still not delivery or observation.
The finite ASR-535 governed-declassification case drives a status projection.
It does not request a separate declassification operation. It does not prove
support for the participant_declassification backend feature.
Intervention and transformation¶
Each external control event remains an API-409 control occurrence. This includes a proposal, approval, intervention, handoff, override, or cancellation. The event stays bound to the authored mixed-control state machine. Participant ingress adds the needed API-423 crossing facts. Approval does not admit or run an action. An intervention does not replace the control move.
If mediation transforms the proposed ingress, the transformed subject gets a
new identity. It gets a fresh semantic check and action-admission result. The
ASR-535 transformation case is bounded refusal proof. It is not a general
refinement or simulation result.
Participant-directed inject delivery¶
The authoring model binds one participant to one inject occurrence. It binds the observation boundary, order, and proof needs. It may also bind a matching mixed-control move. Environment-only injects stay as orchestration events. Normal participant projection must allow them.
The shipped runtime probe records delivery of an already projected status view
under the participant-inject-delivery interaction kind. It keeps delivery
apart from observation. It does not bind the compiled DSL-142 delivery to the
original DSL-111 inject identity. It also does not bind the full
event/script/story identity end to end.
Unsupported capability¶
The selected target may omit a needed feature. It may omit a contract, proof, resolver, or minimum strength. In each case, selection or crossing fails closed. This happens before backend dispatch or view output. The report keeps the stated level and a safe reason. It makes no positive support claim.
The ASR-535 unsupported-capability case and the no-harness path demonstrate
this bounded behavior. A manifest entry alone is not runtime support. It is
not conformance.
All seven finite cases are exercised and bounded in the ASR-535 assurance tests.
Select a behavioral claim¶
Read the current behavioral-relation catalog instead of defining relation meaning in a report.
Question |
Catalog relation |
Required boundary |
|---|---|---|
Did named finite fixtures or probes produce their expected results? |
|
Exact target, profile, cases, assumptions, failures, and finite bound |
Are two histories equal for one participant under one projection revision? |
|
Both carriers, participant, projection, order, and compared bound |
Are unauthorized high variations invisible under the full participant policy? |
|
Adaptive strategies, memory, exact policy cuts, purge and declassification schedule, scheduler, environment, order, and support-set quantifiers |
Does every projected implementation trace belong to an abstract trace set? |
|
Left-to-right direction, labels, hiding, projection, assumptions, and the universal obligation |
Can implementation and abstract steps be matched in one direction? |
|
State relation, initiality, direction, and step obligations |
Do concrete states and operations preserve an abstract data model? |
|
Retrieve relation plus initialization and operation obligations |
Do two branching systems match in both directions? |
|
Symmetry; weak matching also names the governed hidden-action set, closure, stuttering, and divergence treatment |
Two equal sampled histories support a bounded comparison. They do not show participant-policy noninterference. A successful trace sample does not show trace inclusion. A matching finite example does not show simulation or refinement. It also does not show strong or weak bisimulation.
The following existing claim-binding contract reports only the seven named examples in this guide:
{
"taxonomy_id": "raes-behavioral-relations",
"taxonomy_revision": "rev5",
"relation_id": "bounded-probe-success",
"subject": "Seven named participant-policy examples for one declared target and profile",
"left_carrier_ref": "backend-conformance-report:participant-policy-example",
"right_carrier_ref": null,
"observation_projection_ref": "participant-policy-probe-projection",
"observation_projection_revision": "rev1",
"quantifier_scope": "finite-cases",
"evidence_scope": "finite",
"evidence_boundary": "Only denial, withholding, redaction, governed declassification, transformation, participant-directed inject delivery, and unsupported-capability cases named by this guide for the disclosed target and profile",
"assurance_status": "tested",
"evidence_refs": [
"implementations/python/tests/test_asr_535_participant_flow_assurance.py"
],
"limitations": [
"The reference backend declares all participant-policy features unsupported; positive paths use explicit test manifests."
],
"explicit_non_claims": [
"Does not establish universal participant-policy noninterference or participant-projected history equivalence.",
"Does not establish trace inclusion, simulation, refinement, strong or weak bisimulation, native-backend realization, model checking, or proof."
]
}
The public documentation test loads this JSON through
BehavioralClaimBindingModel and resolves its relation against the canonical
catalog. A stronger claim needs the full governed binding. It also needs the
right proof. A prose change is not enough.
Diagnose failures without leaking data¶
Keep expected failures on the existing safe surfaces. These include
diagnostic, operation, and HTTP results. An HTTP authorization failure is a
generic 403 forbidden. An ambiguity or state conflict uses a bounded 409
detail. An unexpected fault stays {"detail":"internal server error"}.
Do not expose rejected payloads or policy bodies. Do not expose hidden state or participant existence. Keep credentials and bearer tokens out. Keep backend objects, exception strings, and tracebacks out. The same rule covers environment values, host paths, and raw proof. Do not place these values in responses, logs, fixtures, screenshots, or docs.
For current delivery status, evidence, and known limits, use the participant-control adoption index and current project limitations.