Improvement Sweep

The five gaps Heimdall's sweep looks for in a project's record, how it proposes a card per gap on the review queue, why the same idea is never proposed twice, when it runs on its own, what accepting a card does and what it costs: nothing.

By the end of this page you will know what the improvement sweep checks, where its cards appear, how to run it now and when it runs on its own, what keeping or dismissing a card does, and why it costs nothing.

A planning record grows by accretion: a requirement written in a hurry has no measure, a story has criteria for the happy path and none for the refusal, a rule has no worked example, an entity has no owner, a risk sits on the log with no mitigation. None of these stops a sprint, and all of them cost a conversation later. Heimdall's sweep reads the record for exactly these gaps and leaves one card per record on the review queue, so the analyst fills them when there is a quiet moment rather than when a developer asks.

What the sweep checks

CheckFlagsSkips
MeasureA non-functional requirement whose measure is emptyFunctional requirements; deprecated requirements
Negative criterionA story with no negative acceptance criterion, whether it has other criteria or noneTasks, bugs and spikes; done or cancelled stories
Worked exampleA business rule whose examples are emptyDeprecated rules
OwnerA data entity with no ownerDeprecated entities
MitigationA risk that is open, monitoring or mitigating with no mitigationAssumptions, issues and dependencies; closed risks

Each gap becomes an Improvement card titled with the record's reference, such as Add a measure to CRM-NFR-3, with a sentence on what to add and why, a one-line reason, and Open CRM-NFR-3, which opens the record's page with its flyout showing. The cards sit under Waiting for you on the Heimdall suggests rail of the project's overview, beside what the research left.

Running it

Check the record on the Heimdall suggests rail runs the sweep now and answers with a toast: how many gaps it found, or that nothing is missing. People who may start a brief import see it, on a project whose assists are on. The sweep also runs on its own:

  • Weekly, on every live project whose assists are on, early on Monday.
  • After a brief import is fully decided, since the records it just wrote are where the gaps usually are.

A sweep that finds nothing new still runs the retirement below, so the rail stays honest.

Why nothing is proposed twice

The card's title carries the record's reference, so the same gap on the same record has the same title every time. Before it proposes, the sweep reads every card the project already holds on the review queue and every idea people dismissed, and skips a gap whose title is among them: a card you kept stays kept, a card you dismissed is never raised again, a card still waiting is not doubled. A waiting card whose gap was filled since, because someone added the measure or the example, is taken down on the next sweep; a kept or dismissed card is left as a record of the decision.

Keeping and dismissing

The cards are suggestions like any other on the rail: Keep holds the note on the project for everyone to read, Dismiss drops it and remembers it. Neither writes to the record; the record is changed in its own editor, and the next sweep notices. Fill the gap first and the card leaves on its own; keep the card when the gap is meant to stay for now and you want it on the record; dismiss it when the check does not apply, such as a risk the client accepted as it stands.

What it costs

Nothing. The sweep reads the record and calls no model, so no usage is filed and the team's AI budget does not move. It is switched off with the project's assists, like every other suggestion.

The sweep is the deterministic half of Heimdall's standing suggestions. The judgement calls, whether a criterion can be verified or a rule contradicts another, stay with the quality review and the council, which read with a model and are metered.

What happens next

  • improvement.swept goes out with how many cards were proposed, how many were taken down and how many wait, so a dashboard can follow how complete a project's record is.
  • Keeping or dismissing a card emits import.suggestion_accepted or import.suggestion_rejected, as on every suggestion.
  • Nobody is notified; the rail is where the cards wait.

From the API and MCP

Permissions

ActionPermission
See the cardsimport:view-any, as staff
Run the sweep nowimport:create, with the project's assists on
Keep or dismiss a cardimport:update

Frequently asked

I fixed the record, but the card is still there. The card leaves on the next sweep: press Check the record, or wait for the weekly one. Keeping or dismissing it also closes it, but a dismissal is remembered and the same gap would not be raised again if the record regressed.

Can I turn one check off? Not per check. Dismiss the cards a check raises where it does not apply; the dismissals are remembered per record, so the check stays useful for the rest of the project.

Why did the sweep find nothing on a project with obvious gaps? It reads only the five shapes above. A vague criterion or a rule that contradicts another is not a structural gap; the quality review reads for those.

How is this guide?

Last updated on

On this page

What changed recentlyEvery release of Zuse Bifrost, with the pages it touched.

For AI agents: llms.txt · llms-full.txt