Agents
How to Change AI Project Requirements Without Losing the Thread
A requirement is not changed because it was rewritten in chat. Trace the impact, update dependent work, and block stale checks before the team moves on.
Use this when
you need the work to hold up in real use.
Record a consequential AI project requirement change, trace its effect on tasks and checks, and stop stale work until the right owner reviews it.

A founder changes one rule for order cancellation. Customers should now be able to cancel only until packing starts, not until the order ships.
The change makes sense. Support has seen too many packed orders pulled apart at the last minute.
One AI worker updates the help text. Another keeps the cancel button active until shipment. The old check still expects the old rule, so it passes.
The team now has three versions of the same product promise. Each one looks reasonable on its own.
Changing the sentence in chat did not control the change. The team also had to find the work and checks that depended on the old sentence. This guide shows how to do that with one small requirement record, one change record, and one gate that can stop known stale work.
Key takeaways
- A requirement change is controlled only after its reason, decision, owner, and downstream effects are visible.
- Keep one stable requirement ID while preserving old, proposed, and current wording as separate versions.
- Block known work that still follows the old rule. Warn when work has no requirement link instead of pretending it is safe.
- Treat every link as a pointer. Fresh completion evidence still has to prove the changed result.
What is requirement change control for AI work?
Requirement change control is a way to keep one product rule and its effects together. It records what changed, why it changed, who accepted it, and which work must now be reviewed.
This starts after a requirement already exists. A source-of-truth process owns the first request. Change control begins when the team wants to replace part of that accepted truth.
Think of a paper card for the cancellation rule. The card has one permanent number. It shows the current rule, its owner, and the check that proves the rule works. Tasks and checks point back to that number.
When the rule changes, the team keeps the old version for history. It adds a change record, reviews the effects, and marks the new version as current. The permanent number stays the same.
That stable number matters because wording is easy to copy. A named record is easier to find and update. Engineers may call the record a requirement node. The saved links between records form a requirements graph. You do not need a graph database. A small table with dependable links is enough.
This control does not own the whole workflow. It does not define every task field or prove that a test passed. It answers a narrower question: what must stop or change when an accepted product rule changes?
What should one requirement record hold?
Start with fields that help someone make a decision. A large template creates busywork if nobody uses it.
The smallest useful record gives the rule one stable name, keeps its reason close, and points to the work and check that depend on it.
NASA's systems engineering guidance includes a requirement ID, rationale, owner, source links, and a verification method in its requirement metadata. A small product team can use the same logic with fewer fields.
The table below is the small version for the cancellation rule.
A link is a pointer, not proof. It gives the reviewer a place to inspect. It does not prove that every affected item is linked or that the linked item is correct.
The owner should also be current. A dead link to a former owner is a hidden blank. Confirm the owner and source before the team acts on a serious change.
| Field | Plain purpose | Cancellation example |
|---|---|---|
| Stable ID | Give every linked record one name that does not change. | REQ-CANCEL-01 |
| Current wording | State the rule people should follow now. | Customers may cancel until packing starts. |
| Version status | Separate current, proposed, and old versions. | Version 3 is current. Version 2 is superseded. |
| Source | Show where the need came from. | Support review of packed-order cancellations. |
| Owner | Name who can clarify the rule. | Product lead. |
| Rationale | Preserve why the rule exists and its key assumptions. | Reduce warehouse rework without trapping unprocessed orders. |
| Acceptance check | State the result that would satisfy the rule. | Cancellation is refused after packing begins. |
| Affected records | Link the known task, product area, copy, check, and release decision. | Task T-42, cancel action, help text, check C-17. |
How do you trace the change before work continues?
Do not erase the old sentence. Save it beside the proposed one.
A change record is a short record for the proposal and its decision. It should name the requirement, old wording, proposed wording, reason, requester, decision owner, affected records, and next action.
The old version becomes superseded after approval. That means it stays in history but is no longer the rule people should follow.
Traceability means you can walk from the changed rule to each known task and check. An impact link is the saved pointer that makes this walk possible.
Microsoft's current Azure DevOps guidance says teams should examine dependencies, current work, planned work, and the risks of accepting or rejecting a change. It also supports lightweight change-control forms. A small team does not need a committee, but it still needs a visible decision.
For the cancellation rule, the review should look like this before anyone keeps building.
Approval is not the last step. Each affected record needs an owner and a visible result. If the product lead accepts the new rule but nobody updates the task or check, the team has approved drift.
| Affected item | Old rule | Effect | Owner | Required update | Result |
|---|---|---|---|---|---|
| Requirement | Cancel until shipment. | Accepted wording changes. | Product lead | Approve version 3 and keep version 2 in history. | Open |
| Product task | Keep the action available before shipment. | Acceptance rule is wrong. | Product owner | Update the task and review finished work. | Blocked |
| Cancel action | Shipment state controls the button. | Product behavior is wrong. | Build owner | Use packing state instead. | Blocked |
| Help text | Cancel before shipment. | Customer promise is wrong. | Content owner | Replace the sentence after approval. | In review |
| Final check | Allows cancellation while packed. | Old proof approves the wrong product. | Review owner | Replace the expected result and rerun it. | Blocked |
How do you block work that still follows the old rule?
A drift gate is a check that can stop known stale work. It reads the current requirement, open change records, and the links to affected work.
The gate should be honest about what it knows. It can block a linked task that still follows the old rule. It cannot claim that an unlinked file is safe.
Use three outcomes.
Do not turn WARN into quiet approval. It means the map has a gap. The right response may still be to stop, but that decision belongs to the team unless the policy makes this warning a block.
A useful block explains the repair path. It should name the open change, affected record, old version, owner, and next check. A red light without a repair path just moves the confusion into another tool.
The cancellation change can clear only after the current requirement is accepted, each known task and product surface is updated, and the old check is replaced.
Change control marks the old proof stale. Completion evidence decides whether the new proof is good enough.
| Verdict | Meaning | Required response |
|---|---|---|
| PASS | Required links point to the current rule, and no important change is open. | Continue. |
| BLOCK | An important change is open, or a known task or check still uses the old rule. | Update the record, close the decision, and rerun the gate. |
| WARN | Work has no current requirement link, so the system cannot classify it honestly. | Review and link it, or record why the link does not apply. |
What happened when I tested the change gate?
I tested this rule against a frozen public version of WarpOS, my agentic operating-system project for long-running AI work.
The experiment used a disposable copy of commit 8b083d78948263c998134ac5d34947c383e17a85. It created one made-up feature, two made-up requirements, and one made-up change record. It made no network call and did not read or change live WarpOS work.
The actual frozen graph builder and gate handled three cases.
The second result has an important detail. The stale requirement was linked to its open change record, so the stale-coverage check was green. A separate rule blocked the unresolved Class C change. Recording the change made it visible. It did not make the decision complete.
The third result stayed a warning. The frozen gate found the unmatched file but did not treat it as a red block. The JSON result still reported ok: true. The article keeps that limit instead of claiming the graph prevents every kind of drift.
The experiment proves only these three synthetic control paths at the frozen commit. It does not prove universal links from intent to code or tests. It does not test production reliability, safety, concurrency, release policy, approval quality, or human judgment.
| Case | Exact gate result | Exit | Meaning |
|---|---|---|---|
| Complete graph | 4 green, 0 yellow, 0 red | 0 | PASS |
| Open Class C change linked to one stale requirement | 3 green, 0 yellow, 1 red | 2 | BLOCK |
| Staged TypeScript file with no requirement mapping | 4 green, 1 yellow, 0 red | 1 | WARN |
What did WarpOS reveal about requirements control?
WarpOS already had a serious requirements lane at that frozen commit.
Its graph builder read named stories, dependencies, acceptance criteria, and implementation paths. It built reverse links from files to requirements. It also saved hashes for three main specification files so the gate could spot a graph built from older text.
The gate checked that the graph existed, its counts matched its contents, and those saved hashes were current. It blocked an open Class C change. It also blocked a stale requirement with no open change record that named it.
Those are real controls.
The gaps are just as useful. The graph builder left feature-level test links empty. The staged-file check treated an unmatched JavaScript or TypeScript file as a warning. A marker could also allow that warning. The separate goal_verification lane could connect acceptance checks to named tests, but it applied only when a plan opted in.
The frozen result can be summarized without pretending it is complete.
The design lesson is simple. A rich map is still a claim about coverage. State what the map reads, what the gate blocks, and what remains a warning.
| Observed control | Gap | Proposed small-team rule |
|---|---|---|
| Stable requirement and story IDs | A parser can miss records outside its documented shape. | Test the parser against the formats the team really uses. |
| Implementation paths linked to requirements | New files outside the map warn instead of block. | Review every warning and choose when policy should fail closed. |
| Hashes cover three core specification files | Other requirement files are outside that freshness check. | Name the exact files covered by the gate. |
| Open Class C changes block | Lower classes depend on a separate policy. | Define what counts as important for your team. |
| Opted-in sprints can require named test links | The lane is optional, and a pointer does not prove a pass. | Require fresh proof when a change affects a final product promise. |
How can your team control one change this week?
Choose one change that can alter active work or a final check. Do not begin with the whole product.
Give the current requirement a stable ID. Save the old and proposed wording. Name who requested the change and who can accept it.
List the known task, product surface, customer copy, check, and release decision that depend on the rule. Give each one an owner.
Place the gate where work really moves forward. A prompt can draft the records. It cannot stop a task, merge, or release unless a real workflow check reads them.
Plant three tests before trusting the control. A complete current graph should pass. An open important change with known stale work should block. Unmatched work should warn and name the gap.
Use the prompt below to draft the records and verdicts. A person still needs to confirm the facts, accept the product decision, and connect the gate to the real workflow.
FAQ
What is AI requirements change management?
It is the process for recording a change to a product rule, reviewing its effects, deciding it, and updating or blocking the AI-assisted work that depended on the old version.
What is a requirements graph?
It is a set of named requirement records and useful links between their sources, tasks, product areas, checks, and releases. A small team can keep it in tables or work records. It does not require a graph database.
When should a requirement change block work?
Block when an open change can alter an active task, product promise, interface, acceptance rule, final check, or release decision. Small wording fixes can stay in history when they change none of those things.
Does traceability prove the build is correct?
No. Traceability helps a reviewer find known effects. A link does not prove that the target is current, correct, complete, or passed.
Can a prompt enforce requirement change control?
No. A prompt can draft records and flag gaps. Enforcement needs a check where the real task, merge, or release decision happens. Every path that can move the work needs the same rule.
Conclusion
A requirement can change because the team learned something useful. The dangerous part is letting the old and new rules guide work at the same time.
Give the rule one stable ID. Keep the old version. Record the reason, decision, owner, affected work, and fresh check.
Then test one gate with a passing graph, an open important change, and unmatched work. The outcomes should be different: pass, block, and warn.
That is how a product team changes its mind without making every worker guess which version is real.
Sources
- Microsoft: Manage change in Azure DevOps
- Microsoft: About end-to-end traceability
- Microsoft: Default processes and process templates
- IBM: Requirements traceability in DOORS Next 7.2.0
- IBM: Configuration management in DOORS Next 7.2.0
- NASA Systems Engineering Handbook, Rev 2
- WarpOS frozen requirements gate
- WarpOS frozen requirements graph builder
- WarpOS frozen requirements drift-gate pattern
- WarpOS frozen sprint trace template
- WarpOS frozen goal-verification schema
- WarpOS frozen goal-verification workflow boundary
Next move
Have one workflow that should move faster?
Bring the process, the bottleneck, and the outcome. I can help diagnose it, design the human and AI boundary, build the smallest working MVP, and measure whether it deserves another iteration.
Start with one workflowAbout the author
Related articles
Keep going
What an AI Building System Needs: 12 Practical Parts
A plain-language guide to the 12 parts that keep AI-assisted work accurate, reviewable, and recoverable, backed by a frozen WarpOS audit.
How to Make AI Tasks Control the Work, Not Just Describe It
A plain guide to building AI task and bug records that control status changes and refuse unsupported claims of done.
How to Prove AI Work Is Actually Done
A practical completion-evidence contract, runnable three-case experiment, and frozen WarpOS release lesson for teams that need to verify AI agent output.
