feat: ship buildpulse 0.3.0 phases and releases
This commit is contained in:
@@ -3,18 +3,127 @@ import type { AppState } from '../../store/types'
|
||||
const seedDate = '2026-05-06T00:00:00+02:00'
|
||||
|
||||
export const createSeedState = (): AppState => ({
|
||||
schema_version: '0.2.0',
|
||||
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: 'Ship v0.1 with Feature Plan, Parking Lot, Pulse Log, and Export.',
|
||||
current_goal: 'Ship v0.3 with Phases, Releases, and clear release-readiness signals.',
|
||||
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: 'active',
|
||||
order: 3,
|
||||
notes: 'This is the v0.3 step.',
|
||||
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: 'upcoming',
|
||||
order: 4,
|
||||
notes: 'Planned v0.4 direction.',
|
||||
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: 'in_progress',
|
||||
notes: 'Keep this on planning structure only. No live integrations yet.',
|
||||
created_at: seedDate,
|
||||
updated_at: seedDate,
|
||||
},
|
||||
],
|
||||
features: [
|
||||
{
|
||||
id: 'feature_plan_screen',
|
||||
@@ -29,6 +138,9 @@ export const createSeedState = (): AppState => ({
|
||||
'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,
|
||||
},
|
||||
@@ -44,6 +156,9 @@ export const createSeedState = (): AppState => ({
|
||||
'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,
|
||||
},
|
||||
@@ -59,6 +174,9 @@ export const createSeedState = (): AppState => ({
|
||||
'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,
|
||||
},
|
||||
@@ -74,6 +192,9 @@ export const createSeedState = (): AppState => ({
|
||||
'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,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user