Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
ecbb67f
feat(skills): wish template ships in-skill via CLAUDE_SKILL_DIR (G1)
namastex888 Jul 10, 2026
203c97d
feat(ci): fresh-install smoke + plugin release-lag docs (G3)
namastex888 Jul 10, 2026
bbd6439
feat(lint): resource-shipping rule — skills must ship their own resou…
namastex888 Jul 10, 2026
6a3143b
docs(wishes): plugin-resource-shipping execution review — SHIP after …
namastex888 Jul 10, 2026
ed710e9
Merge pull request #2540 from automagik-dev/wish/plugin-resource-ship…
namastex888 Jul 10, 2026
258f4b2
chore(version): bump to 5.260710.3 [auto-version]
github-actions[bot] Jul 10, 2026
bedd206
docs(genie): jar — plugin-resource-shipping shipped via PR #2540
namastex888 Jul 10, 2026
2fe685f
chore(version): bump to 5.260710.4 [auto-version]
github-actions[bot] Jul 10, 2026
5cdc3d6
docs(wishes): agent-sync wish — genie update converges all detected c…
namastex888 Jul 10, 2026
346c02e
feat(agent-sync): internal engine + claude/codex/hermes adapters (age…
namastex888 Jul 10, 2026
ff497ae
feat(agent-sync): wire sync into update/install + hook delegation (ag…
namastex888 Jul 10, 2026
642c9f2
feat(agent-sync): doctor freshness + manifest-verified uninstall + do…
namastex888 Jul 10, 2026
ec68cd8
fix(workflows): coerce string args in /council — runtime stringifies …
namastex888 Jul 10, 2026
46cc3fb
docs(wishes): agent-sync executed — final review SHIP, criteria evide…
namastex888 Jul 10, 2026
08b3890
Merge pull request #2541 from automagik-dev/wish/agent-sync
namastex888 Jul 10, 2026
b1f0791
chore(version): bump to 5.260710.5 [auto-version]
github-actions[bot] Jul 10, 2026
65759f5
fix(resource-shipping): close LOW follow-ups — cleanup, guard precisi…
namastex888 Jul 10, 2026
9b15140
chore(version): bump to 5.260710.6 [auto-version]
github-actions[bot] Jul 10, 2026
d281874
docs(wishes): overnight bookkeeping — reviews, QA evidence, status flips
namastex888 Jul 10, 2026
c919d86
docs(genie): morning brief + DRAFT advancement + INDEX hygiene
namastex888 Jul 10, 2026
c472293
chore(version): bump to 5.260710.7 [auto-version]
github-actions[bot] Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"plugins": [
{
"name": "genie",
"version": "5.260710.2",
"version": "5.260710.7",
"source": "./plugins/genie",
"description": "Human-AI partnership for Claude Code. Share a terminal, orchestrate workers, evolve together. Brainstorm ideas, wish them into plans, make with parallel agents, ship as one team. A coding genie that grows with your project."
}
Expand Down
23 changes: 13 additions & 10 deletions .genie/INDEX.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,24 @@


- [WISH: hook-injection-hardening](wishes/hook-injection-hardening/WISH.md) — BLOCKED-clearing safety edit: `execFileSync` at 3 hook sites (audit-context, freshness×2) + hostile-filename regression tests + `core.bare` probe removal; flips panel verdict BLOCKED→FIX-FIRST — SHIPPED → PR #2536 (wish/hook-injection-hardening→main), G1+G2+whole-wish reviews SHIP, 729 pass/0 fail (2026-07-09)
- [WISH: v5-completion](wishes/v5-completion/WISH.md) — CLAUDE.md-for-v5 rewrite ∥ Codex launch target + Hermes decision ∥ distribution 5.x (drafted 2026-07-02)
- [WISH: dispatch-inproc-default](wishes/dispatch-inproc-default/WISH.md) — HIGH discovered defect: v5 hooks fall open by default (daemon deleted in demolition); re-arm branch-guard + unblock omni approvals (drafted 2026-07-02)
- [WISH: omni-approval-ux](wishes/omni-approval-ux/WISH.md) — correlated approval identity, reaction approve/deny, anti-spam feedback; grounded in the 2026-07-03 live WhatsApp QA (drafted 2026-07-03)
- [WISH: omni-runner-port](wishes/omni-runner-port/WISH.md) — umbrella Group 5: approval-capture spike, global genie.db queue, genie omni serve, inbound one-shot (drafted 2026-07-02)
- [WISH: warp-integration](wishes/warp-integration/WISH.md) — umbrella Group 3: genie init, Warp launch-config emitter, genie launch, /work multi-session opt-in (drafted 2026-07-02)
- [WISH: v5-completion](wishes/v5-completion/WISH.md) — **DONE** (all 3 groups SHIP-reviewed 2026-07-02; reconcile scope w/ cross-agent-delegate + agent-sync per HANDOFF §4): CLAUDE.md-for-v5 rewrite ∥ Codex launch target + Hermes decision ∥ distribution 5.x
- [WISH: dispatch-inproc-default](wishes/dispatch-inproc-default/WISH.md) — **DONE** (both groups SHIP-reviewed 2026-07-02; branch-guard re-armed, regression-gated — hooks demonstrably armed tonight): v5 hooks no longer fall open by default; re-arm branch-guard + unblock omni approvals
- [WISH: omni-approval-ux](wishes/omni-approval-ux/WISH.md) — **DONE** (G1–G3 SHIP-reviewed, 2 HIGHs found+fixed; one Felipe-approved live round-trip pending): correlated approval identity, reaction approve/deny, anti-spam feedback
- [WISH: omni-runner-port](wishes/omni-runner-port/WISH.md) — **DONE** (all 5 groups SHIP-reviewed 2026-07-02; live WhatsApp QA blocked-with-runbook, needs Felipe Omni instance): approval-capture spike, global genie.db queue, genie omni serve, inbound one-shot
- [WISH: warp-integration](wishes/warp-integration/WISH.md) — **DONE** (all 4 groups SHIP-reviewed 2026-07-02; pane-render checklist awaiting Felipe): genie init, Warp launch-config emitter, genie launch, /work multi-session opt-in

## Poured
- [agent-sync](wishes/agent-sync/DESIGN.md) · [WISH](wishes/agent-sync/WISH.md) · [COORDINATION](wishes/agent-sync/COORDINATION.md) — **MERGED #2541 (dev, 2026-07-10 06:47Z; dev now v5.260710.5→.6)** — `genie update` = único verbo canônico que converge TODOS os coding agents detectados (Claude Code skills+council stamp, Codex Agent-Skills em .curated/, Hermes symlink+enable); engine interna manifest+adopt-with-backup+orphan-removal; hook CC vira trigger; mata scripts/smart-install.js divergente. Na dev: G1 `346c02e1`, G2 `ff497ae4`, G3 `642c9f27` (doctor freshness + manifest-verified uninstall), final-review doc `46cc3fb7`; a coerção string-args do /council entrou separada como `ec68cd8f`. PR-topology resolvida no rebase (os 3 commits plugin-resource-shipping saíram; conteúdo já estava em dev via #2540). **Resta:** ritual live user-gated (`genie update` ×2 pós-stable → verificar os 7 role agents como subagent types) — ver [MORNING-BRIEF](brainstorms/genie-token-efficiency-program/MORNING-BRIEF-20260710.md).
- [council-workflow](brainstorms/council-workflow/DESIGN.md) · [WISH](wishes/council-workflow/WISH.md) — /council vira saved workflow nativo (deliberation + audit), lens library 13 (7 persona skills renomeadas por lane + 6 cards), distribuição via install-stamp em ~/.claude/workflows; implementa a disposição council do skill-absorbs G4 — EXECUTADO 2026-07-10: G1 `0b222e17`, G2 `12270b21` (1 fix loop: unwrap p/ body-style do runtime), G3 `22a7ed50`, G4 `2af7ebd9`, G5-eng `6494253d` — todos SHIP; QA vivo USER-GATED pós-release (ritual Felipe: merge→release→plugin update→rodar /council "revisar tudo"; g5-gate para na cauda qa/ até lá); final execution review após o QA
- [plugin-resource-shipping](brainstorms/plugin-resource-shipping/DRAFT.md) · [WISH](wishes/plugin-resource-shipping/WISH.md) — in-skill template via ${CLAUDE_SKILL_DIR}, probe-guarded lint refs, resource-shipping lint, fresh-install CI smoke — plan review SHIP (2 fix loops), /work user-gated, G1 dep on routing-matrix:3 (2026-07-09)
- [routing-matrix](brainstorms/routing-matrix/DRAFT.md) · [WISH](wishes/routing-matrix/WISH.md) — pinned role agents (Fable gates / Opus ladder / Haiku scouts), stage pins + pane flags, complexity columns + lint, escalation caps — executed; execution review SHIP, final gate 719 pass / 1 skip / 0 fail; live LangWatch pin QA pending (2026-07-09)
- [plugin-resource-shipping](brainstorms/plugin-resource-shipping/DRAFT.md) · [WISH](wishes/plugin-resource-shipping/WISH.md) — in-skill template via ${CLAUDE_SKILL_DIR}, probe-guarded lint refs, resource-shipping lint, fresh-install CI smoke — EXECUTED 2026-07-10 (first wish under the routing matrix: engineers opus·high, gate fable·high; 0 fix loops all groups; gate SHIP after branch surgery — concurrent session had switched the shared checkout): G1 ecbb67fc, G3 203c97df, G2 bbd6439e → PR #2540 merged, CI 10/10; QA pending: live installed-plugin scaffold on next release
- [routing-matrix](brainstorms/routing-matrix/DRAFT.md) · [WISH](wishes/routing-matrix/WISH.md) — pinned role agents (Fable gates / Opus ladder / Haiku scouts), stage pins + pane flags, complexity columns + lint, escalation caps — executed; execution review SHIP, final gate 719 pass / 1 skip / 0 fail. **Day-1 live pin QA recorded 2026-07-10 ([qa/](wishes/routing-matrix/qa/routing-pin-qa-20260710.md)) — inconclusive by delivery gap (pins not yet subagent types); re-test post-stable + `genie update` ×2** (2026-07-09)
- [skills-fable5-revamp](wishes/skills-fable5-revamp/WISH.md) · [execution review](wishes/skills-fable5-revamp/reports/execution-review-20260710.md) — Fable-5 revamp of all 36 genie/omni prompt surfaces (118→0 dead-CLI refs, ≥40% line cut, byte-0 frontmatter) + G8 v4-legacy cleanup engine — **merged PR #2518; execution review SHIP 2026-07-10 (HIGH 0 / MEDIUM 0 / 3 LOW: omni-side confirm, stale diff-count, superseded-note for `learn`/`council`)**
- [rolling-pr-auth-hardening](wishes/rolling-pr-auth-hardening/WISH.md) — fail-fast on dead/absent PAT + read/create token split in rolling-pr.yml — **DONE (already implemented on dev+main: `c4fdb32b` + `422caaa2`; found by council freshness probe 2026-07-10; PAT mint remains Felipe's open action)**
- [genie-token-efficiency-program](brainstorms/genie-token-efficiency-program/DESIGN.md) — umbrella (WRS 100, independent review SHIP; 9 seed groups): genie → control-plane thesis; routing matrix (Fable gates, Opus ladder, no Sonnet, $17.9k/21d baseline); 17-skill dispositions; always-on identity; cross-agent delegate (Codex/Hermes companion sessions); genie spend; brainstorm domain-map upgrade — crystallized 2026-07-09
- [genie-mcp](brainstorms/genie-mcp/DESIGN.md) · [WISH](wishes/genie-mcp/WISH.md) — genie MCP server: Warp/Claude Code/Codex consume genie.db state read-only; stdio, auto-registered; spike-first (2026-07-03)
- [genie-mcp](brainstorms/genie-mcp/DESIGN.md) · [WISH](wishes/genie-mcp/WISH.md) — **DONE** (G1–G3 SHIP-reviewed 2026-07-03; Warp live-UI QA awaits Felipe): genie MCP server — Warp/Claude Code/Codex consume genie.db state read-only; stdio, auto-registered; spike-first

- [Genie v5 — lightweight body](brainstorms/genie-v5-lightweight-body/DESIGN.md) — skills+files+stock Warp replace the v4 harness; CC/Codex/Hermes targets; omni keeps one runner; crystallized 2026-07-01, umbrella-scale (8 seed groups)
- [WISH: v5-foundation](wishes/v5-foundation/WISH.md) — umbrella Groups 1+2: genie.db engine + CLI + core skills — DONE 2026-07-02, all groups SHIP
- [WISH: v5-demolition](wishes/v5-demolition/WISH.md) — umbrella Group 6 pulled forward (D8): harness deletion, bare-name cutover, v4 branch, PR #2499 — DONE 2026-07-02
- [WISH: v5-housekeeping](wishes/v5-housekeeping/WISH.md) — true-lightweight tree cleanup (root files, .genie v4 history, metrics bot) + README replan (drafted 2026-07-02)
- [WISH: taxonomy-rehoming](wishes/taxonomy-rehoming/WISH.md) — plans migrate to genie's own taxonomy (`.genie/wishes|brainstorms`); path claims made coherent; user skills speak genie (2026-07-02)
- [WISH: v5-housekeeping](wishes/v5-housekeeping/WISH.md) — **DONE** (all 3 groups SHIP-reviewed 2026-07-02): true-lightweight tree cleanup (root files, .genie v4 history, metrics bot) + README replan
- [WISH: taxonomy-rehoming](wishes/taxonomy-rehoming/WISH.md) — **DONE** (both groups SHIP-reviewed 2026-07-02; one user action pending: PATH line in ~/.zshrc): plans migrate to genie's own taxonomy (`.genie/wishes|brainstorms`); path claims made coherent; user skills speak genie
6 changes: 6 additions & 0 deletions .genie/brainstorms/always-on-genie/DRAFT.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@
- 3 of 5 plugin hook scripts are silently DEAD on v5 shapes (session-context, validate-wish, validate-completion; one says "Run /forge"). rules/genie-orchestration.md (20 lines) is the one v5-correct plugin doc.
- Native worktrees: `isolation:"worktree"` per-agent, `--worktree`, EnterWorktree, `.worktreeinclude`, worktree.baseRef; project plugins auto-load in worktrees (v2.1.200).

## EVIDENCE for G10 worktree isolation (2026-07-09 / 2026-07-10)

The worktree-isolation policy now has hard-won proof, not just a thesis:
- **Shared-checkout collision happened TWICE.** (a) A concurrent session switched the shared checkout `~/workspace/genie` to another wish's branch mid-workflow — three commits landed on the wrong branch and cost a full branch-surgery recovery (isolated worktree off origin/dev + `git mv`/`cherry-pick --no-commit` fold + `git update-ref`). (b) A second session narrowly avoided grabbing another session's live-uncommitted files out of the same working tree. Both are the exact failure mode G10 exists to remove: **never execute wish work in the shared checkout; always `git worktree add` an isolated tree per wish.** Tonight's overnight run enforced this by hand (every worker + this docs finisher ran in a separate worktree off `origin/dev`, merges serialized) — that manual discipline is what G10 should make automatic.
- **Council 3-of-3 takeover de-escalation (2026-07-10).** The first real `/council` deliberation reviewed an "agent-sync takeover" clause that would have let one session seize the shared checkout, and **de-escalated it 3-of-3 to a read-only watch** — i.e. the humans-in-the-loop lenses independently converged on *observe, never take over the shared tree*. This is corroborating design pressure for G10: isolation is the mechanism that makes "read-only watch" the only needed posture, because no session ever needs write access to another's tree.

## DECIDED (umbrella D9, D10, D14)
- Two-layer always-on: (1) thin rules identity ≤40 lines (who genie is, lifecycle routing, control-plane invariants); (2) SessionStart additionalContext via in-process dispatch — live wishes+status, ready groups from genie.db, first-run wizard branch. Deep playbooks stay on-demand.
- Hook contract: schema-version manifest, v4/v5 fixtures, per-hook CI smoke, unknown schema ⇒ fail closed with message; silent noop prohibited; dead scripts rewritten in-process or deleted; /forge purged.
Expand Down
6 changes: 5 additions & 1 deletion .genie/brainstorms/cross-agent-delegate/DRAFT.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,12 @@
## Degradation policy (learned live, 2026-07-09)
First real invocation of the auto plan-gate counter-read hit cegonha unreachable (network path down; host fine an hour earlier). Decided behavior to encode in the delegate skill: **counter-read fails OPEN** — the gate proceeds on the internal reviewer alone, logs "counter-read unavailable (host unreachable)" in the review record, and the next gate retries. Never block a plan gate on external-agent availability; never silently pretend the counter-read happened.

## RECONCILE (2026-07-10 — agent-sync shipped, PR #2541 merged to dev)

**The Codex *plumbing* is now built and owned by agent-sync — this track consumes it, does not rebuild it.** `genie update` (and `genie install`) now fan the canonical `~/.genie/plugins/genie` source into every DETECTED coding agent on every invocation, including a **Codex adapter that ships genie skills to `~/.codex/skills/.curated/`** (managed manifest + adopt-with-backup + orphan removal). So the "one delegate skill + per-agent adapter references" decision is unchanged, but its Codex prerequisite — *getting genie's skills onto the Codex side* — is solved for free: the delegate skill can assume the curated genie skills are present on any machine that has run `genie update`. What remains this track's own work is the **delegation runtime** (companion `codex exec` / `hermes chat -q` sessions, JSON hand-back, background+poll, the `wish-<slug>` session persistence on the genie.db row), not the skill distribution. The Codex-install/auth GAP below narrows accordingly to *auth + which roles first*, since "are genie's skills installed on Codex" is answered by agent-sync.

## GAPS
- [ ] Codex reality on your machines: installed? auth method (API key vs OAuth)? Which lifecycle roles do you want Codex for first — engineer on suitable groups, PR review dissent, or both?
- [ ] Codex reality on your machines: installed? auth method (API key vs OAuth)? Which lifecycle roles do you want Codex for first — engineer on suitable groups, PR review dissent, or both? (Skill distribution to `~/.codex/skills/.curated/` is now handled by agent-sync — see RECONCILE above; this GAP is now auth + role-scoping only.)
- [ ] Hermes canonical vs alias: confirm `-z` is a cegonha alias (helper works today; adapter should document canonical `hermes chat -q` + fallback).
- [ ] Budget/limits for external agents: max concurrent companion sessions? Hermes host load limits (cegonha is shared infra — benchmarks run there)?
- [ ] Session lifecycle: when a wish ships, are its companion sessions retired (hermes sessions delete is gated on shared infra) or kept as history?
Expand Down
24 changes: 22 additions & 2 deletions .genie/brainstorms/genie-spend/DRAFT.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
- Baseline: $17,857 / 95.77M billable tokens / 11.79B cache-read tokens / 1097 traces in 21d (~1000 in last 4 days). Fable $13.8k · Opus $7.1k · Haiku $1.2k · Sonnet $0.5k (span-attributed shares).
- Working analytics recipes (archived in parent DRAFT): tokens+cost by model (groupBy metadata.model), top sessions (groupBy metadata.thread_id), by effort (filter-loop on gen_ai.request.reasoning_effort — no effort groupBy exists), top-N traces (trace/search + client sort, scrollId pagination).
- `metadata.labels` groupBy EXISTS but CC's OTel export emits no genie labels; thread_id = whole CC session (no per-subagent split); model lives on spans, not traces.
- LangWatch CLI (`npm i -g langwatch`) wraps the same endpoints, `--format json`, designed to be agent-driven.
- LangWatch CLI (`npm i -g langwatch`) wraps the same endpoints, `--format json`, designed to be agent-driven. **Access proven 2026-07-10: the existing OTLP-ingest key authenticates fine through the CLI; hand-rolled REST `POST /api/analytics` + `/api/trace/search` returned 403 (payload/route shape, not the key). Phase 1 should shell out to the `langwatch` CLI, NOT hand-roll REST.** Substrate + recipes archived in [genie-spend-calibration-20260710.md](genie-spend-calibration-20260710.md).
- Hermes north star: **cost per group accepted without reopening** — measure decisions, not calls.

## 7-DAY BURN ANALYSIS (run 2026-07-09 — first real analysis pass)
Expand Down Expand Up @@ -55,8 +55,28 @@ Totals: **$18,175 · 1,113 traces · 63 sessions.** Token buckets: prompt (fresh
3. Fewer tool calls per turn (batching, scripts over call-chains): every call re-reads full context — new guidance item for work/dispatch contract.
4. Stable prompt prefixes so cache writes stay linear (constraint on always-on-genie inject: deterministic, session-start-only).

## CALIBRATION — 2026-07-10 (day-1 pin-QA window, partial ~6.85h) — [full file](genie-spend-calibration-20260710.md)

Measured via the `langwatch` CLI during the routing-pin day-1 QA. This window is a gate/review-heavy overnight dogfood — good for **shape/recipe** calibration, not a representative full day. Cross-ref [routing-matrix/qa/routing-pin-qa-20260710.md](../../wishes/routing-matrix/qa/routing-pin-qa-20260710.md).

**$/day trend point (span-level `performance.total_cost`):** 07-08 full **$4,352** · 07-09 full **$1,230** (pins merged 21:51Z) · 07-10 00:00–06:51Z **$1,613** partial → **~$5,650/day run-rate** (upper-ish bound, not typical). The 21-day baseline averages ~$850/day, but recent dogfood days sit well above — the exact heavy-spend spike `genie spend` needs to surface.

**$/model split (07-10, billable `cost_billed`):** Fable $956 (**57%**) · Opus $562 (34%) · Haiku $159 (9%) — Fable share rose on every measure this window (see the pin-QA file).
Comment on lines +62 to +64

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Reconcile the cost metrics used in this calibration.

The daily trend uses span-level performance.total_cost ($1,613), while the model split uses billable cost_billed ($1,677). Presenting them in the same calibration section without explaining the difference can produce misleading totals and percentages. Use one metric consistently or clearly label the figures as non-comparable.

Based on the supplied calibration evidence and release documentation, these figures use different accounting bases.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.genie/brainstorms/genie-spend/DRAFT.md around lines 62 - 64, The
calibration section mixes span-level performance.total_cost with billable
cost_billed, making the totals non-comparable. Update the “$/day trend” and
“$/model split” entries to use one accounting metric consistently, or explicitly
label the figures as non-comparable and explain their different accounting
bases.


**Per-effort cost-per-trace (SOLID — from trace search's per-trace `reasoning_effort` + `total_cost`):** this is the cleanest per-lane number available and a good basis for a `genie spend --by-effort` view / per-lane budget alerts.
| Effort | n | p50 | p90 | mean |
|---|---:|---:|---:|---:|
| xhigh | 37 | $5.39 | $26.23 | $9.74 |
| high | 27 | $5.00 | $20.81 | $7.83 |
| max | 20 | $18.76 | $43.56 | $23.85 |
| **all** | 84 | **$6.76** | **$32.33** | $12.49 |

`max` is the expensive deep-reasoning/gate tier (~3–4× the p50 of xhigh/high).

**Phase-1 query shapes that proved WORKABLE (all via the CLI, existing key):** cost-by-model, cost-by-day (per-day windows; each query returns the prior period free), token-volume-by-model, trace-count-by-model, top-sessions-by-cost (`--group-by metadata.thread_id`), effort histogram + per-effort cost percentiles. **BROKEN/blocked tonight:** (1) direct REST 403 → use the CLI; (2) **effort-filtered analytics** unavailable (`analytics query` has no `--filter`; underlying effort-filter silently broken) → **effort splits must be computed client-side from trace search**; (3) **per-model p50/p90 NOT derivable** — trace search returns no per-trace model (spans empty; model lives only at span level in analytics) → **parked**; per-effort percentiles are the usable substitute, or span-level export the CLI doesn't expose; (4) **cache-read + `--group-by metadata.model`** hits a known ClickHouse bug → avoid (query cache-read without the model groupBy). Net: a CLI-backed Phase-1 covering model/day/thread/effort splits is achievable now; per-model percentiles and effort-filtered analytics are the two gaps to design around.

## GAPS
- [ ] Key/endpoint source for `genie spend`: read from CC settings env (OTEL_EXPORTER_OTLP_*), from genie config, or both with precedence? (Machine-portability: teammates' machines have the same settings?)
- [ ] Key/endpoint source for `genie spend`: read from CC settings env (OTEL_EXPORTER_OTLP_*), from genie config, or both with precedence? (Machine-portability: teammates' machines have the same settings?) — **2026-07-10 evidence: the OTLP-ingest key from `OTEL_EXPORTER_OTLP_HEADERS` in `~/.claude/settings.json` authenticates the CLI; endpoint `https://langwatch.khal.ai`.**
- [ ] Cadence: on-demand only, or a scheduled snapshot (e.g. daily line into .genie/ or omni message)? You already run "live metrics" commits — integrate or keep separate?
- [ ] Consumers: just you, or team/omni-channel reporting?
- [ ] Should `genie doctor` warn when burn-rate exceeds a threshold (needs a threshold from you)?
Loading
Loading