Skip to content

Enforce three-zone Symbolic Moment structure with sealed geometry audit #439

@DHCross

Description

@DHCross

Symbolic Moment Structure Fix

Problem

Two generated Symbolic Moment reads failed in the same structural way. The issue is not tone. The runtime path is not enforcing the unified interpretive prompt.

The current failure pattern is:

  • Zone 1 is generated free-form instead of assembled from constrained slots.
  • Zone 2 sealed geometry is missing or not logged/hashable.
  • Zone 3 verification asks the user to confirm the system’s interpretation instead of offering falsifiable domain checks.
  • Chamber anchors are either absent or glossary-like.
  • The Silhouette Rule is not mandatory.
  • Validator gates are not rejecting leading prompts, stacked metaphor, or forecasting/felt-state violations.

This dovetails with the Balance Meter / Direction-Load notebook work: the scoring engine can now distinguish magnitude, direction, load, volatility, and pressure signature, but the delivery layer must be template-enforced so that math does not collapse into improvised Raven phrasing.

Required Architecture

Every Symbolic Moment read must be assembled as three zones. The LLM does not decide whether to include them. It fills slots.

Zone 1 — Frontstage Voice

Structure: Force → Measurement → Landing → Voice → Silhouette Rule

Each component must be a separate sentence or short sentence group.

Force:

  • Names the transit/timescale without explaining mechanics.
  • Planet names are allowed only when they form the poetic subject.
  • Examples:
    • Venus and Pluto move in easy reach today.
    • A live friction line is active today.

Measurement:

  • Names magnitude/direction/load/pressure signature in one sentence.
  • No moralizing.
  • Calm, heavy, quiet, mixed, supportive-with-drag, and blocked states must remain expressible.

Landing:

  • Names chamber and chamber anchor on first mention.
  • Anchor must come from CHAMBER_ANCHOR_MAP.
  • One phrase only, not a house glossary.
  • Example: This lands first in The Horizon — the far view and the longer arc.

Voice:

  • Structural translation of pressure + landing.
  • No forecasted lived state.
  • No you may feel, no this will cause, no event prediction.

Silhouette Rule:

  • Mandatory closing alternative.
  • Example: But if this does not resonate as opening in the far view, it may be quiet deepening elsewhere.

Zone 2 — Sealed Geometry Audit

Zone 2 is logged backstage only. Do not expose raw JSON to the user.

Template:

{
  "sealed_at_utc": "<ISO timestamp>",
  "geometry_cluster": [
    {"aspect": "Venus trine Pluto", "orb": 0.3, "orb_limit": 3.0}
  ],
  "primary_chamber": "The Horizon",
  "pressure_signatures": ["Amplification", "Widening"],
  "moment_type": "transit",
  "resonance_state": "Pending / Unreviewed",
  "sealed_hash": "<canonical JSON hash of this object without sealed_hash field>",
  "classification": null
}

Locked fields:

  • sealed_at_utc: system timestamp, not user-controlled
  • sealed_hash: RFC 8785/JCS-compatible hash, computed before Zone 3 is presented
  • resonance_state: always Pending / Unreviewed on first read
  • classification: null until testimony arrives; writes once and does not mutate

Variable fields:

  • geometry_cluster
  • primary_chamber
  • pressure_signatures
  • moment_type

Zone 3 — Verification Prompt

Template:

On the ground, this might touch [domain_1], [domain_2], or [domain_3]. Is one of those close, or is this landing elsewhere?

Rules:

  • Domain options come from CHAMBER_DOMAIN_MAP[primary_chamber].
  • Use exactly 2–4 domain options.
  • Always include an open-ended or elsewhere path.
  • No yes/no framing.
  • No leading edge such as Is that where the opening is showing first?
  • Do not ask the user to decode the chamber or confirm the system.

Examples:

For The Horizon:

On the ground, this might touch plans, perspective, timing, or the larger arc. Is one of those close, or is this landing elsewhere?

For The Core:

On the ground, this might touch shared obligation, something bonded, or what feels irrevocable. Is one of those close, or is this landing elsewhere?

Pressure Signature Vocabulary

Use only the approved vocabulary below in Zone 1.

