Sentence Case for Engine Status Text
Make card detail and finish messages read as prose, without disturbing the tokens inside them
0 milestones 1 sprints 4 agents
2 plan 1 execute 1 review
203k peak context
22m 15s total 17m 46s per sprint
1m 29s plan 12m 42s execute 4m 36s review
14 edits 109 commands
codex harness
Gantry's build engine narrates itself through activity cards: detail text while a stage is running and finish text when that stage closes. This job cleaned the engine-emitted side of that stream, applying sentence case where a message starts with prose while leaving paths, branch names, verdict tokens, commands, and interpolated values unchanged.
The work matters because the TUI and headless prose stream both display these strings as authored. The rule now lives at the source of each message instead of in a renderer that would have to guess which fragments were prose and which were machine-facing data.
How this walkthrough is structured
Feature
What did the run build and ship?
Engine card detail and finish messages now start in sentence case where they begin with prose, and current build modules still carry that authored-text convention.
Build
How did Gantry structure the work?
The job was small enough to carry as a single grep-driven sweep, with the sprint staying green and the only recorded trouble appearing later at integration.
Engine Detail Case
2 agents 17m 46s wall time 203k peak context
The commit touched the build drivers, gate and finish paths, mock stream, smoke coverage, and exact-string tests so emitted status text opens with capitalized prose. In the current tree, the same convention is visible in source strings such as planning, gate authoring, goal checks, milestone review, merge completion, and run completion. The older per-sprint driver file no longer exists as a separate source file, so part of this change has been folded into later build-engine structure. The observable rule remains: prose-leading details are capitalized at emission time, while values such as branch names, paths, and verdict words are still passed through as data.
This sprint was asked to complete the part of the casing cleanup that the earlier render-layer work had left open: the strings emitted by the build engine itself. The brief made grep-driven discovery the work list, which kept the task bounded for a fresh agent without relying on a remembered sample of events. Most of the boundary was negative: do not add display-time capitalization, do not rewrite parser or journal values, and preserve machine tokens exactly. The sprint passed its own gate and review without a repair, so the run record places no local stress on this cut.