{"session": "d934c0db-2307-441f-978e-6fba4b5950f9", "env": "main", "command": "journal todo create \"The viewer reads a plan's waiting count from the server, not its own copy\" --brief \"Found by a house-style review, 2026-10-11. src/web/src/domain/plans.js gained awaitingMergeOf and standingOf, which re-implement in JavaScript the server's own awaits_merge rule - not completed and pending.worktree - and duplicate the wording beside it. The server already computes waiting in PlanSummary (src/features/plans/summary.py). Plumb that field to PSection.vue and delete the JavaScript copy, so the rule lives in one place. PSection also calls rows('todo') and awaitingMergeOf several times in one template.\" 2>&1 | tail -1; journal todo create \"The server warms a board through the controller, not a string key\" --brief \"Found by a house-style review, 2026-10-11. warm_board in src/serve.py reaches features.FEATURES['kanban'] by string key and builds a Context and a Record by hand to warm a cache, where this project's habit is to reach a controller by its class. Its build(journal, 0, 0, '') call also passes three bare arguments that say nothing at the call site. Follow warm_hooks beside it, but take the controller by its class and name the arguments.\" 2>&1 | tail -1", "parts": ["journal todo create \"The viewer reads a plan's waiting count from the server, not its own copy\" --brief \"Found by a house-style review, 2026-10-11. src/web/src/domain/plans.js gained awaitingMergeOf and standingOf, which re-implement in JavaScript the server's own awaits_merge rule - not completed and pending.worktree - and duplicate the wording beside it. The server already computes waiting in PlanSummary (src/features/plans/summary.py). Plumb that field to PSection.vue and delete the JavaScript copy, so the rule lives in one place. PSection also calls rows('todo') and awaitingMergeOf several times in one template.\" 2>&1 | tail -1", "journal todo create \"The server warms a board through the controller, not a string key\" --brief \"Found by a house-style review, 2026-10-11. warm_board in src/serve.py reaches features.FEATURES['kanban'] by string key and builds a Context and a Record by hand to warm a cache, where this project's habit is to reach a controller by its class. Its build(journal, 0, 0, '') call also passes three bare arguments that say nothing at the call site. Follow warm_hooks beside it, but take the controller by its class and name the arguments.\" 2>&1 | tail -1"]}