This document owns how Libration work is defined, executed, verified, and closed.
Current development state lives only in docs/STATE.md. This file does not track what is active.
The workflow supports both external design followed by in-editor implementation, and in-editor planning followed by implementation. Chat history is not project memory.
Work lives in docs/work/LIB-###-slug.md, using a single ascending identifier sequence (LIB-001, LIB-002, …). Copy docs/work/TEMPLATE.md.
proposed → approved → active → complete
Also valid: blocked, abandoned.
| Transition | Who |
|---|---|
create proposed |
Human, or an agent when instructed or when capturing a follow-up |
proposed → approved |
Human only. Agents never approve their own work. |
approved → active |
Agent or human, following activation below |
active → complete |
Agent or human, after the definition of done |
active → blocked |
Agent or human, when progress cannot continue |
any → abandoned |
Human |
Exactly one work item is active at a time unless a human explicitly changes that policy.
When an approved item is selected:
- Set its status to
active. - Point
docs/STATE.mdat it. - Do only its authorized scope.
If several approved items exist, activate the lowest identifier unless STATE.md or a human names another.
Do not automatically activate the next item after completion unless this workflow still calls for it and an approved item exists.
If nothing is active or approved:
docs/STATE.mdstatus is AWAITING SCOPE.- Stop. Do not start speculative work from
docs/FUTURE_FEATURES.mdor invent a product task. - An agent may suggest or draft a
proposeditem. It must not start that item.
This is a normal, valid state.
The active work item owns its scope.
Discovered work is recorded under Discovered, not done on that item. Optionally convert it into a new proposed item or a docs/FUTURE_FEATURES.md entry. Never silently absorb it into the active task.
A snapshot, not a log. Ordinary size is about 40 lines.
It owns: overall status, the active item, the last completed item, blockers, known failing verification, awaiting-human-decision, and the exact next action.
Statuses:
| Status | Meaning |
|---|---|
ACTIVE |
A work item is being executed |
BLOCKED |
Work cannot proceed |
READY |
Approved work exists; none is active |
AWAITING SCOPE |
No approved or active item |
Never append history, embed the roadmap, duplicate architecture, or list completed work here.
Required for every work item:
npx tsc --noEmit- Full test suite (
npm test) before completion docs/STATE.mdupdate- Work-item completion record with actual evidence
- Concise
docs/DEVELOPMENT_LOG.mdappend
Run the narrowest relevant tests while implementing. They are iteration aids, not a substitute for the completion suite.
Run npm run build when the change touches build configuration, dependencies, application entry points, index.html, the asset pipeline, or anything else where bundling behaviour is materially relevant. Do not require it for documentation-only changes.
If a work item can alter rendered output, it cannot be completed without following docs/VISUAL_VERIFICATION.md. Record actual scenario, viewport, browser, inspected properties, and result in the work-item completion record. “Looks fine” is not evidence. If visual verification was required but could not be performed, do not mark the item complete.
Update only the authoritative document whose durable truth actually changed. Do not synchronize a ledger across many files.
Completion records must include commands actually run, actual result summaries, visual evidence when applicable, and a Not verified line.
- “Expected to pass” is not “passed.”
- If a command was not run, say so.
- Record the actual meaningful summary output.
- Never hide a pre-existing failure.
- Never classify a new failure as pre-existing without evidence.
A summary that says “complete” without this evidence is incomplete.
Known failures are enumerated in docs/STATE.md. Each tolerated failure must already be approved or known, with an owning proposed/approved remediation item or a named later modernization stage.
- The list may shrink.
- The list may not grow without explicit human approval.
- A work item that introduces a new unenumerated failure is not complete.
- Satisfy the item’s acceptance criteria.
- Run required verification.
- Fill the completion record with actual evidence.
- Set the work item to
complete. - Update
docs/STATE.md. - Append a short
docs/DEVELOPMENT_LOG.mdentry. - Update any owning durable document whose truth changed.
- Stop.
Stop and ask when: the architectural boundary is unclear; persisted user configuration would change; a backend change appears to need product knowledge; docs and source disagree; two sources of truth appear; the work needs a new model rather than a patch; or there is no approved item.