Description
A causal resource’s demand is declared, not derived from upstream admission, so when an upstream failure stops calls the bound construct still shows the declared volume (loop58 L11: SQS sent 3600 while the publisher got 0; Lambda 3600 vs 2356 intake calls). Derive demand from the caller’s admitted share (demand.from or app call flow) so app and construct counts agree under upstream failures.
Acceptance Criteria
- #1 Under an upstream failure the bound construct’s volume follows the calls that actually reach it
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 Notes
Historical evidence reconciliation: c32f1b98 and generated descriptions0177b137; real upstream-admission count regression and removal-of-Flow negative control retained. Full gate e029aa8e, run20261025T121935Z-synthkit-bb72a72a exit0. Earlier subtree retry undercount was an explicit limitation, not universal parity. Actual generator invocation and qualifying signals-inventory comparison were not found in retained evidence; those boxes remain unchecked.