CEO Review: SkyTwin Full Build Plan
Generated by /plan-ceo-review on 2026-04-01 | Mode: SCOPE EXPANSION | Branch: jayzalowitz/add-gstack
Vision
10x Check
The 10x SkyTwin is the OS layer between you and everything digital. Every app is a data source for the twin. Every API is an action surface. The twin doesn't just answer "what would I want done?" — it does it before you ask. You wake up and the day is already organized. The 10x version is invisible. You only notice it when it's wrong — and it's almost never wrong.
Platonic Ideal
A personal nervous system. The twin model is a continuously updated world model of one person's judgment. Temporal reasoning, social graph awareness, financial patterns, cross-domain synthesis. The UX is almost nothing: morning briefing, evening summary, occasional approval requests that get rarer over time. The feeling: someone competent is handling my life.
Scope Decisions
| # |
Proposal |
Effort |
Decision |
Reasoning |
| 1 |
Twin Query API + whatWouldIDo() |
M |
✅ ACCEPTED |
Core driving function — this IS the product |
| 2 |
OpenClaw Adapter + ExecutionRouter |
L |
✅ ACCEPTED |
Execution breadth is the thesis. Create IronClaw issues when only OpenClaw has a skill. |
| 3 |
Proactive Mode + Morning Briefing |
L |
✅ ACCEPTED |
Transforms from reactive to proactive |
| 4 |
Preference Archaeology |
M |
✅ ACCEPTED |
Accelerates twin learning by surfacing implicit patterns |
| 5 |
Cross-Domain Synthesis (foundation) |
XL |
✅ ACCEPTED |
Foundation only — cross-domain event correlation engine |
| 6 |
Twin Export + Portability |
S |
✅ ACCEPTED |
Reinforces user sovereignty, cheap to build |
| 7 |
Undo-with-Learning |
S |
✅ ACCEPTED |
Fast feedback with reasoning accelerates twin quality |
Architecture Decisions (13 issues resolved)
| # |
Section |
Issue |
Decision |
| 1 |
Architecture |
ExecutionRouter location |
New @skytwin/execution-router package — clean separation from adapter packages |
| 2 |
Architecture |
Proactive scanner location |
Part of @skytwin/decision-engine — reuses scoring/ranking infrastructure |
| 3 |
Architecture |
whatWouldIDo() pipeline depth |
Full pipeline, no execution — prediction matches what system would actually do |
| 4 |
Architecture |
Cross-domain event storage |
New signals table in @skytwin/db — CRDB will have memory AI later |
| 5 |
Data Model |
Preference proposals storage |
New preference_proposals table — clean separation from confirmed preferences |
| 6 |
Data Model |
Undo reasoning capture |
Extend feedback_events with undo columns — unified feedback stream |
| 7 |
Safety |
Explanation logging for queries |
Log as predictions with type='prediction' — valuable for twin quality eval |
| 8 |
Safety |
OpenClaw risk adjustment |
Adapter risk modifier — adapters declare trust characteristics, router bumps risk |
| 9 |
API Surface |
/ask endpoint protection |
Token-scoped rate limiting, scales with trust tier (60/hr → 600/hr) |
| 10 |
Testing |
E2E test strategy |
Golden path test covering full pipeline: signal → outcome → feedback → twin update |
| 11 |
Sequencing |
Build phase sequencing |
5 phases — approved |
| 12 |
Product/UX |
Briefing delivery format |
Dashboard-first + email digest opt-in |
| 13 |
Risks |
Risk mitigations |
Time-box cross-domain (1 week), mock OpenClaw first, HIGH confidence for proactive |
Build Phases
Phase 1: Foundation Extensions (DB migrations — unblocks everything)
- New
signals table (id, userId, source, type, domain, data JSONB, timestamp, TTL)
- New
preference_proposals table (id, userId, domain, key, value, confidence, evidence JSONB, status, timestamps)
- New
proactive_scans, briefings, twin_exports, skill_gap_log tables
- Extend
feedback_events: add undo feedbackType, undo_reasoning JSONB, undo_step_id
- Add
source column to decisions (reactive | proactive | query)
- Add
adapter_used column to execution_results (ironclaw | openclaw | direct)
- Add
type column to explanation_records (action | prediction)
Phase 2: Core New Capabilities (parallel tracks)
Track A: Execution Router
- New
@skytwin/execution-router package
ExecutionRouter with adapter selection (risk level, skill availability, credentials)
OpenClawAdapter implementing IronClawAdapter interface (mock-first)
- Adapter trust characteristics + risk modifier system
- Fallback chains (IronClaw → OpenClaw → Direct for low-risk)
- Skill gap detection and logging
Track B: Twin Query API
whatWouldIDo(userId, situation) in @skytwin/decision-engine
- Creates synthetic DecisionObject, runs full pipeline, no execution
- Logs ExplanationRecord with
type='prediction'
POST /api/v1/twin/:userId/ask endpoint
- Token-scoped rate limiting (60/hr observer → 600/hr high_autonomy)
Track C: Twin Export
- Export function in
@skytwin/twin-model
- Serializes: profile, preferences, inferences, patterns, traits, temporal profile
- JSON + Markdown formats
GET /api/v1/twin/:userId/export endpoint
twin_exports audit table
Phase 3: Higher-Order Features (depend on Phase 2)
Track A: Proactive Mode + Morning Briefing
ProactiveEvaluator in @skytwin/decision-engine
- Loads full user context from all connected accounts
- Ranks "what needs doing most" using existing scoring
- Morning briefing generation (ranked actions, confidence, reasoning)
- Dashboard-first delivery with inline approve/reject/edit
- Email digest opt-in with deep links to dashboard
- Worker cron integration (configurable schedule)
- Requires HIGH confidence for any proactive auto-execution
Track B: Preference Archaeology
- Pattern analyzer in
@skytwin/twin-model
- Scans evidence + feedback history for implicit patterns
- Generates PreferenceProposal records
GET /api/v1/preferences/:userId/proposals endpoint
POST /api/v1/preferences/:userId/proposals/:id (accept/reject)
- On accept: creates real Preference with
source='inferred'
- On reject: records as negative signal for twin learning
Track C: Undo-with-Learning
- Extended feedback recording in
@skytwin/twin-model
- Captures: which step went wrong, user's reasoning, preferred alternative
- Triggers rollback via ExecutionRouter if action is reversible
- Feeds reasoning back to twin model as high-weight correction signal (2x weight)
Phase 4: Integration Layer
- Cross-domain correlation engine (time-boxed: 1 week)
- Signal persistence in
signals table with retention policy (30 days)
- Cross-domain event matching (email about meeting + calendar conflict)
- Correlation results feed into DecisionContext enrichment
- Foundation only — not a general-purpose CEP
- Skill gap logger → IronClaw issue creation
- When ExecutionRouter finds OpenClaw has a skill but IronClaw doesn't
- Creates structured issue with skill description, frequency, user demand
- Golden path e2e integration test
- Mock signal → interpret → twin query → candidates → risk + adapter modifier → policy → router → mock execution → explanation logged → feedback recorded → twin updated
- Validates every package boundary in one test
Phase 5: Polish
- Rate limiting implementation on /ask endpoint
- Briefing schedule configuration UI
- Dashboard updates for proposals, briefings, skill gaps, undo history
- Export format refinements
New API Endpoints
| Method |
Endpoint |
Purpose |
| POST |
/api/v1/twin/:userId/ask |
whatWouldIDo() prediction (rate-limited) |
| GET |
/api/v1/twin/:userId/export |
Twin profile export (JSON/Markdown) |
| GET |
/api/v1/briefings/:userId |
Latest morning briefing |
| PUT |
/api/v1/briefings/:userId/preferences |
Configure briefing schedule/format |
| GET |
/api/v1/preferences/:userId/proposals |
Proposed preferences from archaeology |
| POST |
/api/v1/preferences/:userId/proposals/:id |
Accept/reject proposed preference |
| GET |
/api/v1/skill-gaps |
View skill gap log |
New Packages
| Package |
Purpose |
@skytwin/execution-router |
Adapter selection, routing, skill gap detection, risk modifiers |
Schema Changes
| Change |
Type |
signals |
New table |
preference_proposals |
New table |
twin_exports |
New table |
skill_gap_log |
New table |
proactive_scans |
New table |
briefings |
New table |
feedback_events.undo_reasoning |
New JSONB column |
feedback_events.undo_step_id |
New column |
decisions.source |
New column |
execution_results.adapter_used |
New column |
explanation_records.type |
New column |
Risk Mitigations
| Risk |
Mitigation |
| Cross-domain scope creep |
Time-boxed to 1 week. Ship whatever's done. Foundation only. |
| OpenClaw API uncertainty |
Mock-first adapter. Real integration deferred until API stabilizes. |
| Proactive false positives |
Require HIGH confidence for any proactive auto-execution. Conservative start. |
Planning Artifacts
Detailed issue specs written to planning/ directory:
issue-011-execution-router.md
issue-012-twin-query-api.md
issue-013-twin-export.md
issue-014-proactive-mode.md
issue-015-preference-archaeology.md
issue-016-undo-with-learning.md
issue-017-cross-domain-correlation.md
issue-018-phase1-migrations.md
milestone-1.5-scope-expansion.md
🤖 Generated with Claude Code via /plan-ceo-review
CEO Review: SkyTwin Full Build Plan
Generated by
/plan-ceo-reviewon 2026-04-01 | Mode: SCOPE EXPANSION | Branch:jayzalowitz/add-gstackVision
10x Check
The 10x SkyTwin is the OS layer between you and everything digital. Every app is a data source for the twin. Every API is an action surface. The twin doesn't just answer "what would I want done?" — it does it before you ask. You wake up and the day is already organized. The 10x version is invisible. You only notice it when it's wrong — and it's almost never wrong.
Platonic Ideal
A personal nervous system. The twin model is a continuously updated world model of one person's judgment. Temporal reasoning, social graph awareness, financial patterns, cross-domain synthesis. The UX is almost nothing: morning briefing, evening summary, occasional approval requests that get rarer over time. The feeling: someone competent is handling my life.
Scope Decisions
Architecture Decisions (13 issues resolved)
@skytwin/execution-routerpackage — clean separation from adapter packages@skytwin/decision-engine— reuses scoring/ranking infrastructuresignalstable in@skytwin/db— CRDB will have memory AI laterpreference_proposalstable — clean separation from confirmed preferencesfeedback_eventswith undo columns — unified feedback streamtype='prediction'— valuable for twin quality evalBuild Phases
Phase 1: Foundation Extensions (DB migrations — unblocks everything)
signalstable (id, userId, source, type, domain, data JSONB, timestamp, TTL)preference_proposalstable (id, userId, domain, key, value, confidence, evidence JSONB, status, timestamps)proactive_scans,briefings,twin_exports,skill_gap_logtablesfeedback_events: addundofeedbackType,undo_reasoningJSONB,undo_step_idsourcecolumn todecisions(reactive | proactive | query)adapter_usedcolumn toexecution_results(ironclaw | openclaw | direct)typecolumn toexplanation_records(action | prediction)Phase 2: Core New Capabilities (parallel tracks)
Track A: Execution Router
@skytwin/execution-routerpackageExecutionRouterwith adapter selection (risk level, skill availability, credentials)OpenClawAdapterimplementing IronClawAdapter interface (mock-first)Track B: Twin Query API
whatWouldIDo(userId, situation)in@skytwin/decision-enginetype='prediction'POST /api/v1/twin/:userId/askendpointTrack C: Twin Export
@skytwin/twin-modelGET /api/v1/twin/:userId/exportendpointtwin_exportsaudit tablePhase 3: Higher-Order Features (depend on Phase 2)
Track A: Proactive Mode + Morning Briefing
ProactiveEvaluatorin@skytwin/decision-engineTrack B: Preference Archaeology
@skytwin/twin-modelGET /api/v1/preferences/:userId/proposalsendpointPOST /api/v1/preferences/:userId/proposals/:id(accept/reject)source='inferred'Track C: Undo-with-Learning
@skytwin/twin-modelPhase 4: Integration Layer
signalstable with retention policy (30 days)Phase 5: Polish
New API Endpoints
/api/v1/twin/:userId/ask/api/v1/twin/:userId/export/api/v1/briefings/:userId/api/v1/briefings/:userId/preferences/api/v1/preferences/:userId/proposals/api/v1/preferences/:userId/proposals/:id/api/v1/skill-gapsNew Packages
@skytwin/execution-routerSchema Changes
signalspreference_proposalstwin_exportsskill_gap_logproactive_scansbriefingsfeedback_events.undo_reasoningfeedback_events.undo_step_iddecisions.sourceexecution_results.adapter_usedexplanation_records.typeRisk Mitigations
Planning Artifacts
Detailed issue specs written to
planning/directory:issue-011-execution-router.mdissue-012-twin-query-api.mdissue-013-twin-export.mdissue-014-proactive-mode.mdissue-015-preference-archaeology.mdissue-016-undo-with-learning.mdissue-017-cross-domain-correlation.mdissue-018-phase1-migrations.mdmilestone-1.5-scope-expansion.md🤖 Generated with Claude Code via
/plan-ceo-review