Motivation
blazerules exposes output-detail tiers (COUNTS → CODES → DECISIONS → BITMASKS) so a caller pays only for the per-record detail it actually materializes — materialization is the cost, so the caller picks the least-expensive level that answers its question.
aeb's analogue is build/test reporting verbosity. Today the [telemetry] block is a single fixed renderer emitted at the end of every build. There's no way to ask for "just the pass/fail totals" (cheap, CI-friendly) versus "per-node cache attribution and timing" (expensive, debugging). This is the same least-expensive-level-required principle, and it directly targets the ◐ Build telemetry and ◐ Test orchestration rows in the scope table.
Proposal
Add --report=<tier> with escalating detail (names illustrative):
| Tier |
Materializes |
counts |
aggregate pass/fail, total targets, total wall-time. No per-node rows. |
targets |
counts + per-target line: label, wall-time, cache hit/miss. |
per-rule |
targets + per-test-target pass/fail counts (the 14/14 PASS / 2/3 FAIL granularity already parsed from aeocha). |
full |
per-rule + per-node toolchain-invocation detail (what the current block plus future renderers show). |
- Default tier = today's behaviour (whatever the
[telemetry] block currently emits), so no regression.
- Renderer stays pure-render over the in-memory telemetry records +
.rc markers — same shape as tools/aeb-graph.ae reading _edges.txt. No new I/O sources.
- Tier is a filter on what gets rendered, not what gets collected — records are collected once; the tier decides how much is printed.
Acceptance criteria
Not being asked
Not asking for file-dump or web-view renderers (those are separate build.render_telemetry plug-ins already noted in LLM.md). This is only the CLI verbosity dial over the existing stdout renderer.
Motivation
blazerules exposes output-detail tiers (
COUNTS→CODES→DECISIONS→BITMASKS) so a caller pays only for the per-record detail it actually materializes — materialization is the cost, so the caller picks the least-expensive level that answers its question.aeb's analogue is build/test reporting verbosity. Today the
[telemetry]block is a single fixed renderer emitted at the end of every build. There's no way to ask for "just the pass/fail totals" (cheap, CI-friendly) versus "per-node cache attribution and timing" (expensive, debugging). This is the same least-expensive-level-required principle, and it directly targets the◐ Build telemetryand◐ Test orchestrationrows in the scope table.Proposal
Add
--report=<tier>with escalating detail (names illustrative):countstargetscounts+ per-target line: label, wall-time, cache hit/miss.per-ruletargets+ per-test-target pass/fail counts (the14/14 PASS/2/3 FAILgranularity already parsed from aeocha).fullper-rule+ per-node toolchain-invocation detail (what the current block plus future renderers show).[telemetry]block currently emits), so no regression..rcmarkers — same shape astools/aeb-graph.aereading_edges.txt. No new I/O sources.Acceptance criteria
aeb --report=counts <target>prints aggregate-only, no per-node rows.aeb --report=full <target>prints everything the current[telemetry]block does, plus per-node detail.tests/string-builder coverage for the tier→render mapping.Not being asked
Not asking for file-dump or web-view renderers (those are separate
build.render_telemetryplug-ins already noted inLLM.md). This is only the CLI verbosity dial over the existing stdout renderer.