Ideas Governance
Purpose
Define a stable write contract for deferred ideas so LLMs can capture and maintain ideas consistently over time.
Inputs
- User request that explicitly asks to record, update, or close idea data
- Existing ledger at
.ai/project/ideas/ideas.yaml - Optional context: related task IDs (
T-xxx) and tags
Outputs
- Updated
.ai/project/ideas/ideas.yaml - Concise change log of created or modified idea records
Data Contract (MUST)
ideas.yaml MUST use this top-level structure:
version: 1
updated_at: "YYYY-MM-DD"
summary:
total: 0
by_status:
proposed: 0
deferred: 0
promoted: 0
implemented: 0
invalidated: 0
stale: 0
ideas: []
Each item in ideas MUST include these required fields:
id(I-xxx, unique, immutable)titlestatus(proposed|deferred|promoted|implemented|invalidated|stale)summary(1-3 sentences)created_at(YYYY-MM-DD)updated_at(YYYY-MM-DD)
Each item MAY include these optional fields, and they MAY be empty (null, empty string, or empty list):
why_now_nottrigger_to_startreview_after(YYYY-MM-DDwhen present)tags(string array)linked_tasks(T-xxxarray)linked_functionexpected_effect
All fields except id, title, status, summary, created_at, and updated_at MAY be empty.
Write Rules (MUST)
- Treat
.ai/project/ideas/ideas.yamlas the single source of truth. - Never hard-delete an idea. Use status
invalidatedwhen needed. - Allocate the next available
I-xxxID for creates. - Recompute
summary.totalandsummary.by_statusafter every write. - Update
updated_atat file level and idea level on every change. - Keep field names and enum values stable unless the user explicitly requests schema changes.
Status Guidance
proposed: captured and not yet formally deferreddeferred: intentionally postponed for later considerationpromoted: selected to enter delivery planningimplemented: deliveredinvalidated: no longer useful or applicablestale: requires revalidation
Steps
- Confirm the user intent is a write operation.
- Collect only missing required core fields before writing.
- Apply the minimum change required by the request.
- Recompute summary counts and timestamps.
- Return changed IDs and final statuses.
Boundaries
- Do NOT perform read-only reporting workflows. Use
ideas-lifecycle. - Do NOT infer implementation state from source code automatically.
- Do NOT split data into additional files unless the user explicitly requests it.
Verification
- YAML parses successfully.
- Idea IDs are unique.
- Required core fields exist for every idea.
summary.by_statusmatches actual counts.