Commit Graph

43 Commits

Author SHA1 Message Date
Epictetus 3ec955e143 Sprint 2: Hermes masterclass integration — brief + weekly review modules
- oracle/brief.py: Morning intelligence briefing (CyrilXBT format)
  THE ONE THING, WHAT HAPPENED, WHAT TO WATCH, FROM MEMORY, TODAY'S FOCUS
  Source cooldown (72h dedup), theme clustering, signal ranking

- oracle/weekly.py: Weekly review synthesis
  Signal summary, trending themes (WoW comparison), tier breakdown,
  auto-generated recommendations based on patterns

- oracle/cli.py: Wired brief/weekly commands
  python -m oracle brief [--max-items 8] [--max-age-h 48] [-o path] [--json]
  python -m oracle weekly [--days 7] [-o path] [--json]

Integrates patterns from Hermes Agent Masterclass:
  - Morning brief template structure
  - Content source cooldown (no repeats within 72h)
  - Weekly pattern synthesis with trend detection
  - Quality gate recommendations (score thresholds, diversity alerts)
  - Theme clustering for FROM MEMORY section
2026-07-22 13:50:03 +00:00
Epictetus 07c5f9a5c2 Sprint 0+1: Package restructure, source tiers, verdicts, multi-variant editions
- New oracle/ package (11 modules) with unified CLI (python -m oracle)
- Source tiers: Tier 1 (arxiv/github/hf), Tier 2 (rss/hn), Tier 3 (reddit)
- Composite verdicts: PUBLISH/WATCH/ARCHIVE/DROP based on signal score + age
- Content-hash dedup: SHA-256[:16] normalized, atomic at insert time
- Multi-variant editions: 4 YAML configs (default/research/devops/brief)
- Variant engine: filter → rank → render (HTML + JSON, themed)
- Per-adapter timeout (10s) + threading fallback
- Consolidated 12 root scripts → thin wrappers + oracle/ package
- Archived stale scripts (_engagement, _live_compare, reddit_proof)
- Updated .gitignore, README.md, schema.sql
2026-07-22 13:32:15 +00:00
Epictetus 9f72ff4d6a Issue 004: correct published count 12->11, keep rate 5.7% 2026-07-16 05:24:31 +00:00
Epictetus cebf8701f9 Issue 004: inline Class-B Editor's Notes, add Worth Watching section (matches DB stamps) 2026-07-16 05:23:57 +00:00
Epictetus a5e0e6db33 Issue 004 aiND edition: 12 curated stories (keep rate 6.2%), DB staged 2026-07-16 05:13:11 +00:00
Epictetus af11b0952d pre-fix snapshot: oracle pipeline (2026-07-16) 2026-07-16 04:27:29 +00:00
Epictetus 5224645703 Sprint 1.5 prep: Leonard->Architect feedback, aiND 7-tier DNA doc, Issue 002 (PROPOSED)
- docs/vision/LEONARD_FEEDBACK_TO_ARCHITECT.md: 4 resolutions (naming aiND vs Athena; T6
  practitioner-gate; T1 has no engine signal yet/actionability_score reserved; ingestion audit
  is mandatory for indispensable editions) + 2 risks (success metric is human-only; schema
  forward-compatible, no change in 1.5).
- docs/vision/AI_NEWS_DAILY_TIERS.md: 7-tier hierarchy + Builder-Outcome DNA + 4 editorial
  questions + T6 gate. LOCKED reference for edition curation.
- Issue_002.md: PROPOSED hand-curated edition from live 60-story window; T1-T5 + T6 gate;
  founder confirmation required before 'shipped'. ~11/60 cleared Editorial Test -> exposes
  ingestion-supply problem.

Sprint 1.5 = multiple hand editions; Lens/Memory/Narratives/KG deferred. No schema change.
2026-07-15 06:25:41 +00:00
Epictetus 24e378182f docs/vision: AI News Daily Vision v2 — publication layer, separate from Athena engine vision
Athena = engine. AI News Daily = first publication powered by Athena.
This file governs the publication; Athena's engine-level Editorial Test stays in
VISION_LOCK_V1.md / ADR-0007. Separation preserved intentionally so a future 2nd
publication gets its own vision file without touching Athena's.

