# v2 Council of Imaginative Experts — Final Expansions & Changes Planning
**Session continued**: 019ef387-5e04-7111-8b0d-4bd51e785c70 (2026-06-23)
**Context grounding** (anti-hallucination verified via session log parse, ls, git diff, reads of v2/*, plan.md, objectives.md, pillars, schemas, TitleLibrary fix run + test pass, unstaged diffs):
- Session began with user "contfinue Session <id>" → agent explored ~/.grok/sessions/... for the ID, read sessions.md + c.md (continue semantics via task-persistance, but no MCP task here), git status (large staged: v2 council plan archived, many UI/core/mesh/Winamp/TitleLibrary/library display/IntroView/MeshJoin/Devices rename work + 211+ files), read v2/plan + roadmap + features, discovered no Net/ code yet, grepped TODO/ObservationStore (none in source), found council QA flag on TitleLibrary silent try?, created todo, read+fixed TitleLibrary.swift (ensureLoaded + appendJSONL now use do/catch + Log.error on real errors; tests passed via xcodebuild), updated todo to in-progress on ObservationStore, began reading schemas + plan Phase 1 section.
- User interjected: "why are you coding?" → "we are planning" → "as a more intelligent model use a council of imaginative experts that propose any final feature expansions/changes for /v2" → "read full log".
- Current state (git): fleet→install terminology migration in progress (unstaged comments/docs in Mesh, v2/correlation/ui, glossary, Device*); Winamp/Theme fully added (new files staged); library titles/display largely complete per plan refresh + our fix; Phase 0 reconcile mostly done; Phase 1 Net local (obs/merge/Player) not started in code (per plan §7); Devices storage pools/MVP + blackd + host daemon still future per roadmap.
- Full v2/ tree, previous 20260621 council synthesis, objectives.md (many ✅ including TitleLibrary, Winamp, search collections, settings, combine; ⬜ Net local etc), manifest, correlation, pillars (esp net, devices, settings, watch-appearance), schemas, packages/bittorrentdrive.md.
- Invariants enforced in analysis: contentKey only (never paths), tolerant/versioned, one shell, pillar sep + DRY via patterns/faces (copy TitleLibrary template), tests gate, no stubs, privacy k-anon + provenance, adult (DE legal) — redlines only CSAM/non-consent/trafficking; no EnterPlanMode, archive here.

**Session log summary (full read via chat_history + updates parse + terminal logs)**: Pure exploration + state capture (dirs, git, v2 docs, session files, .claude continue cmds) → discovery of TitleLibrary debt from prior council → todo-driven fix + green test → start of Phase 1 scaffolding reads → user redirect to planning mode. No prior user task spec beyond the ID itself; continuation defaults to advancing the living v2 plan that was staged in the tree.

## Council Assembly
We assembled 8 imaginative + grounded experts (diverse priorities, per experts-thinking framework + prior council roles). Each given full context + explicit ask: "Review current v2 state (shipped library/Winamp/mesh rename in flight; Phase 1 Net local next per plan), propose *any* final feature expansions or plan changes that fit pillars, improve value, close gaps, or imaginatively extend without violating invariants or scope. Flag tradeoffs. Ground in facts only."

### 1. Senior Architect (overall, sequencing, invariants, PR hygiene, DRY/faces)
From viewpoint: The plan.md refresh (library as Phase 0) + council archive is solid. Current session work (TitleLibrary hygiene) correctly addressed the exact QA flag ("silent try? will corrupt Net obs if copied") before copying the pattern to ObservationStore — good hygiene. Unstaged fleet→install renames are terminology alignment (product term shift); must be exhaustive before Phase 1 lands or docs drift.

Priorities: Preserve single-fleet value path; Net local before editions. Expansions must not bloat Phase 1.

Proposals/Changes:
- **Finalize "install" terminology sweep as explicit Phase 0.5 gate** (before Net code): grep -r fleet -- v2/ Sources/ governor/ mcp/ docs/ (exclude legacy comments); update code comments + v2/ + objectives in one slice. "Fleet" stays only for governor/fleet.json internal + WireGuard subnet docs.
- **Add "ContentID fingerprint collision" dogfood metric** to Phase 1 exit (s01e04 vs s1e4 + release group in key if dogfood shows dupes on real titles).
- **Imaginative expansion**: "Observation provenance inheritance for derived parts" — when grouping obs produces a show-level record, auto-emit lightweight "derived" intro-marker hints for episodes in that group (low confidence). Fits Net part model, zero new schema.
- Risk flag: Do not start ObservationStore until the TitleLibrary fix (now done) is promoted; copy the robust append/load exactly.
- Handoff note: Keep PR slices small; every Net PR must include "no raw path strings in any Net/* file" + schema roundtrip test.

### 2. Net Systems Expert (federation, merge, trust, editions, k-anon)
From viewpoint: Local MVP (Phase 1) is exactly the right first value (skip works on one machine, observations written on user skip). Schemas are clean. Current code has zero Net/ — perfect blank slate.

Proposals/Expansions:
- **Expansion: "Net signal part MVP in Phase 1.5"** (parallel, low cost): after intro-markers local, add a minimal "recently-watched aggregate" observation (per contentKey, last N days count, no per-user). Local merge only (minSources=1); publish stub. Gives immediate "others are watching X" badge on Library cards without friend graph. Uses same ObservationStore + separate merged file. Imaginative but directly feeds Watch recs + Download custody priority later.
- **Change**: In mergePolicy (edition-manifest), make clusterWindowSeconds + weights per-part overridable in local settings (net.<part>.merge.*) even in Phase 1. Tolerant decode in merge.
- **Privacy expansion**: Mandate + test a "stripFleetForUI" view in NetController for friends trust level (fleetId present in store for merge/provenance, redacted in all Player/Library surfaces).
- Risk: User-skip source can be gamed for bad intro markers; add simple rate limit (N skips per contentKey per 24h) in ObservationStore before append.

### 3. Library & Metadata + Titles Expert
From viewpoint: Library titles + display shipped (TitleLibrary + DisplayNames + refiner + scanner + our just-landed error hygiene) is the strongest foundation. Grouping (ShowGrouping + LocalLLMGrouper + deterministic) also advanced.

Proposals:
- **Expansion (fits Phase 5/6)**: Net "grouping" part shares *show-level* canonical clusters (not episode). When a remote install has a better grouping for ambiguous cluster (e.g. cross-category Dandadan variants), local merge can adopt the high-provenance grouping decision for its own TitleLibrary rows. Low k-anon threshold.
- **Change**: Now that TitleLibrary is robust, enforce "MLX ≤1 ever" with an explicit counter in LocalLLMEpisodeRefiner + early TitleLibrary.lookup guard (already partial); add to Phase 1 exit checklist even though Net.
- Polish: Goldens for display names (per plan) should include a few Net-merged title cases once observations exist.

### 4. Devices, Storage Pools, Install Pairing, Mesh Expert (current rename work)
From viewpoint: Unstaged changes show active "fleet" → "install" + MeshJoinView/IntroView/DevicesView polish. This is Devices pillar execution. Storage pools still future (plan Phase 1.5 parallel).

Proposals/Expansions:
- **Expansion**: "Install health dashboard" (Devices + cross) — per-device last-seen, storage quota used/avail (from pools later), net contribution count (observations published). Surface in DevicesView + Settings summary. Imaginative polish that makes the mesh feel alive without new transport.
- **Change**: Complete the rename *before* Net code lands; add a one-time migration note in DeviceConfig decode for old "fleet.json" keys (tolerant read "fleet" or "install" section).
- **Imaginative for Phase 3+**: "Opportunistic custody handoff on join" — when a new install joins (MeshEnroll), Devices offers to pull "high k-anon" recent library titles from the anchor via rsync over the new WG link as first extension tier. Reuses existing OfflineCacheController path + BTD internal.

### 5. Watch/Player/Appearance (Winamp) + UI Cross Expert
From viewpoint: Winamp sprites + Theme/ fully landed (new files staged); PLAYPAUS/MiniTransport work in progress per plan. Player already has skip logic that can feed Net obs.

Proposals:
- **Expansion (low cost, high delight)**: "Net-sourced intro skip badge" — small "synced" pill on the skip button when the marker came from merged Net vs local detect. Uses the introBounds return value provenance.
- **Change**: In Phase 1 Player integration, the skip write must happen *after* the seek (so position is the actual skip target); also log a "user-skip" obs even if no prior marker (cold-open discovery).
- Imaginative: Winamp skin "Net edition" variant — a skin that tints transport LEDs based on mesh health (green = healthy peers, amber = solo). Pure cosmetic, reads FleetState + future NetController health.

### 6. Download/Governor/Infra + blackd Expert
From viewpoint: Download is strong (dead-swap, detail, health); governor fleet + custody shipped single-fleet. blackd + host daemon is Phase 7 parallel.

Proposals/Expansions:
- **Expansion (ties Net + Download)**: "Dead torrent re-search boosted by Net peers-hints" — when Download sees a stuck torrent, consult local Net "peers-hints" part (if present) for "other installs report N live seeds for this infohash"; use to prioritize the "Find better release" search or auto reannounce. Imaginative cross-pillar win.
- **Change**: net-editions/ dir must be *excluded from library scanner* (add to IndexedFoldersStore or scanner blacklist) in Phase 2 infra; document in operations.md now.
- blackd tie-in: When host daemon exists, it can be the first "always-on" publisher of Net editions (governor tick on the daemon host); iOS direct blackd playback will also be able to contribute user-skip obs over the same WS/control channel.

### 7. Imaginative Futurist + Adult/Trust-Safety Domain Expert
From viewpoint: Adult domain (legal regulated DE) is core; systems are structurally hostile to CSAM/spam/trafficking via contentKey + k-anon + f2f_only. v2 Net amplifies consensual sharing.

Imaginative expansions (all within red lines):
- **"Consensual anonymous porn relay" (anonymized adult sharing per original council)**: Net part "porn" (or flag on existing parts) with raised k (K≥10) + contentKey only + F2F relay stripping (no source fleetId even in friends mode for this part). UI never surfaces below threshold. Fits "anonymized adult sharing" in objectives 💭. High value for the operator's trust-and-safety work.
- **"Mutual watch party signal"**: Opt-in per-install "I'm currently binging X" aggregate (no timing precision) shared only to mutual friends via Net friends part; surfaces as "3 friends watching" subtle notif. Pure social, no identity leak.
- **Risk/Change**: Any future "recs from network" must stay k-anon aggregate only; never per-title per-fleet rows. Enforce in schema + merge for signal part.
- Polish: Explicit adult flag in v2/manifest + correlation for any new Net part; default off for new installs until user acknowledges in Setup (cross settings).

### 8. QA/Testing/Dogfood + Verif Expert
From viewpoint: Prior council had excellent layered gates (unit + golden + schema CI + e2e dogfood script + privacy grep). TitleLibrary tests ran green post-fix in this session — model.

Proposals:
- **Mandatory for any Net PR**: Add "privacy: grep -r '\.path\|\.url\|lastPathComponent' -- Sources/TVAnarchyCore/Net/ Tests/... | grep -v test" as CI step or pre-commit note.
- **Expansion test**: Golden fixtures for IntroMarkersMerge (3 clusters, mixed sources, median calc, weight dominance).
- **Dogfood script enhancement**: Extend the 20260621 council dogfood (publish/sync/assert no paths) with "user skip on show X during playback → obs appears in jsonl with source=user-skip → after 2 skips merged marker within 1s of median".
- Full suite + "v2 pillar checklist" (from plan Appendix C) before any promotion.

## Synthesized Recommendations & Final Expansions/Changes
We (the council) converge on:

**Must before Phase 1 code**:
- Exhaustive "install" terminology audit + rename (code comments + all v2/ + objectives + docs/glossary). One PR, no partials.
- Promote the TitleLibrary fix (already done + green in this session) + add a regression test case that forces a write failure and asserts Log line (no silent loss).

**High-value imaginative expansions to fold in (prioritized, fit pillars)**:
1. Net "signal" lightweight aggregate in Phase 1.5 parallel (recent-watch counts, no identity). Feeds Library badges + Download custody hints.
2. "Porn relay" (k-anon adult sharing) design stub in pillars/net.md + packages/bittorrentdrive.md (anonymized, raised K, F2F only). North-star feature for the domain.
3. Install health + "synced" skip badge (cosmetic + trust signal).
4. Cross-pillar "Net peers-hints boost re-search" in Download detail.
5. Terminology + privacy enforcement as explicit gates.

**Plan adjustments**:
- Insert "Phase 0.5: Terminology + hygiene complete" between 0 and 1.
- Net local exit criteria expanded with 1-2 of the signal/porn stubs + dogfood script run.
- Add to v2/roadmap.md + plan.md the new items with owners (Net for signal, Devices+Net for porn relay design).
- No scope creep on Phase 1 critical path (obs + intro merge + Player write/read must still land first for solo value).

**Risks surfaced**: Terminology drift (mitigate with rename PR now); over-sharing adult data (mitigate with K + no provenance on relay part); ContentID collision on real corpus (add dogfood + fingerprint opt-in).

**Success metrics update**: Add "≥1 imaginative expansion (signal or relay) has local stub + test by end Phase 2".

All proposals respect: contentKey canonical, no paths ever in Net, tolerant, adult redlines, one shell, tests-first, archive not pollution.

## Handoff (for /experts-team or next implementer)
Paste verbatim:

**v2 Final Expansions Council Handoff (2026-06-23 session 019ef387...)**

Grounded state: library titles + Winamp + mesh join UI + TitleLibrary error hygiene shipped/fixed+tested in this session; "fleet"→"install" rename in flight (unstaged); Net/ code = 0; Phase 1 = next per plan.

**Immediate next (planning complete)**:
1. Exhaustive terminology sweep PR: rename fleet→install in comments, v2/*, objectives, glossary, code strings where product-facing. Gate for Phase 1.
2. Promote TitleLibrary fix (if not already committed from session).
3. Create .project/history/20260623_v2-council-expansions-planning.md (this) as archive.
4. Update v2/plan.md §5 phases + §7.6 exits + roadmap.md with Phase 0.5 + 3 expansions (signal MVP, porn-relay stub, health/badge).
5. Update objectives.md (add the expansions under planned or designed).
6. Start Phase 1 exactly as prior council: ObservationStore (JSONL per schema/net/observation + intro-markers value; contentKey + fleetId + source + confidence; append tolerant + Log; no paths; test no leakage), IntroMarkersMerge (cluster/weight/median per manifest policy; pure; tests), NetController (load merged, introBounds, observe on skip), wire to PlayerController skip path + precedence (settings > net merged > detect).
7. Parallel: minimal Settings net section (contribute toggle), first dogfood script run (obs write + reload + merge on real skip during playback of known show).
8. After Phase 1 green: fold the 3 expansions (start with signal aggregate as cheap win; porn relay as design+stub only).
9. Full gates every slice: unit + integration temp state + privacy grep + pillar checklist + build + manual skip dogfood + update manifest/correlation + archive any new notes here.
10. Self-verif before any commit: run full TVAnarchyCoreTests + mcp/governor tests; `git grep -E 'fleet[^j]' -- v2/ Sources/ | grep -v test | grep -v 'fleet.json' ` ==0 ; no paths in Net/ ; Player uses merged bounds on a show with 2+ skips.

**Open decisions for next council/implementer**: Exact fingerprint in ContentID for collision (release-group?); whether local Net obs dir moves under fleet.json later; blackd as first publisher (Phase 7).

**Invariants (enforce)**: See plan Appendix C + this council. Content keys everywhere for Net. Adult domain priors + redlines absolute.

End of council synthesis. We archive here. Ready for team execution on the refined plan.

## References (all read/verified in session)
- Session log (chat_history + updates + terminal logs via python parses + tails)
- .project/history/20260621_v2-council-experts-build-plan.md (prior council)
- v2/{plan,roadmap,features,README,glossary,manifest,correlation/*,pillars/*,schema/net/*}
- objectives.md (current ✅/⬜)
- git status + unstaged diffs (terminology + mesh + TitleLibrary)
- Sources/TVAnarchyCore/Library/TitleLibrary.swift + tests (fixed + green)
- Pillars net/devices + bittorrentdrive.md

This node is complete on the planning directive. No code changes beyond the prior hygiene fix (which aligned with council debt item). Next action awaits user or /experts-team on the handoff.
