Authored design — 2026-09-15. Section 3. This cascade elaborates the existing checklist item. It is not a dispatch, implementation receipt or completion verdict. Work outside WM-01–14 still requires Joe’s explicit greenlight; having a cascade is necessary but not permission.
Section 3/4 index · Exact TODO · Cascade JSON
Individually feasible choices may overspend a shared ancestor budget. R11 must restrict the actual competing field and retain its node-specific lifecycle, rather than display an unused budget.
R11 hierarchical budget. OPEN: actual ranked-field shared-budget restriction and consumer, independent lifecycle evidence. All seven required lifecycle cells remain obligations; reporting them absent does not complete R11. Built evidence: Standalone arbitration and some integration work; census admits absences
This is the checklist’s dated evidence account, not a new deployment census. Existing source/test evidence keeps its bounded credit. The acceptance obligation above governs this design.
Pattern: aif/hierarchical-budget-aware-action-selection
Identify hierarchy nodes, available budgets, units and every competing candidate’s charges. Produce a common allocation problem from the ranked field; local budgets cannot be summed without checking shared ancestors.
Pattern: aif/hierarchical-budget-aware-action-selection
Use the existing authorized restriction/selection law and retain included, downgraded and refused choices with reasons. Do not import the seed pattern’s heuristic penalty or lambda into canonical G without authority.
Pattern: wm-connected-learning/modulation-needs-an-applicable-consumer
Pass the actual feasible result to the selector/enactor and retain effective debits under the same candidate identity. Show what an over-budget alternative would have been; unused arbitration output does not satisfy the node.
Pattern: wm-connected-learning/modulation-needs-an-applicable-consumer
Retain commissioned, dispatched, parked, returned, checked, recorded and surfaced node-linked evidence. Reconcile actual charges with outcomes and remaining budget. Seven honest absent cells are still seven unfulfilled obligations.
Each node’s stated artifact is the input or constraint for the related node below. These are design dependencies, not a claim that a runtime scheduler automatically fires patterns. Existing WM producers are reused through the linked contracts; no second implementation is implied.
| From | To | Relation | Reason |
|---|---|---|---|
| R11-1 | R11-2 | requires-result | The common resource field constrains every legal allocation. |
| R11-2 | R11-3 | requires-result | The restricted allocation must replace the unrestricted choice at its real consumer. |
| R11-3 | R11-4 | requires-result | Actual use and accounting provide the required lifecycle evidence. |
| R11-4 | R11-1 | revision-feedback | A failed distinguishing control or consumer mismatch reopens the original scope/meaning; retain the failed claim rather than weakening it. Relevant controls: Exercise shared-ancestor oversubscription, duplicate charge, rejected-choice enactment and an ignored restriction. Test all seven lifecycle cells against authentic node references. |
Retain the actual subject, source/model revision, task/occurrence, cutoff, producer and consumer for each interface. A missing field is a named gap; a default that changes the meaning is not an adapter. Reuse existing records where they satisfy these obligations. If a new component is indispensable, identify its exact TODO/cascade clause before seeking a separately bounded implementation instruction.
Two local agents each propose a six-unit action against their ten-unit local caps, but share a ten-unit ancestor. The composed plan cannot admit both. The receipt must show ancestor charging rather than claim feasibility from local checks.
This is a distinguishing design example, not a claimed production experiment.
Distinguishing controls: Exercise shared-ancestor oversubscription, duplicate charge, rejected-choice enactment and an ignored restriction. Test all seven lifecycle cells against authentic node references.
Closure rule: every part of the quoted obligation must be supported by the indicated artifacts and actual connections. A useful rejection proves the rejecting boundary only. One accepted subclause does not tick the whole item. A bellback must supply the exact reviewed subject, executed checks, independent verdict and remaining clauses.
Budget units and arbitration authority must be pinned. This design adds no fuel term, scheduler or new infrastructure commission.
Dependency links describe required interfaces; they do not authorize work on those items. No implementation outside the existing TODO list is approved. Publication does not select a numerical law, settle an unresolved operator ruling or authorize a run.
All seeded patterns are applied above. The JSON pins their source bytes and the governing checklist/rulings. Historical formulas, thresholds and examples in a pattern remain scoped examples unless the governing contract adopts them. This draft adds no pattern-library entries and claims no independent semantic ratification.
Reference text; historical examples and prescriptions retain the scope stated above.
@flexiarg aif/hierarchical-budget-aware-action-selection
@title Hierarchical Budget-Aware Action Selection
@sigils [🏛️/双]
@audience fulab agents, aif implementers, multi-agent-AIF designers, simulation-of-collective-action designers
@tone technical
@style pattern
@holds-at R11 ;; pegged 2026-08-30 (claude-15): the catalogue paragraph numbered R11 in p4ng/sec-catalog.tex; see PREREG-war-machine §1b
@see-also aif/free-energy-as-tick-scalar
@see-also budgeted-action-selection/mana-gated-work
@why R11 dossier problem: R11 solves how locally factored proposals share a finite resource without silently oversubscribing it: the roster places **“Hierarchical shared budget”** in SELECT (`p4ng/empirics-futon/control-stages.edn:27`; control-stage numbering). (source: futon2 holes labs wm-contract PROBLEMS-r15-r11-r17-batch5.md, R11, The problem it solves; L3 rationale-backfill pilot, zai-1, 2026-09-05)
@how own mechanism: When multiple agents operating over shared state can independently choose actions that share consumable resources, resolve conflicts at multiple budget hierarchy levels: aggregate setup-budget conservation across all agents per tick; per-instance forward projection of each action's downstream resource consumption to detect instances that would predictively exhaust. (source: this pattern's ! conclusion line; L3 rationale-backfill pilot, zai-1, 2026-09-05)
@why problems/r11-hierarchical-shared-budget (L14 edge-resolution; basis: holds -- the problem node's own holds-at token covers this pattern; source: receipt runs/L14-edge-resolution.edn; zai-1, 2026-09-05)
! conclusion: When multiple agents operating over shared state can independently choose actions that share consumable resources, resolve conflicts at multiple budget hierarchy levels: aggregate setup-budget conservation across all agents per tick; per-instance forward projection of each action's downstream resource consumption to detect instances that would predictively exhaust.
+ context: A multi-agent (or multi-band, or hierarchical) AIF setup gives each agent or sub-agent local autonomy: each scores candidate actions and selects via softmax. But the candidates often consume shared resources — setup budget for capability activation, engagement-budget for per-instance participation, attention budget across the agent's responsibility area. A naive *union* of independent selections will violate resource constraints whenever multiple agents simultaneously prefer expensive candidates.
+ IF:
You want collective action selection that respects budget constraints at every hierarchy level. You want the agent (a) to never recommend allocations that exceed available aggregate budget per tick, and (b) to factor in *downstream* consequences of each candidate on per-instance budgets so the agent doesn't recommend "great-looking now" candidates that cause instances to exhaust their budgets in the next K ticks.
+ HOWEVER:
A naive union-of-selections leaves the budget invariant unenforced — over-subscription happens silently. A naive single-coordinator approach throws away the value of the local-agent factoring, requiring all candidates to compete in one big softmax. Neither is right.
+ THEN:
Implement conflict resolution at *each* hierarchy level explicitly:
- **Aggregate level**: a coordinator function `resolve-conflicts` that takes per-agent selections, applies them in priority order (e.g. importance band, deadline order, severity rank), debiting shared budget per applied action. Actions that exceed remaining budget are dropped to a no-op baseline or downgraded; trace records which were dropped and why.
- **Per-instance level**: a `feasibility-penalty` EFE subterm. For each candidate, project per-instance resource consumption forward over K ticks using a cheap approximation (constant status; only the budget decays). Count instances predicted to fall below their minimum-viable budget threshold. The penalty scales linearly with that count, multiplied by a tunable λ weight.
Both layers produce trace fields. The trace fields land in the per-tick record (R8) so the agent's reasoning about resource constraints is auditable.
+ BECAUSE:
Conservation at the aggregate level is a *hard* constraint (you literally can't spend more than the budget; violating it makes the simulation incoherent). Forward-projecting per-instance consumption is a *soft* constraint (the agent might be willing to risk some instances exhausting if the candidate's other terms are sufficiently good). Hard constraints belong in the action selector; soft constraints belong in the EFE term. Implementing both gives the agent the right kind of attention to budget at every level.
+ NEXT-STEPS:
- Identify the budget hierarchy in your domain: aggregate (per-tick setup or attention budget shared across agents) and per-instance (resource each instance consumes to participate, with a threshold below which the instance disengages).
- Implement `resolve-conflicts`: priority-ordered application; per-agent fallback to no-op baseline; trace records.
- Implement `feasibility-penalty`: K-tick forward projection; cheap approximation by default (constant non-budget status; only budget decays). Avoid full kernel-replay over K ticks unless the cheap approximation gives wrong answers.
- Calibrate the aggregate budget against the actual action-cost distribution: pick a value that admits one expensive action or two cheap actions per tick; tighter than "everything fits", looser than "always blocks".
- Calibrate λ_feasibility: should produce a penalty large enough to deter clearly-truncating candidates but not so large that no candidate ever passes it.
- DONE (UKRN v3 HO-07, 2026-05-14): `resolve-band-conflicts` at notebooks/ukrn_v3_kernel.clj:30-79 implements aggregate setup-budget conservation in band priority order (high → middle → thin). `budget-feasibility-penalty` at notebooks/ukrn_v3_efe.clj:205-211 implements per-institution K=4 tick projection; λ=0.5 per predicted truncation. Smoke output: a candidate against population with 6 high-band institutions at budget=20 produces feasibility-penalty=3.0 (6 at-risk × 0.5), shifting G from −4.28 to −1.28 (+70% deterrent). Closes V9 (setup-budget conservation) and V11 (per-institution budget feasibility). Evidence: handoffs/v3_runner/validation_HO-07.md.
- Practice: duplicate same-tick proposals (two agents proposing the same action) should typically pay the aggregate cost once, not twice — debit on first-occurrence-of-action-id, not per-agent. Mirrors set-semantics of resource activation.
- Practice: K-tick forward projection complexity should match operational stakes. Full kernel-replay K times per candidate is expensive; the cheap approximation (status held constant; budget decays linearly) is usually sufficient because the agent's decision is *should I avoid candidates that drain budgets* not *what exactly will happen K ticks from now*. The approximation is fit for purpose.