Mission: usefulness over hype/funding/exec-opinion/press. Editorial Test (install/run/
test/benchmark/replicate/learn -> candidate; nothing -> reject). 5 sections mirror the
prototype Issue_001. North Star: the few developments that change what enthusiasts can DO.
2026-07-15 05:38:02 +00:00
Epictetus 3a42f53333 Vision Lock v1: AI News Aggregator -> AI Enthusiast Daily (ADR-0007)
- docs/vision/VISION_LOCK_V1.md: permanent editorial mission, audience (builders/tinkerers/
  local-AI users/home-lab/agent devs), Editorial Test ('what would an enthusiast DO?'),
  architectual constraint (editorial vision is primary system), priority order.
- docs/vision/ADR-0007_EDITORIAL_PIVOT.md: accepted pivot record, before/after table,
  Sprint 1 evidence (high-signal = actionable, low-signal = spectator content).
- docs/vision/EDITORIAL_GUIDELINES.md: operating rules; score is draft, taste overrides;
  hand-before-machine; memory must store 'what can be done' not 'what happened'.
- docs/vision/SECTION_DEFINITIONS.md: 5 sections (What Shipped / Run It Locally /
  Benchmarks & Builds / Problem Solved / Worth Trying Tonight).
- docs/vision/SPRINT_1_FINDINGS.md: reference evidence, 45/200 UNCATEGORIZED taxonomy gap.
- Issue_001.md: handcrafted prototype edition from Sprint 1 stories; benchmark for all future automation.

This is the architectural directive. No scoring/narrative/memory work proceeds except in
service of the Vision Lock. Sprint 2 (Lens) stays blocked pending manual review tallies.
2026-07-15 05:08:26 +00:00
Epictetus ed6b7475dc Sprint1: pure-rule bucket classifier + scorer (taste before intelligence)
- athena/scoring.py: deterministic bucket taxonomy (SHIPPING, LOCAL AI,
  PROBLEM SOLVED, MODEL RELEASE, RESEARCH, BUSINESS, INFRASTRUCTURE,
  CULTURE, UNCATEGORIZED) + component scores (shipping/utility/
  replication/enthusiast/novelty) with hype_penalty. No embeddings/LLM.
- Idempotent schema migration: 12 new columns incl actionability_score (reserved).
- attach_scoring() wired into pipeline.py AFTER store_entries, BEFORE render.
- Backfilled all existing rows; verified at box: null->scored via live run.
- Review report exposes every fired rule (editorial proof, not accuracy metric).
- Human-review tally (Published/Rejected/Borderline) is manual only.

Decision: founder directive 2026-07-15 — discover taxonomy before adding
intelligence. Sprint 2 (Lens) blocked until manual review completes.
2026-07-15 04:18:21 +00:00
Epictetus 699bd6d243 TEST: R6 guardrail — first_seen write-once enforced (re-harvest must not overwrite) 2026-07-13 22:30:08 +00:00
Epictetus 424da91364 FIX: first_seen re-stamp bug — persist true source publish date, idempotent upsert, backfill DB 2026-07-13 22:16:59 +00:00
Epictetus 7e33ffd36f recency_guard module + wired propagate_stack_now + top20 (Tony 2026-07-13) 2026-07-13 21:38:32 +00:00
Leonard 2dfa3a9708 WIP before Manual-Headline-Insertion v1 edits (clickability 14d lifecycle pending) 2026-07-12 23:43:14 +00:00
Epictetus 1539c743b5 docs: amend Dev-Design + Deployment-Plan to bare-script reality (no Docker)
Decision 2026-07-12: do NOT containerize. Document actual deployment state:
- Bare Python scripts under vpsadmin user, Hermes cron drives oracle-pipeline.sh
- Container hardening / 150MB cap / Docker build retained as future target (design intent)
- Ollama not deployed; summarization deferred (graceful degradation is live)
- .env (chmod 600) is the live secret mechanism, not /etc/athena/secrets.yaml
2026-07-12 06:55:27 +00:00
Epictetus feba2fe7b7 feat: apply fix/adapter-health-1-2-9 changes (unified retry, failure_class, RSS enabled)
- adapters/__init__.py: add http_get() unified retry helper + AdapterHTTPError
  + failure_class classification (429/5xx/4xx/error/zero_fetch/ok)
  + last_failure_class on SourceAdapter for pipeline capture
- pipeline.py: ENABLED_SOURCES now includes RSS
  + failure_class rollup in run_log (most severe across all adapters)
  + per-source failure_class in source_stats
- schema.sql: add failure_class column to run_log table

