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
This commit is contained in:
@@ -14,6 +14,12 @@ from .cognitive_kernel import (
|
||||
kernel_status,
|
||||
)
|
||||
|
||||
from .symbolic_pipeline import (
|
||||
SymbolicStep,
|
||||
SymbolicPipelineResult,
|
||||
run_symbolic_pipeline,
|
||||
)
|
||||
|
||||
from .events import (
|
||||
EventBus,
|
||||
Event,
|
||||
@@ -29,6 +35,9 @@ __all__ = [
|
||||
"run_gx",
|
||||
"run_symbolic_prompt",
|
||||
"kernel_status",
|
||||
"SymbolicStep",
|
||||
"SymbolicPipelineResult",
|
||||
"run_symbolic_pipeline",
|
||||
"EventBus",
|
||||
"Event",
|
||||
"EventType",
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -258,11 +258,9 @@ class CognitiveKernel:
|
||||
|
||||
|
||||
def run_symbolic_prompt(prompt: str, context: dict | None = None) -> str:
|
||||
"""Entry point for symbolic execution from XIC.
|
||||
"""Thin wrapper around the symbolic pipeline for backward compatibility.
|
||||
|
||||
Compresses the prompt text into GSZ3 bytes, builds a minimal manifest,
|
||||
and routes through the full LAIN 8-lane cognition pipeline via
|
||||
CognitiveKernel.execute_symbolic(). Returns the output_text string.
|
||||
Routes through run_symbolic_pipeline() and returns output_text.
|
||||
|
||||
Args:
|
||||
prompt: User or system prompt text
|
||||
@@ -271,36 +269,9 @@ def run_symbolic_prompt(prompt: str, context: dict | None = None) -> str:
|
||||
Returns:
|
||||
String result from the 8-lane cognition pipeline
|
||||
"""
|
||||
from gx_compiler.compressor import GXCompressor
|
||||
|
||||
kernel = get_kernel()
|
||||
prompt_bytes = prompt.encode("utf-8")
|
||||
|
||||
try:
|
||||
payload = GXCompressor.compress(prompt)
|
||||
except Exception as e:
|
||||
return f"[Symbolic Error] Compression failed: {e}"
|
||||
|
||||
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)}]
|
||||
|
||||
result = kernel.execute_symbolic(
|
||||
manifest=manifest,
|
||||
segments=segments,
|
||||
payload=payload,
|
||||
mode="symbolic",
|
||||
context=context or {},
|
||||
)
|
||||
|
||||
return result.get("output_text") or result.get("fused_symbol", {}).get("summary", prompt)
|
||||
from .symbolic_pipeline import run_symbolic_pipeline
|
||||
result = run_symbolic_pipeline(prompt=prompt, context=context)
|
||||
return result.output_text
|
||||
|
||||
|
||||
# Global singleton kernel instance
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
"""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
|
||||
)
|
||||
Reference in New Issue
Block a user