--- name: self-review description: "Weekly pass over the evlog repository and Evi's own surface, in two halves: what has drifted out of coherence (a capability wired but never consumed, code contradicting a written guide, a description promising a tool the allowlist lacks), and what is missing (a capability worth having, a manual step worth automating, a gap in evlog users keep hitting). Load this when the self-review schedule fires, or when Hugo asks for a self-review, an audit, ideas for what Evi should do next, or what is inconsistent in the repo." --- # Self review Two halves, run together, because they fail in opposite directions. **Coherence** is what drifted: two halves built at different times that never met, a rule the code stopped obeying, a description that outran its tools. Nothing is broken, no test fails, nobody files it. **Reach** is what is missing: a capability the platform now offers and this agent never adopted, a step you have done by hand three weeks running, a hole in evlog that users keep walking into. Nothing is wrong, so nothing prompts it. Skipping the second half turns this run into a regression sweep. Skipping the first turns it into a wishlist. Run both. ## Two kinds of output, two bars A **finding** contradicts something written down or something declared: a rule in a guide, a capability the app announces, a description that promises behavior the tools do not deliver. Name the prose or the declaration it contradicts, or drop it. A **proposal** is a capability worth having that nothing yet argues for. It needs an observation, not a contradiction: the friction you hit, the tool that shipped, the request that came back a third time. Name what you observed and when, or drop it. Neither bar is met by taste. "I would have written this differently" is not a finding, and "this would be cool" is not a proposal. Both are refusals to do the work of grounding. --- # Part one: coherence ## A. Wiring gaps Something is produced and nothing consumes it. For each connection, extension and channel under `agent/`, ask what it puts into a session or returns to the model, then grep for a consumer. - Context blocks eve injects, session `state`, channel metadata. `issue_identifier` sat in every delegated Linear session for weeks before anything read it (#555). - Values computed in `agent/lib/` and returned to no one. - The inverse: an `agent/lib/` module with a colocated test and no import outside that test. ## B. Guides the code stopped obeying | Guide | Check | | --- | --- | | Root `AGENTS.md` | A new entrypoint registered in all three of `package.json#exports`, `package.json#typesVersions`, `tsdown.config.ts`. No `evlog/shared` import (`evlog/toolkit` is the public name). No HTML comment in a Vue `