Files
2125_GCE/glyphos/symbolic_pipeline.py
T
GlyphRunner System 6e0a586f51 Implement XIC v1.5: Symbolic Pipeline Abstraction with Glyph-Aware Transformations
Implements all phases of the symbolic pipeline extension:

**Phase 1: Symbolic Pipeline Abstraction**
- Created glyphos/symbolic_pipeline.py with:
  - SymbolicStep: tracks individual pipeline steps (name, kind, payload, context)
  - SymbolicPipelineResult: complete pipeline execution result (steps, output_text, fused_symbol)
  - run_symbolic_pipeline(prompt, context, glyph_id): high-level pipeline entrypoint
- Integrated with glyphos/__init__.py exports

**Phase 2: Glyph-Aware Transformations**
- Updated glyphos/cognitive_kernel.py:
  - run_symbolic_prompt() now thin wrapper around pipeline
  - Maintains backward compatibility
- Updated xic_ops.py operations:
  - op_RUN_PROMPT: uses pipeline in symbolic mode
  - op_STREAM: uses pipeline with line-by-line output
  - op_CALL_GLYPH: routes through pipeline with explicit glyph_id parameter
- Context propagation: glyph_id automatically injected into LAIN context

**Phase 3: XIC Instruction Semantics v1.5**
- Created XIC_SEMANTICS_v1_5.md:
  - Formal specification of all 9 XIC instructions
  - Complete semantics: preconditions, postconditions, side effects
  - Symbolic vs compressed behavior for each op
  - Context model and pipeline semantics
  - Execution paths (compressed vs symbolic)
  - Backward compatibility guarantees

**Phase 4: Demo Program & Validation**
- Created programs/demo_symbolic_pipeline.gx.json
  - Demonstrates symbolic pipeline with glyph-aware cognition
  - Uses CALL_GLYPH, RUN_PROMPT, SET_CONTEXT, CHAIN, LOG
- All 7 validation tests pass:
   Pipeline module imports
   Pipeline execution
   Glyph-aware transformations
   Demo program
   CALL_GLYPH result storage
   Backward compatibility
   run_symbolic_prompt() wrapper

**Phase 5: Final Report**
- Created XIC_SYMBOLIC_PIPELINE_REPORT.md
  - Architecture and module hierarchy
  - Integration points and data flow
  - Design decisions and rationale
  - Usage examples

Key Features:
- Step-level introspection: full SymbolicPipelineResult with step history
- Glyph-aware: explicit glyph_id routing through LAIN kernel
- Formal semantics: complete specification for tool builders
- Backward compatible: all v1 programs work unchanged
- No breaking changes: compressed execution path untouched

Constraints Met:
 No GPU code
 No XIC v2 binary container
 No .gx format changes
 Full backward compatibility
2026-05-21 01:27:49 -04:00

128 lines
3.8 KiB
Python

"""Symbolic Pipeline Abstraction for XIC.
Provides a structured, glyph-aware pipeline for symbolic cognition execution.
Routes prompts through the LAIN 8-lane cognition kernel with explicit step tracking.
"""
from dataclasses import dataclass, field
from typing import Any, Dict, List, Optional
@dataclass
class SymbolicStep:
"""A single step in the symbolic pipeline execution."""
name: str
kind: str # "prompt", "glyph_call", "fused_symbol"
payload: Any
context: Dict[str, Any] = field(default_factory=dict)
@dataclass
class SymbolicPipelineResult:
"""Result of a symbolic pipeline execution."""
steps: List[SymbolicStep]
output_text: str
fused_symbol: Optional[Dict[str, Any]] = None
def run_symbolic_pipeline(
prompt: str,
context: Optional[Dict[str, Any]] = None,
glyph_id: Optional[str] = None,
) -> SymbolicPipelineResult:
"""
High-level symbolic pipeline entrypoint for XIC.
Accepts a prompt and optional symbolic/glyph context, routes through
the LAIN 8-lane cognition kernel via CognitiveKernel.execute_symbolic(),
and returns a structured SymbolicPipelineResult with execution steps,
final output text, and fused symbolic representation.
Args:
prompt: User or system prompt text.
context: Optional dict of symbolic/cognitive context metadata.
glyph_id: Optional glyph identifier for glyph-aware cognition.
Returns:
SymbolicPipelineResult with:
- steps: List of SymbolicStep objects tracking execution flow.
- output_text: Final text result from cognition layer.
- fused_symbol: Fused symbolic representation (if produced by LAIN).
"""
from gx_compiler.compressor import GXCompressor
from .cognitive_kernel import get_kernel
steps: List[SymbolicStep] = []
kernel = get_kernel()
prompt_bytes = prompt.encode("utf-8")
# Step 1: Initial prompt
steps.append(SymbolicStep(
name="initial_prompt",
kind="prompt",
payload=prompt,
context=dict(context or {})
))
# Step 2: Prepare context for glyph-aware processing
exec_context = dict(context or {})
if glyph_id:
exec_context["glyph_id"] = glyph_id
steps.append(SymbolicStep(
name=f"glyph:{glyph_id}",
kind="glyph_call",
payload=prompt,
context=exec_context
))
# Step 3: Compress prompt and build manifest
try:
payload = GXCompressor.compress(prompt)
except Exception as e:
return SymbolicPipelineResult(
steps=steps,
output_text=f"[Pipeline Error] Compression failed: {e}",
fused_symbol=None
)
manifest = {
"source_file": "<symbolic>",
"source_type": "symbolic",
"version": "1.0.0",
"contributor": "XIC-symbolic",
"segments": [{"id": "seg_0", "start": 0, "end": 1,
"start_byte": 0, "end_byte": len(prompt_bytes)}],
}
segments = [{"id": "seg_0", "start": 0, "end": 1,
"start_byte": 0, "end_byte": len(prompt_bytes)}]
# Step 4: Execute through LAIN cognition pipeline
result = kernel.execute_symbolic(
manifest=manifest,
segments=segments,
payload=payload,
mode="symbolic",
context=exec_context,
)
# Step 5: Extract results
fused_symbol = result.get("fused_symbol")
output_text = result.get("output_text") or (
fused_symbol.get("summary") if fused_symbol else prompt
)
# Step 6: Record fusion step if fused_symbol present
if fused_symbol:
steps.append(SymbolicStep(
name="fusion",
kind="fused_symbol",
payload=fused_symbol,
context={}
))
return SymbolicPipelineResult(
steps=steps,
output_text=output_text,
fused_symbol=fused_symbol
)