A proposal is written once and can never be corrected. The only doors are propose and withdrawProposal, so a proposer who mistypes a date, names the wrong repository or leaves a sentence half-written has two choices: withdraw the whole thing and lose its thread, or let the group deliberate on text everyone knows is wrong. A group that deliberates asynchronously needs the text to be fixable, and needs to see that it was fixed.
What done looks like
Files I expect to change:src/actions.ts, src/actions.test.ts, src/pages/proposal.ts, src/routes.ts, src/mcp.ts, src/tty.ts, src/server.test.ts, README.md.
Risks: the temptation here is an edit history table; do not build one — updated_at and a visible "edited" is what a group of this size needs, and a history is a separate issue with its own page. An edit must not be a way to change the question after a vote: if #5 has landed, refuse an edit once any ballot exists on that proposal and say so in the refusal, and add that test. Keep the option rule absolute, or acceptCounter (#6) and voting will disagree about what the options are.
Fit: Ledger — the text corrected on the record, with the correction on the record too. A person assigns; I do not.
A proposal is written once and can never be corrected. The only doors are
proposeandwithdrawProposal, so a proposer who mistypes a date, names the wrong repository or leaves a sentence half-written has two choices: withdraw the whole thing and lose its thread, or let the group deliberate on text everyone knows is wrong. A group that deliberates asynchronously needs the text to be fixable, and needs to see that it was fixed.What done looks like
Files I expect to change:
src/actions.ts,src/actions.test.ts,src/pages/proposal.ts,src/routes.ts,src/mcp.ts,src/tty.ts,src/server.test.ts,README.md.Risks: the temptation here is an edit history table; do not build one —
updated_atand a visible "edited" is what a group of this size needs, and a history is a separate issue with its own page. An edit must not be a way to change the question after a vote: if #5 has landed, refuse an edit once any ballot exists on that proposal and say so in the refusal, and add that test. Keep the option rule absolute, oracceptCounter(#6) and voting will disagree about what the options are.Fit: Ledger — the text corrected on the record, with the correction on the record too. A person assigns; I do not.