227 lines
3.8 KiB
Markdown
227 lines
3.8 KiB
Markdown
# BuildPulse Data Schema
|
|
|
|
## Schema Version
|
|
|
|
Current schema version:
|
|
|
|
```text
|
|
0.1.0
|
|
```
|
|
|
|
## App State
|
|
|
|
```json
|
|
{
|
|
"schema_version": "0.1.0",
|
|
"project": {},
|
|
"features": [],
|
|
"parking_lot": [],
|
|
"pulses": [],
|
|
"settings": {}
|
|
}
|
|
```
|
|
|
|
## Project
|
|
|
|
```json
|
|
{
|
|
"id": "project_buildpulse",
|
|
"name": "BuildPulse",
|
|
"one_line_pitch": "A local-first 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.",
|
|
"notes": "",
|
|
"created_at": "2026-05-06T00:00:00+02:00",
|
|
"updated_at": "2026-05-06T00:00:00+02:00"
|
|
}
|
|
```
|
|
|
|
## Feature
|
|
|
|
```json
|
|
{
|
|
"id": "feature_plan_screen",
|
|
"title": "Feature Plan screen",
|
|
"description": "Create and manage feature cards in Now, Next, Later, and Done.",
|
|
"column": "now",
|
|
"priority": "must",
|
|
"status": "ready",
|
|
"acceptance_criteria": [
|
|
"User can create a feature card.",
|
|
"User can edit feature title and description.",
|
|
"User can move feature between columns."
|
|
],
|
|
"scope_notes": "No phases or releases in v0.1.",
|
|
"created_at": "2026-05-06T00:00:00+02:00",
|
|
"updated_at": "2026-05-06T00:00:00+02:00"
|
|
}
|
|
```
|
|
|
|
## Feature Columns
|
|
|
|
Allowed column values:
|
|
- `now`
|
|
- `next`
|
|
- `later`
|
|
- `done`
|
|
|
|
## Feature Priority
|
|
|
|
Allowed priority values:
|
|
- `must`
|
|
- `should`
|
|
- `could`
|
|
- `later`
|
|
|
|
## Feature Status
|
|
|
|
Allowed status values:
|
|
- `idea`
|
|
- `shaping`
|
|
- `ready`
|
|
- `building`
|
|
- `testing`
|
|
- `done`
|
|
- `parked`
|
|
- `rejected`
|
|
|
|
In v0.1, column is more important than status.
|
|
|
|
## Parking Lot Item
|
|
|
|
```json
|
|
{
|
|
"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": "Useful, but v0.1 must prove the manual workflow first.",
|
|
"possible_future_placement": "v0.2",
|
|
"risk_level": "medium",
|
|
"created_at": "2026-05-06T00:00:00+02:00",
|
|
"updated_at": "2026-05-06T00:00:00+02:00"
|
|
}
|
|
```
|
|
|
|
## Parking Lot Risk Level
|
|
|
|
Allowed `risk_level` values:
|
|
- `low`
|
|
- `medium`
|
|
- `high`
|
|
- `dangerous`
|
|
|
|
## Pulse Event
|
|
|
|
Pulse events are append-friendly and future-compatible with Agent Pulse.
|
|
|
|
```json
|
|
{
|
|
"id": "pulse_001",
|
|
"timestamp": "2026-05-06T00:00:00+02:00",
|
|
"project_id": "project_buildpulse",
|
|
"feature_id": "feature_plan_screen",
|
|
"source": "manual",
|
|
"agent_id": "jimmi",
|
|
"pulse_type": "INTENT",
|
|
"message": "Start implementing the Feature Plan screen.",
|
|
"structured_payload": {},
|
|
"confidence_score": 0.9,
|
|
"evidence_refs": [],
|
|
"trace_id": "session_001"
|
|
}
|
|
```
|
|
|
|
## Pulse Types
|
|
|
|
Allowed `pulse_type` values:
|
|
- `INTENT`
|
|
- `ACTION`
|
|
- `RESULT`
|
|
- `BLOCKER`
|
|
- `DECISION`
|
|
- `PARKED_IDEA`
|
|
- `TEST_RESULT`
|
|
- `SESSION_START`
|
|
- `SESSION_END`
|
|
- `REFLECTION`
|
|
|
|
## Pulse Source
|
|
|
|
Suggested `source` values:
|
|
- `manual`
|
|
- `user`
|
|
- `claude_code`
|
|
- `codex`
|
|
- `opencode`
|
|
- `openclaw`
|
|
- `hermes`
|
|
- `local_llm`
|
|
- `system`
|
|
|
|
v0.1 should not require strict enforcement beyond basic string handling.
|
|
|
|
## Evidence Refs
|
|
|
|
Evidence refs are references to outputs, tests, commits, screenshots, files, or notes.
|
|
|
|
Simple v0.1 form:
|
|
|
|
```json
|
|
[
|
|
"Manual test passed",
|
|
"Exported CLAUDE_CONTEXT.md",
|
|
"Commit abc123"
|
|
]
|
|
```
|
|
|
|
Later form may become:
|
|
|
|
```json
|
|
[
|
|
{
|
|
"type": "file",
|
|
"label": "FEATURE_PLAN.md",
|
|
"url": ""
|
|
}
|
|
]
|
|
```
|
|
|
|
## Settings
|
|
|
|
Minimal v0.1 settings:
|
|
|
|
```json
|
|
{
|
|
"theme": "light",
|
|
"default_agent_id": "jimmi"
|
|
}
|
|
```
|
|
|
|
## Validation Rules
|
|
|
|
Required project fields:
|
|
- `id`
|
|
- `name`
|
|
|
|
Required feature fields:
|
|
- `id`
|
|
- `title`
|
|
- `column`
|
|
|
|
Required parking lot fields:
|
|
- `id`
|
|
- `title`
|
|
|
|
Required pulse fields:
|
|
- `id`
|
|
- `timestamp`
|
|
- `project_id`
|
|
- `pulse_type`
|
|
- `message`
|
|
|
|
## Export Rule
|
|
|
|
Exports should preserve IDs exactly.
|
|
|
|
Do not regenerate IDs during export/import unless resolving duplicates is required.
|