Home › Use Cases › Covenant tracking and compliance certificate testing
Use caseUC0431
🧪 Use-case kit · runnable

Covenant tracking and compliance certificate testing

A small, forkable project that does one job end to end. Run once for real, and every figure on these pages captured from that run.

The business caseThe problem this solves

A borrower delivers a compliance certificate every quarter: its own arithmetic, its own statement of the level it must meet, and its own claim that it complied — or that an equity cure put it right. Credit administration tests that certificate against the credit agreement AS AMENDED. The closing covenant grid a tracking system holds goes stale the day the first amendment is executed: a level set for a period, relief of 0.50x, a step-up deferred by two quarters, a suspended test, an added Liquidity covenant, an amendment later replaced wholesale — and drafts and a subsidiary's equipment-loan amendments sitting in the same credit file, applying to nothing. The cure clause counts calendar or Business Days from the date the certificate was delivered, or required, or the earlier of the two. A missed amendment tests the borrower against a superseded threshold and nothing bounces until a real breach goes unreferred. Reading every certificate line against the credit agreement as amended by eye — recomputing each ratio from the certificate's own figures, finding which executed amendment governs the test date, striking drafts and other agreements' amendments, counting the cure period from the right trigger in the right kind of day — before the certificate reaches the credit officer. It does not replace the officer: every REFER is a row on a person's queue, and breach, default, waiver and cure stay that person's decisions.

Audience

A credit administration analyst testing certificates before they reach the credit officer's queue, and the credit officer who decides what an apparent breach means. Neither decision — breach, default, waiver, cure — is this kit's. Every number on these pages came from one real run of this code, not from a vendor page.

The inputThe actual covenant compliance test packets

The corpus is 62 covenant compliance test packets, 0.52 MB (json 4 · jsonl 1 · md 2 · txt 62). Because the shape of a covenant-testing failure is not the division, it is the CREDIT FILE. 165 of the 212 tests are settled by the closing grid and the certificate's own arithmetic. The 47 that matter are certificates that are right under an executed amendment the grid does not carry — or wrong under one it does — and cure lines whose timeliness lives in Section 8.3's trigger and day count. A corpus without those measures a calculator.

The corpus

  • The 62 covenant compliance test packetsgenerated from a fixed seed, so no real record, person or institution appears in it.
  • Where each came fromNowhere — all 62 packets, data/agreements.json and the whole answer key are generated in-process by the file that renders them, so there is no third-party data in this kit and no third-party licence to honour.

Swap this folder for your own material and the kit is pointed at your covenant compliance test packets. That is the whole change — there is no database to migrate.

One covenant compliance test packet, as the model receives itCVT-0001.txt · 1 of 62
COVENANT COMPLIANCE TEST PACKET

PACKET HEADER
  Packet               CVT-0001
  Lender               Veldmoor Commercial Bank
  Borrower             Tarrowby Machine Works LLC
  Facility             Credit Agreement dated February 9, 2024
  Fiscal year ends     December 31
  Test date            September 30, 2025
  Prepared             December 2, 2025
  Prepared by          R. Okafor-Lind, Credit Administration

CREDIT AGREEMENT EXCERPTS
  Section 1.1 Definitions
    "Business Day" means any day other than a Saturday or a Sunday.
    "Total Leverage Ratio" means Total Funded Debt divided by Consolidated EBITDA for the four fiscal quarters then ended.
    "Fixed Charge Coverage Ratio" means Consolidated EBITDA less Unfinanced Capital Expenditures less Cash Taxes Paid, divided by Fixed Charges, each for the four fiscal quarters then ended.
    "Interest Coverage Ratio" means Consolidated EBITDA divided by Cash Interest Expense, each for the four fiscal quarters then ended.
  Section 6.1(c) Compliance Certificate
    Within sixty (60) days after the last day of each of the first three fiscal quarters of each fiscal year, and within one hundred twenty (120) days after the last day of each fiscal year, the Borrower shall deliver a Compliance Certificate showing the calculation of each covenant in Section 7.1.
  Section 7.1 Financial Covenants
    7.1(a) Total Leverage Ratio. The Borrower shall not permit the Total Leverage Ratio as of the last day of any fiscal quarter to be more than the level set out below.
      Total Leverage Ratio, fiscal quarters ending on or after March 31, 2024: 4.00 to 1.00

Abridged — the file continues.

The outcomeWhat a good result looks like

Every covenant test carries a finding from a closed list of eight, the CVT-2026 term it rests on, the apparent-breach flag, and one line copied verbatim out of the packet; the packet carries NO-EXCEPTION or REFER with the referred and apparent-breach covenant sets. On the published run, after the station: 209 of 212 covenant-test findings, 47 of 47 tests whose answer lives in an amendment or Section 8.3, 22 of 22 real apparent breaches flagged, and every finding plus all three lists right on 59 of 62 packets.

And when it cannot

