RFC-0006: State Negotiation
Purpose
Define how the system interacts with users when required state is missing or ambiguous.
Status Codes
• AUTHORIZED
• REQUIRES_SPECIFICATION
• AMBIGUOUS_MAPPING
• UNRESOLVABLE
• BLOCKED
• NARRATIVE_ONLY
• CANNED_RESPONSE_ONLY
Mapping Rules • User language → ontology state is proposal-only • Any inferred state must include mapping_source and confidence • If semantic distance exceeds threshold → AMBIGUOUS_MAPPING
Negative Constraints
Certain adjectives (e.g. healthy, safe, standard) must not satisfy required state for high-sensitivity domains.
Inferred State Authorization Rule (Patch)
In state-sensitive domains, inferred state is not sufficient for authorization. If any required axis is satisfied via inference (mapping_source = inferred), the system MUST return REQUIRES_SPECIFICATION (or AMBIGUOUS_MAPPING) unless the user explicitly confirms the inferred value.
AUTHORIZED requires either: 1. required state provided explicitly by the user (mapping_source = explicit), or 2. user confirmation of inferred state (user_confirmed_inference = true) for all inferred required axes.
Partial Oracle Responses (Amendment)
When an oracle returns some but not all required axes, this is a data gap, not user ambiguity:
- New Reason Code:
partial_oracle_data - Behavior:
- If missing axis is in
conditional, proceed with available data - If missing axis is in
always, returnREQUIRES_SPECIFICATIONwithsource: "oracle_gap"
- If missing axis is in
- User Prompt: "The database doesn't have your [missing axis]. Please provide your current [axis value]."
interface OracleGapResponse {
status: "REQUIRES_SPECIFICATION";
source: "oracle_gap";
missing_axes: string[];
available_axes: string[];
oracle_id: string;
user_prompt: string; // Human-readable request for missing data
}
Error Recovery Hints (Amendment)
Refusal is a correct outcome, but a dead end is bad UX. All BLOCKED and REQUIRES_SPECIFICATION responses must include recovery guidance:
interface RecoveryHint {
suggested_actions: string[]; // e.g., ["Escalate to human operator", "Reformulate as general inquiry"]
reformulation_guidance?: string; // How to reframe the question safely
escalation_contacts?: string[]; // Emergency resources if applicable
next_steps: string[]; // Concrete actions user can take
}
Example Recovery Hints:
| Status | Recovery Hint |
|---|---|
BLOCKED (medical) | "For dosage questions, consult your physician or pharmacist." |
BLOCKED (emergency) | "Call 911 immediately. Do not wait for online guidance." |
REQUIRES_SPECIFICATION | "Please provide: [list of missing axes]" |
AMBIGUOUS_MAPPING | "Did you mean: [option A] or [option B]?" |
⸻