Skip to content
Code Recycle

Component · for humans & their agents

Budget Encumbrance

verified · first-partyactively maintained$0 during beta (was $69)

You can approve your way straight through a budget that only counts invoices. Budget checks that include committed-but-uninvoiced spend, and report pace rather than just position.

by dropbear · Code Recycle reviewer

Get it free — beta

Every claim on this page is refundable if it is untrue — refund policy.

16 tests · 4/4 deliberate defects caught. Zero runtime dependencies.

The defect

You sign a $40k contract on the 3rd. Nothing is invoiced until the 30th. For twenty-seven days every budget report says you have $40k more room than you do — and every approval made in that window is made against a number that is wrong in the direction that approves things.

Each of those approvals is individually reasonable. A month of them breaches the budget.

The accounting name for the missing piece is an encumbrance: money that is spoken for but not yet spent. ERP and public-sector systems have modelled it for decades. Almost every in-house budget check does not, because "how much have we spent" reads like a settled question with one obvious answer.

Three quantities, never conflated

| quantity | meaning | |---|---| | invoiced | money that has left, or will on a known invoice | | committed | signed, ordered or approved — not yet invoiced | | pending | requested, awaiting approval. Not a claim on the budget yet | | consumed | invoiced + committed — the number decisions are made against | | worstCase | consumed + pending — what happens if everything in flight is approved |

invoiced is kept separate rather than replaced, so finance can still reconcile to the ledger.

  canApprove({ amountCents: 30_000_00, effectiveAt }, items, period, now);
  // { approved: false, reason: "would_exceed", shortfallCents: 10_000_00,
  //   detail: "…Remaining counts 8000000 in committed-but-uninvoiced spend,
  //            which an invoiced-only check misses" }

Pace, because position is comfortable exactly when it should not be

Half the month gone and 60% of budget spent looks fine by position and is 120% by pace. onPaceToBreach reports that while overBudget is still false.

It refuses to project before 10% of the period has elapsed. Two days in, one invoice extrapolates to a wild number, and a false "you will be 400% over" is how people learn to ignore the projection entirely.

Periods are half-open

[startsAt, endsAt) — the instant a period ends belongs to the next one. A closed range lets two consecutive periods both count the same item, which shows up as a budget that is mysteriously over by exactly one large invoice.

What it does not do

| not included | why | |---|---| | Storing budgets or spend | pure functions over records you already have | | Currency conversion | mixing currencies silently is worse than refusing; convert upstream | | Live spend limiting | spend-ceiling-limiter; this is period accounting | | Cloud cost attribution | cloud-cost-allocator |

All amounts are integer cents. There are no floats anywhere in this package, deliberately.

01Capabilities

Does

  • + Cost attribution
  • + Budgeting & forecasting
  • + FinOps

Doesn’t

  • No exclusions declared

02Requirements & stack

Depends on

No declared dependencies

Credentials needed

None declared

Stack

03Community

No endorsements yet

No verified confirmations yet — be the first.

Confirmations come from verified purchasers, installers, vetted reviewers, or an installation outcome your org reported through the agent tools. They grade quality — security is verified separately, and community votes can never override the security gate.

Open an issue

Sign in to confirm — weight comes from verified usage, not vote count.

Nobody has reported anything yet — a success counts as a report too.

04Trust Passport

Full passport →
–/100

0/0 automated components pass. An automated score is never a security guarantee.

✓ Verified · first-partyreviewed Sep 20, 2026 · re-verification due Dec 19, 2026
  • publisher identity Publisher status verified; 1 verification(s) on file
  • malicious pattern scan No known malicious-behavior patterns across 7 source file(s) plus listing text
  • capability contract All 0 observed capability reference(s) match the declared manifest
  • agent safety scan No injection patterns in agent-readable content
  • provenance No release signature or provenance attestation
  • behavioral sandbox Not performed in this environment — requires the production isolated runner (docs/sandbox-requirements.md). No untrusted code is ever executed on the application host.

Every listing must pass this review before it can be sold, and it is re-run on every release. Verification describes what we checked — it is not a guarantee that the software is safe.

VersionChannelReleasedNotes
0.1.0stableAug 12, 2026Initial extraction.