← Back to Articles & Artefacts
artefactssouth

Instructions for LangChain Narrative-Tracing Instance

IAIP Research
pnt-260130

Instructions for LangChain Narrative-Tracing Instance#

Current Context#

You've completed the core narrative-tracing library with 22 tests. The library is designed to instrument the three-project ecosystem (LangChain observability, LangGraph intelligence, Miadi event consumption) for tracing narrative intelligence.

Your mission: Create bridge adapters that wire narrative-tracing to the three systems it's designed to observe, proving ecosystem coherence through observable traces.


What You Need to Know (Without Accessing Patent Folder)#

The narrative intelligence system is built on:

  1. Autonomous Detection: File watcher detects new artifacts via pattern matching
  2. Three-Universe Analysis: Events analyzed through Engineer, Ceremony, Story perspectives
  3. Hierarchical Traces: Root traces contain semantic SPANs containing EVENT observations
  4. Narrative Beats: Creative work documented as story beats with lessons
  5. Cross-Session Coordination: Parallel instances discover each other's work automatically

Your implementation proves these work at the system level by showing traces capture the ecosystem's distributed coordination.


Phase 1: LangGraph Bridge Adapter (CRITICAL - START HERE)#

Objective#

Wire the LangGraph ThreeUniverseProcessor to narrative-tracing, so every three-universe analysis automatically logs to Langfuse.

Steps#

1. Explore LangGraph (1 day)

```bash cd /workspace/langgraph find . -name "*.py" -type f | grep -i "universe|processor|analysis" | head -10 ```

Look for:

  • ThreeUniverseProcessor or similar class
  • Input: narrative event or artifact
  • Output: lead universe + coherence score
  • Look for callback hooks or decorator points

2. Create Bridge (2 days)

Create file: /workspace/langchain/libs/narrative-tracing/adapters/langgraph_bridge.py

```python from narrative_tracing import NarrativeTracingHandler from typing import Any, Dict, Optional

class LangGraphBridge: """Wire LangGraph three-universe processing to narrative tracing."""

def __init__(self, handler: NarrativeTracingHandler):
    self.handler = handler

def create_three_universe_callback(self):
    """
    Return callback function for LangGraph to inject trace logging.
    
    Hook this into LangGraph's ThreeUniverseProcessor output.
    """
    def log_universe_analysis(
        event_id: str,
        event_content: str,
        engineer_result: Dict[str, Any],
        ceremony_result: Dict[str, Any],
        story_engine_result: Dict[str, Any],
        lead_universe: str,
        coherence_score: float
    ):
        """Called after three-universe analysis completes."""
        self.handler.log_three_universe_analysis(
            event_id=event_id,
            engineer_intent=engineer_result.get("intent"),
            engineer_confidence=engineer_result.get("confidence", 0.0),
            ceremony_intent=ceremony_result.get("intent"),
            ceremony_confidence=ceremony_result.get("confidence", 0.0),
            story_engine_intent=story_engine_result.get("intent"),
            story_engine_confidence=story_engine_result.get("confidence", 0.0),
            lead_universe=lead_universe,
            coherence_score=coherence_score
        )
    return log_universe_analysis

```

3. Write Tests (1 day)

Create: /workspace/langchain/libs/narrative-tracing/tests/test_langgraph_bridge.py

Tests needed:

  • test_bridge_instantiation - Can create bridge with handler
  • test_callback_receives_universe_data - Callback accepts all parameters
  • test_callback_logs_to_handler - Calls handler.log_three_universe_analysis
  • test_coherence_score_range - Validates 0-1 range
  • test_lead_universe_values - Validates engineer|ceremony|story_engine

Phase 2: Miadi Integration Adapter (CRITICAL - SECOND)#

Objective#

Enable narrative-tracing to inject trace correlation headers into HTTP calls to Miadi, so traces flow across system boundaries.

Steps#

1. Explore Miadi (1 day)

```bash cd /src/Miadi/miadi-code find . -name "*.py" -type f | grep -i "webhook|event|handler" | head -10 ```

Look for:

  • How Miadi receives webhook events
  • Where HTTP calls are made (to Flowise, LangFlow, etc.)
  • How events are structured
  • Authentication/header injection points

2. Create Integration (1 day)

Create: /workspace/langchain/libs/narrative-tracing/adapters/miadi_integration.py

```python from narrative_tracing import NarrativeTraceOrchestrator from typing import Dict, Any, Optional

class MiadiIntegration: """Wire Miadi webhook events to narrative tracing."""

def __init__(self, orchestrator: NarrativeTraceOrchestrator):
    self.orchestrator = orchestrator
    self.correlation_header = "X-Langfuse-Trace-Id"

def inject_trace_headers(
    self, 
    headers: Dict[str, str], 
    root_trace_id: str
) -> Dict[str, str]:
    """
    Add Langfuse correlation headers for outgoing HTTP calls.
    
    Call this before making HTTP requests to downstream systems.
    """
    headers[self.correlation_header] = root_trace_id
    return headers

def log_webhook_event(
    self,
    event_id: str,
    event_type: str,
    source: str,
    payload: Dict[str, Any],
    root_trace_id: str
):
    """
    Log Miadi webhook consumption as narrative event.
    
    Call this when Miadi receives webhook events.
    """
    # Create span in trace
    span = self.orchestrator.create_agent_flow_span(
        flow_id=f"miadi_{event_type}",
        flow_name=f"Miadi: {event_type}",
        root_trace=root_trace_id,
        input_data=payload
    )
    return span

```

