feat: ship buildpulse 0.3.0 phases and releases

This commit is contained in:
OpenClaw Bot
2026-05-10 20:04:49 +02:00
parent cc63348344
commit 8218a3417e
8 changed files with 1400 additions and 243 deletions
+123 -2
View File
@@ -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,
},