How do I keep AI from proposing the same bad pattern repeatedly?
Log the rejection in the decisions layer. bRRAIn's key decisions log captures "we rejected X because Y"; the Handler surfaces this at inference, so the agent doesn't re-propose X.
Why the same bad pattern keeps coming back
If an AI agent suggests a pattern you reject, and nothing records the rejection, the model will cheerfully suggest it again next week. The feedback never reached any surface the agent reads. Code review comments die in threads; Slack disagreements vanish into history; even a closed PR leaves no trace in the model's context. The agent does not have long-term memory of what your team rejected — so rejection is not actually a signal that reaches future inferences.
Turning rejection into a first-class decision
bRRAIn treats a rejection as a decision node in the POPE graph: "we rejected X because Y, dated D, affecting modules M". The node carries the alternative considered, the reasoning, and any related risks. The Document Portal hosts the structured template for capturing rejections alongside positive ADRs. The Consolidator merges new rejection nodes into the master context in near real time, so the agent sees them on the next request.
The Handler surfaces rejections at inference
Once rejections are graph nodes, the Handler loads the relevant ones into every generation prompt. When the agent considers writing code that matches a rejected pattern, the prompt already contains the rejection with its reasoning. The agent proposes a different approach — or, if it still proposes the rejected pattern, it cites why it thinks the earlier rejection no longer applies. Either way, the re-proposal stops being silent. The pattern becomes visible, challengeable, and resolvable.
Maintaining the rejection layer over time
Rejections, like any memory, decay without curation. A senior engineer or Platform Architect reviews the layer periodically — retiring rejections that no longer apply, sharpening ones whose reasoning has evolved. The bRRAInDev certification path formalises this curation responsibility. Done well, the rejection layer becomes one of the densest and most valuable parts of the graph, because every entry represents hard-won team judgment that would otherwise live only in one senior's head.
Relevant bRRAIn products and services
- POPE Graph RAG / Decisions Layer — stores rejections as first-class nodes alongside positive ADRs.
- Handler — surfaces rejections at inference so the agent stops re-proposing them.
- Consolidator — merges new rejection nodes into the master context in near real time.
- Document Portal — structured capture template for rejections and their reasoning.
- bRRAInDev certification path — formal curation responsibility for the decisions layer.
- Book a demo — watch a previously rejected pattern blocked at the next agent proposal.