This commit completes the comprehensive glyph resonance awareness upgrade
with queryable resonance metrics, new instruction, and formal specification.
## Changes
### Phase 3: New GET_GLYPH_RESONANCE Instruction
- Added op_GET_GLYPH_RESONANCE to xic_ops.py for querying glyph resonance data
- Supports metrics: report, global, dominant, weight, lineage, contributor, frequency, grammar
- Results printed with [XIC-RESONANCE] prefix and stored in ctx._state
- Handles both full pipeline result (preferred) and fallback to resonance_metrics dict
- Updated OP_TABLE to include 10th operation
### Phase 4: Formal Specification & Demo
#### XIC_SEMANTICS_v1_5.md Updates
- Added comprehensive "Glyph Resonance Structure" section documenting:
- FusedSymbol dataclass with summary, glyph_ids, resonance_map
- GlyphResonanceMap with resonances dict and utility methods
- GlyphResonanceMetrics (weight, lineage_score, contributor_score, frequency_score, grammar_score)
- Example JSON structure from LAIN cognition
- Added "GET_GLYPH_RESONANCE" instruction semantics with:
- Signature and preconditions/postconditions
- Metric table describing all query types
- Detailed side effects and remarks
- Data access patterns
#### New Demo Program
- Created programs/demo_glyph_resonance.gx.json
- Two-chain demonstration:
- Chain 1: compression_theory glyph with report, global, dominant, weight queries
- Chain 2: neural_dynamics glyph with individual metric queries (lineage, contributor, frequency, grammar)
- Full instrumentation with CHAIN markers and LOG statements
#### Comprehensive Report
- Created XIC_GLYPH_RESONANCE_REPORT.md documenting:
- Executive summary of resonance awareness upgrade
- Detailed explanation of all components
- Architecture and data flow diagrams
- All 10 validation test results
- Usage examples and design decisions
- Backward compatibility guarantees
- Future extensibility notes
## Implementation Details
### Enhanced Data Structures (glyphos/symbolic_pipeline.py)
- GlyphResonanceMetrics: 5-dimensional resonance scoring
- GlyphResonanceMap: with get_glyph_resonance(), get_top_glyphs(), get_average_resonance()
- FusedSymbol.from_lain_result(): parses LAIN output structure
### Glyph Resonance Utilities
- extract_glyph_resonances(): extract per-glyph metrics from pipeline result
- get_dominant_glyphs(n): rank glyphs by weight
- format_glyph_resonance_report(): human-readable resonance output
### Enhanced CALL_GLYPH
- Now stores comprehensive resonance data in ctx._state["glyph_{glyph_id}"]
- Captures output_text, fused_symbol, resonance_metrics, global_resonance_score, steps
- Also stores full SymbolicPipelineResult for direct access
### New op_GET_GLYPH_RESONANCE
- Query stored resonance metrics with flexible metric selection
- Integrates with symbolic_pipeline utilities for full introspection
- Prints results and stores in ctx._state for programmatic access
## Exports (glyphos/__init__.py)
- GlyphResonanceMetrics
- GlyphResonanceMap
- extract_glyph_resonances
- get_dominant_glyphs
- format_glyph_resonance_report
## Testing
All 10 validation tests pass:
✅ GlyphResonanceMetrics instantiation
✅ GlyphResonanceMap methods (get_glyph_resonance, get_top_glyphs, get_average_resonance)
✅ FusedSymbol.from_lain_result() parsing
✅ extract_glyph_resonances() functionality
✅ get_dominant_glyphs() ranking
✅ format_glyph_resonance_report() generation
✅ OP_TABLE has GET_GLYPH_RESONANCE
✅ op_GET_GLYPH_RESONANCE callable
✅ demo_glyph_resonance.gx.json valid
✅ All exports available from glyphos
## Backward Compatibility
- Zero breaking changes
- All XIC v1 and v1.5 programs work unchanged
- New resonance features are additive
- Existing instruction signatures preserved
- Compressed mode execution unaffected
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
16 KiB
XIC Instruction Semantics v1.5
Version: 1.5
Date: 2026-05-21
Status: Formal Specification
Overview
XIC v1.5 is a symbolic and compressed execution virtual machine. It provides:
- Dual execution modes: Compressed (via execute_gx) and symbolic (via symbolic pipeline)
- Explicit instruction set semantics: Formal definitions of preconditions, postconditions, and side effects
- Glyph-aware symbolic processing: Integration with LAIN 8-lane cognition and glyph metadata
- Context propagation: Symbolic context flows through chains of operations
Architecture
XICContext (model_path, mode, params, context, symbolic_mode, _state)
↓
XIC Instructions (9 ops in OP_TABLE)
↓
Dual paths:
- Compressed: execute_gx() → decompresses .gx → execs Python
- Symbolic: run_symbolic_pipeline() → LAIN 8 lanes → fused_symbol
XICContext Model
Fields
| Field | Type | Meaning |
|---|---|---|
model_path |
Optional[str] | Path to .gx model file. Set by LOAD_MODEL. |
mode |
str | Execution mode: "chat", "eval", "benchmark", "symbolic". Default: "chat". |
params |
Dict[str, Any] | Execution parameters (temperature, trace, profile, use_gpu, etc.). |
context |
Dict[str, Any] | (In params["context"]) Symbolic/cognitive context metadata (domain, style, glyph_id, etc.). |
symbolic_mode |
bool | True if mode == "symbolic". Controls routing in RUN_PROMPT/STREAM/CALL_GLYPH. |
_state |
Dict[str, Any] | Internal state: last_result, last_symbolic_result, last_symbolic_pipeline, glyph_* keys. |
Context Propagation
SET_CONTEXT <key> <value>adds/updates keys inctx.params["context"].- Context is passed to
run_symbolic_pipeline(context=...)in symbolic operations. - Glyph operations add
glyph_idto context automatically.
Instruction Semantics
1. LOAD_MODEL
Signature
{ "op": "LOAD_MODEL", "args": ["<path_to_gx_file>"] }
Preconditions
- Argument must be a valid string (path).
Postconditions
ctx.model_path = path
Side effects
- Prints
[XIC] Model loaded: <path>
Symbolic behavior
- No effect on
ctx.symbolic_mode.
Compressed behavior
ctx.model_pathis used by RUN_PROMPT/STREAM to load the .gx file.
2. SET_MODE
Signature
{ "op": "SET_MODE", "args": ["<mode>"] }
Preconditions
mode∈ {"chat", "eval", "benchmark", "symbolic", ...}
Postconditions
ctx.mode = mode- If
mode == "symbolic":ctx.symbolic_mode = True - If
mode != "symbolic":ctx.symbolic_mode = False
Side effects
- Prints
[XIC] Mode set to: <mode>
Remarks
- Setting mode to "symbolic" enables routing through symbolic pipeline (run_symbolic_pipeline).
- All other modes use compressed execution (execute_gx).
3. SET_PARAM
Signature
{ "op": "SET_PARAM", "args": ["<key>", <value>] }
Preconditions
- Arguments: key (str), value (any).
Postconditions
ctx.params[key] = value
Side effects
- Prints
[XIC] Parameter <key> = <value>
Remarks
use_gpu,trace,profileare reserved parameter names.- Parameters are passed to execute_gx (if used).
4. SET_CONTEXT
Signature
{ "op": "SET_CONTEXT", "args": ["<key>", <value>] }
Preconditions
- Arguments: key (str), value (any).
Postconditions
ctx.params["context"][key] = value- If
ctx.params["context"]doesn't exist, it is created.
Side effects
- Prints
[XIC] Context <key> = <value>
Usage
- Build symbolic context metadata:
SET_CONTEXT "domain" "ai",SET_CONTEXT "style" "analytic". - Context is passed to symbolic operations (RUN_PROMPT, STREAM, CALL_GLYPH).
5. RUN_PROMPT
Signature
{ "op": "RUN_PROMPT", "args": ["<prompt>"] }
Preconditions
- Argument: prompt (str).
Postconditions
- If
ctx.symbolic_mode == True:ctx._state["last_symbolic_result"] = output_textctx._state["last_symbolic_pipeline"] = SymbolicPipelineResult
- If
ctx.symbolic_mode == False:- Requires
ctx.model_pathto be set (LOAD_MODEL must be called first). ctx._state["last_result"] = ExecutionContext
- Requires
Symbolic behavior (ctx.symbolic_mode=True)
- Calls
run_symbolic_pipeline(prompt, context=ctx.params.get("context")). - Routes through LAIN 8-lane cognition kernel.
- Prints
[XIC-SYMBOLIC] <output_text> - Stores full SymbolicPipelineResult for inspection (steps, fused_symbol).
Compressed behavior (ctx.symbolic_mode=False)
- Calls
execute_gx(ctx.model_path, trace=ctx.params.get("trace"), profile=ctx.params.get("profile")). - Decompresses .gx binary and executes Python code.
- Prints
[XIC] Execution completeand result.
Remarks
- The prompt argument is informational in compressed mode (not used).
- In symbolic mode, the prompt is the primary input to LAIN cognition.
6. STREAM
Signature
{ "op": "STREAM", "args": ["<prompt>"] }
Preconditions
- Argument: prompt (str).
Postconditions
- Same as RUN_PROMPT, but output is streamed line-by-line.
Symbolic behavior
- Calls
run_symbolic_pipeline(prompt, context=...). - Streams output_text line-by-line with
[XIC-STREAM]prefix. - Stores pipeline result in
ctx._state["last_symbolic_pipeline"].
Compressed behavior
- Calls
execute_gx(...). - Streams result line-by-line with
[XIC-STREAM]prefix.
Side effects
- Multiple print statements (one per line).
7. CHAIN
Signature
{ "op": "CHAIN", "args": ["<label>"] }
Preconditions
- Argument: label (str).
Postconditions
ctx.params["chain_label"] = label
Side effects
- Prints
[XIC-CHAIN] Entering chain: <label>
Remarks
- CHAIN is a control marker for human readability and logging.
- It does not affect execution but allows grouping operations into named chains.
- Chain label is preserved in
ctx.paramsfor inspection.
8. CALL_GLYPH
Signature
{ "op": "CALL_GLYPH", "args": ["<glyph_id>", "<payload>"] }
Preconditions
- Arguments: glyph_id (str), payload (str, optional).
Postconditions
- Stores result in
ctx._state[f"glyph_{glyph_id}"]with:output_text: Final text from cognitionfused_symbol: Fused symbolic representation (if produced)steps: List of pipeline steps taken
Symbolic behavior
- Calls
run_symbolic_pipeline(prompt=payload, context=glyph_context, glyph_id=glyph_id). glyph_context = ctx.params.get("context", {}) | {"glyph_id": glyph_id}- Routes through symbolic pipeline with explicit glyph_id parameter.
- The glyph_id is injected into LAIN context for glyph-aware transformations.
- Prints
[XIC-GLYPH] <output_text>
Compressed behavior
- Not applicable. CALL_GLYPH is only used in symbolic mode.
- If called in compressed mode, raises error (or gracefully falls back to symbolic).
Remarks
- CALL_GLYPH enables glyph-aware cognition: the symbolic pipeline explicitly marks the operation as glyph-driven.
- The LAIN kernel can use glyph_id to apply glyph-specific transformations or select glyph metadata.
9. LOG
Signature
{ "op": "LOG", "args": ["<message>"] }
Preconditions
- Argument: message (str, optional).
Postconditions
- None (pure side effect).
Side effects
- Prints
[XIC-LOG] <message>
Remarks
- LOG is a no-op from an execution standpoint; purely for instrumentation and debugging.
10. GET_GLYPH_RESONANCE
Signature
{ "op": "GET_GLYPH_RESONANCE", "args": ["<glyph_id>", "<metric>"] }
Preconditions
glyph_idmust have been previously used in a CALL_GLYPH operation.metricis optional. Valid values: "report", "global", "dominant", "weight", "lineage", "contributor", "frequency", "grammar".
Postconditions
- Prints formatted resonance data based on requested metric.
- Stores result in
ctx._state[f"resonance_query_{glyph_id}_{metric}"].
Behavior by metric:
| Metric | Output | Description |
|---|---|---|
<none> or "report" |
Human-readable resonance report | Formatted report with global score and top 5 glyphs by weight |
"global" |
Global resonance score (float) | Single float value representing overall resonance |
"dominant" |
List of top 5 glyphs by weight | List of (glyph_id, weight) tuples sorted descending |
"weight" |
Weight metric (float) | Weight component of resonance (relative importance) |
"lineage" |
Lineage score (float) | Score representing symbolic lineage and ancestry |
"contributor" |
Contributor score (float) | Score representing contribution to fusion |
"frequency" |
Frequency score (float) | Score representing occurrence frequency in cognition |
"grammar" |
Grammar score (float) | Score representing grammatical/structural alignment |
Side effects
- Prints
[XIC-RESONANCE] ...with requested data. - Stores result in
ctx._statefor programmatic access.
Remarks
- GET_GLYPH_RESONANCE requires prior CALL_GLYPH execution to populate glyph resonance data.
- If glyph_id not found, prints error and stores None.
- Queries access the full SymbolicPipelineResult stored by CALL_GLYPH.
Glyph Resonance Structure
FusedSymbol Data Structure
The fused_symbol in SymbolicPipelineResult contains:
@dataclass
class FusedSymbol:
summary: str # Text summary of fused cognition
glyph_ids: List[str] # List of glyph IDs engaged in fusion
resonance_map: GlyphResonanceMap # Resonance metrics for each glyph
GlyphResonanceMap
Maps glyph IDs to their resonance metrics:
@dataclass
class GlyphResonanceMap:
resonances: Dict[str, GlyphResonanceMetrics] # glyph_id → metrics
global_resonance_score: float # Overall fusion quality score [0.0, 1.0]
Methods:
get_glyph_resonance(glyph_id: str) → Optional[GlyphResonanceMetrics]: Retrieve metrics for a specific glyph.get_top_glyphs(n: int = 5) → List[tuple[str, GlyphResonanceMetrics]]: Get top N glyphs by weight.get_average_resonance() → float: Get average resonance across all glyphs.
GlyphResonanceMetrics
Per-glyph resonance metrics capturing multiple dimensions of symbolic activity:
@dataclass
class GlyphResonanceMetrics:
weight: float # Relative importance of glyph in fusion [0.0, 1.0]
lineage_score: float # Symbolic lineage and ancestry score [0.0, 1.0]
contributor_score: float # Contribution to overall fusion [0.0, 1.0]
frequency_score: float # Occurrence frequency in cognition [0.0, 1.0]
grammar_score: float # Grammatical/structural alignment [0.0, 1.0]
Example Structure
{
"fused_symbol": {
"summary": "Compression and information theory are foundational to cognition...",
"glyph_ids": ["glyph://compression_theory", "glyph://entropy", "glyph://coding"],
"resonance_map": {
"global_resonance_score": 0.847,
"resonances": {
"glyph://compression_theory": {
"weight": 0.95,
"lineage_score": 0.82,
"contributor_score": 0.89,
"frequency_score": 0.76,
"grammar_score": 0.88
},
"glyph://entropy": {
"weight": 0.73,
"lineage_score": 0.68,
"contributor_score": 0.71,
"frequency_score": 0.65,
"grammar_score": 0.75
}
}
}
}
}
Accessing Resonance Data
From XIC programs:
- CALL_GLYPH stores result in
ctx._state[f"glyph_{glyph_id}"]including resonance_metrics and global_resonance_score. - GET_GLYPH_RESONANCE queries the stored data with various metric filters.
- Access pipeline result object via
ctx._state[f"glyph_{glyph_id}_pipeline_result"]for direct FusedSymbol manipulation.
Symbolic Pipeline Semantics
run_symbolic_pipeline() Entrypoint
def run_symbolic_pipeline(
prompt: str,
context: Dict[str, Any] | None = None,
glyph_id: str | None = None,
) -> SymbolicPipelineResult
Behavior:
- Creates SymbolicStep for initial_prompt.
- If glyph_id is provided:
- Adds glyph_id to context.
- Creates SymbolicStep for glyph_call.
- Compresses prompt via GXCompressor.compress().
- Builds minimal manifest/segments.
- Calls CognitiveKernel.execute_symbolic(manifest, segments, payload, mode="symbolic", context=context).
- Extracts output_text and fused_symbol from result.
- If fused_symbol is present:
- Creates SymbolicStep for fusion.
- Returns SymbolicPipelineResult(steps, output_text, fused_symbol).
SymbolicPipelineResult
@dataclass
class SymbolicPipelineResult:
steps: List[SymbolicStep] # Execution steps taken
output_text: str # Final text output
fused_symbol: Optional[Dict] # Fused symbolic representation
SymbolicStep
@dataclass
class SymbolicStep:
name: str # Step name (e.g., "initial_prompt", "glyph:xyz", "fusion")
kind: str # Step kind ("prompt", "glyph_call", "fused_symbol")
payload: Any # Step data (prompt text, fused_symbol dict, etc.)
context: Dict[str, Any] # Context at this step
Execution Paths
Compressed Path (ctx.symbolic_mode=False)
RUN_PROMPT or STREAM
↓
Check ctx.model_path
↓
execute_gx(path, trace=..., profile=...)
↓
Load .gx binary → decompress via GSZ3 → compile → exec Python
↓
Store result in ctx._state["last_result"]
Symbolic Path (ctx.symbolic_mode=True)
RUN_PROMPT or STREAM or CALL_GLYPH
↓
run_symbolic_pipeline(prompt, context, glyph_id)
↓
Compress prompt → build manifest/segments
↓
CognitiveKernel.execute_symbolic()
↓
LAIN 8-lane cognition (structural, semantic, compression, metadata, hints, predictive, imprint, epoch)
↓
Fuse lanes → produce output_text and fused_symbol
↓
Store SymbolicPipelineResult in ctx._state["last_symbolic_pipeline"]
Context Flow
Example: Glyph-Aware Cognition
SET_CONTEXT "domain" "ai"
SET_CONTEXT "style" "analytical"
CALL_GLYPH "glyph://knowledge_integration" "How do compression and knowledge integrate?"
Flow:
- SET_CONTEXT adds
context = {"domain": "ai", "style": "analytical"}toctx.params["context"]. - CALL_GLYPH reads
contextand addsglyph_id = "glyph://knowledge_integration". run_symbolic_pipeline(prompt, context={"domain": "ai", "style": "analytical", "glyph_id": "..."}, glyph_id="...")is called.- Symbolic pipeline creates SymbolicStep(glyph_call, ...) with the full context.
- LAIN kernel executes with context, allowing glyph-aware transformations.
- Result (output_text, fused_symbol) is stored in
ctx._state["glyph_glyph://knowledge_integration"].
Backward Compatibility
- All v1 XIC programs continue to work unchanged.
- RUN_PROMPT behavior in compressed mode (symbolic_mode=False) is identical to v1.
- New symbolic pipeline is additive and does not affect compressed execution.
- run_symbolic_prompt() in glyphos/cognitive_kernel.py is a thin wrapper around the pipeline.
Summary of Changes from v1
| Change | v1 | v1.5 |
|---|---|---|
| Symbolic pipeline abstraction | Inline in run_symbolic_prompt | Separate glyphos/symbolic_pipeline.py |
| Glyph-aware transformations | Manual context manipulation | Explicit glyph_id parameter in run_symbolic_pipeline |
| Pipeline introspection | Limited (just output_text) | Full SymbolicPipelineResult (steps, fused_symbol) |
| Formal semantics | Implicit (docstrings) | Explicit (XIC_SEMANTICS_v1_5.md) |
End of Specification