You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SkyTwin's signal/decision pipeline, compared against existing AI-inbox digest products and then adversarially stress-tested against every user + access configuration, surfaced concrete gaps. This epic builds digest parity plus the advantages those products can't match, and the cross-cutting trust layer that makes it awesome no matter what the user gave us access to.
Multi-source. SkyTwin ingests email, calendar, filesystem (idle-miner), and voice transcripts — all normalized to one RawSignal shape. Spec 07 makes every capability source-agnostic.
It can act. Under trust-tier + policy gates, SkyTwin acts on items, not just lists them.
Access-faithful (specs 11-13). Honor what the user hid + the scopes they granted (11), serve non-English users + correct local time (12), degrade gracefully and transparently across any connector subset down to zero (13).
Every example string across these specs is synthetic. Source drafts live in .context/specs/ (gitignored).
07 (SignalText) -> makes 02/03/06 multi-source from birth
01 (act/FYI split, prompt-only) -> ships the structural win
02 + 03 + 06 -> feed 01's to-do / awareness buckets across all sources
04 (topic clustering) -> reshapes presentation
05 (entity cross-linking) -> dedups across clusters (heaviest)
08 (UI) -> renders todos / clusters / citations / source-type (web + mobile)
09 (demo fixture) -> opt-in, isolated; populates everything for screenshots
10 (bootstrap + idempotent seeds) -> P0 foundation; real users' empty default + seedUpsert
CROSS-CUTTING TRUST LAYER (requirements, not a final phase):
11 (access-faithful gates) -> P0 trust/safety; land WITH 01
12 (locale & timezone) -> raises 02/03/06 quality; land WITH the extractors
13 (coverage transparency) -> honest degradation across any source set; folds into 08
Notes from /review (grounded against code)
10 is P0 and independent. Fixes the empty default every real user gets (today safe but frozen) and provides the seedUpsert idempotency helper 09 + the demo seed depend on.
09 never runs for a real or new user — safety invariant #0 (opt-in + env gate + identity isolation).
11 is a launch blocker (trust/safety). Today the briefing leaks content the user hid (memory-gbrain-crdb-adapter honors hide; briefing-generator.ts does not consult it) and proposes send_reply (decision-maker.ts:539) with no gmail.send scope check. Both must be gated.
Start-order dependency: 02/03 consume SignalText from 07 — land 07 first or start email-only and refactor.
RESOLVED DECISION (2026-06-06): new users default to observer (LOCKED). Was a 3-way conflict — code (users.ts:104) forced suggest; DB default + CLAUDE.md already say observer. New-user bootstrap (grandma seed) + idempotent seeding #483 reconciles all three to observer. Safe because the trust-tier progression (observer → suggest via 10 consecutive approvals at 80%+, user-accepted) is verified to exist + be transparent. New-user bootstrap (grandma seed) + idempotent seeding #483 also hardens it: enforce the 24h soak floor in the daily promotion job and introduce the tier ladder to new users.
All specs are /spec-quality with verified file:line current-state references.
SkyTwin's signal/decision pipeline, compared against existing AI-inbox digest products and then adversarially stress-tested against every user + access configuration, surfaced concrete gaps. This epic builds digest parity plus the advantages those products can't match, and the cross-cutting trust layer that makes it awesome no matter what the user gave us access to.
RawSignalshape. Spec 07 makes every capability source-agnostic.Every example string across these specs is synthetic. Source drafts live in
.context/specs/(gitignored).Child issues
Sequencing
Notes from /review (grounded against code)
seedUpsertidempotency helper 09 + the demo seed depend on.memory-gbrain-crdb-adapterhonors hide;briefing-generator.tsdoes not consult it) and proposessend_reply(decision-maker.ts:539) with nogmail.sendscope check. Both must be gated.SignalTextfrom 07 — land 07 first or start email-only and refactor.observer(LOCKED). Was a 3-way conflict — code (users.ts:104) forcedsuggest; DB default + CLAUDE.md already sayobserver. New-user bootstrap (grandma seed) + idempotent seeding #483 reconciles all three toobserver. Safe because the trust-tier progression (observer → suggestvia 10 consecutive approvals at 80%+, user-accepted) is verified to exist + be transparent. New-user bootstrap (grandma seed) + idempotent seeding #483 also hardens it: enforce the 24h soak floor in the daily promotion job and introduce the tier ladder to new users.All specs are
/spec-quality with verifiedfile:linecurrent-state references.