Argument · Coding protocol B

The escalation ladder

The rule for coding who a filing names — counterparty, counsel, platform, regulator, government, adjudicator — and why the values stay unpublished.

Evidence layer — argument. This page is interpretation, not a record, and it is the only part of this site that argues rather than reports. It adds no facts: every factual claim in it is already published here as a row, and the case, dispute and update ids in the text link to the page carrying each one. Nothing here is a judicial finding, and no court in these records has declared Frank Tufano a vexatious litigant. See Methodology.

Status. Applied 2026-09-06 to all 335 canonical entities in the corpus. Coder. One. There was no second coder, and this protocol does not claim inter-rater reliability — see Reliability for what runs in its place. Executable form. thesis/exhibits/escalation_ladder.py, which holds the adjudicated table and thirteen validation gates and exits non-zero when a premise stops holding. This protocol writes nothing to the database. No rung value exists in research-data/research.db and none appears anywhere on suedbyfranktufano.com.

Every value produced here is a research classification recorded by this project. It is never a judicial finding, never a determination that any filing was improper, and never a vexatious-litigant determination.


What this protocol classifies

Chapter 4 of the thesis asserts an escalation ladder — that the litigation moved outward from the parties to a transaction, through their lawyers and the platforms that carried it, to the bodies that license them, to government, and finally to the judges themselves. That is a claim about what kind of entity is being sued, and when. The corpus records who was sued; it has no column for what kind of thing they are. This protocol supplies the missing variable under a published rule, so the claim can be tested rather than asserted.

Why the values live in the exhibit and not in the database

protocols/01-refiling.md put its rule here and its coded values in two new cases columns. That precedent deliberately does not transfer, for four reasons.

  1. There is no row at the right grain. A rung is a property of an entity. cases is the wrong grain — C063 touches four rungs at once, and a single column would have to collapse to a top rung and destroy the very distribution the chapter measures. defendants would repeat one value across up to 144 rows for a single action. attorneys is the only entity-grain table in the schema and it holds six rows.
  2. A stored value becomes published content. tools/build_seo.py generates a /defendants/<slug>/ page for every canonical party tied to two or more originating actions. A rung written to the database would surface there as a label — "Adjudicator", "Regulator" — attached by name to living people, including eight named judges and dozens of private individuals. RefilingOfPriorCase at least had court_findings or vexatious_indicators corroboration behind a third of its Yes values. A rung has a first-class table behind six entities out of 335. One coder, no second rater, no judicial corroboration, published under a named person: that does not clear.
  3. Nothing needs it. Every figure chapter 4 cites is regenerated by the exhibit.
  4. It keeps the change reversible. No export, no rebuild, no page moves.

The cost is that refiling_rule_coder.py --validate's style of check on stored codes is unavailable here. The exhibit compensates: ADJUDICATED is a frozen module-level table and gates G2, G3 and G6 check it for closure, liveness and evidentiary anchoring on every run.

Unit of analysis

The canonical entity, keyed on defendants.DefendantID.

Three canonicalisation schemes exist in this repository and they do not agree:

schemewhere it is usedentities
exact-match defendant_aliases lookuprefiling_rule_coder.load(), aggregator_test.load()336
norm_name() punctuation-collapsed lookuptools/build_seo.py — what the public site uses
defendants.DefendantIDthe defendants table itself335

This protocol uses DefendantID, against the house pattern, for one concrete reason. defendant_aliases contains Jeffrey K. Davis → D0137 but not Jeffrey K. Davis, Esq., which is the string C099 actually records. Under exact-name canonicalisation his first appearance as a party reads 2025-02-12 instead of 2023-01-11 — a 762-day error, on the earliest appearance of the Counsel rung, in a chapter whose whole argument is about time-ordering. It would manufacture an escalation signal that is not in the record. DefendantID gets it right. Gate G4 pins the divergence set at {D0137} so that a new split, or a repair of this one, both fail loudly.

Derived values, both computed per originating action (union-find over SameActionAsCaseID, imported from detection_gap.py): the action's top rung and its breadth, the number of distinct rungs it reaches.

The ladder

Rungs are ordered by distance from the underlying transaction: rung 1 is a party to the transaction itself; rung 6 is the machinery that adjudicated an earlier suit about it.

#CodeDefinitionMechanical anchor
1Counterpartyparty to the underlying transaction, event or publicationdefault
2Counsela lawyer or law firm named as a partyattorneys table
3Platformonline platform, marketplace, payment or review intermediaryname only
4Regulatorlicensing, certifying, accrediting or ratings bodyname only
5Governmentgovernmental unit, agency or sovereignname only
6Adjudicatora judge, court, arbitrator or arbitral institution named as a partycourt_findings (partial)
Unclearthe record does not settle which rung

Two boundary decisions are worth stating because a reader could reasonably draw them elsewhere.

The Platform/Regulator adjacency is a judgment call. A platform carried the transaction or the speech about it; a regulator only licenses the counterparty and touched the transaction not at all, so it sits one step further out. A reader who ranks a state medical board above a marketplace would swap 3 and 4. perturbations() re-runs every finding with them swapped and reports whether anything moves. Nothing does — on this axis. One of the six axes does move a verdict, and it is the rung-6 split described below, not this one.

Sovereigns sit at rung 5, not rung 6. The Commonwealth of Pennsylvania (D0071) is sued in three different capacities across C026, C083 and C085, and only in C038 is that capacity the judiciary's. Placing every sovereign at the top rung would make rung 6 mean two things at once. Reserving it for adjudicators named as parties keeps the top of the ladder a claim about one thing — and C038 still reaches it, through the eight judges themselves.

The mechanical screen, and what it cannot decide

escalation_screen() is published in full in the exhibit. It decides rung 2 by table lookup and gestures at rungs 3–5 by disclosed regular expression. It is much weaker than 01-refiling.md's screen, and it is published as a disclosed weakness rather than as reliability: six of 335 entities have a first-class table behind them.

Rung 6 the screen cannot do at all. Judge-defendants are recorded surname-first with no title — Barrasse Michael J, Nealon Terrence R, Dempsey Mary D Walsh — and are typographically indistinguishable from any other individual. A two-token overlap screen against court_findings.Judgejudge_aliases.CanonicalName catches five of the thirteen and produces false positives in both directions: Gibbons James A also matches James G. Clynes, and Roman Stephen Nelson also matches Stephen V. Wilson. That screen is not fit to publish, and it is not the rule.

What grounds rung 6 is prose already in the database. The eight Lackawanna defendants are carried by the C038 court_findings row of 2026-07-16, in which Senior Judge Arthur L. Zulick dismissed them on judicial immunity and the record notes that naming one of them forced a full county bench recusal. Karoline Mehalchick, Roman Stephen Nelson and Sarah Thompson are carried by claims-summary sentences that state the role in terms — "District Judge Karoline Mehalchick (who had dismissed his first suit against Saladino)", "former S.D.N.Y. judge Roman Stephen Nelson", "arbitrator Sarah Thompson". Claims summaries are the evidence layer for this classification exactly as they are for 01-refiling.md's condition 3.

Unclear, and the recorded exclusions

Unclear is a published, adjudicated list, not a silent default. Gate G3 fails the run if the screen elevates an entity that nobody adjudicated, so the list cannot grow by neglect.

EntityWhy
D0200 McCarty Judith C, D0153 Judith C McCarthyNamed beside a former judge in C030/C064 and given no title; no court_findings row names her. Rung 6 is plausible and unestablished.
D0297 The IlluminatiNo institutional referent to place on any rung.

D0341 City of Carbondale reached this list on 2026-09-09, when C106 entered the corpus, and left it on 2026-09-10. It is a municipality, which is a rung-5 entity type on its face, and the only question was whether a caption alone may carry the elevation when RECAP holds no complaint to read. It may: the Name anchor exists for exactly that, and it is what D0318 (USDA) and D0313 (CBP) already rest on. What a Name anchor does not do is disguise itself — the anchoring audit below counts it on the unanchored side.

Exclusions a reader might expect and this protocol declines to make, recorded in RECORDED_EXCLUSIONS so they are auditable rather than invisible:

EntityKept at rung 1 because
D0316/D0315/D0108 Union Lodge No. 291, D0043 Beverly Hills Masonic LodgeFraternal organisations. C038's claims summary names the lodge under the same theory as the judges, which is a role claim about the pleading, not an entity type.
D0312 Tyler Technologies IncA private vendor to the county, not a public body.
Regulated private utilities (PPL, Frontier, Pennsylvania American Water)Investor-owned, not governmental.

The three named individuals sued alongside the country clubs in 2018 are likewise left at rung 1: no claims summary gives their role, and a name screen would not have known either way. Recording that is the point — the default rung is a default, not a finding.

Result

As of 2026-09-10, over the 93 originating actions this plaintiff commenced. Regenerate with python thesis/exhibits/escalation_ladder.py; do not copy these forward.

#RungEntitiesActions touchingActions topping outFirst opened
1Counterparty25774382018-03-09 (#1, C086)
2Counsel61862023-01-11 (#6, C099)
3Platform3123222024-05-22 (#10, C040)
4Regulator6642025-01-02 (#19, C046)
5Government1419182025-02-12 (#24, C049)
6Adjudicator12552023-01-11 (#6, C099)
Unclear250

The propositions, and their verdicts

The chapter's claims were stated falsifiably before the numbers were read.

ClaimRefuted ifVerdict
E1Rungs open in ladder order.any rung opens before a lower-numbered oneREFUTED as coded — but see the rung-6 split below
E2The top rung an action reaches rises with the filing sequence.ρ ≤ 0 or p ≥ 0.05NOT SUPPORTED (ρ = 0.111, p = 0.29, n = 93)
E3The counterparty rung's share declines across the sequence.Q4 share not below Q1'sHOLDS (0.57 → 0.46)
E4The number of rungs one action reaches rises with the sequence.ρ ≤ 0 or p ≥ 0.05NOT SUPPORTED (ρ = 0.076, p = 0.46, n = 93)

E2 and E4 are not supported, which is weaker than refuted, and the pre-registered refuted_if wording above is the reason the distinction has to be drawn explicitly. Those conditions were written as "ρ ≤ 0 or p ≥ 0.05" and both propositions meet them, so the exhibit records holds: false and is right to. But a non-significant rank correlation is a failure to find a monotone trend, not evidence that none exists, and reporting it as a refutation overstates the result. A rank correlation over the whole sequence is also the wrong instrument for what the quartile series actually shows — mean top rung 2.13 → 3.00 → 2.96 → 2.75, a step between Q1 and Q2 and a plateau after it. That shape is invisible to Spearman and is what the additive, not substitutive finding describes. This wording was corrected on 2026-09-11 after two external reviews; the numbers are unchanged.

E1 fails on a single observation, and it is the most important one in this protocol. C099, filed 2023-01-11 — the sixth action he commenced — names four defendants: the opposing party (rung 1), his own former attorney (rung 2), the arbitrator and the arbitral institution that decided the underlying dispute (rung 6). The top of the ladder opened in the same complaint as the second rung, two and a half years before he first sued a judge, and before platforms, regulators and government appeared at all. There is no progression to find: the ladder was reached, in one filing, near the beginning.

E3's endpoint test passes, but the quartile series is 0.57 → 0.26 → 0.35 → 0.46, which is a dip and a rebound rather than a decline. The honest statement is that the ladder is additive, not substitutive: new rungs open and never close, but the base never empties.

The rung-6 split, and what E1 actually rests on

E1's refutation rests entirely on whether a private arbitral body is an adjudicator. Two of the twelve entities on rung 6 are private — D0019, the American Arbitration Association, and D0263, the arbitrator it appointed — and the other ten are judges of a public court. The four axes above never separate them, so perturbations() runs two more that do, under the two readings a critic could reasonably press:

AxisE1E2E3E4
rung 6 split — arbitral bodies on their own rung, below the benchREFUTEDnot supportedHOLDSnot supported
rung 6 split — arbitral bodies as service providers (rung 3)HOLDSnot supportedHOLDSnot supported

So E1's verdict is not robust to the definition of rung 6, and this protocol reports that rather than the axis that flatters it. Under the service-provider reading C099 reaches only rung 3, the first public adjudicator is Mehalchick in October 2025, the rungs open in date order, and E1 holds.

This coding stays as published, for a reason that is an argument rather than a stipulation: C099 names the arbitrator personally as a defendant and attacks the arbitration the AAA administered. A platform is sued for what it hosts; an adjudicator is sued for how it decided. A reader who weighs that differently has the alternative verdict in the table above and does not have to take this one on trust.

Two things survive either reading. E2, E3 and E4 are identical across all six axes. And C099 still places three distinct rungs in a single complaint at the sixth action, which is the observation the chapter's §VI actually runs on.

Reliability

There was no second coder, and nothing below is inter-rater reliability. Two mechanical audits run in its place, and both are reported as what they are.

(i) Evidence anchoring. Every entity above rung 1 is carried by exactly one anchor class: Table (an attorneys row), Finding (a court_findings row), Summary (a claims-summary sentence stating the role) or Name (the name alone). Gate G6 fails the run if anything is elevated on no anchor at all — that gate is the folder's no-fact-originates-here rule mechanised at row level.

As of 2026-09-10: 49 of 69 elevated entities (71.0%) rest on a table, a court finding or a claims summary. By class: Table 6, Finding 8, Summary 35, Name 20. The twenty carried by name alone are almost entirely the Shopify-family caption entries, four federal agencies and one municipality, where the name is the whole of what is knowable and the rung is not in doubt.

(ii) Perturbation. Every proposition is re-run under four axes of coder discretion: the Platform/Regulator order swapped; the three mass-defendant actions (40+ named parties) dropped; and the corpus population used instead of the filer population. All four verdicts are identical on every axis. A finding that survives every discretionary choice the coder made is robust to that discretion — which is the property a second rater is a proxy for. It is not equivalent, and this protocol does not claim it is.

Limitations

  1. No second coder. See above.
  2. Rungs 3–5 rest on name recognition. There is no EntityType column outside attorneys, and disputes.Name is a cluster label, not an entity type.
  3. The D0137 canonicalisation gap. Jeffrey K. Davis, Esq. is unaliased; under the house name-matching scheme the Counsel rung opens 762 days late. Worked around by keying on DefendantID and pinned by gate G4 — not repaired, because repairing it changes published /defendants/ pages and is its own task. This is a fourth instance of the defect class already recorded in 01-refiling.md Limitation 3.
  4. The same person recorded twice across one removal pair. D0230/D0255 (Roman Stephen Nelson) and D0200/D0153 (McCarthy) are each one person split across the state and federal halves of a single action, so the entity counts above are inflated by two. Pinned in DUPLICATE_ACROSS_REMOVAL and gated by G8.
  5. The mass-defendant confound. Three actions carry 66, 142 and 144 named parties, overwhelmingly individuals at rung 1. Any entity-grain proportion is largely a statement about three complaints. This is why the chapter leads with the action-grain measurement and why "mass-defendant actions dropped" is a perturbation axis.
  6. DEFENDANT_SIDE looks under-inclusive by two. C103 and C104 are suits against this plaintiff's companies and are not excluded, though C022 — materially identical to C103, two days apart, same dispute — is. The shared constant is reused unchanged for comparability with chapters 3 and 7; widening it here would desynchronise them without saying so. Carried as FILER_POPULATION_CAVEAT and gated by G10.
  7. A moving target. Re-run the exhibit rather than copying any count forward.