Backport of fix/adapter-health-1-2-9 branch (issues #1, #2, #9).
2026-07-12 04:51:24 +00:00
Ty 5cf0b803cb Merge pull request 'Merge MVP-milestone docs into main' (#15) from MVP-milestone into main
Merge MVP-milestone docs (Dev-Design, PRD, Deployment Plan, etc.) into main. Phase 1-6 planning formalized.
pre-mvp-docs-merge
2026-07-12 04:12:11 +00:00
ty cead87370b docs: apply all 18 DevDesignReview edits to Dev-Design.md
- Ch 1: MVP Success Criteria
- Ch 2: Daily Run Flow + Failure Modes
- Ch 3: Backup Strategy + Schema Migration
- Ch 4: Adapter Interface Contract
- Ch 5: Theme Governance
- Ch 6: Calibration Process
- Ch 7: MCP Tool Signatures + API Auth Model
- Ch 8: Log Retention/SLIs + Alerting Matrix
- Ch 9: Scheduling Recommendation
- Ch 10: Model Upgrade Process
- Ch 11: MVP Security Baseline
- Ch 12: Definition of Done per Phase
- Ch 14: Revisit column on Design Decisions table
- New Ch 15: Testing Strategy
- New Ch 16: Deployment and CI/CD
- New Ch 17: Operational Runbooks
- New Ch 18: Risk Register and Assumptions
- New Ch 19: Dependencies and Tooling
2026-07-09 12:43:22 -07:00
Ty baf402c80e docs: add DevDesignReview.md with chapter-by-chapter feedback 2026-07-09 14:02:46 +00:00
ty ae69b38b81 docs: add Dev-Design.md — development design document
Multi-model architecture review (Qwythos-9B + Qwen3.5-9B, 2 rounds):
- System architecture with memory budget (150MB pipeline + 2GB system)
- SQLite + FTS5 data layer with Phase 2 sqlite-vec upgrade path
- Keyword co-occurrence convergence (P1) → embeddings (P2)
- Exponential decay falsification replacing 7-day fixed rule
- Progressive output layer: file drops → Flask API → MCP server
- 6-phase implementation plan (P0-P6) with deliverables
- 30+ PRD backport requirements organized by category
- Design decisions rationale table
2026-07-08 23:43:09 -07:00
Leonard 13d2d1dd1d Fill out Prioritized Task List and Deployment Plan 2026-07-09 04:29:42 +00:00
Leonard 2e68de8451 Fill out Prioritized Task List and Deployment Plan 2026-07-09 04:29:40 +00:00
Ty f64240d6dc added ascii tree to reqs 2026-07-08 21:44:34 +00:00
Ty 3ed95be797 Update docs/MVP-PRD.md
updated requirements
2026-07-08 21:38:24 +00:00
Ty 04863f3dcf Update docs/MVP-PRD.md
adding requirements
2026-07-08 21:33:48 +00:00
Ty 8f4716f875 docs: add initial user stories 2026-07-08 20:40:19 +00:00
Ty 75479abffa docs: add Chapter 1 draft - Vision and Scope (chapter 1 draft complete) 2026-07-08 20:19:10 +00:00
Ty 11329d7c74 docs: add Personas and Archetypes derived from main 2026-07-08 20:07:21 +00:00
Ty c32a846f79 stub: initial MVP milestone docs - Deployment-Plan.md 2026-07-08 19:49:17 +00:00
Ty 6c246c6467 stub: initial MVP milestone docs - Prioritized-Task-List.md 2026-07-08 19:49:16 +00:00
Ty 315a04041e stub: initial MVP milestone docs - MVP-PRD.md 2026-07-08 19:49:12 +00:00
Epictetus 7ee1af3d7b Disable RSS adapter from ENABLED_SOURCES (back to 5 approved sources); keep code for future use 2026-07-08 18:03:37 +00:00
Epictetus a1fafb5f46 Update README: public repo, model-agnostic inference (remove DeepSeek/local-only framing) 2026-07-08 17:40:03 +00:00
Epictetus fd669c31bb Add README + source link to whitepaper (Gitea repo location) 2026-07-08 16:11:41 +00:00
Epictetus df5226859e Fix Reddit adapter: fast-bail when blocked (403/429)
Bug: Reddit was taking 120s+ when rate-limited (3 attempts × 4 subreddits × backoff).
Fix: 1) Try JSON on first subreddit; if blocked, test one RSS.
     2) If both fail, return empty immediately (<3s).
     3) Reduce default rate_limit 3→1s.
     4) 403 now immediate fail in RSS (was retrying).
     5) Max RSS retries 3→2, single 2s backoff.

