ImplementedREALFIELD 02

NEXUS CEREBRI / CPIR Explorer

What information does the planner need?

To find 30 minutes for an appointment, Cerebri needs its duration, a search window and the times already occupied. CPIR puts those details, rules and planning permissions into separate fields. A calling application supplies this data; the current planner does not read a sentence.

TECHNICAL DEPTH / CONTRACTS

The new appointment has no assigned time: its time.value is RESOLVED with knowledge MISSING. The duration is KNOWN: 1800 seconds. A missing duration would prevent the search from starting.

RESEARCH DEPTH / BOUNDARY

This example uses CPIR 0.2. The format also supports temporal source data; older 0.1 requests remain accepted without it. CPIR is still an internal, evolving format. Learned interpretation remains future work.

FROM THE APPOINTMENT TO ITS DATA

Where do the details go?

The example describes a new 30-minute appointment and an existing booking from 09:00 to 10:00 UTC. The new appointment has no time yet. Each field tells the planner one part of that problem.

TECHNICAL DETAIL

The 30-minute duration and 09:00–12:00 window give 11 starts on this 15-minute grid. The budget is an upper limit; it does not create extra candidates. The empty constraints list does not disable the built-in overlap check.

01
Propose one new appointmentoperation: CREATE · target_ids: new-event
02
Record the duration and existing timesduration · context.objects
03
Search between 09:00 and 12:00 UTCscope.time_range
04
Check the rules and planning grantspolicy · planning_capability
05
Check starts every 15 minutesgranularity: 900 seconds · budget: at most 256 starts

A CPIR input envelope keeps scope, knowledge, constraints, preferences, policy, capability and declared budget distinct. The same interval endpoints resolve into exact field paths. A planner boundary separates the request from Rust-generated candidate results.

REALCPIR Explorer
TECHNICAL DEPTH LENS

Following explanation depth

CPIR INPUT / 0.2

Evidence envelope

ONE REQUEST · DISTINCT BOUNDARIES
Request request_id
synthetic-request
Operation operation
CREATE
Targets target_ids
["new-event"]
  • 01 / BOUNDED STATE
    Scope boundaryscope.time_range
    scope.time_range.start
    09:00 UTC
    scope.time_range.end
    12:00 UTC
    Known busy intervalcontext.objects[1].time.value.knowledge.data
    context.objects[1].time.value.knowledge.data.start
    09:00 UTC
    context.objects[1].time.value.knowledge.data.end
    10:00 UTC
    Duration duration.value.knowledge.data
    1800 s
    Grid granularity
    900 s
    Mutation bound scope.max_mutations
    3
  • 02 / CONTEXT

    Knowledge has two coordinates.

    KNOWLEDGE ↑ PROCESSING → UNRESOLVEDRESOLVED
    1. MISSING
      new-eventRESOLVED / MISSING
      context.objects[0].time.value.processing
      RESOLVED
      context.objects[0].time.value.knowledge.state
      MISSING
      context.objects[0].time.provenance
      USER_EXPLICIT
    2. KNOWN
      busyRESOLVED / KNOWN
      context.objects[1].time.value.processing
      RESOLVED
      context.objects[1].time.value.knowledge.state
      KNOWN
      context.objects[1].time.provenance
      INTEGRATION_FACT

    MISSING is resolved absence of temporal knowledge. The empty UNRESOLVED column is an axis label, not another fixture object.

  • 03 / HARD CONSTRAINTS

    Constraint cut

    constraints
    [] · empty array

    The region exists; this fixture declares no additional constraints.

  • 04 / SOFT PREFERENCES

    Preference field

    preferences.preferences
    [] · empty array

    The preference set is present, with no entries in this request.

  • 05 / DECLARATIVE RULE PLANE

    Policy

    policy.snapshot
    policy.policy_set_id
    local-test-policy
    policy.snapshot.mutation.allowed_actions
    CREATE_EVENT · MOVE_EVENT
    policy.snapshot.confirmation.all_mutations
    true
    policy.snapshot.allow_uncertain_duration
    false
  • 06 / PROPOSAL OPERATION SET

    Planning capability

    planning_capability
    CREATE_EVENT
    planning_capability.mutations[0].object_id
    new-event
    planning_capability.read / planning_capability.plan
    true / true

    Policy rules and proposal capability are separate. Neither is execution authority.

  • 07 / FINITE SEARCH BOUND

    Declared budget

    Limits, not observed resource usage.

    budget.max_candidates
    256
    budget.max_repairs
    0
    budget.max_moved_objects
    1
    budget.max_depth
    0
SourceCanonical CPIR requestSelected exact paths · full request below
CPIR input · raw data
CPIR INPUT
PLANNER BOUNDARYcerebri-core::plan → cerebri-plannerCompile · validate input · bounded search
PLANNER RESULT
OUTPUT / RUST-GENERATED

Planner result

NEW COORDINATE SYSTEM
outcome
Solution
assessment
ProvenOptimal
search_space.evaluated
11
search_space.exhausted
true
C05DISPLAY IDENTITYcandidates[0]

Display coordinate, not a Rust object ID.

Proposed placementcandidates[0].proposed.placements[0].range
candidates[0].proposed.placements[0].range.start
10:00 UTC
candidates[0].proposed.placements[0].range.end
10:30 UTC
candidates[0].proposed.placements[0].object_id
new-event

Ordering key

Existing comparator dimensions → exact record. Rust order is retained.

  1. 01
    preferred distancecandidates[0].ordering_key.preference_distance_seconds
    0
  2. 02
    mutation countcandidates[0].ordering_key.mutation_count
    1
  3. 03
    shift secondscandidates[0].ordering_key.shifted_seconds
    0
  4. 04
    startcandidates[0].ordering_key.start
    2026-10-01T10:00:00Z
  5. 05
    object idcandidates[0].ordering_key.object_id
    new-event

Ranking observations

Absent evidence remains null; the ordering projection remains a separate field.

candidates[0].ranking_features.schema_version
{"major":0,"minor":1}
candidates[0].ranking_features.preferred_start_distance_seconds
null
candidates[0].ranking_features.preferred_start_source
null
candidates[0].ranking_features.mutation_count
1
candidates[0].ranking_features.shift_seconds
0
conflicts.rejections · entry count
4 rejected positions

ProposedPlan → separate lifecycle validation → ValidatedPlan. Execution still requires later authorization and preflight.

Result structure → runtime ownershipcerebri-planner →
Rust-generated result · raw data
CPIR types + snapshot compilation → owning layercerebri-planner →
Text alternative

A CPIR input envelope keeps scope, knowledge, constraints, preferences, policy, capability and declared budget distinct. The same interval endpoints resolve into exact field paths. A planner boundary separates the request from Rust-generated candidate results.

Built from current repository facts or Rust-generated fixture output.