Skip to content

Evolutions register ​

The register keeps everything worth remembering that is not handled right away: a defect spotted in passing, an idea, an improvement, a discovery. You come here to have the agent note these things, sort them, then decide with you what becomes of them.

What you ask the agent ​

💬 You ask your agent

« Log an anomaly: the export crashes when the name contains an apostrophe. »

→ The agent callseffortless_evolution_add
  • type = Anomalie
  • title = The export crashes when the name contains an apostrophe
💬 You ask your agent

« Add an improvement idea: a dark mode for the Release screen. »

→ The agent callseffortless_evolution_add
  • type = Amélioration
  • title = Dark mode for the Release screen
💬 You ask your agent

« Set evolution EVO-041 to criticality 1 and priority 2. »

→ The agent callseffortless_evolution_edit
  • evo_id = EVO-041
  • criticality = 1
  • priority = 2
💬 You ask your agent

« What should I pick up next? Show me the queue. »

→ The agent callseffortless_evolution_queue
💬 You ask your agent

« Turn evolution EVO-041 into an epic in the Data zone. »

→ The agent callseffortless_evolution_graduate
  • evo_id = EVO-041
  • zone = Data
💬 You ask your agent

« Evolution EVO-041 is handled: resolve it, it was fixed by the export fix. »

→ The agent callseffortless_evolution_resolve
  • evo_id = EVO-041
  • note = Fixed by the export fix
💬 You ask your agent

« Retire EVO-041, we will not do it: the customer changed their mind. »

→ The agent callseffortless_evolution_retire
  • evo_id = EVO-041
  • reason = The customer changed their mind
💬 You ask your agent

« EVO-041 can only start after epic 12 is closed. »

→ The agent callseffortless_evolution_depends_on
  • evo_id = EVO-041
  • target = 12

What the agent does ​

Log an evolution ​

effortless_evolution_add records the entry. The type is one of five markers: Découverte (discovery), Fonctionnalité (feature), Amélioration (improvement), Anomalie (anomaly) or Test. The agent also passes the title, and if needed:

  • detail: the full text;
  • reporter: who reports the entry;
  • criticality and priority: integers from 1 to 3, 1 being the most urgent. Without them, the entry stays unranked;
  • status: Planifié (planned) by default. For a given type (other than Anomalie), if the quota of active entries is reached, the entry is set to En Attente (on hold);
  • born_marker: a stable text fragment that names the defect in the git-tracked code. During a piece of work, the engine then checks whether the defect existed before the story. If it was born from that work, the entry is refused: you fix it within the work.

The reply carries an implication: suggested verbs. The agent never triggers them on its own.

Read and sort ​

  1. effortless_evolution_list: read-only. Optional filters: status (Planifié, En cours, En Attente, Résolu, Retiré), query (case-insensitive search in the identifier, title and detail) and form (full or compact).
  2. effortless_evolution_queue: read-only. The queue of active entries, already sorted by the engine: first those whose dependency is no longer pending, then criticality, priority, age, identifier. It answers "what do I pick up next". limit bounds the window (25 by default, 200 at most); the total is returned alongside.

Qualify ​

  1. effortless_evolution_edit: corrects criticality, priority and detail. The previous detail text is kept, never overwritten. Also works on an entry that is already resolved or retired. Touches neither the title, the status nor the type.
  2. effortless_evolution_requalify: switches an entry from Anomalie to Amélioration, or the reverse, and nothing else. The identifier does not change.
  3. effortless_evolution_set_ready: sets or clears the "ready to graduate" flag (ready).

Order by dependency ​

effortless_evolution_depends_on declares that an evolution (evo_id) waits for another evolution or an epic (target) to be closed. It falls behind in the queue until the target is closed, without being retired or dropped from the count. Without target, the dependency is lifted.

Promote into an epic ​

effortless_evolution_graduate attaches the evolution to an existing epic (epic_id) or creates one and activates it from a zone (with optional title and description). It creates no story: that is the next step (Run the work).

Close without going through an epic ​

  1. effortless_evolution_resolve: resolves the evolution. The note, which says what settled it, is mandatory.
  2. effortless_evolution_retire: explicitly sets it aside (status Retiré). The reason is mandatory. Works even on an evolution already promoted into an epic; never sets Résolu.

Upgrade an old register ​

Two verbs are used once, on a register inherited from an earlier version. They can be replayed without side effects.

  1. effortless_evolution_migrate_markers: converts the old type field (finding, besoin, amélioration, refonte, chantier) to one of the five markers. No identifier changes.
  2. effortless_evolution_migrate_levels: converts hand-written levels to integers. Its reply names every value it could not convert.

What you get ​

  • The register in the Backlog screen, Registre root, Registre des évolutions tab: identifier, Type, title, State, Criticality, Priority, with search and the Marker and Hide Resolved/Retired filters.
  • The same register rendered as Markdown in blueprints/4-Evolutions.md.
  • A promoted evolution becomes an epic visible in the Backlog, under Project.
  • When an epic is closed, the evolutions it leaves In progress are named: they do not resolve themselves.

When the agent is refused ​

SituationWhat the refusal saysWhat to do
type marker outside the fivecadrage:markerInvalidPass Découverte, Fonctionnalité, Amélioration, Anomalie or Test.
status outside the listcadrage:statusInvalidPass Planifié, En cours, En Attente, Résolu or Retiré.
criticality or priority outside 1 to 3cadrage:levelOutOfRangePass an integer from 1 to 3, or omit the field to leave the entry unranked.
Anomaly filed although it was born in the current piece of workcadrage:evolutionNeeDuChantierFix it within the work: task_add opens the task that carries it.
Unknown evolution identifiercadrage:evolutionUnknown (or cadrage:evolutionNotFound for graduate)Read the register with evolution_list and use the right identifier.
form other than full or compactcadrage:evolutionSearchFormInvalidePass full or compact.
evolution_edit with no fieldcadrage:evolutionEditEmptyPass at least criticality, priority or detail.
Resolving, retiring or marking ready an evolution already Résolu or Retirécadrage:evolutionAlreadyTerminalNothing to lift: a terminal status can no longer be changed. Open a new entry if the subject comes back.
Requalifying anything other than Anomalie to Amélioration, or the reversecadrage:requalifyNotAllowedRetire the entry, then open one with the right marker.
Retiring without a reasoncadrage:evolutionRetireReasonRequiredPass reason.
Resolving without a reasoncadrage:evolutionResolveNoteRequiredPass note.
Dependency that closes a cycle, or of an evolution on itselfcadrage:dependencyCycleChoose another target.
Dependency on a non-existent evolutioncadrage:dependencyUnknownCheck the identifier with evolution_list.
Dependency target that is neither an evolution nor an epiccadrage:dependencyUnknownShapePass the identifier of an evolution or an epic.

Effortless — ArboRithm