Result: 120s timeout → 2.1s when blocked. Zero entries returned but no hang.
2026-07-08 15:36:50 +00:00
Epictetus 2c6701f5a3 Add RSS Feeds adapter (6th source) — commercial AI news from 10 feeds
Bug fix: date parsing was ISO-only (RFC 2822 feeds filtered out).
Added email.utils.parsedate_to_datetime() fallback for RSS dates.

10 feeds: TechCrunch AI, VentureBeat AI, The Verge AI, AI News,
The Decoder, MIT Tech Review AI, OpenAI Blog, Anthropic, Google AI, Meta AI.

3 dead feeds (Anthropic/Google/Meta 404), 7 working.
Score: authority (primary blogs 1.5x, industry 1.3x) × recency decay (48h half-life)
Age cutoff: 14 days. Score type: estimated.

Wired into pipeline.py ENABLED_SOURCES. Added RSS URL verification.
3/3 spot-checks passed (all URLs reachable, HTTP 200).

Commit: 62031be→c24a89f
2026-07-08 15:27:59 +00:00
Epictetus 62031bef3f Fix GitHub adapter: sort by velocity (stars/day), not absolute stars
Bug: sort=stars returned the same viral repos every cycle (ponytail 77K
dominated for 26 days). A 5-day-old repo with 3K stars (600/d) was
ranked below it despite having nearly 2x the growth velocity.

Fix:
- Fetch repos created in last 30 days (was 14)
- Re-sort by velocity (stars/day) instead of total stars
- Score formula: 70% velocity + 30% absolute stars
- Added 3rd query for breadth (autonomous agent OR AI tool)
- Added stars_per_day to raw_metadata for queryability
- Added velocity field to metadata
2026-07-08 06:46:40 +00:00
Epictetus 8d0c832e20 Add Athena whitepaper — system architecture, pattern detection, opportunity discovery
12 sections covering:
- Problem statement (AI signal crisis)
- 5-source architecture and scoring methodology
- Verification discipline
- Trend detection & falsification engine
- Signal-to-opportunity pipeline (Competence Gate example)
- Agentic capability assessment
- Technical specs (3731 lines, 5 commits, 99 entries)
- Roadmap (immediate, near-term, long-term)
- Appendices (git history, verification log, current snapshot)
2026-07-08 06:21:43 +00:00
Epictetus 4ba270c166 Add Hugging Face adapter — model releases & adoption signal
- adapters/huggingface.py: HF API adapter (models + datasets)
- Dual fetch: sort=likes (popularity) + sort=lastModified (fresh)
- AI relevance filter: pipeline_tag, library_name, tag matching
- Score: adoption (likes/downloads log-scale) + relevance (pipeline/library/tags)
- score_type: actual (real likes/downloads from HF API)
- Cross-source signal: GLM-5.2 top on both HN and HF
- Wired into ENABLED_SOURCES + verification in pipeline.py
- Live verify: DB likes match live API exactly (GLM-5.2: 3607, DeepSeek-R1: 13448)
- 99 total entries across 5 sources, all pipeline green
2026-07-08 05:54:27 +00:00
Epictetus 6396b66b45 Add Hacker News adapter + wire into pipeline
- adapters/hackernews.py: HN Firebase API adapter with AI keyword filtering
- Word-boundary matching to avoid substring traps (Britain/Guinea)
- Score: log(points) + log(comments), actual HN scores
- Wired into ENABLED_SOURCES + verification in pipeline.py
- Live test: 10 AI/ML stories fetched, all clean
2026-07-08 05:32:28 +00:00
Epictetus 729760fb27 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.
2026-07-08 04:50:01 +00:00
Epictetus b51be6ed48 Phase 5: cron entry script, soft-cap archive, run_log zero-fetch degradation
- oracle-pipeline.sh: single cron entry point (pipeline -> summarize -> archive)
- archive.py: soft-cap archival to entries_archive (preserve, not delete)
- pipeline.py: record zero-fetch (rate-limited) runs as degraded in run_log.notes
Verified: full script runs exit 0, run_log captures per-source status.
2026-07-08 04:07:54 +00:00
Epictetus 67c002b665 Initial commit: Oracle AI research pipeline (adapters, pipeline, summarize, query)
Source-controlled baseline before Phase 5 cron. Excludes oracle.db,
logs/, and __pycache__ via .gitignore. Pipeline verified running
clean end-to-end (run_log write confirmed before conn.close()).
2026-07-08 04:03:36 +00:00