import type { AppState } from '../../store/types' const seedDate = '2026-05-06T00:00:00+02:00' export const createSeedState = (): AppState => ({ schema_version: '0.3.0', project: { id: 'project_buildpulse', name: 'BuildPulse', one_line_pitch: 'A calm planning cockpit for AI-assisted product building.', description: 'BuildPulse helps capture features, park distracting ideas, log progress as Pulse events, and export clean context for AI coding agents.', current_goal: 'Sharpen v0.4 handoff workflows so coding agents get the right context fast.', notes: 'First dogfood project: BuildPulse manages BuildPulse.', created_at: seedDate, updated_at: seedDate, }, phases: [ { id: 'phase_manual_cockpit', title: 'Phase 1: Manual Cockpit', goal: 'Prove the small planning cockpit works without turning into fake enterprise sludge.', status: 'done', order: 1, notes: 'Feature Plan, Parking Lot, Pulse Log, and Export shipped first.', created_at: seedDate, updated_at: seedDate, }, { id: 'phase_ai_idea_placement', title: 'Phase 2: AI Idea Placement', goal: 'Turn raw ideas into guided decisions with explicit accept, park, or reject outcomes.', status: 'done', order: 2, notes: 'AI triage and DECISION pulse logging are proven before release planning expands.', created_at: seedDate, updated_at: seedDate, }, { id: 'phase_structured_release_planning', title: 'Phase 3: Structured Release Planning', goal: 'Make releases concrete: what is required, what is forbidden, and how close the build is to ready.', status: 'done', order: 3, notes: 'v0.3 shipped with phases, releases, and readiness signals.', created_at: seedDate, updated_at: seedDate, }, { id: 'phase_session_handoff', title: 'Phase 4: Session Handoff', goal: 'Give agents cleaner, more targeted context packages for implementation sessions.', status: 'active', order: 4, notes: 'Current v0.4 step: faster, more focused handoff workflows for coding sessions.', created_at: seedDate, updated_at: seedDate, }, { id: 'phase_local_cloud_ai_assistant', title: 'Phase 5: Local/Cloud AI Assistant', goal: 'Blend local and remote AI assistance without turning the cockpit into router spaghetti.', status: 'upcoming', order: 5, notes: 'Planned v0.5 direction.', created_at: seedDate, updated_at: seedDate, }, { id: 'phase_agent_pulse_integration', title: 'Phase 6: Agent Pulse Integration', goal: 'Ingest agent activity only after the manual cockpit and release planning are stable.', status: 'upcoming', order: 6, notes: 'This stays out of v0.3 on purpose.', created_at: seedDate, updated_at: seedDate, }, ], releases: [ { id: 'release_v021_ai_triage', phase_id: 'phase_ai_idea_placement', name: 'v0.2.1 — AI Triage Flow Hardening', goal: 'Make AI triage feel like the default idea-intake path from raw idea to DECISION pulse.', definition_of_done: [ 'AI recommends a placement with risk and smallest safe version.', 'User can accept, park, or reject without losing context.', 'Accepted or rejected triage creates a DECISION pulse.', 'Mobile layout stays readable during the triage flow.', ], required_feature_ids: ['feature_plan_screen', 'parking_lot_screen', 'pulse_log_screen'], optional_feature_ids: ['export_screen'], forbidden_feature_titles: ['Live OpenClaw/Hermes Agent Status', 'WebSocket agent telemetry'], status: 'shipped', notes: 'This is the verified gate before v0.3 begins.', created_at: seedDate, updated_at: seedDate, }, { id: 'release_v030_phases_releases', phase_id: 'phase_structured_release_planning', name: 'v0.3 — Phases and Releases', goal: 'Add release planning structure so the cockpit can answer what phase we are in, what release we are building, and what is forbidden until later.', definition_of_done: [ 'Phases exist as explicit project stages.', 'Releases track goal, definition of done, required features, optional features, and forbidden work.', 'Features can be linked to a phase and a release with required/optional role.', 'A release readiness view shows progress, blockers, recent pulses, and forbidden warnings.', ], required_feature_ids: ['feature_plan_screen', 'parking_lot_screen', 'pulse_log_screen', 'export_screen'], optional_feature_ids: [], forbidden_feature_titles: [ 'Live OpenClaw/Hermes Agent Status', 'OpenClaw / Hermes integration', 'WebSocket agent telemetry', 'GitHub / Gitea sync', 'Local/cloud model router', 'Session prompt generator', ], status: 'shipped', notes: 'Shipped. Release planning structure is live; still no live integrations.', created_at: seedDate, updated_at: seedDate, }, { id: 'release_v040_focused_handoffs', phase_id: 'phase_session_handoff', name: 'v0.4 — Focused Session Handoffs', goal: 'Cut the friction between choosing a feature and giving a coding agent a sharp, minimal brief.', definition_of_done: [ 'Each feature detail exposes one-tap copy actions for OpenClaw, Claude Code, Codex, and a generic brief.', 'Prompt generation includes phase, release, readiness, blockers, parking-lot, and forbidden-work guardrails.', 'Copy actions can optionally log an INTENT pulse without triggering any live execution.', ], required_feature_ids: ['export_screen', 'feature_focused_handoff_shortcuts'], optional_feature_ids: ['pulse_log_screen'], forbidden_feature_titles: ['Live OpenClaw/Hermes Agent Status', 'WebSocket agent telemetry', 'GitHub / Gitea sync'], status: 'in_progress', notes: 'v0.4.0 focuses on one-tap feature handoffs before preview/edit and result-capture slices.', created_at: seedDate, updated_at: seedDate, }, ], features: [ { id: 'feature_focused_handoff_shortcuts', title: 'One-tap target-specific handoffs', description: 'Let operators copy a sharp AI handoff for OpenClaw, Claude Code, Codex, or a generic agent directly from feature detail.', column: 'now', priority: 'must', status: 'building', acceptance_criteria: [ 'Feature detail exposes separate copy actions for OpenClaw, Claude Code, Codex, and Generic.', 'Copied prompt includes release context, blockers, and forbidden-work warnings.', 'Copy can optionally log an INTENT pulse for the chosen target.', ], scope_notes: 'This is the v0.4.0 loop: pick a feature, copy the right brief in one tap, then let the agent work.', phase_id: 'phase_session_handoff', release_id: 'release_v040_focused_handoffs', release_role: 'required', created_at: seedDate, updated_at: seedDate, }, { id: 'feature_plan_screen', title: 'Feature Plan screen', description: 'Show the active build plan in calm Now / Next / Later / Done columns.', column: 'now', priority: 'must', status: 'ready', acceptance_criteria: [ 'User can create a feature card.', 'User can move a feature between columns.', 'User can edit feature details without clutter.', ], scope_notes: 'This is the home screen. It should answer “what now?” immediately.', phase_id: 'phase_structured_release_planning', release_id: 'release_v030_phases_releases', release_role: 'required', created_at: seedDate, updated_at: seedDate, }, { id: 'parking_lot_screen', title: 'Parking Lot screen', description: 'Capture useful distractions without letting them hijack the build.', column: 'now', priority: 'must', status: 'ready', acceptance_criteria: [ 'User can add parked ideas quickly.', 'Risk and future placement are visible.', ], scope_notes: 'Parking is success behavior, not failure.', phase_id: 'phase_structured_release_planning', release_id: 'release_v030_phases_releases', release_role: 'required', created_at: seedDate, updated_at: seedDate, }, { id: 'pulse_log_screen', title: 'Pulse Log screen', description: 'Log intent, action, results, blockers, and decisions in a future-compatible pulse shape.', column: 'now', priority: 'must', status: 'ready', acceptance_criteria: [ 'User can add manual pulse events.', 'Pulses can link to features optionally.', ], scope_notes: 'Manual in v0.1. No live agent ingestion yet.', phase_id: 'phase_structured_release_planning', release_id: 'release_v030_phases_releases', release_role: 'required', created_at: seedDate, updated_at: seedDate, }, { id: 'export_screen', title: 'Export screen', description: 'Generate clean JSON, JSONL, and Markdown handoff context for AI developers.', column: 'now', priority: 'must', status: 'ready', acceptance_criteria: [ 'JSON export works.', 'Markdown export includes CLAUDE_CONTEXT.md.', ], scope_notes: 'Handoff quality matters more than bells and whistles.', phase_id: 'phase_structured_release_planning', release_id: 'release_v030_phases_releases', release_role: 'required', created_at: seedDate, updated_at: seedDate, }, ], parking_lot: [ { id: 'parked_ai_triage', title: 'AI idea triage', description: 'Use AI to classify new ideas into Now, Next, Later, Parking Lot, or Reject.', reason_parked: 'Manual workflow must prove useful first.', possible_future_placement: 'v0.2', risk_level: 'medium', created_at: seedDate, updated_at: seedDate, }, { id: 'parked_multi_project', title: 'Multi-project support', description: 'Track several products from one BuildPulse instance.', reason_parked: 'Single-project discipline is the whole point of v0.1.', possible_future_placement: 'v0.6+', risk_level: 'medium', created_at: seedDate, updated_at: seedDate, }, { id: 'parked_openclaw_integration', title: 'OpenClaw / Hermes integration', description: 'Ingest agent events, task output, and status directly into BuildPulse.', reason_parked: 'Way too spicy for v0.1. Manual pulse logging first.', possible_future_placement: 'v1.0+', risk_level: 'high', created_at: seedDate, updated_at: seedDate, }, ], pulses: [ { id: 'pulse_seed_001', timestamp: seedDate, project_id: 'project_buildpulse', feature_id: 'feature_plan_screen', source: 'manual', agent_id: 'jimmi', pulse_type: 'INTENT', message: 'Start BuildPulse as a calm single-project cockpit, not a full agent framework.', confidence_score: 0.95, evidence_refs: ['docs/PRODUCT_BRIEF.md', 'docs/SCOPE.md'], trace_id: 'session_seed', }, { id: 'pulse_seed_002', timestamp: seedDate, project_id: 'project_buildpulse', source: 'manual', agent_id: 'jimmi', pulse_type: 'DECISION', message: 'Park AI triage, releases, and integrations until the manual workflow proves itself.', confidence_score: 0.9, evidence_refs: ['docs/DECISIONS.md', 'docs/PARKING_LOT.md'], trace_id: 'session_seed', }, ], ai_recommendations: [], settings: { theme: 'light', default_agent_id: 'jimmi', }, })