05d15cea56
feat(activity): Timeline data gaps — type filter + commit_type classifier + source_channel reshape
...
Three hackathon-critical fixes for Timeline page rendering (Accelerate Solana, May 5):
Gap 1 — /api/activity respects ?type= now:
- accepts single or comma-separated operation types
(extract|new|enrich|challenge|infra)
- over-fetches 5× limit (capped 2000) so post-build filtering still
fills the requested page size
- unknown types filter out cleanly
Gap 2 — classify_pr_operation() replaces STATUS_TO_OPERATION for merged PRs:
- commit_type wins over branch prefix for merged PRs so extract/* branches
with commit_type='enrich' or 'challenge' surface correctly (same gotcha
as the contributor-role wiring fix)
- priority: challenge → enrich (incl. reweave/) → maintenance (infra) → new
- challenged_by detection carried over from activity_feed_api._classify_event
- non-merged statuses unchanged (extract/new/infra/challenge as before)
- SQL now selects commit_type + description alongside existing columns
- 14 unit tests covering the gotcha matrix
Gap 3 — _CHANNEL_MAP reshape:
- extract/, ingestion/ default → 'unknown' (was 'telegram'; telegram-origin
classification now requires explicit tagging at ingestion time)
- agent/maintenance mappings unchanged
- github_pr override and gh-pr-* branches continue to return 'github'
- 'web' registered as the canonical in-app submission channel (matches
the platform-named pattern established by telegram/github/agent)
- module docstring enumerates all six valid channels
Deployed to VPS; diagnostics + pipeline restarted clean.
Smoke: type=enrich returns 22 events (was 0), type=challenge returns 0
(matches DB — zero challenge commit_types).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 19:51:58 +01:00
2f6424617b
feat: wire Timeline activity endpoint + surface source_channel
...
/api/activity and /api/activity-feed were never registered in app.py —
both files existed but neither route was reachable (confirmed 404 on VPS).
Register both so Timeline and gamification feeds can consume them.
Adds source_channel to /api/activity payload (both PR rows and audit
events — audit rows return null since they aren't tied to a specific PR).
Migration v22 already populated prs.source_channel on VPS with enum:
telegram=2340, agent=698, maintenance=102, unknown=11, github=1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 12:22:12 +01:00
681afad506
Consolidate pipeline code from teleo-codex + VPS into single repo
...
CI / lint-and-test (push) Has been cancelled
Sources merged:
- teleo-codex/ops/pipeline-v2/ (11 newer lib files, 5 new lib modules)
- teleo-codex/ops/ (agent-state, diagnostics expansion, systemd units, ops scripts)
- VPS /opt/teleo-eval/telegram/ (10 new bot files, agent configs)
- VPS /opt/teleo-eval/pipeline/ops/ (vector-gc, backfill-descriptions)
- VPS /opt/teleo-eval/sync-mirror.sh (Bug 2 + Step 2.5 fixes)
Non-trivial merges:
- connect.py: kept codex threshold (0.65) + added infra domain parameter
- watchdog.py: kept infra version (stale_pr integration, superset of codex)
- deploy.sh: codex rsync version (interim, until VPS git clone migration)
- diagnostics/app.py: codex decomposed dashboard (14 new route modules)
81 files changed, +17105/-200 lines
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 16:52:26 +01:00