Primary signatures:

  • Compression / narrowing / tightening / weight
  • Ignition / heat / friction / push
  • Dissolution / blur / wash / diffusion / permeability
  • Amplification / widening / opening / expansion / overflow
  • Shear / torque / twist / cross-pressure / grinding
  • Carrier

Compound signatures:

  • FusedCompression
  • FusedExpansion
  • SplitCurrent
  • DirectionlessLoad

Transmission conditions:

  • carries
  • stalls
  • loops
  • fragments
  • blurs
  • falls silent

Implementation Tasks

  1. Rewrite Symbolic Moment prompt assembly so Zone 1, Zone 2, and Zone 3 are wired as template slots, not generated free-form.
  2. Implement Force, Measurement, and Voice language generators using deterministic patterns from scoring telemetry.
  3. Add first-mention chamber anchor retrieval from CHAMBER_ANCHOR_MAP.
  4. Add domain retrieval from CHAMBER_DOMAIN_MAP for Zone 3.
  5. Implement mandatory Silhouette Rule output.
  6. Implement sealed Zone 2 logging and hashing every time.
  7. Confirm sealed hash is computed from canonical JSON before sealed_hash is added.
  8. Ensure Zone 2 remains backstage-only and is not exposed in normal user output.
  9. Wire validator gates as hard rejection, not soft nudging.
  10. Add regression tests for the two failed reads below.
  11. Confirm quiet, mixed, and supportive-with-drag states still pass validation.

Failed Read Regression Cases

Core / Sun Square Sun failure

The pressure lands first in The Core. The Core is carrying a brief hard-angle load around shared consequence and exchange. Sun square Sun: live day-scale friction. Tell me what is actually happening in shared load, debt, fusion, or exchange in The Core right now.

Expected: reject.

Reasons:

  • Missing sealed Zone 2.
  • Zone 1 is cramped and stacked.
  • Chamber anchor is missing.
  • Verification prompt asks user to confirm the system’s interpretation.
  • No Silhouette Rule.

Horizon / Venus Trine Pluto failure

The pressure lands first in The Horizon — the 9th house of belief, distance, learning, travel, and the far view. Venus trine Pluto lets desire, accord, and what draws the line together and depth, underpressure, and irreversible force move in easy coherence. Here, the opening tends to show through plans, conviction, study, travel, and the longer line the day is trying to follow. Is that where the opening is showing first — in plans and the longer view?

Expected: reject.

Reasons:

  • Missing sealed Zone 2.
  • Chamber anchor is textbook/glossary style.
  • Too many conditions stacked into one sentence.
  • Verification prompt has a leading edge.
  • No true mismatch alternative.

Suggested Validator Gates

Gate 1: Structural vocabulary allowlist.

Gate 2: Felt-state / forecasting / user-confirmation blocklist.

Forbidden patterns should include:

const forbiddenPatterns = [
  /feels?\s+(reduced|unclear|harder|slowed|stuck|difficult)/i,
  /keeps?\s+getting/i,
  /may notice/i,
  /will\s+(become|slow|cause|result|produce)/i,
  /is\s+(blocking|forcing|causing)/i,
  /(breakup|argument|delay|conflict|relief|illness|success|ghosting|contact|decision|reconciliation)/i,
  /tell me what is actually happening/i,
  /is that where/i,
  /\?[^?]*,[^?]*,[^?]*\?/
];

Success Condition

A correct output looks like this on the user side:

Venus and Pluto move in easy reach. The field is moderate and opening. This lands first in The Horizon — the far view and the longer arc. Opening here tends to show through plans, perspective, and the larger path. But if this does not resonate as opening in the far view, it may be quiet deepening elsewhere.

On the ground, this might touch plans, perspective, timing, or the larger arc. Is one of those close, or is this landing elsewhere?

Backstage, the same read must also log sealed Zone 2 with timestamp, geometry cluster, chamber, pressure signatures, pending resonance state, null classification, and sealed hash.

Final Note

This task is not to rewrite Raven’s doctrine. It is to enforce the existing unified interpretive prompt at runtime. The two reads that failed today would have passed only if the template enforcement existed. That is the engineering gap.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions