Home › Use Cases › Render a downline change request as a before-and-after structure and name what it orphans
Use caseUC0518
🧪 Use-case kit · runnable

Render a downline change request as a before-and-after structure and name what it orphans

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 carrier's agency administration desk is handed a downline change request in prose — one producer or agency to be moved, terminated and re-contracted, split or re-compensated — together with the executed amendment that actually effects it and the subtree as it stands. Before anything is keyed, somebody has to say which ONE printed node the request names, what the amendment actually does to it, where the severed downline lands, and what the structure looks like afterwards. The expensive part is not the node that is named. It is the node that is NOT: 20 of the 64 packets in this corpus sever 35 nodes that neither document mentions, and 133 of the 272 clauses on those packets are decoys naming a different real node of the same subtree in the same words. Opening one change packet, reading the request against the executed amendment to decide which printed node is meant and what the amendment does to it, walking the printed edges for every node that hangs off it, working out where the severed children land and which document says so, ordering the review-first list and raising one structure flag.

Audience

The channel operations desk of a health carrier's agency administration unit, and whoever reviews a hierarchy change before it is keyed. The decision it supports is 'what does this subtree look like afterwards and what does it orphan' — never whether the change may be made, never whether a producer is in good standing, and never what anybody is owed. The rule source is the carrier's own executed producer and agency agreements, operator-supplied; no regulator, bulletin or model act is named, cited or relied on anywhere in this kit. Every number on these pages came from one real run of this code, not from a vendor page.

The inputThe actual agency hierarchy change packets

The corpus is 64 agency hierarchy change packets, 0.22 MB (json 4 · jsonl 1 · md 2 · txt 64). No public corpus of agency hierarchy change packets exists, and one built from real producer files would carry real agencies, real people and real compensation. Every packet here is generated in process from SEED 20265180, so the key is DERIVED by the same rulebook the kit applies and the whole set rebuilds byte-identically. THE CORPUS IS PHI-FREE AND PERSON-FREE BY CONSTRUCTION: there are no names, no dates of birth, no member or claim identifiers and no clinical facts of any kind in it — every actor is a node id. The mixture IS the measurement: 20 packets that orphan something, 4 that resolve to no node at all, 46 carrying a tier implication of which 44 are silent in the request, 28 carrying a cap probe, 6 carrying a date or two-parent conflict, 32 printing a closed historical edge, and 133 decoy clauses that name a different real node of the same subtree in the same words a real clause uses. Two corrections are recorded in data/SOURCES.md: the tier pair clauses were added after the first build measured the tier cell at 64 of 64 free, and the orphan block was enlarged from 11 packets to 20 after the first build put the orphan bar at 53.

The corpus

  • The 64 agency hierarchy change packetsgenerated from a fixed seed, so no real record, person or institution appears in it.
  • Where each came fromdata/SOURCES.md states where every byte came from AND what the generator costs the measurement. THERE ARE NO PEOPLE AND NO MEMBER DATA IN THIS CORPUS: a producer is a PR- code, an agency an AG- code, a node a NOD- id, and every change-request sentence speaks for a desk; evals/check_labels.py sweeps all 64 packets for a person-shaped name on every run and reports 0. AHS-2026 is invented and asserts no rule of any regulator - the two agreement revisions and their effective-date conventions are operator-supplied example values, and check 8 fails the build on anything that reads as a citation. The floor of record was measured before any call was bought: 23 of 64 whole answers, against a generator-tuned ceiling of 64 and a constant of 2, and the eleven failure predictions were named there before any spend.

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

One agency hierarchy change packet, as the model receives itAHC-0001.txt · 1 of 64
AGENCY HIERARCHY CHANGE PACKET  AHC-0001
PACKET ASSEMBLED  2026-01-07   STANDARD  AHS-2026

SUBTREE  SUB-1000   CHANNEL  CHN-01
CHANGE REQUEST  REQ-30001   FILED  2025-12-22   REQUESTED EFFECTIVE  2026-02-01
EXECUTED AMENDMENT  AMD-70001   EXECUTED  2026-01-01
AGREEMENT REVISION IN FORCE AT EXECUTION  AGR-2026-R1   OPERATOR-SUPPLIED

[1] HIERARCHY NODES
ID          TYPE             NAME          TIER      STATUS    SINCE
NOD-80001   WRITING-ENTITY   WE-01         -         ACTIVE    2021-05-14
NOD-80002   AGENCY           AG-10         TIER-3    ACTIVE    2022-01-11
NOD-80003   AGENCY           AG-11         TIER-4    ACTIVE    2021-09-12
NOD-80004   SUB-AGENCY       SA-20         TIER-3    ACTIVE    2023-02-20
NOD-80005   SUB-AGENCY       SA-21         TIER-2    ACTIVE    2022-07-31
NOD-80006   SUB-AGENCY       SA-22         TIER-3    ACTIVE    2023-01-09
NOD-80007   PRODUCER         PR-4000       TIER-2    ACTIVE    2023-08-12
NOD-80008   PRODUCER         PR-4001       TIER-2    ACTIVE    2023-06-15
NOD-80009   PRODUCER         PR-4002       TIER-4    ACTIVE    2023-07-11
NOD-80010   PRODUCER         PR-4003       TIER-2    ACTIVE    2023-11-02

[2] HIERARCHY EDGES
CHILD       PARENT      EFFECTIVE FROM   EFFECTIVE TO   STATUS
NOD-80002   NOD-80001   2022-01-11       OPEN           ACTIVE
NOD-80003   NOD-80001   2021-09-12       OPEN           ACTIVE
NOD-80004   NOD-80002   2023-02-20       OPEN           ACTIVE
NOD-80005   NOD-80003   2022-07-31       OPEN           ACTIVE
NOD-80006   NOD-80003   2022-06-23       2023-01-09     CLOSED
NOD-80006   NOD-80002   2023-01-09       OPEN           ACTIVE
NOD-80007   NOD-80004   2023-08-12       OPEN           ACTIVE
NOD-80008   NOD-80005   2023-06-15       OPEN           ACTIVE

Abridged — the file continues.

The outcomeWhat a good result looks like

One change packet in, one before-and-after structure out: every node's parents before and after with one of eight states (DATE-CONFLICT, TWO-PARENTS, ORPHANED, REPARENTED-BY-AMENDMENT, REPARENTED-BY-REQUEST, TERMINATED, MOVED, UNCHANGED), the orphan set, the conflict set, the review-first list in order, one structure flag (PLACEMENT-UNRESOLVED, ORPHANS-CREATED, PLACEMENT-CONFLICTED, NONE-ORPHANED) and the tier implication. 61 of 64 packets come back whole once the pure-code station has re-derived them from the call's five read values, against 23 for the floor of record and 2 for a fixed reading, and 37 of 64 as the model wrote them.

And when it cannot

And what it does when it cannot. 64 of 64 replies parsed, 0 stopped at the 1,000-token ceiling, 0 were closed by the streaming runaway stop and 0 calls failed; the largest reply was 937 output tokens (93.7 pct of the ceiling). Three packets the station cannot recover are named in the kit README: AHC-0003, where the reply read four of the five values right and left child_landing empty, so a node came back ORPHANED against a key of NONE-ORPHANED; AHC-0014, where the request names a downline by a banner name that is no node of this subtree and the reply placed one anyway against a key of PLACEMENT-UNRESOLVED; and AHC-0030. The largest single loss was not predicted at all — invented_an_orphan, 7 packets RAW, 10 orphan ids the key does not carry and 0 missed: this arm over-orphans and never under-orphans. A reply that cannot be parsed is counted WRONG and stays in the denominator; it is never dropped and never re-fired.

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.

  • Every change is an explicit MOVE naming one node id, and nothing hangs beneath it — free code — b000-hierarchy-change-ids, or the printed edges
    the conflict set is 64 of 64 to a rule that reads no sentence, and on a hierarchy where nothing is severed the orphan set is a fixed NONE-ORPHANED, right on 44 of 64 packets here. Nothing is bought.
  • The executed amendment decides, and it says something different from the change request that accompanies it — the scored run, with src/recheck.py behind it
    this is the split the money is on. The reading is 56 of 64 against the floor of record's 19 (p = 1.46e-10), and the arm that reads the REQUEST's sentence instead of the amendment's clause loses 10 whole packets — 13 against 23.
  • What matters is the node the request never mentions — pure code, walking the printed edges, from a reading the call supplies
    a severed child is found by walking edges, never by reading a sentence. The RAW column over-orphans on 7 packets — 10 invented ids against 35 in the key, 0 missed — and the station recovers 6 of those 7.
  • Untrusted text can reach the change-request block — provenance on the request block, before anything else
    0 of 36 attacked trials did the refused act, on every framing including the one written as an instruction from the operations lead — but 19 of 36 came back with a graded cell the clean reply had right. A cap that holds is not an answer that holds.

And where nothing here is good enough:

  • The request names a downline by a banner name rather than a node id — neither — this is the case AHS-2026 refuses to place, and the kit's honest answer is PLACEMENT-UNRESOLVED
    4 packets resolve to no printed node. The arm placed one anyway on 2 of them (placed_an_unresolvable_packet, one of only two named predictions that landed), and the station places whatever reading it is handed.

At a glanceHow the whole thing runs

95%whole packet rechecked pct
2,577 msp50, end to end
$1.65per 1,000 agency hierarchy change packets · the fast tier

Run once, for real, on 2026-09-21. 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?Replace data/corpus/*.txt with your own change packets in the same shape — printed subtree with every edge's effective and closed dates, the executed agreement revision, the amendment clauses, the change request as filed — and data/subtrees.json with your own register, then edit data/policy.json so the change kinds, node states, review order, structure flags, landing rule and the two agreement revisions are YOURS. ⚠︎ WHAT STOPS BEING TRUE THE MOMENT YOU DO. Corpus lens →
When is this the wrong choice?Avoid: Buying a call per change to restate an edge table a producer system already holds. That is the case against the best-fitting scenario (“Every change is an explicit MOVE naming one node id, and nothing hangs beneath it”). 5 scenarios scored in all, each with its own. Eval lens →
Where does it stop working?A packet whose change request names a downline by a BANNER NAME that resolves to no printed node, with no amendment clause naming one either. AHS-2026 refuses to place it and the key is PLACEMENT-UNRESOLVED; the arm placed one anyway on 2 of the 4 such packets, and the station places whatever it is handed. 6 recorded failure modes, each from a run rather than a guess. Corpus lens →
What was never verified?NO SECOND SCORED RUN. One was fired, so the run-to-run spread on this corpus is unknown and no confidence interval is claimed anywhere on this page. 7 items this kit says it could not check. Eval lens →
Can I run this on a model I control?Yes — any OpenAI-compatible endpoint, including one on your own hardware. The shipped adapter takes its host from BASE_URL and its model from MODEL, so nothing in src/ changes. The published figures come from 1 model on the fast tier, one provider, one key. Prompt lens →
And if it fits — what do I stand up?7 artifacts with a stated home and a stated egress, and 3 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-21 — r001-hierarchy-change. 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 renders the whole board, runs the six free arms live in the browser and replays every committed arm. pip install -r requirements.txt installs nothing — the kit is standard library only. The only thing a key buys is the ASK THE MODEL button and a new scored run; without one the button is disabled and POST /api/model returns 400 without a call, which was driven and observed on the no-key board at port 9618.

A living map of modern AI — kept current every morning