3. Write Tests (1 day)

Create: /workspace/langchain/libs/narrative-tracing/tests/test_miadi_integration.py

Tests needed:

  • test_integration_instantiation
  • test_header_injection - Adds correlation header
  • test_webhook_event_logging - Creates span from event
  • test_trace_correlation_across_boundaries - Header value matches trace ID
  • test_multiple_events_same_trace - All events under one root trace

Phase 3: Storytelling System Integration (SECONDARY)#

Objective#

Hook into beat generation lifecycle, so narrative beats automatically appear in traces with lessons extracted.

Steps#

1. Explore Storytelling (1 day)

```bash cd /src/storytelling find . -name "*.py" -type f | grep -i "beat|generate|story" | head -10 ```

Look for:

  • Beat generation function
  • Where narrative function is assigned (inciting_incident, turning_point, etc.)
  • Where lessons might be extracted
  • Lifecycle hooks (pre/post beat creation)

2. Create Hooks (2 days)

Create: /workspace/langchain/libs/narrative-tracing/adapters/storytelling_hooks.py

```python from narrative_tracing import NarrativeTracingHandler from typing import Any, Dict, List

class StorytellingHooks: """Hook into storytelling beat lifecycle for tracing."""

def __init__(self, handler: NarrativeTracingHandler):
    self.handler = handler

def on_beat_created(
    self,
    beat_id: str,
    beat_content: str,
    narrative_function: str,
    act_number: int,
    sequence: int
):
    """Called when storytelling system creates a beat."""
    self.handler.log_beat_creation(
        beat_id=beat_id,
        content=beat_content,
        narrative_function=narrative_function,
        sequence=sequence,
        emotional_tone=self._extract_tone(beat_content)
    )

def on_beat_enriched(
    self,
    beat_id: str,
    enriched_content: str,
    improvements: List[str]
):
    """Called when beat is enriched/improved."""
    self.handler.log_beat_enrichment(
        beat_id=beat_id,
        enriched_content=enriched_content,
        improvements=improvements
    )

def on_lessons_extracted(
    self,
    beat_id: str,
    lessons: List[str]
):
    """Called when lessons are extracted from beat."""
    # Store lessons in metadata for later analysis
    return {"lessons": lessons, "beat_id": beat_id}

def _extract_tone(self, content: str) -> str:
    """Simple emotional tone extraction."""
    # Implement actual tone detection or use heuristics
    return "neutral"

```


What Success Looks Like#

After LangGraph Bridge (2-3 days)#

  • āœ… Bridge adapter created
  • āœ… Tests pass
  • āœ… Can hook LangGraph ThreeUniverseProcessor to trace logging
  • āœ… Three-universe analyses appear in Langfuse with lead universe + coherence

After Miadi Integration (3-4 days total)#

  • āœ… Miadi integration created
  • āœ… Tests pass
  • āœ… HTTP headers include correlation IDs
  • āœ… Webhook events appear in traces as spans
  • āœ… Traces flow across system boundaries

After Storytelling Integration (5-6 days total)#

  • āœ… Storytelling hooks created
  • āœ… Tests pass
  • āœ… Beat creation lifecycle logged
  • āœ… Lessons appear in trace metadata
  • āœ… Acts and narrative functions tracked

Final Proof (6-7 days)#

Create simple test that demonstrates end-to-end: ``` File Detection → LangChain Reads → LangGraph Analyzes (3-universe) → Narrative-Tracing Logs → Langfuse Shows Complete Trace ```


Code Quality Standards#

  • āœ… Type hints on all functions
  • āœ… Google-style docstrings
  • āœ… 100% test coverage for new code
  • āœ… No breaking changes to NarrativeTracingHandler API
  • āœ… All tests in tests/ directory with test_ prefix

Resources Available#

  • /workspace/langgraph - ThreeUniverseProcessor implementation
  • /src/Miadi/miadi-code - Webhook event handling
  • /src/storytelling - Beat generation system
  • /workspace/langchain/libs/narrative-tracing/README.md - Your library API

How to Submit When Done#

Update README.md in /workspace/langchain/libs/narrative-tracing/ with:

  1. Integration examples for each adapter
  2. Instructions for wiring to LangGraph, Miadi, and Storytelling
  3. Expected trace structure after integration

Create example file: /workspace/langchain/examples/three_system_integration_example.py showing how all three adapters work together.


Success Criteria: Traces demonstrating that LangChain, LangGraph, and Miadi automatically coordinate without shared state, discovering pre-existing architectural coherence through observation.