fix: correct the P-row misuse and the basis tier ordering

Both from info-tech-canon's review of the restatement.

STRAIN 1 — credential custody was recorded as one unit of class P consumption.
P is purchased platform capacity, and using security.secrets buys none. Removed
the row; the relationship now sits in provisions[].uses_provisions alongside the
object-store dependency, marked explicitly as a proposed extension because
ITC-CAP declares no provision-to-provision relation. Filed as
info-tech-canon/demand/ProvisionRelationships.md (their commit ce17dc4).

BASIS TIERS — their point about invoiced being a fin-hub fact we name rather
than originate exposed a real bug: a strict list order made weakest(["invoiced",
"measured"]) return "measured", implying an invoice outranks a measurement. It
does not outside its own domain. Strength is now a tier — invoiced and measured
are peers, quoted below both — with ties broken deterministically by catalog
order without implying a difference that does not exist.

Also filed info-tech-canon/demand/EvidenceBasis.md at their request, proposing
ITC-GOV as owner rather than ITC-CAP.

187 tests pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-15 19:02:58 +02:00
parent 13c2b82281
commit b8081f6c2d
3 changed files with 146 additions and 42 deletions

View file

@ -31,6 +31,16 @@ class OrderTest(unittest.TestCase):
self.assertLess(rank("measured"), rank("estimated"))
self.assertLess(rank("estimated"), rank("assumed"))
def test_invoiced_and_measured_are_peers_not_ranked(self):
"""An invoice is authoritative for a payment, a measurement for a
quantity. Neither outranks the other outside its own domain."""
self.assertEqual(rank("invoiced"), rank("measured"))
self.assertLess(rank("measured"), rank("quoted"))
def test_a_peer_pair_does_not_report_a_false_weakest(self):
self.assertEqual(rank("invoiced"), rank(weakest(["invoiced", "measured"])))
self.assertEqual(weakest(["invoiced", "measured"]), weakest(["measured", "invoiced"]))
def test_weakest_and_strongest_pick_opposite_ends(self):
bases = ["measured", "assumed", "quoted"]
self.assertEqual("assumed", weakest(bases))