Draft stays draft
A candidate is visible as a candidate — including everything an agent proposes. Nothing becomes binding because somebody wrote it down and nobody objected.
The question is not where to write specifications. You have been avoiding that for years and you were mostly right to. The question is how to know, in one look, which of the things already written still hold.
Everything the platform does with a record follows from the state it is in. That is a small idea, and it is the one the rest of the product is built on.
A candidate is visible as a candidate — including everything an agent proposes. Nothing becomes binding because somebody wrote it down and nobody objected.
An Authority record is what the agent must follow. It needs acceptance criteria, and it cannot sit in an open conflict with another binding record.
When a record is retired it stops reaching the agent at that moment. It is not deleted — it stays readable as history and stops being an input.
A new record replaces an old one with an explicit relation, so the reader sees both what holds now and what it succeeded.
Changing an Authority record asks for a reason, kept with the change. You can see why something moved without reopening the decision.
Requirements move Draft → Approved → Authority on a review board under the same rules as the form. Tenants can require a second approver.
Ten record types cover intent, requirements and constraints. Each is a short statement with its reasons and its criteria, connected to the rest explicitly.
Objectives; business, stakeholder, functional, non-functional, technical and project requirements; product, business and project constraints — each with its own code.
Criteria are listed one by one, so work covers them, tests verify them and an agent reports against each.
Refines, realizes, constrains, depends on, replaces, conflicts with. The chain from a requirement up to its objective is always one click away.
Architecture decisions with their consequences, tenant-wide standards and a shared glossary sit next to the records they govern.
Every record type of a project side by side, filtered by state, to see the whole picture at once.
Who changed what and when — a person, an agent, GitHub or CI — with field-level before and after.
Most teams cannot answer that, and the agent cannot either — which is why it keeps following the ones that are not.