Proposals & Changes
The change proposal system lets you stage specification changes in isolation, get full compilation and review feedback, and then apply or archive them. Proposals live in .prodara/changes/ and follow a structured lifecycle.
Creating a Proposal
Use the /prodara prompt or the CLI to create a new proposal. Each proposal gets a timestamped directory with a delta.prd file for your specification changes and a metadata.json with status tracking.
# Via AI prompt (in your AI agent)
/Prodara Create a proposal to add payment processing to billing module
# Via CLI
prodara propose "Add payment processing to billing module"Directory Layout
.prodara/
changes/
2024-01-15T10-30-00-add-payments/
delta.prd # Specification changes
metadata.json # Status, author, timestamps
design.md # Optional design document
archive/
2024-01-10T09-00-00-add-users/
delta.prd
metadata.jsonProposal Lifecycle
draft
Created with prodara propose. The delta.prd file is ready for editing.
open
Submitted for review. The compiler validates the delta against the current graph.
approved
All reviewers have approved. Ready to apply.
applied
The delta has been merged into the main specification.
rejected
The proposal was rejected and moved to the archive.
archived
Manually archived without applying. Preserved for reference.
Metadata
Each proposal stores metadata alongside the delta spec:
{
"id": "2024-01-15T10-30-00-add-payments",
"description": "Add payment processing to billing module",
"status": "open",
"author": "agent",
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:45:00Z"
}Programmatic API
The proposal system is fully accessible via the compiler API:
import {
createProposal,
listProposals,
getProposal,
applyProposal,
archiveProposal,
} from '@prodara/compiler';
// Create a new proposal
const proposal = await createProposal(rootDir, 'Add payments');
// List all proposals
const all = await listProposals(rootDir);
// Apply an approved proposal
await applyProposal(rootDir, proposal.id);
// Archive without applying
await archiveProposal(rootDir, proposal.id);.prodara/changes/archive/ so you can review them later. Use archiveProposal() to manually archive a proposal without applying it. Next Steps
See Reviewers & Constitution to learn how proposals are reviewed, or Custom Workflows to integrate proposals into automated pipelines.