Phase 6: theme trend-scan (B) + competitor gap research (A)

- theme_scan.py: tags entries by 4 practitioner themes (tool-call/context/
  compute/trust), counts NEW arrivals per cron cycle (falsification check for
  one-day-cluster vs trend). Idempotent: re-run = 0 new.
- schema.sql: theme_tags table (separate from core entries schema)
- oracle-pipeline.sh: wire theme_scan after summarize
- A result (footnote): unified discipline layer unoccupied; adjacent OSS
  entrants exist (agentgateway, lelu) but no portable unified layer.

Verified: theme_scan classifies 5 seed/extra items, 2nd run = 0 new.
This commit is contained in:
Epictetus
2026-07-08 04:50:01 +00:00
parent b51be6ed48
commit 729760fb27
3 changed files with 144 additions and 0 deletions
+13
View File
@@ -31,3 +31,16 @@ CREATE TABLE IF NOT EXISTS run_log (
sources_failed TEXT, -- JSON list of sources that errored/skipped
notes TEXT
);
-- Theme tags: Phase 6 trend-tracking. Tags entries by the 4 practitioner
-- resource-discipline themes so we can measure RECURRING theme frequency
-- across FRESH entries (not persistence of specific rows). Counts new
-- arrivals per cron cycle -> the falsification check for the "one-day cluster
-- vs real trend" question. Separate table, never mutates the core entries schema.
CREATE TABLE IF NOT EXISTS theme_tags (
entry_id INTEGER NOT NULL,
theme TEXT NOT NULL,
first_seen_cycle TEXT DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
PRIMARY KEY (entry_id, theme),
FOREIGN KEY (entry_id) REFERENCES entries(id)
);