Roundup snapshot — 2026-06-16

This commit is contained in:
Keysat
2026-06-16 17:02:16 -05:00
parent 209dfa8f90
commit 9c91d699d0
+84 -67
View File
@@ -1,105 +1,122 @@
# Roundup — 2026-06-16
Repos scanned (11 operator git repos): keysat, matrix-bridge, premier-gunner, proof-of-work, recap-relay, recap, spark-control, standards (meta/tooling), ten31-database, ten31-signal-engine, ten31-transcripts.
Skipped: **start-os** (external upstream — Start9Labs/start-os, no AGENTS.md by design; firmware/OS build clone, not an operator project).
Repos scanned: keysat, matrix-bridge, premier-gunner, proof-of-work, recap-relay, recap, spark-control, standards, ten31-database, ten31-signal-engine, ten31-transcripts (11 git repos under `~/Projects`).
Skipped/failed: none. (Non-git folders under `~/Projects` not enumerated — a ~13-folder sweep is itself a standards ROADMAP item.)
This report inventories every project's state and open work. It does **not** rank projects against each other or recommend what to do next — that's the operator's call.
This is an inventory, not a ranking. Per-repo priority markers are quoted as found; projects are **not** ranked against each other.
---
## Per-project snapshot
**keysat** — Bitcoin-native software-licensing service (StartOS 0.4.x package, 4 SDKs, landing/docs site). Registry at `0.2.0:55`; live server still `:54`. In progress: this session shipped the product→merchant-profile write path (multi-profile now functional end-to-end), unreleased. Next: 3 remaining multi-profile UIs, then cut `:56` to ship the write path.
**keysat** — Bitcoin-native software-licensing service, StartOS 0.4.x package + 4 SDKs + public landing/docs site. Live at `0.2.0:56` on registry and `immense-voyage.local`; multi-profile write path shipped this session; tests green. In progress: 3 remaining multi-profile UIs (rail picker, per-profile SMTP, rail-pref editor) + operator data action (grant `unlimited_merchant_profiles` to Pro/Patron). Next: those UIs, then split `audit:read` out of `:read`. Discovered P2 (unfixed): `set_product_entitlements_catalog` has no `rows_affected` guard.
**matrix-bridge** — Single-user Matrix bot turning a room message into a live Claude Code session, surfaced to phone. Phases 03 + ask mode all DONE; Phase 3 (Spark Control tile) shipped today in v0.21.0. No active build work; Phase 4+ documented but not scoped.
**matrix-bridge** — Single-user Matrix bot turning a room message into a live Claude Code session per repo, surfaced to phone. Phases 03 + ask mode all done; capture mode (D13) LIVE 2026-06-16 on 1 room, N=3 pending. Keyword-type parsing pushed (`0786286`) but running bot pending one Update — still logs every capture as `idea`. Next (triggered, not urgent): Docker HEALTHCHECK, ask-script trust flag, capture priority keyword.
**premier-gunner** — Kid-friendly soccer-training tracker PWA (StartOS `.s9pk`). Live at v0.1.7:0; all requested features built and deployed. In progress: none. Next: set real login password via action, confirm speed unit, then eval backlog if desired.
**premier-gunner** — Kid-friendly soccer-training tracker PWA, StartOS `.s9pk`. All requested features built and live at `v0.1.7:0`. No work in progress. Known issue: in-app password change reverts on restart (workaround: "Set Login Password" action). Next: confirm speed unit (mph vs km/h); optional eval backlog.
**proof-of-work** — Self-hosted multi-user workout logger (Next.js, StartOS `.s9pk`, private registry). At `1.2.0:3` (P3 hardening), built + sideloaded 2026-06-15. Pending: on-box boot check + Safari first-tap verification. Next: finish the P3 hardening batch.
**proof-of-work** — Self-hosted multi-user workout logger (Next.js), StartOS 0.4 s9pk. Latest `v1.2.0:5` (Gear replaces RPE for cardio); 231 tests pass, verified on-box. Known open bug: Mobile Safari first-login tap fails (gated on capturing error code). Pending: StartOS proxy real-client-IP forwarding check. Next: finish P3 hardening batch (CSP `unsafe-eval`, `/api/health` info disclosure, rate-limit map leak, etc.), then tiered AI prompt formatting.
**recap-relay** — Operator-side credit-metered transcription/diarization/analysis router (Gemini + Spark Control); private to operator's box. Relay `0.2.126` / app `0.2.155`, tree clean, 79 tests green. Deferred: splitting the 2225-line `internal-meetings.js` ("likely overkill"). Next: P3+ hardening backlog.
**recap-relay** — Operator-side credit-metered transcription/analysis router (Gemini + Spark Control); ships to operator's box only, never public. Aligned at `v0.2.126`, 79 tests green. Recent: Users dashboard tab, persistent webhook dedup, CORS scoped to `/relay/*`. Next: split 2225-line `routes/internal-meetings.js` (deferred as likely overkill); P3+ deferred tail.
**recap** — YouTube/podcast summarizer + library; StartOS `.s9pk` single-mode + public `recaps.cc` multi-tenant cloud. App `0.2.159` / relay `0.2.126`, 144 tests passing. Loose end: Daily Digest relay-synthesis + SMTP path not yet smoke-tested off-box. 5 pending operator actions.
**recap** — YouTube + podcast summarizer + library; StartOS self-host package **and** cloud SaaS (recaps.cc). Live: app `0.2.159` + relay `0.2.126`, 144 tests pass. Loose end: Daily Digest's relay-synthesis + SMTP path not yet smoke-tested off-box. 5 pending operator actions (incl. iPad scroll-fix verify, digest smoke-test). Next: persist provider preference server-side, Export menu on clip panel, CI lint+type-check.
**spark-control** — Browser package controlling a dual DGX Spark AI cluster (vLLM swaps, speech/embeddings/redaction APIs; StartOS 0.4). matrix-bridge tile shipped v0.21.0:1; security hardening shipped v0.19.0:0; 70 pytest passing. In progress: Signal Engine concurrency remedy forwarded to dev 2026-06-15, awaiting their decision.
**spark-control** — Browser StartOS package controlling a dual NVIDIA DGX Spark cluster (vLLM swaps, STT/diarization/TTS, embeddings, redaction). Working at `v0.21.0:1`; matrix-bridge bot tile done; 70 offline tests pass. Signal Engine transient unresponsiveness diagnosed as GPU concurrency (client-side remedy forwarded). Next: audio concurrency sweep (only if Signal Engine dev wants it; needs owner OK), else pull from ROADMAP.
**standards** (meta/tooling) — Global agent-operating standards + the live fleet of commands/subagents served into `~/.claude`. Fleet built and live; `/new-project` upgraded; cross-repo git-hygiene audit done. Next: cross-repo quality-gate standard + `/harden`; non-git-folder sweep under `~/Projects` (~13).
**standards** *(meta/tooling layer)* — Global agent-operating standards + the live fleet (8 commands, subagents) symlinked into `~/.claude`. Fleet operational; design system shipped (ROADMAP item 8); keysat design pilot ran end-to-end (import path tested, extract path not). Next: backfill design into recaps.cc/recap (extract→reconcile Case B), build cross-repo quality-gate standard + `/harden` (ROADMAP item 1), non-git-folder sweep (~13).
**ten31-database** — Self-hosted venture CRM + agentic layer (thesis copilot, outreach drafting, Gmail capture via DWD) on Start9. Live & verified v0.1.0:77 (deployed 2026-06-16) incl. Phase B daily activity digest (auto-send OFF pending enablement); 20/20 backend tests green. Next: Grant validates Phase B on the box.
**ten31-database** — Self-hosted venture-fund CRM (Ten31, ~$200M AUM) with agentic fundraising/thesis/outreach layer; replaced Airtable. Box+repo at `v0.1.0:82` (2026-06-16), verified live; 22/22 backend tests green; vendored React+SRI+render-smoke gate added. Decision: fundraising grid + email capture is canonical, classic-CRM surfaces retiring. Next: auth regression test for 3 v79-gated endpoints, digest Phase B verify, reports soft-delete sweep, pipeline adoption, `?limit=abc` crash.
**ten31-signal-engine**Recurring signal-extraction pipeline (audio/text → structured thesis-scored claims as falsifiable predictions). Strike adversarial test is the gating step: extraction running, long-form 400s fixed, draining ~700-doc/~5.7k-chunk backlog. **2 unpushed commits** blocked awaiting Grant's approval. Battery test PASSES.
**ten31-signal-engine**Pipeline ingesting audio + text (SEC filings, calls, research) into structured propositions → falsifiable investment signals scored through Ten31's thesis. Strike adversarial test CONDITIONAL PASS (2026-06-16); pipeline complete end-to-end (56,008 claims in Qdrant); engine correctly refuses the false positive. Reflexivity demo unexercised (RHR/CD audio transcription deferred — no GPU spend). No automated test suite yet. Next: Frontier-fan-out test H6, complete Strike reflexivity demo when GPU budget allows, Job A discovery scorers.
**ten31-transcripts**Native macOS menu-bar app: detects video calls, records dual-track audio w/ active-speaker detection, sends to SparkControl for transcription/diarization/naming. Main clean + pushed, 73 tests pass; backend connected end-to-end 2026-06-16. Next: backend URL primary→fallback + status indicator.
**ten31-transcripts**Active Xcode/Swift app. Reader returned a macOS menu-bar call-recorder summary (dual-track audio capture → Spark Control backend for transcription/diarization/naming); main branch clean, 73 tests pass, backend connected end-to-end 2026-06-16. **Caveat:** the inbox describes ten31-transcripts as a Swift app with **no `.claude/` dir** and a queued P1 mini-retrofit — so either this repo *is* that recorder app (and the AGENTS.md was read despite no `.claude/`) or the reader picked up an adjacent app's docs. See Gaps; confirm the repo's own AGENTS.md before acting.
---
## Priority queue (all projects + untriaged inbox)
*Items quoted with the priority markers found in each source. Concrete "next steps" that carry no Px in their repo are listed under "Unprioritized — needs triage" (repo-sequenced), never dropped.*
Explicit-priority and concrete next-action items, each once. Sprawling P3 tech-debt tails are rolled to a single per-repo line pointing at that repo's ROADMAP rather than enumerated.
### P1
- [P1] Mini-retrofit ten31-transcripts repo — add inbox-check line, `.claude/settings.json`, canonical `.gitignore`, optional docs reorg — source: inbox(untriaged) — INBOX.md `(ten31-transcripts)[chore][P1]`
**P1**
- [P1] ten31-transcripts: mini-retrofit — add inbox-check line, create `.claude/settings.json`, canonical `.gitignore` block, optional docs reorg — source: inbox(untriaged) — INBOX.md L34
- [P1] matrix-bridge: push the pending **Update** so the running bot picks up keyword-type capture parsing (commit `0786286`) — currently logs every capture as `idea` — source: matrix-bridge — AGENTS Current state
### P2
- [P2] keysat: `set_product_entitlements_catalog` lacks `rows_affected` guard — bad product-id silently 200s with stale data; one-line fix deferred — source: keysat — AGENTS.md Known issues
- [P2] keysat: payments/API debt batch — no rate-limit on `/v1/purchase`+`/v1/redeem`; bucket keys on spoofable `X-Forwarded-For`; `422`/`415` return plain-text not JSON; `slug` unvalidated; `GET /v1/admin/products` 405s; dep advisories (`sqlx`≥0.8.1, `rustls-webpki`≥0.103.12); no CI / fmt/clippy/prettier unenforced — source: keysat — AGENTS.md debt
- [P2] premier-gunner: upgrade `@fastify/static` 8.3.0 → ≥9.1.3 (path-traversal advisories) — source: premier-gunner — ROADMAP eval backlog (dependency)
- [P2] premier-gunner: input validation — reject unknown metric `kind`; validate calendar-date semantics; 400 on bad `metric_id` — source: premier-gunner — ROADMAP eval backlog
- [P2] premier-gunner: automated test suite (record-recompute direction, streak math, migration idempotency) — source: premier-gunner — ROADMAP eval backlog
- [P2] recap: known-debt batch — SSE error-string leak to cloud users; credit over-spend TOCTOU; multi-tenant Gemini-key bypass; `GET /api/history` perf; dependency CVEs; no integration tests; smaller hardening + doc drift — source: recap — ROADMAP Known debt
- [P2] spark-control: tech-debt batch — no automated tests beyond redaction; loose dep floors (`python-multipart`/`starlette` DoS CVEs); opaque HTTP 500s; NGC API key on process cmd line; global mutable `catalog` race; container runs uvicorn as root — source: spark-control — ROADMAP Tech debt
- [P2] ten31-database: reports subsystem counts soft-deleted rows (~16 aggregates); `?limit=abc` crashes authenticated lists; TLS verify off in scrub gateway; hardcoded Spark/Qdrant IPs in s9pk; 5.4k-line monolith — source: ten31-database — AGENTS.md Known debt
- [P2] standards: automate Gitea create/publish gate in `/new-project` via Gitea API — source: inbox(untriaged) — INBOX.md `(standards)[feature][P2]`
- [P2] ten31-transcripts: add Jitsi support — source: inbox(untriaged) — INBOX.md `(ten31-transcripts)[feature][P2]`
- [P2] recap: Recaps (or a recaps relay) should send a daily digest via SMTP — source: inbox(untriaged) — INBOX.md `(recap)[feature][P2]`
- [P2] recap: mobile gets stuck and can't scroll back to top (recaps.cc transcript view) — attempted in 0.2.157, UNVERIFIED; needs on-iPad check + screen recording — source: inbox(untriaged) — INBOX.md `(recap)[bug][P2]`
- [P2] ten31-database: reconcile AGENTS.md networking facts — CRM is served over ClearNet (StartTunnel) w/ app-level auth, not "LAN or Tailscale" — source: inbox(untriaged) — INBOX.md `(ten31-database)[chore][P2]`
**P2**
- [P2] keysat: ship 3 remaining multi-profile UIs (rail picker, per-profile SMTP, rail-pref editor) — source: keysat — next steps
- [P2] keysat: operator data action — grant `unlimited_merchant_profiles` to Pro/Patron on master — source: keysat — next steps
- [P2] keysat: add `rows_affected` guard to `set_product_entitlements_catalog` (silent 200 on bad product-id) — source: keysat — Discovered
- [P2] keysat: design-contract cleanup from 2026-06-16 design-checker audit — 3 blockers (gold-as-fill ×2, buy-CTA pill radius), CSS-variable consolidation, token gaps; re-run design-checker after — source: inbox(untriaged) + keysat ROADMAP — INBOX.md L44
- [P2] keysat: run spec-checker agent for Start9 community-registry listing — source: inbox(untriaged) — INBOX.md L52
- [P2] keysat: adversarial review — vulnerabilities, complaints, feature gaps a new user might find — source: inbox(untriaged) — INBOX.md L51
- [P2] keysat: doc-auditor website drift review + GitHub history sensitive-info review + add "license existing software" example — source: inbox(untriaged) — INBOX.md L53
- [P2] keysat: research whether the registry must retain every prior keysat version on upgrade — source: inbox(untriaged) — INBOX.md L49
- [P2] recap: smoke-test Daily Digest relay-synthesis + SMTP path (operator action #5, can't run off-box) — source: recap — pending operator actions
- [P2] recap: SMTP daily-digest delivery (feature) — source: inbox(untriaged) — INBOX.md L37
- [P2] recap: mobile can't-scroll-to-top on recaps.cc transcript view — fix attempted in 0.2.157, UNVERIFIED, needs iPad check — source: inbox(untriaged) — INBOX.md L40
- [P2] recap: add Gemini 3.5 to model selection (research agent to confirm available stable model names) — source: inbox(untriaged) — INBOX.md L54
- [P2] recap: persist provider preference server-side; Export ▾ on clip panel; CI lint+type-check (near-term backlog) — source: recap — ROADMAP
- [P2] recap-relay: add Gemini 3.5 to model selection (confirm stable model names) — source: inbox(untriaged) — INBOX.md L55
- [P2] ten31-database: Matrix-bridge intake for fundraising grid (room listener → local-LLM parse → entity/contact creation, approval gate) — source: inbox(untriaged) — INBOX.md L45
- [P2] ten31-database: oversized/zoomed StartOS package icon — research spec, source base logo, produce correctly sized icon before next s9pk — source: inbox(untriaged) — INBOX.md L43
- [P2] ten31-database: explorer agent to report admin-only vs all-user web UI functionality — source: inbox(untriaged) — INBOX.md L46
- [P2] ten31-database: auth regression test for 3 v79-gated endpoints; digest Phase B verify on box; reports soft-delete sweep; pipeline adoption; `?limit=abc` crash — source: ten31-database — next steps
- [P2] ten31-signal-engine: run full-eval (evaluator, security-auditor, exerciser, doc-auditor, spec-checker) on the folder — source: inbox(untriaged) — INBOX.md L47
- [P2] ten31-signal-engine: Frontier-fan-out test H6 (untested §1.1 half) — source: ten31-signal-engine — next steps
- [P2] proof-of-work: finish P3 hardening batch + tiered AI prompt formatting; `@fastify/static` 8.3.0→≥9.1.3 (path-traversal CVEs); input-validation fixes — source: proof-of-work — ROADMAP/next steps
- [P2] spark-control: audio concurrency sweep (only if Signal Engine dev wants the measured knee; needs owner OK) — source: spark-control — next steps
- [P2] standards: backfill design into recaps.cc/recap (extract→reconcile Case B, on-ramp untested) — source: standards — next steps
- [P2] standards: API automation for Gitea in `/new-project` (automate manual create/publish gate via Gitea API) — source: inbox(untriaged) — INBOX.md L35
- [P2] standards: build keysat docs-reader subagent (can a fresh user install+run from docs alone) — source: inbox(untriaged) — INBOX.md L50
- [P2] ten31-transcripts: add Jitsi support — source: inbox(untriaged) — INBOX.md L36
- [P2] (target repo unclear) run janitor agent on all projects — source: inbox(untriaged) — INBOX.md L48
- [P2] premier-gunner: confirm speed unit (mph vs km/h); optional security/test eval backlog — source: premier-gunner — next steps
### P3
- [P3] keysat: deferred batch — `/v1/purchase` 400 vs `/v1/btcpay/webhook` 503 asymmetry; undocumented required `kind` on discount-codes; field-naming drift; migration self-heal foot-gun; Zaprite payload WARN-log; outbound-webhook SSRF; registry icon non-render — source: keysat — AGENTS.md P3+ deferred
- [P3] premier-gunner: CSRF token; cross-category metric guard; logout without session; consistent 404s; validate category `color` — source: premier-gunner — ROADMAP eval backlog
- [P3] recap-relay: P3+ post-eval backlog — no `/relay/*` rate limiting; container likely root; dashboard `innerHTML` XSS; `lan-fetch` TLS verify off; debug/error fields leaked; packaging/ops polish; `/relay/health` stale `0.2.11`; doc fixes — source: recap-relay — ROADMAP / docs/issues-backlog.md
- [P3] recap: deferred hardening — request-size caps; invoice-ID hijack; container runs as root; in-memory rate-limit buckets; repo hygiene (`cookies.txt` rotation, old `.s9pk` delete, `package.json` rename); StartOS registry submission; bulk doc reconciliation — source: recap — ROADMAP Deferred hardening
- [P3] spark-control: README stale; deprecated `@app.on_event`; packaging placeholders/broken links; missing SSH user specs; no upload size limits; startup crash on bad env; unescaped innerHTML sink — source: spark-control — ROADMAP Tech debt P3
- [P3] recap-relay: AGENTS.md mis-describes `POST /relay/analyze` — actual route takes `{ prompt }` and returns `{ result: { text } }`; fix request-shape wording — source: inbox(untriaged) — INBOX.md `(recap-relay)[chore][P3]`
**P3**
- [P3] recap-relay: fix AGENTS.md endpoint doc — `POST /relay/analyze` takes `{ prompt }` and returns `{ result: { text } }`, not "{ transcript } → topic sections JSON" — source: inbox(untriaged) — INBOX.md L42
- [P3] standards: build cross-repo quality-gate standard + `/harden` (linters / pre-commit / CI) — ROADMAP item 1 — source: standards — ROADMAP
- [P3] standards: non-git-folder sweep under `~/Projects` (~13 folders) — source: standards — next steps
- [P3] Per-repo deferred P3 tech-debt tails (rolled up — full lists in each ROADMAP): recap (request-size caps, invoice-ID hijack, container-as-root, repo hygiene), recap-relay (no rate limiting, container-as-root, dashboard XSS, version-file prune), spark-control (Qdrant auth, observability, README staleness, packaging placeholders), proof-of-work (CSP, CSRF, registry blockers), premier-gunner (CSRF, delete 404s), ten31-database (TLS verify off, 5.4k-line monolith, stale ABOUT.md)
### Unprioritized — needs triage (active next steps, repo-sequenced, no Px in source)
- keysat: (1) ship 3 remaining multi-profile UIs + `unlimited_merchant_profiles` policy; (2) cut `:56` to ship this session's write path; (3) deferred — split `audit:read` from `:read`, build admin "API keys" SPA panel — source: keysat
- matrix-bridge: no active steps; optional/triggered only — Docker `HEALTHCHECK` for the badge, ask-mode trust flag, Phase 4+ (intent-routing brain, thread continuity) — source: matrix-bridge
- premier-gunner: (1) set real login password via action; (2) confirm speed unit (`mph` vs `km/h`); (3) work eval backlog if desired — source: premier-gunner
- proof-of-work: pending on-box check — confirm `1.2.0:3` boots clean + Safari first-tap works; then finish P3 hardening batch (CSP `unsafe-eval`, `/api/health` info disclosure, rate-limit map leak, configurable sessions, text max-length, unify 3rd JSON-parse) — source: proof-of-work
- recap-relay: split `routes/internal-meetings.js` (deferred, "likely overkill") — source: recap-relay
- recap: 5 pending operator actions — verify iPad scroll fix (0.2.157), optional Gemini-key rotation, real-world cloud tests (first Bitcoin/Zaprite/reminder email), set `RECAP_TRUSTED_PROXY_HOPS` if CDN/LB added, smoke-test Daily Digest via admin endpoints — source: recap
- spark-control: (1) audio concurrency sweep only if Signal Engine dev wants the measured knee (needs owner OK, quiet window); (2) else pull from ROADMAP — local-path/fine-tuned model support or P2 debt — source: spark-control
- standards: (1) cross-repo quality-gate standard + `/harden` (unblocks `/new-project`'s deferred quality gate); (2) non-git-folder sweep under `~/Projects` (~13) — source: standards
- ten31-database: (1) Grant validates Phase B on the box ("Send Digest Now" + arm auto-send); (2) reports soft-delete sweep + tests; (3) fix `?limit=abc` crash; (4) freeze v2.0 thesis canonical; (5) reply-all for Tier-B drafts; (6) confirm Appendix-A + promote — source: ten31-database
- ten31-signal-engine: (1) finish ~700-doc backlog extraction (~67h); (2) `embed-claims`; (3) `two-sided --conviction STRIKE2022`; (4) **approve push of 2 commits to `main`** (blocked); (5) decide speed-up approach (recommend real-time concurrency over Batch API) — source: ten31-signal-engine
- ten31-transcripts: (1) backend URL primary→fallback + endpoint status indicator; (2) guard `mmss()` NaN/∞; (3) validate Meet visual fix (reject camera-off tiles) with real session — source: ten31-transcripts
**Unprioritized — needs triage** (no explicit priority signal in source)
- matrix-bridge ROADMAP (Phase 4+): intent-routing brain (D8, local model), thread-based session continuity, Nextcloud/CalDAV output, E2EE (D9)
- spark-control ROADMAP: echo cancellation, LLM referee for label-merge, second audio worker, dashboard local-path/fine-tuned model support, per-model vLLM flags, Qdrant auth + snapshots
- ten31-signal-engine ROADMAP: Estimator rework H4, real resolver, claim-type weighting for §7.1, corpus expansion (BTC Sessions, River OCR), Start9 s9pk packaging
- keysat ROADMAP: Zaprite dedup cache + declined-card hardening, registry-landing repurpose decision, Elastic License v2 vs `LicenseRef-Keysat-1.0`, KEYSAT_INTEGRATION re-test
- recap ROADMAP larger plans: architecture-simplification, core-decoupling, per-tenant-subscriptions, self-serve-purchase (docs/ drafts)
- standards ROADMAP: deterministic inbox surfacing via SessionStart hook (item 3, optional); thread inbox-check line into bootstrapping (item 4)
---
## Not yet pushed down (inbox) — grouped by target project
## Not yet pushed down (inbox) — grouped by target
These exist nowhere but `INBOX.md`; they have not reached any repo's ROADMAP.
These exist nowhere but the inbox; `/triage` inside each repo routes them.
- **ten31-transcripts** `[chore][P1]` mini-retrofit (no `.claude/` dir; add inbox line, `settings.json`, canonical `.gitignore`, optional docs reorg). `[feature][P2]` add Jitsi.
- **recap** — `[feature][P2]` daily digest via SMTP. `[bug][P2]` mobile can't-scroll-to-top (attempted 0.2.157, UNVERIFIED).
- **ten31-database** `[chore][P2]` reconcile networking facts (ClearNet/StartTunnel, not LAN/Tailscale).
- **standards** — `[feature][P2]` Gitea API automation in `/new-project`.
- **recap-relay** `[chore][P3]` fix `/relay/analyze` request-shape wording (`{ prompt }`).
- **ten31-transcripts:** [P1] mini-retrofit (L34); [P2] add Jitsi (L36)
- **keysat:** [P2] design-contract cleanup (L44); [P2] spec-checker for registry listing (L52); [P2] adversarial new-user review (L51); [P2] website drift + GitHub-history + licensing-example review (L53); [P2] research version-retention question (L49)
- **ten31-database:** [P2] reconcile AGENTS networking facts ClearNet/StartTunnel, not LAN/Tailscale (L41); [P2] oversized package icon (L43); [P2] matrix-bridge fundraising-grid intake (L45); [P2] explorer admin-vs-all UI report (L46)
- **recap:** [P2] SMTP daily digest (L37); [P2] mobile scroll-to-top bug (L40); [P2] Gemini 3.5 model selection (L54)
- **recap-relay:** [P3] endpoint-doc wording fix (L42); [P2] Gemini 3.5 model selection (L55)
- **ten31-signal-engine:** [P2] run full-eval on the folder (L47)
- **standards:** [P2] Gitea API automation in /new-project (L35); [P2] keysat docs-reader subagent (L50)
- **unclear target (`?`):** [P2] run janitor agent on all projects (L48)
## Proposed new projects (inbox `(new:…)`)
---
Ideas awaiting the new-repo bootstrap (`/new-project`):
## Proposed new projects
- **new:embedded-links-reader** `[project][P2]` — give the app an article/blog URL; it scrapes the author's embedded links, reads them, and summarizes them.
- **new:portfolio-scraper** `[project][P2]` — tracks portfolio companies (podcasts, tweets, founder appearances, news) and delivers a digest via email or another interface.
The `(new:…)` inbox items — ideas awaiting the new-repo bootstrap (`/new-project`), not tasks in an existing repo.
- **new:embedded-links-reader** [P2] — give the app an article/blog URL; it scrapes the author's embedded links, reads them, and summarizes them (L38)
- **new:portfolio-scraper** [P2] — tracks portfolio companies (podcasts, tweets, founder appearances, news) and delivers a digest via email/another interface (L39)
- **new:personal-website** [P2] — personal website on Start9 Pages, served on clearnet via StartTunnel; HTML site, Claude Design for styling, gather inspiration (L56)
---
## Gaps
- **keysat** — registry is at `:55` but the live server still runs `:54`, and this session's merchant-profile write path is built but unreleased; the deployed product trails HEAD by two version steps.
- **proof-of-work** — `1.2.0:3` is built/sideloaded but the on-box boot + Safari first-tap verification is still pending; "deployed" is not yet "verified."
- **ten31-signal-engine** — 2 commits sit unpushed pending approval; the Strike adversarial gating test is mid-run, so its PASS/FAIL is not yet known.
- **recap / recap-relay** — several verification-dependent loose ends (Daily Digest off-box smoke test, iPad scroll fix) remain UNVERIFIED rather than closed.
- **start-os** — carries no AGENTS.md/ROADMAP.md; this is by design (external Start9 upstream clone), so it is excluded from the roundup rather than a missing-brain gap.
- Inbox health: no `(?)`-target or stale-looking items; all 9 untriaged items carry a clear target and type.
- **ten31-transcripts reader ambiguity.** The Explore reader returned a macOS menu-bar call-recorder summary (dual-track capture → Spark Control). The inbox (L34) describes ten31-transcripts as a Swift app with **no `.claude/` dir** and a queued P1 mini-retrofit. These may be the same app, or the reader may have surfaced an adjacent app's docs. The repo's authoritative state isn't fully confirmed from this run — re-read its own AGENTS.md before acting, and treat the mini-retrofit as the known truth.
- **ten31-transcripts has no `.claude/` dir** (per inbox L34) — so it does not yet carry the portable inbox-check line; its items only surface via this roundup and the inbox, not at its own session start.
- **No automated test suite:** ten31-signal-engine explicitly flags this; spark-control has tests but several subsystems remain untested.
- **Inbox item with `?` target** (run janitor on all projects, L48) has no owning repo — needs a triage decision on where it lives.
- **Non-git folders under `~/Projects`** were not enumerated (the ~13-folder sweep is itself a standards ROADMAP item, deliberately out of scope here).
- **Stale-state / unverified risk:** several "live" states depend on pending operator on-device checks — recap Daily Digest path (off-box, not smoke-tested), recap mobile-scroll fix (UNVERIFIED), proof-of-work mobile-Safari first-login (gated on error code), premier-gunner in-app password change (reverts on restart).