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
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 yetNo 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.
Sign in to confirm — weight comes from verified usage, not vote count.
Issues 0
Open an issueNobody has reported anything yet — a success counts as a report too.
04Trust Passport
Full passport →0/0 automated components pass. An automated score is never a security guarantee.
- 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.
05Versions
Full history →| Version | Channel | Released | Notes |
|---|---|---|---|
| 0.1.0 | stable | Aug 12, 2026 | Initial extraction. |