Asi ducklake-temporal-introspection
Time-travel queries and temporal versioning for DuckLake
install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/ducklake-temporal-introspection" ~/.claude/skills/plurigrid-asi-ducklake-temporal-introspection && rm -rf "$T"
manifest:
skills/ducklake-temporal-introspection/SKILL.mdsource content
Ducklake Temporal Introspection
Version: 1.0.0 Status: Production Ready Created: 2025-12-21 Canonical Seed: 0x6475636b6c616b65
Overview
Loads temporal analysis from Subagent 1 (Data Collector) and provides introspection functions for analyzing ducklake mentions across Claude conversation history.
Purpose
Enable temporal navigation and clustering analysis of ducklake mentions with:
- 18 total mentions across 12 sessions
- 7-day span (2025-12-15 to 2025-12-22)
- Peak activity detection
- Session duration analysis
- Project distribution tracking
Data Sources
- Primary:
/Users/bob/ies/ducklake_temporal_analysis.json - Secondary:
~/.claude/history.jsonl - Schema: VERS_DUCKLAKE_SCHEMA.sql
Functions
query_by_timestamp(range: str) -> dict
Query mentions within a timestamp range.
# Example result = query_by_timestamp("2025-12-21 19:00:00", "2025-12-21 23:00:00") # Returns: {"mentions": 5, "sessions": 3, "lines": [1035, 1036, 1067, 1073, 1093]}
Implementation:
import json from datetime import datetime def query_by_timestamp(start: str, end: str) -> dict: with open("/Users/bob/ies/ducklake_temporal_analysis.json") as f: data = json.load(f) start_dt = datetime.fromisoformat(start) end_dt = datetime.fromisoformat(end) mentions = [] for sample in data["detailed_samples"]: ts = datetime.fromisoformat(sample["timestamp"]) if start_dt <= ts <= end_dt: mentions.append(sample) return { "mentions": len(mentions), "sessions": len(set(m["sessionId"] for m in mentions)), "lines": [m["line_number"] for m in mentions], "contexts": [m["display_text"][:100] for m in mentions] }
session_timeline(session_id: str) -> dict
Get timeline for a specific session.
result = session_timeline("2847f140-bff5-4f82-8fc7-6f6abd269d8f") # Returns: { # "duration_minutes": 84.25, # "mention_count": 2, # "first_mention": "2025-12-21 19:45:19", # "last_mention": "2025-12-21 21:09:34" # }
project_distribution() -> dict
Get mention distribution by project.
result = project_distribution() # Returns: { # "/Users/bob/ies": {"count": 9, "percentage": 50.0}, # "/Users/bob/ies/music-topos": {"count": 8, "percentage": 44.4}, # "/Users/bob/ies/citadel_protocol": {"count": 1, "percentage": 5.6} # }
peak_activity_analysis() -> dict
Identify temporal clustering patterns.
result = peak_activity_analysis() # Returns: { # "peak_hour": "2025-12-22 00:00", # "peak_hour_count": 4, # "peak_day": "2025-12-22", # "peak_day_count": 6, # "total_active_hours": 12, # "total_active_days": 5 # }
Usage Example
from skills.ducklake_temporal_introspection import * # Find all mentions in peak hour peak = peak_activity_analysis() mentions = query_by_timestamp(f"{peak['peak_hour']}:00:00", f"{peak['peak_hour']}:59:59") print(f"Peak activity: {mentions['mentions']} mentions") for context in mentions['contexts']: print(f" - {context}") # Analyze session durations for session in get_all_sessions(): timeline = session_timeline(session['sessionId']) if timeline['duration_minutes'] > 60: print(f"Long session: {timeline['duration_minutes']:.1f} min")
Skills Dependencies
- mcp-builder (MCP tool integration)
- skill-creator (skill scaffolding)
Integration Points
- DuckDB: Query ducklake.db for enhanced temporal analysis
- VERS System: Cross-reference with verse_agent_health
- Color Retromap: Map timestamps to battery cycle colors
Key Statistics
- Total mentions: 18
- Unique sessions: 12
- Unique projects: 3
- Date range: 7 days
- Average mentions per active day: 3.6
- Average mentions per active hour: 1.5
Next Steps
- Integrate with DuckDB temporal versioning
- Add reafferent detection filtering (GAY_SEED=1069)
- Cross-reference with VERS agent events
- Build time-travel query interface
Canonical Seeds
const GAY_SEED = UInt64(1069) const DUCKLAKE_SEED = 0x6475636b6c616b65
GF(3) Distribution
This skill operates in the RED (GF3=0) temporal navigation category:
- 27.8% of mentions
- Focus: Temporal versioning, time-travel, history navigation
Skill Type: Temporal Analysis Color: RED Polarity: GF(3) = 0 Access Pattern: Read-only introspection