Command Palette

Search for a command to run...

Build intelligence

Build reports

Automatic build metrics, the cache rule, and offline regression analysis.

What a build report is

Every successful native Go/Rust build (build, rebuild, zero-downtime deploys) automatically prints a Build Report and records it with the version metadata - no flags, no configuration, no network. It works fully offline.

Output
→ Build Report  Application   api  Version       v12  Compiler      Go 1.27  Duration      31.2s  Cache         COLD (go-build-cache)  Binary        14.8 MB (linux/amd64)  Commit        8f31c2a  ────────────────────────────────────────────────   Regression Analysis  Compared against 1 previous comparable build.   Binary size    Previous      14.1 MB    Current       14.8 MB    Change        +0.7 MB (+4.9%)   Build duration    Comparison skipped:    cache mode differs from the previous comparable build (COLD → HIT)

What is captured

  • Application and version
  • Language and compiler/toolchain version (go version / rustc --version)
  • Build start/end time and duration
  • Binary size and target platform (artifact type, size, platform)
  • Cache status: COLD = real compilation happened, HIT = served from the compiler's build cache
  • Git commit when available (unavailable outside a git repository)
  • The build arguments you passed via --build-arg

The cache rule

Binary size remains a valid regression signal across cache states when the artifact, toolchain, platform, and matrix context are comparable - a cache hit does not change what the compiler produces.

Regression analysis

Regression analysis compares the current build against the previous 5 comparable builds. Comparable means the same application, language, toolchain, target platform, and artifact type - with cache state ignored for size comparisons and matched for duration comparisons.

Alert thresholds

SignalAlert fires when
Binary sizegrowth ≥ 1 MB or ≥ 5% versus the previous comparable build, plus an N-build average baseline when enough history exists
Build durationslowdown ≥ 25% and ≥ 2s versus a previous build in the same cache mode (thresholds avoid noisy micro-changes)

Interpreting results

The report is the fastest way to detect unexpected binary growth, compilation regressions, or toolchain changes - the compiler version in the report makes accidental toolchain bumps visible. A comparison that is skipped is information, not a failure: the report would rather say Comparison skipped than show a percentage that compares a cold compile to a cache hit.

Regression analysis is pure observability: missing history never fails a build, and a reporting problem only prints a warning.

phelix build-report

Read-only inspection of stored build reports - never triggers a build, works fully offline:

Terminal
phelix build-report myapp            # 5 most recent reportsphelix build-report myapp --limit 10
Output
→ Build reports for 'myapp' (2 most recent)→ v2  2026-08-26T03:25:00Z    Compiler   Go 1.27    Duration   5.2s    Cache      HIT (go-build-cache)    Binary     14.9 MB (linux/amd64)    Commit     8f31c2a    Args       -trimpath→ v1  2026-08-26T03:20:00Z    ...

Versions recorded before build reporting existed show no build report metadata. Use build-report to review stored build history before investigating a performance or size issue.

Storage format

The report lives inside versions.json as the optional additive build_report field per version - there is no separate build database, and everything works offline. See version metadata for the exact shape. A malformed payload degrades to "no report" instead of breaking the version index.