Commits
Tarun Sukhani authored 7c2421d14f3
feat(boot): log one "Started in" line with per-phase timings (PF-178) Nothing said where a start spent its time, so a slow boot could only be profiled from outside. Every application start now logs one INFO line: Started in 703 ms: jvm=63 conf=37 logging=151 modules=0 plugins=15 classes=2 templates=- routes=259 onApplicationStart=37 onApplicationStart.play.plugins.MetricsPlugin=35 ... afterApplicationStart=0 bind=74 other=63 play.utils.BootTimings holds one start's figures. Play, PluginCollection and Server charge phases to it with one-line marks at the call sites, never inside the timed method, so phases cannot nest and "other" (the total minus the phases) cannot go negative. PROD logs once from Server.main, after the server is listening, with the JVM's uptime as the total. Where the java.management module is missing the total counts from Play.init and jvm prints "-": Server.main exits on any Throwable, so the line must not be able to stop a boot. DEV logs one line per Play.start(), with the boot-only phases as "-". play precompile logs nothing. A phase that did not run prints "-", and a plugin whose onApplicationStart rounds to 0 ms is left out. This is the measuring half of the PF-178 spike; the decision it feeds is recorded separately. Docs: "Startup time" in production.textile, and AGENTS.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KDUoh3KhBpfjXn4rV6H356