Skip to content
OnticBeta
RFC-0006

State Negotiation

canonical

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, return REQUIRES_SPECIFICATION with source: "oracle_gap"
  • 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:

StatusRecovery 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]?"