Description
Blueprints cannot declare app-defined business metrics (counters, histograms) with names they own. Useful for in-app metrics such as review outcomes or grounding ratios when content capture is off. Names live only in the blueprint and cite their source; the catalog invents none.
Acceptance Criteria
- #1 A blueprint can declare a custom counter or histogram with labels and a source citation
- #2 Load rejects a declared name without a source
Definition of Done
- #1 just check (fmt-check, lint, gen-check, env-check, docs-check, test, race, hygiene, ui-check, compose-check, helm-test, lab-check, signal-fidelity)
- #2 just gen (only if a blueprint field, construct/workload config struct, or a skill under plugins/synthkit/skills/ changed)
- #3 just dump — inventory diffed against signals/
Implementation Plan
Extend existing app metric DSL minimally with source admission and public-boundary counter/histogram proofs.
Final Summary
Delivered source-citation-required app custom metrics in f9332c028900c3b6b5b37e738d94430c31111711. Public load-run proof verifies cumulative counters and histograms, bounded labels and native mirroring; absent citations reject. Namespace collision red-green prevents custom, profile and legacy family overlap while legacy-only behavior remains compatible. Schema, canonical guide and skill regenerated/reconciled. Independent repair review, aggregate review with zero findings and full composed check including race passed at pushed tip 802deabd549fa00c0c473ccfbaa882a23891adbc. Citation presence is not authenticity validation.