035-screening-seam
Untrusted-text screening seam (amends 002, 003 and 009)
An amendment of approved specs 002, 003 and 009, for #76 child B7 (#65). A definition may declare a `screening` block that names untrusted text fields (caller text, third-party text, list item text), the screener backend that judges each one, a consequence on block (`refuse`, `drop_field`, `drop_text`, `drop_item`) and a consequence when the screener is unavailable (`fail_closed`, `skip_generation`, `fail_open`). The block compiles down to ordinary `proposition` steps, one text value per request, plus consequence rules evaluated before the selection policy; a screener is an ordinary backend that declares a `screen` profile (categories, maximum text bytes, text unit size) and uses the general per-capability `isolation: per_item` member this spec introduces. In a definition that declares screening, the compiler refuses a model step that reads unscreened untrusted text. A blocked value under `refuse` yields spec 033's `refused` outcome with its computed addressing. Adds a `screen_unavailable` unresolved reason, an explicit withheld marker in projections, per-value screening evidence with digests only, text-unit budgets, verdict caching through spec 017's cache, the reserved `rustev.screening` metric of spec 028, a per-item isolation rule for spec 009 remote adapters, and the mapping constraints for spec 030's reserved Bedrock screening values. New members go into the shared #76 track versions (`rustev.definition/2`, `rustev.plan/3`, `rustev.evidence/2`, `rustev.judgment/2`, `rustev.run/3`); definitions, descriptors and plans that use no #76 construct keep byte-identical identities. Approved (A-32); implementation is complete.
Read the full pinned specification ↗Relationships
depends on
- 001-boundaries-and-authority
- 002-decision-contract-and-pure-core
- 003-runtime-execution-and-evidence
- 009-remote-adapter-protocol
- 017-general-runtime-optimization
- 020-remote-protocol-refinements
- 028-opentelemetry-evidence-sink
- 032-evidence-quality
- 033-provenance-rules-and-actionable-outcomes
- 034-parameterized-definitions
depended on by
Claimed units
- extends
{ "nature": "amending", "spec": "002-decision-contract-and-pure-core", "unit": { "kind": "directory", "path": "crates/rustev-contract/" } } - extends
{ "nature": "amending", "spec": "002-decision-contract-and-pure-core", "unit": { "kind": "directory", "path": "crates/rustev-core/" } } - extends
{ "nature": "amending", "spec": "003-runtime-execution-and-evidence", "unit": { "kind": "directory", "path": "crates/rustev-runtime/" } } - extends
{ "nature": "amending", "spec": "009-remote-adapter-protocol", "unit": { "kind": "directory", "path": "integrations/rustev-remote-http/" } } - extends
{ "nature": "additive", "spec": "004-evaluation-and-replay", "unit": { "kind": "directory", "path": "crates/rustev-eval/" } } - extends
{ "nature": "additive", "spec": "006-cli-surface", "unit": { "kind": "directory", "path": "crates/rustev-cli/" } } - extends
{ "nature": "additive", "spec": "005-reference-backends", "unit": { "kind": "directory", "path": "backends/rustev-backend-rules/" } } - extends
{ "nature": "additive", "spec": "012-jev-integration", "unit": { "kind": "directory", "path": "integrations/rustev-jev/" } } - extends
{ "nature": "additive", "spec": "030-bedrock-backend", "unit": { "kind": "directory", "path": "integrations/rustev-bedrock/" } } - extends
{ "nature": "additive", "spec": "027-node-and-wasm-bindings", "unit": { "kind": "directory", "path": "integrations/rustev-node/" } } - extends
{ "nature": "additive", "spec": "027-node-and-wasm-bindings", "unit": { "kind": "directory", "path": "integrations/rustev-wasm/" } } - extends
{ "nature": "additive", "spec": "028-opentelemetry-evidence-sink", "unit": { "kind": "directory", "path": "integrations/rustev-otel/" } } - extends
{ "nature": "additive", "spec": "027-node-and-wasm-bindings", "unit": { "kind": "directory", "path": "tools/rustev-conformance/" } } - extends
{ "nature": "additive", "spec": "027-node-and-wasm-bindings", "unit": { "kind": "directory", "path": "crates/rustev-surface/" } } - extends
{ "nature": "additive", "spec": "031-public-api-and-release-family", "unit": { "kind": "directory", "path": "tools/rustev-release/" } } - extends
{ "nature": "additive", "spec": "001-boundaries-and-authority", "unit": { "kind": "file", "path": "Makefile" } } - extends
{ "nature": "additive", "spec": "001-boundaries-and-authority", "unit": { "kind": "directory", "path": "scripts/acceptance/" } }
Source headings
- 035: Untrusted-text screening seam (amends 002, 003 and 009)
- 1. Purpose
- 2. Territory
- 2.1 Binding principles of #76
- 3. Behavior
- 3.1 Terms
- 3.2 The screen profile (descriptor)
- 3.3 The screen output and required kind
- 3.4 Screening declarations
- 3.5 Compilation
- 3.6 Verdicts and consequences
- 3.7 Screening refusals
- 3.8 Withheld values in projections
- 3.9 Unavailability
- 3.10 Isolation and batching
- 3.11 Verdict cache
- 3.12 Text units and budgets
- 3.13 Evidence
- 3.14 Metrics
- 3.15 Remote adapters (amends 009)
- 3.16 Alignment with spec 030 (Bedrock)
- 3.17 Relation to B3, B5 and B6
- 3.18 Compatibility and identity
- 4. Out of scope
- 5. Observable negative cases
- Acceptance
- Verification
- Implementation record
- Facts relied on
- Decisions at approval
Frozen anchors
No frozen anchors declared.