| 1 | # Leela — History |
| 2 | |
| 3 | ## Core Context |
| 4 | - Owns architecture decisions, review gates, and cross-team coordination. |
| 5 | - Keeps interface contracts stable enough for specialists to work independently. |
| 6 | |
| 7 | ## Learnings |
| 8 | - 2026-06-05T15:36:19.379+00:00 issue #234: for small RSS enrichment sets in the weekly crawl, prefer a config-driven source list plus bounded in-process parallel fetches over separate Actions jobs; runner setup/artifact overhead outweighs per-feed job parallelism. |
| 9 | - Branch protection must never be bypassed; automated write paths should follow the shared `branch-protection-pr-workflow` skill instead. |
| 10 | - The learning loop only works when agent identity is loaded before execution, outcomes are persisted after execution, and that state is injected into the next run. |
| 11 | - Copilot CLI agent selection uses the registered agent name, not the path to the agent file. |
| 12 | - Documentation and orchestration updates should land in the permanent record quickly so the rest of the squad sees the current operating model. |
| 13 | - Cleanup pattern: distinguish team-member agent directories (`agents/{squad-member}/`) from orphaned agent definitions (`.github/agents/*.agent.md`). Archive before deleting if historical value is uncertain; delete confidently once verified dead (unused in workflows). |
| 14 | - 2026-06-01 review note: PR #218 looked structurally sound and its targeted analysis tests passed locally after dependency setup; the fix closes prompt placeholder leakage and restores the GitHub Models fallback path. |
| 15 | - 2026-06-01 review note: PR #219 stayed within presentation scope and diff-check was clean, but local Hugo validation remained blocked by the repo's existing toolchain baseline rather than the PR itself. |
| 16 | - 2026-06-01 governance note: GitHub will not let this account approve its own PRs, so branches opened as `jmservera` still need an independent reviewer before Leela can treat approval gating as satisfied. |
| 17 | - 2026-06-05T15:36:19.379+00:00 growth governance note: time-boxed distribution work needs repository artifacts, metrics files, or linked platform evidence before acceptance is considered verifiable; do not reconstruct stale social copy after the posting window just to satisfy checked boxes. |
| 18 | - 2026-06-05 PR #235 review note: a terminal no-AI publishing fallback is acceptable when it is deterministic, explicitly attributed (`source=no-ai`, `model=none`), and still passes the same analysis quality gate; self-approval remains blocked for `jmservera`-authored PRs. |
| 19 | - 2026-06-05 crawler topology note: keep GitHub repo crawl monolithic/cached and RSS in-process until measured triggers justify matrix isolation; improve source-aware press correlation/rendering rather than creating a new compact press artifact path. |
| 20 | |
| 21 | ## Round 1 (2026-06-05) |
| 22 | |
| 23 | - Implemented issue #234: config-driven RSS sources + bounded parallel fetching |
| 24 | - PR #236: 554 tests pass, 5-feed live smoke crawl green, CodeQL clean |
| 25 | - Updated docs/decision (source-selection methodology, BaseURL strategy) |
| 26 | - Updated docs/history with architecture notes |
| 27 | - Issue #188 assigned for round 2 (missing-artifact findings from Fry) |
| 28 | |
| 29 | ## Round 2 (2026-06-05) |
| 30 | |
| 31 | - PR #235 code review: approved in substance (terminal no-AI publishing fallback) |
| 32 | - Formal approval blocked by GitHub own-PR rules (self-authored `jmservera` PR) |
| 33 | - Posted lead review comment to PR #235 |
| 34 | - Awaiting independent reviewer approval before merge |
| 35 | - Note: self-approval remains impossible for `jmservera`-authored PRs regardless of review gate satisfaction |
| 36 | |
| 37 | ## Round 3 (2026-06-05T16:26:00Z) |
| 38 | |
| 39 | - Crawler improvement analysis completed: squad findings synthesized into GitHub issue #237 |
| 40 | - Issue title: "Improve multi-source crawler telemetry and source-aware press correlation" |
| 41 | - Lead decision: keep GitHub crawl monolithic, keep RSS in-process bounded parallelism, defer matrix fan-out to triggered conditions (RSS p95 > 60s, source count > 10, per-source retry/quota needed) |
| 42 | - Scope: per-source metrics, schema versioning, deterministic merge before analysis, cross-source dedupe, press-context bounds and telemetry, tests for partial failures/fallback/reproducibility |
| 43 | - Non-goals: LLM staged analysis, GitHub raw compaction, matrix unless triggered, core GitHub crawler changes |
| 44 | - Routing: Bender (implementation), Fry (reliability gates), Farnsworth (press-context quality) |
| 45 | - Labels: `squad`, `squad:leela`, `squad:bender`, `go:yes` |
| 46 | - Decisions recorded in .squad/decisions.md under four entries (Bender, Farnsworth, Fry, Leela) |
| 47 | - 2026-06-05T17:42:56.819+00:00 matrix/map-reduce PRD note: treat crawl matrix and analysis decomposition as separate decisions; keep crawl fan-out measurement-gated, while map/reduce is a citation-preserving LLM context/quality experiment with mapper claim ledgers and reducer-owned editorial coherence. |
| 48 | - 2026-06-05T21:03:35.661+00:00 issue hierarchy refresh: updated #248-#259 and created #261 so safe weekly reruns preserve good AI-authored articles, treat no-AI fallback as non-publishable replacement by default, reuse successful same-day per-source evidence artifacts with provenance/freshness guards, and make signal-type claim-ledger map/reduce the selected dry-run analysis architecture. |
| 49 | |
| 50 | ## Round 4 (2026-06-06T21:19:24Z) |
| 51 | |
| 52 | - Orchestration session synthesized next priority from team learnings and run 27055543722 diagnosis |
| 53 | - Ranked recommendations: (1) analysis gate & contract validation [P0 blocking], (2) deterministic preflight compaction [P0 supporting], (3) reader-facing methodology & governance path [P1 strategic] |
| 54 | - Merged 10 inbox decisions from Bender, Farnsworth, Fry into .squad/decisions.md; documented orchestration at .squad/orchestration-log/2026-06-06T21-19-24Z-leela.md |
| 55 | - Run 27056632166 post-mortems confirmed safety gates work; no-AI blocking and preservation validated in production |
| 56 | - P0 safety layer (#250/#251/#252/#253) must complete before #254 atomicity can start |
| 57 | - Issue sequencing finalized: contract/preflight (Phase 1) → atomicity/quality gates (Phase 2) → docs/evidence (Phase 3) → map/reduce stays dry-run (Phase 4) |
| 58 | - 2026-06-07T14:46:18.154+00:00 issue #297 podcast PRD note: select Signal Check as a reviewed two-host weekly podcast; use Azure Speech for MVP TTS, Blob Storage for audio, non-blocking generation, claim-ledger safety gates, AI disclosure, and cost guardrails. |
| 59 | - 2026-06-07T15:00:15.655+00:00 issue #299 rubber-duck amendment: podcast MVP required `podcast-review` environment approval before TTS, explicit post-publish dispatch, privacy-before-TTS, provider listening test, stable RSS enclosure URL review, Hugo website integration review, voice-only MVP, and total cost guardrails; #310 later narrowed website scope to external link only. |
| 60 | - 2026-06-07T17:04:54.240+00:00 issue #310 correction: Podcaster is a future sister product/tool, not a SquadScope website feature; SquadScope should keep only docs/contracts or harmless prototypes now, preserve zero impact on existing weekly publishing, and move implementation to a separate Podcaster project/repo before Azure resource deployment. |
| 61 | - 2026-06-07T18:01:26.570+00:00 issue #312 reskill: after the Podcaster repository split, promoted the sister-product boundary into `product-boundary-zero-impact`; SquadScope keeps only external links/contracts and Podcaster owns Azure, TTS, staging, Spotify packet, and automation backlog. |