⚠︎ THE CALL ON ITS OWN LOSES TO FREE CODE. As it came back, the answer gets 171 of 212 findings — BELOW the keyword floor's 190, which costs nothing. The win on this page is the STATION: the call's three readings with CVT-2026 re-applied in pure code. And the station cannot repair a reading: the cure deadline is read right on 5 of 12 cure lines on both columns, seven off by 1 to 9 days, and one of those (CVT-0027) turns a timely cure into CURE-OUT-OF-TIME with its apparent-breach flag set. On every graded field of a whole packet the paid call is 25 of 62 against the keyword floor's 33 — a loss, and no paired test was computed for that metric.

Where it fitsWhat did work

Every line below is a measured result from this kit's own runs, with the figure that supports it. The headline above is not softened by any of them.

  • Your facilities carry no amendments and no equity cures, and your testing disputes are arithmetic, missing lines and stated levels. — the free record floor alone — python3 -m evals.run --floor rules
    Every one of those is a lookup, a division and a comparison. The floor settles all 165 record-settled tests, deterministic and $0.00.
  • Your credit files carry executed amendments — relief periods, deferred step-ups, suspensions, replaced sections — beside drafts and other agreements' amendments. — the paid call, rechecked
    Those are the 47 reading-required tests: 47 of 47 after the station against the keyword floor's 38, and 38 of 38 amendment-moved levels read right.
  • You were going to write keyword patterns over the amendments instead. — read the keyword floor's number first, then its caveat
    It is on this page: 190 of 212 findings, above the raw call — on patterns written from this generator's own sentences. On your own files it would score lower.

And where nothing here is good enough:

  • Your certificates elect equity cures and timeliness is the question. — neither alone — a person on every cure line
    The call reads the cure deadline right on 5 of 12; the free floors never read it and treat every cure as timely. CVT-0027 is a timely cure the station called late.

At a glanceHow the whole thing runs

99%covenant test finding correct rechecked pct
2,068 msp50, end to end
$1.07per 1,000 covenant compliance test packets · GPT-5.6 Luna

Run once, for real, on 2026-09-12. Every figure on these pages was captured from that run — nothing is written from intent.

14 steps, grouped by the question that sends you to them rather than by build order. Each tile carries the one figure that step is about, and opens the page behind it.

Should you use this?What you bring, where it stops, and when not to use it

Before you commit an afternoon to this, these are the answers that decide it. Each one is rendered from the record it lives in — and links the page that holds it in full.

What do I have to bring?Point data/corpus/ at your own rendered packets and data/agreements.json at your own covenant tracking record's closing grids. The boundary is the ANSWER KEY, not the documents. Corpus lens →
When is this the wrong choice?Avoid: Paying for a reading of documents your credit files do not have. That is the case against the best-fitting scenario (“Your facilities carry no amendments and no equity cures, and your testing disputes are arithmetic, missing lines and stated levels.”). 4 scenarios scored in all, each with its own. Eval lens →
Where does it stop working?The cure deadline. The call reads it right on 5 of 12 cure lines; the seven misses are 1 to 9 days off in both directions (Business against calendar days, delivered against required), and the station trusts the reading by design, so a wrong deadline stays wrong. 6 recorded failure modes, each from a run rather than a guess. Corpus lens →
What was never verified?A second scored run at the same tier. One run, one model; no repeat was bought, so nothing here separates run-to-run variance from a real difference — including on the cure deadline count. 7 items this kit says it could not check. Eval lens →
Can I run this on a model I control?The shipped adapter is one provider, one key, configured in .env; the Prompt lens states what swapping it costs. The published figures come from 1 model on the fast tier, reasoning disabled (THE PUBLISHED RUN). Prompt lens →
And if it fits — what do I stand up?4 artifacts with a stated home and a stated egress, and 4 decisions each with what you provision past its ceiling — plus what was not measured. That is the next page, not this one. step 14 — Run it in your environment →

Not asked of this kit — 2 questions: clone (a fresh clone of this kit runs with nothing fetched); judge (nothing here is graded by a model).

Last verified 2026-09-12 — r001-covenant-test. Every figure on these pages was captured from that run.

Run itHow this reaches your data

Every result on this page was produced by pure code over checked-in files, with no API key — which is why you can read the numbers before anyone spends anything.

Run this on your own data

  • The pipeline, its eval harness and the runs behind every numberdeployed inside your environment, on your own model endpoints, against your own documents.
  • The corpus above is the shape, not the limitit is a folder swap, and there is no database to migrate.

Talk to us →

Checked before this shipped — A clean checkout with no key configured scored all three free floors over all 62 packets in under a second (python3 -m evals.baseline), re-derived the whole key from the hand-retyped rulebook with 0 disagreements (python3 -m evals.check_labels), rebuilt the corpus byte-identically (tools/build_corpus.py --check) and rendered the board with its paid button disabled — all at $0.00 and with nothing installed.

A living map of modern AI — kept current every morning