6e0a586f51
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
128 lines
3.8 KiB
Python
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
|
|
)
|