7.7 KiB
7.7 KiB
Inbox — cross-project capture buffer
Raw, untriaged ideas and bugs for any repo, captured from anywhere so they stop
scattering into phone notes. /capture appends here; /triage, run inside a project,
drains that project's items into its AGENTS.md (## Current state) or ROADMAP.md. This
buffer is upstream of every repo's ROADMAP — nothing here is owned or scheduled until
triaged.
Line format — one item per line:
- [ ] (project) [type][Pn] note — optional context, YYYY-MM-DD
project— the target repo's folder name (e.g.relay), orstandardsfor this repo, or?if unsure. For an idea that would be a brand-new repo (no folder exists yet), usenew— ornew:working-nameif you have a name in mind.type—bug|feature|idea|skill|agent|project|chore(project= a potential new repo; handled by the new-repo bootstrap, not/triage).Pn— priorityP0(drop-everything) …P3(someday). DefaultP2if unspecified.[ ]unchecked = untriaged;/triageremoves items once they're routed.
Example:
- [ ] (relay) [bug][P1] health-check probes the wrong port after the bind refactor — found while testing, 2026-06-14
Items
- (standards) [feature][P2] API automation for Gitea in /new-project — automate the currently-manual Gitea create/publish gate via the Gitea API, 2026-06-14
- (new:embedded-links-reader) [project][P2] Embedded-links reader & summarizer — give the app an article/blog URL; it scrapes the links the author embedded (the ones you don't want to visit in the moment), reads them, and summarizes them, 2026-06-14
- (new:portfolio-scraper) [project][P2] Portfolio-company scraper — tracks portfolio companies for podcasts, social tweets, founder appearances, news, etc. and delivers a digest via email or another interface, 2026-06-14
- (recap-relay) [chore][P3] AGENTS.md endpoint list mis-describes POST /relay/analyze as "{ transcript, … } → topic sections JSON". The actual route (server/routes/analyze.js) takes a free-form { prompt: string } and returns the standard envelope { result: { text } }; "topic sections JSON" is only what the recap-app caller asks for in its prompt. Fix the request-shape wording to { prompt } — surfaced resolving Recaps' Daily Digest synthesis contract (Q4), 2026-06-15
- (ten31-signal-engine) [chore][P2] Run full-eval on the signal engine folder — the full evaluation suite (evaluator, security-auditor, exerciser, doc-auditor, spec-checker), 2026-06-16
- (standards) [idea][P2] run janitor agent on all projects — via matrix, 2026-06-16
- (recap) [idea][P2] add gemini 3.5 to model selection, need to have research agent check which models are available (stable versions) and the correct model name — via matrix, 2026-06-16
- (recap-relay) [idea][P2] add gemini 3.5 to model selection, need to have research agent check which models are available (stable versions) and the correct model name — via matrix, 2026-06-16
- (new:personal-website) [project][P2] Develop personal website — host on Start9 Pages, served on clearnet via StartTunnel; build HTML site, use Claude Design for styling, gather design inspiration — 2026-06-16
- (standards) [agent][P3] Operator-onboarding agent — sibling to onboarding-tester for the operator journey (stand up + run keysat from docs alone: sideload/registry install on StartOS, configure, issue first license), vs. the developer SDK-integration journey onboarding-tester already covers. Needs its own clean room (a clean StartOS service-install, not a generic VPS, since the s9pk can't run on a vanilla Linux box), 2026-06-16
- (spark-control) [idea][P2] we should redesign the software logo/icon (used for startos service).. it doesn't really relate to anything, though the color scheme seems to match — via matrix, 2026-06-18
- (spark-control) [feature][P2] Add a dashboard card for the ten31 CRM / intake bot (Update/Restart/Stop/Logs tile like matrix-bridge) — confirm whether already done; see ten31-database docs/handoffs/add-intake-bot-to-spark-control.md, 2026-06-18
- (proof-of-work) [feature][P2] brainstorm better tracking of cardio logging and cardio program planning (in-week variety and long term programs) — via matrix, 2026-06-19
- (matrix-bridge) [bug][P2] what are the open brackets when you log an inbox item through matrix, eg “📥 captured → - [ ] (proof-of-work) [feature][P2] brainstorm better tracking of cardio logging and cardio program planning (in-week variety and long term programs) — via matrix, 2026-06-19” — via matrix, 2026-06-19
- (recap-relay) [bug][P1] Analyze-phase hang permanently jams the single in-memory hardware FIFO slot → ALL YouTube processing (manual + background subscriptions) blocks; caused a multi-hour (possibly ~week) operator-box outage. ROOT CAUSE (confirmed via operator dashboard + relay logs — job 9514ee26, video mxg6OsCl7Oc: download 14s ok → transcribe 200s ok → "starting analyze" then silent ~700min, status UNKNOWN): analyzeText's ai.models.generateContent (server/backends/gemini.js:587 analyze; :281 transcribe) passes NO AbortSignal, and the client-wide httpOptions.timeout (900_000ms, gemini.js:216) doesn't fire on a half-open/stalled connection so the await never settles; chunked-analyze retry (server/chunked-analyze.js:642) is bounded and only catches rejections (a hang never throws); the worker releases the hardware slot only in its finally (server/routes/summarize-url.js:1105), which a never-completing try never reaches; server/hardware-queue.js acquireHardwareSlot (:51-98) is a single in-memory FIFO with NO acquire-timeout / dead-holder detection and jobs.js has no stuck-"running" watchdog, so later jobs wait forever ("queued at position N"). FIX (2 parts + a unit test; recap-relay is its own repo — own version bump + make install, never deploy to registry): (1) PROXIMATE — thread AbortSignal.timeout(...) into the Gemini analyze + transcribe generateContent calls so a stall REJECTS → retry/fallback + worker finally run → job fails cleanly instead of zombie-ing (verify @google/genai per-request abort param, config.abortSignal vs signal, against installed SDK); (2) SYSTEMIC — add a dead-holder watchdog (worker- or slot-level) that force-releases the slot + marks the job failed past a hard ceiling so no future hang can permanently jam the FIFO SPOF. IMMEDIATE UNBLOCK (operational, not the fix): restart recap-relay (job map + slot are in-memory) — recurs until fixed. SECONDARY: occasional "[chunked-analyze] invalid JSON in window response — retrying" self-recovers (look only if frequent); and the full week-long subscription silence exceeds this one ~12h job — check https://recaps.cc/api/sub-check-log whether earlier jobs hung identically or the background sub-check entitlement gate (recap server/index.js:1400, Keysat-license-gated, may skip silently post-core-decoupling) is the cause — diagnosed from dashboard + logs, not yet fixed, 2026-06-20
- (recap) [bug][P2] Verify whether cloud background subscription processing is silently skipped post-core-decoupling: _checkSubscriptionsInner returns early ("Skipped: subscriptions require a Pro license") unless licenseMW.LIC.entitlements.has("subscriptions") (server/index.js:1400), but cloud paid status moved to users.tier (relay-owned), NOT a per-user Keysat license — so the owner/operator scope may lack that entitlement and the daily background sub-check could skip silently while manual processing still works. UNCONFIRMED lead surfaced while diagnosing the 2026-06-20 relay analyze-hang outage (separate issue; see the recap-relay inbox item). Check via https://recaps.cc/api/sub-check-log (signed in) — 2026-06-20