Teleo evaluation pipeline infrastructure — Python async daemon for claim extraction, validation, evaluation, and merge
Find a file
m3taversal 1d6b51527a feat(backfill): 4-strategy PR recovery for originator events
Rewrite claim-level pass in backfill-events.py to recover the Forgejo PR
that introduced each claim via a cascade of 4 strategies (reliability
order), replacing the single title→description match that missed PRs
with NULL description (Cameron #3377) and bare-subject extracts (Shaga's
Leo research PR).

## Strategies
  1. sourced_from frontmatter → prs.source_path stem match
  2. git log first-add commit → subject pattern → prs.branch
     - "<agent>: extract claims from <slug>"  → extract/<slug>
     - "<agent>: research session YYYY-MM-DD" → <agent>/research-<date>
     - "<agent>: (challenge|contrib|entity|synthesize)" → <agent>/*
     - "Recover X from GitHub PR #N"           → prs.github_pr=N
     - "Extract N claims from X" (no prefix)   → time-proximity on
       agent-owned branches within 24h
  3. Current title_desc fallback for anything the above miss

## Dry-run projection (1,662 merged PRs)

Before:
  Claims processed: 33
  Originator events: 6
  Breakdown: {no_pr_match: 1608, no_sourcer: 26, invalid_handle: 21, skip_self: 6}

After:
  Claims processed: 505 (+472)
  Originator events: 126 (+120)
  Strategy hits: git_subject=412, sourced_from=88, git_time_proximity=5
  Breakdown: {no_pr_match: 1095, no_sourcer: 67, invalid_handle: 359, skip_self: 20}

## Verified on real VPS data
- @thesensatore claims: 3/5 resolve via git_time_proximity to leo/ PRs
- Cameron-S1, alexastrum: remain None — their recovery commits
  (dba00a79, da64f805) bypassed the pipeline entirely, no Forgejo PR
  record exists. Requires synthetic prs rows — deferred to separate
  commit with its own Ganymede review (write operation, larger blast
  radius than this pure-read backfill change).

## Implementation
- New find_pr_for_claim(conn, repo, md) helper returns (pr_number, strategy)
- Claim-level pass uses it first, falls back to title_desc map
- Strategy counter surfaced in summary output for operator visibility

Idempotent — backfill re-runs skip duplicate events via the partial
UNIQUE index on contribution_events.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 16:06:52 +01:00
.forgejo/workflows ganymede: add dev infrastructure — pyproject.toml, CI, deploy script 2026-03-13 14:24:27 +00:00
agent-state Consolidate pipeline code from teleo-codex + VPS into single repo 2026-04-07 16:52:26 +01:00
deploy fix: auto-deploy.sh rsync excludes broken + add tests/ sync 2026-04-20 17:22:11 +01:00
diagnostics feat(activity): Timeline data gaps — type filter + commit_type classifier + source_channel reshape 2026-04-23 19:51:58 +01:00
docs feat: reorganize repo with clear directory boundaries and agent ownership 2026-04-14 18:20:13 +01:00
hermes-agent fix: set execute bit on research-session.sh and install-hermes.sh 2026-04-18 11:54:39 +01:00
lib fix(attribution): Phase A followup — bug #1 + 4 nits + refactor (Ganymede review) 2026-04-24 14:13:54 +01:00
ops fix: wire commit_type into contributor role assignment 2026-04-21 10:27:36 +01:00
research fix: set execute bit on research-session.sh and install-hermes.sh 2026-04-18 11:54:39 +01:00
scripts feat(backfill): 4-strategy PR recovery for originator events 2026-04-24 16:06:52 +01:00
systemd feat: add auto-deploy script and systemd units for teleo-infrastructure 2026-04-15 14:27:23 +01:00
telegram add rio and theseus telegram bot agent configs 2026-04-20 17:20:21 +01:00
tests fix(attribution): --diff-filter=A + handle sanity filter + remove legacy fallback 2026-04-24 12:58:55 +01:00
.gitignore feat: add auto-deploy script and systemd units for teleo-infrastructure 2026-04-15 14:27:23 +01:00
CODEOWNERS feat: reorganize repo with clear directory boundaries and agent ownership 2026-04-14 18:20:13 +01:00
fetch_coins.py Skip liquidated entities in portfolio fetcher 2026-04-20 18:55:04 +01:00
pyproject.toml ganymede: add dev infrastructure — pyproject.toml, CI, deploy script 2026-03-13 14:24:27 +00:00
README.md feat: reorganize repo with clear directory boundaries and agent ownership 2026-04-14 18:20:13 +01:00
reweave.py fix: quote YAML edge values containing colons, skip unparseable files in reweave merge 2026-04-18 12:07:28 +01:00
teleo-pipeline.py fix: wrap breaker calls in stage_loop to prevent permanent task death 2026-04-20 12:37:28 +01:00

teleo-infrastructure

Pipeline infrastructure for the Teleo collective knowledge base. Async Python daemon that extracts, validates, evaluates, and merges claims via Forgejo PRs.

Directory Structure

teleo-infrastructure/
├── teleo-pipeline.py        # Daemon entry point
├── reweave.py               # Reciprocal edge maintenance
├── lib/                     # Pipeline modules (Python package)
├── diagnostics/             # Monitoring dashboard (port 8081)
├── telegram/                # Telegram bot interface
├── deploy/                  # Deployment + mirror scripts
├── systemd/                 # Service definitions
├── agent-state/             # Cross-session agent state
├── research/                # Nightly research orchestration
├── hermes-agent/            # Hermes agent setup
├── scripts/                 # One-off backfills + migrations
├── tests/                   # Test suite
└── docs/                    # Operational documentation

Ownership

Each directory has one owning agent. The owner is accountable for correctness and reviews all changes to their section. See CODEOWNERS for per-file detail.

Directory Owner What it does
lib/ (core) Ship Config, DB, merge, cascade, validation, LLM calls
lib/ (extraction) Epimetheus Source extraction, entity processing, pre-screening
lib/ (evaluation) Leo Claim evaluation, analytics, attribution
lib/ (health) Argus Health checks, search, claim index
diagnostics/ Argus 4-page dashboard, alerting, vitality metrics
telegram/ Ship Telegram bot, X integration, retrieval
deploy/ Ship rsync deploy, GitHub-Forgejo mirror
systemd/ Ship teleo-pipeline, teleo-diagnostics, teleo-agent@
agent-state/ Ship Bootstrap, state library, cascade inbox processor
research/ Ship Nightly research sessions, prompt templates
scripts/ Ship Backfills, migrations, one-off maintenance
tests/ Ganymede pytest suite, integration tests
docs/ Shared Architecture, specs, protocols

VPS Layout

Runs on Hetzner CAX31 (77.42.65.182) as user teleo.

VPS Path Repo Source Service
/opt/teleo-eval/pipeline/ lib/, teleo-pipeline.py, reweave.py teleo-pipeline
/opt/teleo-eval/diagnostics/ diagnostics/ teleo-diagnostics
/opt/teleo-eval/telegram/ telegram/ (manual)
/opt/teleo-eval/agent-state/ agent-state/ (used by research-session.sh)

Quick Start

# Run tests
pip install -e ".[dev]"
pytest

# Deploy to VPS
./deploy/deploy.sh --dry-run   # preview
./deploy/deploy.sh             # deploy