Skip to content

Facility megawatts were never cabinet kilowatts: the third power fact - #10863

Merged
briansrls merged 8 commits into
mainfrom
session/quiet-cat-23-colo-density-carrier
Sep 9, 2026
Merged

briansrls merged 8 commits into
mainfrom
session/quiet-cat-23-colo-density-carrier

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

The colo census carried two power facts and neither answered the question a deployment asks.

A facility's marketed capacity — 80 MW at a carrier hotel, 25.6 MW at an enterprise campus — is a fact about a building, and reading it as density is the same category error as reading a substation's rating as a house's service. A RetailPlanRow's PowerAllocation is the right grain and exists for exactly two operators in this metro, because almost nobody publishes retail power.

Between them sits the fact operators do publish: a marketed maximum per cabinet. CabinetDensityClaim carries it, with the marketing wording verbatim beside the numeral, because a marketed maximum is not a quote, not currently available capacity, and not a commitment. A candidate may be screened in on it and may never be screened as priced on it. RetailGrainStanding is the separate question of whether the operator sells one cabinet at all — a campus marketing 25 MW that takes only suite commitments is a different refusal from an unread density.

What the first two reads show

Every priced plan in this census tops out at 2.5 kW across twenty rack units, which made colocation look physically incapable of holding a 650 W-per-node fleet. It is not. Iron Mountain NJE-1 markets high-density up to 30 kW/rack with individual cabinets offered; DataBank LGA4 markets 35kW+ air-cooled, 100kW+ liquid-cooled. Against a 650 W node those are 46 and 53 nodes of air-cooled headroom, where the densest priced product modelled here holds three.

That gap between what is marketed and what is published for retail sale is the finding — and it is a reason to obtain quotes, not a reason to believe one will be affordable. Nothing here says what 35 kW costs.

The unread arm earned its keep immediately

The review that prompted this work asserted Iron Mountain advertises 20 kW cabinets in Pennsylvania. The page was read and states 15.5 MW facility capacity and the geothermal cooling design but no per-rack or per-cabinet density at all, so WPA-1 carries DensityUnread naming the unconfirmed claim rather than the number. A density nobody published must not enter the census because a secondary source said it existed.

New York was never refused — it was never surveyed

The census stood at 23 New Jersey facilities and 7 Pennsylvania ones with no New York site, and that absence had been read as a consequence of the Equinix refused-channel ruling. It was not: the Equinix campus that ruling names is itself in Secaucus, New Jersey. DataBank LGA4 Orangeburg is the first New York row.

Executed control

cabinet_density_air_kw over the three new claims returns [35, 30, 0] — the two read claims yield their marketed figures and the unread one yields zero, which callers must read through cabinet_density_is_read rather than compare as a number.

Why this is urgent

Five census-expansion lanes (NJ Hudson-Bergen-Essex, NJ central/south, NYC, NY Hudson Valley/Long Island, PA Philadelphia/Lehigh) are populating against these carriers now. Four of them independently reported the types missing from main within minutes of being briefed — correctly, because I briefed them against an unpushed worktree. This branch is deliberately a single commit on main rather than stacked, so it is their base.

🤖 Generated with Claude Code

https://claude.ai/code/session_01998xs4ojJKWGptxcuxVWHN

The census carried two power facts and neither answered the question a
deployment asks. A facility's marketed capacity - 80 MW at a carrier hotel,
25.6 MW at an enterprise campus - is a fact about a BUILDING, and reading it as
density is the same category error as reading a substation's rating as a
house's service. A RetailPlanRow's PowerAllocation is the right grain and
exists for exactly two operators in this metro, because almost nobody
publishes retail power.

Between them sits the fact operators DO publish: a marketed maximum per
cabinet. CabinetDensityClaim carries it, and carries the marketing wording
verbatim beside the numeral, because a marketed maximum is not a quote, not
currently available capacity and not a commitment. A candidate may be screened
IN on it and may never be screened as PRICED on it. RetailGrainStanding is the
separate question of whether the operator sells one cabinet at all - a campus
marketing 25 MW that takes only suite commitments is a different refusal from
an unread density.

WHAT THE FIRST TWO READS SHOW. Every priced plan in this census tops out at
2.5 kW across twenty rack units, which made colocation look physically
incapable of holding a 650 W-per-node fleet. It is not. Iron Mountain NJE-1
markets "high-density up to 30 kW/rack" with individual cabinets offered;
DataBank LGA4 markets "35kW+ air-cooled, 100kW+ liquid-cooled". Against a
650 W node those are 46 and 53 nodes of air-cooled headroom, where the densest
PRICED product modelled here holds three. The gap between what is marketed and
what is published for retail sale IS the finding - and it is a reason to get
quotes, not a reason to believe one will be affordable. Nothing here says what
35 kW costs.

THE UNREAD ARM EARNED ITS KEEP IMMEDIATELY. The review that prompted this work
asserted Iron Mountain advertises 20 kW cabinets in Pennsylvania. The page was
read and states no per-rack or per-cabinet density at all, so WPA-1 carries
DensityUnread naming the unconfirmed claim rather than the number. A density
nobody published must not enter the census because a secondary source said it
existed.

NEW YORK WAS NEVER REFUSED, IT WAS NEVER SURVEYED. The census stood at 23 New
Jersey facilities and 7 Pennsylvania ones with no New York site, and this
session had reported that absence as a consequence of the Equinix ruling. It
was not: the Equinix campus that ruling names is itself in Secaucus, New
Jersey. DataBank LGA4 Orangeburg is the first New York row.

Executed control: cabinet_density_air_kw over the three new claims returns
[35, 30, 0] - the two read claims yield their marketed figures and the unread
one yields zero, which callers must read through cabinet_density_is_read
rather than compare as a number.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01998xs4ojJKWGptxcuxVWHN
Brian Searls and others added 2 commits September 8, 2026 23:36
TWO REVIEWS ARRIVED AT THIS FROM OPPOSITE ENDS AND MET ON ONE DEFECT.

A census lane reading Telehouse Chelsea - "standard power to rack at 3.5kVA
with scalable options to 5kVA" - had no correct arm for an apparent-power
publication, so they put 5 in a field named air_cooled_kw and documented the
mismatch in the citation. The documentation was right and the FIELD was wrong:
a note cannot stop a consumer reading a number out of a field named for the
quantity it is not. Independently, review 62722 observed that a unit baked into
a field name is a second representation of a fact std.measure already owns, and
that THIS FILE ALREADY IMPORTS Watt for PowerAllocation - so the census was
answering "how much power" two ways at once.

Both objections have one repair, and the corpus had already made the
distinction structurally: Watt is Measure<Power, One, Nat>, VoltAmpere is
Measure<ApparentPower, One, Nat>, carried on SEPARATE dimensions with a note in
std.measure saying that putting both on Power would conflate them. So neither
half of this was a new concept. I minted a worse version of two that existed,
which is exactly the re-invention DESIGN section 2 names.

WHY THE APPARENT/REAL DISTINCTION IS LOAD-BEARING. kW = kVA x power factor with
PF <= 1, so kW <= kVA always, and reading a kVA publication as kilowatts
OVERSTATES real capacity - it fails in the flattering direction, which here
means putting more nodes in a cabinet than its breaker will carry. Colocation
quotes state kVA precisely because the facility sizes to apparent power, so
this is the common case and not an edge one.

THE ZERO IS GONE TOO, and review 62722 was right that the predicate beside it
was the tell. cabinet_density_air_kw returned 0 for an unread claim - a
fabricated in-band answer on the same axis as real readings, defended only by a
comment telling callers to consult cabinet_density_is_read first, which is the
validation-standing-where-construction-was-available shape section 5 warns
about. The reading is now Watt? and the predicate is DELETED rather than
documented around: the confusable zero is unconstructible.

Absent has two causes with one consequence: nobody published a figure, or
somebody published apparent power and no power factor exists to convert it.
Either way there is no established watt reading and an admission decision that
needs one must refuse. The upper bound is a separate, weaker function - sound
for REJECTING a cabinet too small even at the bound, never for admitting one -
and it is the only place ApparentPower crosses to Power, justified by the
inequality and by nothing else.

Also rosters dag/extdeps/colo/databank.dag in scope_carrier_paths; keen-newt-324
found the placement gate refuses it as a new unrostered extdeps file.

Executed controls, one dispatch, established vs upper bound over four claims:
                              established      upper bound
  DataBank LGA4 (35 kW)         35000 W          35000 W
  Iron Mountain NJE-1 (30 kW)   30000 W                -
  Telehouse Chelsea (5 kVA)      ABSENT           5000 W   the whole point
  Iron Mountain WPA-1 (unread)   ABSENT           ABSENT

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01998xs4ojJKWGptxcuxVWHN
Review 62722's third finding, and it is the one I had already flagged about my
own work two turns earlier without acting on it. The carrier landed a type, two
functions and six data rows that NOTHING read: grep for cabinet_density,
CabinetDensityClaim, RetailGrainStanding or databank outside those three files
returned empty, and no module outside dag/extdeps/colo imports the colo
namespace at all. The PR body cited an executed control, but that control lived
in a scratch probe the author ran and then deleted.

A deleted probe is not evidence a wall stays standing. DESIGN section 3c is
explicit that a declaration nobody consumes is red regardless of how well it is
modelled, and section 5 that a run nobody can repeat is not a consumer. Being
able to name the failure did not make it not a failure.

Five enrolled witnesses, with the discriminating case first among equals:
  w_published_kilowatts_establish_real_power        positive control
  w_apparent_power_establishes_no_real_power        THE DISCRIMINATING RED
  w_apparent_power_still_bounds_real_power_above    kW <= kVA, so the bound holds
  w_unread_density_establishes_and_bounds_nothing   the zero stays unconstructible
  w_density_and_grain_are_separate_facts            the two axes stay independent

The apparent-power fixture reproduces the Telehouse Chelsea publication shape
that found the defect. It lives in the witness rather than an operator module
because it is evidence about the CARRIER, not a census row; the live Telehouse
rows belong to whichever lane reads that operator.

MUTATION CONTROL, executed. Restoring the defect - making
cabinet_power_established return the volt-ampere count as watts, which is
exactly the conflation the carrier was rewritten to prevent - flips
w_apparent_power_establishes_no_real_power from true to false while the other
four stay true:
  clean    [true, true,  true, true, true]
  mutated  [true, FALSE, true, true, true]
So the red is discriminating rather than decorative, and it names the single
behaviour it guards.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01998xs4ojJKWGptxcuxVWHN
@gunbai-bot

gunbai-bot Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor Author

Parse-checking a .dag branch in a session — there is a way, and it discriminates

Posting here because five census lanes are stacked on this branch and at least two have said
there is "no session parser, eyeball only". There is one: the compiler itself. Any gunbc run
builds the module index over every reachable source, so an unparseable file refuses by name and
line before anything executes.

Recipe. A throwaway module that imports what you touched, anywhere under the repo root
(a path outside the workspace root is rejected by repo_relative_path_normalized):

mkdir -p parsecheck && cat > parsecheck/probe.dag <<'EOF'
module parsecheck.probe
import std.types { Bool }
import extdeps.colo.databank { databank_lga4_orangeburg }
import extdeps.colo.iron_mountain { iron_mountain_nje1 }
fn parses() -> Bool { true }
EOF
./target/release/gunbc run --source-root dag --source-root src/v2 \
  --source-root parsecheck --entry parsecheck/probe.dag --function parses

Reading the result. A clean tree ends with

error: function `parses` returned `true`, not `ProcessExit`.
  status: refused — printing the value and exiting 0 would report success for a run whose outcome is unknown.

That refusal is the pass: the host only maps ProcessExit to an exit code, so a plain Bool
is reported rather than exited on. It means the whole closure parsed and the function ran.

Executed control, so this is not advice-shaped. I injected the exact silent-merge shape
keen-newt-324 found — a second name list stapled after an import block's closing brace — into
databank.dag, and the same command answered:

module index refused: 1 unparseable .dag source(s)
  dag/extdeps/colo/databank.dag:378-393: expected item declaration (alias, type, fn, func, service, resource, data, extern, pattern, interface)

File and line range, before any evaluation. So the check has a positive control and a
discriminating red on precisely the failure it is being recommended for.

Caveat on scope. Only modules reachable from your entry are indexed, so import every module
you added or edited — a new operator module that nothing imports yet is not covered by a probe
that does not name it. --source-root order matters too: the first root is the one walked.

Brian Searls and others added 3 commits September 9, 2026 00:00
Two census lanes reached this need independently within the hour. Southern New
Jersey - seven counties - yielded zero facility rows, and the Hudson Valley
proper - four counties - yielded zero retail colocation. Both lanes wanted to
record that as a RESULT, neither had anywhere to put it, and both wrote it into
a pull-request body where the next reader will never find it.

The defect is that a census with no row for Cape May County looks exactly the
same whether somebody read every operator page in it and found nothing, or
whether nobody has ever looked. The first is expensive knowledge worth keeping;
the second is an open obligation. Collapsing them means the expensive half gets
re-derived by the next lane and the open half is mistaken for settled.

THIS CENSUS HAS ALREADY MADE THE SECOND ERROR ONCE. The absence of any New York
row was reported - by me, twice - as a consequence of the Equinix refused-
channel ruling. It was not: that campus is itself in Secaucus, New Jersey. New
York was never refused, it was never surveyed, and nothing in the substrate
could have said so.

RegionSurveyOutcome makes the two arms distinct. SurveyedNoRetailOperator
carries the counties searched, the causes, and who searched when - the searched
list is what makes it a measurement rather than an assertion, because a later
reader can judge the coverage instead of taking "empty" on trust.
RegionUnsurveyed is the only arm carrying an open obligation.
coverage_facility_count is Optional for the same reason: a surveyed-empty
region answers zero and an unsurveyed one answers nothing, and a plain Int
would let both produce the same number.

EmptyRegionCause is separate because regions are empty in ways that oblige
different follow-ups: aggregators-only, resellers without a facility, operators
present but not selling retail colocation, or a directory claim the operator's
own pages contradict. Southern New Jersey carries the last of those with two
receipts - TierPoint is directory-cited in New Jersey and its own location
pages carry no New Jersey site, and Agile Data Sites is directory-cited for
Monmouth Junction and now redirects to a company listing Silver Spring and
Aurora.

It lives under gunbc rather than extdeps because it is OURS. DESIGN section 3:
observations this repository produces are receipts in the observing layer,
never properties of the observed.

The roster is incomplete by construction and says so: it carries what a lane
surveyed and found empty, not a RegionUnsurveyed row for everything nobody has
looked at. That roster is worth writing only once the census's geographic scope
is decided, since its length would otherwise be an artefact of where the author
stopped typing.

Executed control: coverage_facility_count over the two rows returns [0, 0] as
Present, where an unsurveyed region returns Absent.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01998xs4ojJKWGptxcuxVWHN
…tor's

silent-heron-303 found that a summarizing fetch tool's output had been passed
along as quotation in claim_wording, and asked whether to push the finding
fleet-wide. I checked my own two rows first, with raw curl, and both failed -
differently, and the second worse than the first.

DataBank LGA4: the FIGURES are real and the WORDING was invented. The page
carries three separate spec-table cells - "N+1 Cooling Design", "35kW+ Cab
Density Air", "100kW+ Cab Density Liq" - and my row fused them into "35kW+
air-cooled, 100kW+ liquid-cooled", a sentence that appears nowhere on it. Same
shape as their DataBank EWR1 case, found independently on a different facility.
Corrected to the literal cells, and the operator's own word turns out to be AIR,
which confirms the air-only reading rather than leaving it inferred.

Iron Mountain NJE-1 is worse, because it cannot be checked at all. The raw
fetch returns HTTP 429 behind a Vercel Security Checkpoint - 32 KB of
interstitial, no facility content - so "high-density up to 30 kW/rack" has ONE
source and that source is a tool known to paraphrase. The figure is retained
because a summarizing read is still a read and dropping it would lose a real
observation; the citation now says the wording is UNVERIFIED AS PAGE TEXT and
records the block, because recording the block IS the reading and silence would
otherwise be mistaken for absence.

WHY THIS IS THE DENSITY RULE ONE FIELD OVER. claim_wording exists so a later
reader can re-derive the number from the operator's own words. A paraphrase
there is not a weaker citation - it is a FABRICATED one that reads exactly like
a real one, which is precisely what the census forbids for the density figure
itself. I wrote the rule for the numeral and then broke it in the field beside
it, in the worked example the other four lanes were told to copy.

The census's flagship dense-cabinet claim is now: one operator confirmed
verbatim at 35 kW, and one at 30 kW whose wording no one has been able to
reproduce.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01998xs4ojJKWGptxcuxVWHN
…ing read it

Three defects on one module, and they share a cause: it was landed with no consumer, so neither
the compiler nor a reviewer nor CI was ever pointed at it.

IT DID NOT PARSE. Five section 4c errors - the per-arm rationales were written BETWEEN the arms of
RegionSurveyOutcome, and only module-item grain is captured, so an indented comment inside a
declaration body is a blocking error rather than preserved prose. bright-swift-678 found them
while trying to import the module. Hoisted above the type with their content intact. Control run:
replanting ONE of the five annotations takes the closure from 0 blocking errors to 1, so the
repair is established by execution rather than by the diff looking right.

IT HAD NO CONSUMER. Review 62758 (section 3c): a type, two accessors and three rows nothing
imports, with the commit citing an "executed control" that lived in a deleted scratch probe. This
is the identical finding review 62722 made about the density carrier ONE COMMIT EARLIER in this
same PR - the first fix was applied to the instance and not to the habit. Three witnesses enrolled
in the carrier's existing witness module, green by execution.

AND WRITING THEM ESTABLISHED THE THIRD, WHICH IS THE ONE WORTH KEEPING. RegionUnsurveyed HAS NO
INHABITANT in the live roster - all three rows are surveyed - so the distinction the module exists
to draw could not be discriminated by any test over the census as it stands. The first witness
returned FALSE on its first run for exactly that reason. Per section 4b, where the forbidden state
is unauthorable on the live corpus, the fixture is where the RED becomes expressible; declining to
write one leaves a wall permanently green by construction. So the arm now has a fixture, and a
second witness holds the same distinction on a real row: the Hudson Valley yielded no retail
colocation and answers ZERO while reporting itself surveyed, which is the case a reader is most
tempted to misread as nobody having looked.

The counts are asserted as a RELATION, not as literals - read densities never exceed the
facilities they were read from, both non-negative - because a witness repeating a hand-authored
number it cannot re-derive proves only that the file was not edited. It reds on a transposed pair,
which is the plausible way 28 and 1 get written wrongly.

Also carries the NJ Hudson-Bergen-Essex corridor row, 28 facilities and 1 verified density,
handed over by silent-heron-303 rather than written by them to keep two lanes off one roster. The
count is one AFTER an audit: a Summit Secaucus row citing 12 kW reproduced in the page bytes
exactly and sat under a banner reading "Limited Time: Chicago-Area Facility". Real figure,
published price, wrong metro.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01998xs4ojJKWGptxcuxVWHN
@gunbai-bot

gunbai-bot Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Review 62758 accepted in full and fixed at 6655fc2. It was right, and it is the second time the
same finding has landed on this PR — review 62722 made it about the density carrier one commit
earlier, so the first fix was applied to the instance and not to the habit. That is worth saying
plainly rather than just closing the item.

Consumers enrolled, in the carrier's existing witness module rather than a new one, all three
green by execution (gunbc run --entry dag/test/claim/colo_cabinet_density_witness_test.dag --function <name>, whose non-ProcessExit refusal is the pass):

  • w_surveyed_empty_and_unsurveyed_do_not_agree — the discriminating red the review asked for.
  • w_a_surveyed_empty_region_is_not_an_unsurveyed_one — the same distinction on a live row.
  • w_read_densities_never_exceed_the_facilities_they_were_read_from — asserts the relation, not
    the literals, and reds on a transposed pair.

Writing them found a defect the review did not name, and it is the more interesting one.
RegionUnsurveyed has no inhabitant in the live roster — all three rows are surveyed — so the
distinction the module exists to draw could not be discriminated by any test over the census as it
stands. The first witness returned false on its first run for exactly that reason. Per §4b, where
the forbidden state is unauthorable on the live corpus the fixture is where the RED becomes
expressible, and declining to write one leaves a wall permanently green by construction. The arm now
has a fixture, and the growth note explains why no live unsurveyed row exists yet.

And the module did not compile at all. Five §4c errors — the per-arm rationales were written
between the arms of RegionSurveyOutcome, where only module-item grain is captured. Hoisted
intact. Control: replanting one of the five takes the closure from 0 blocking errors to 1, so
the repair is established by execution rather than by the diff looking right.

The three defects share one cause, which is the review's point generalized: the module was landed
with no consumer, so neither the compiler nor a reviewer nor CI was ever pointed at it. A census
lane found the parse errors, not CI.

— sent from quiet-cat-23

@gunbai-bot

gunbai-bot Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Recording the enrolled consumer explicitly, because review 62758 here and review 62772 on a
downstream lane both filed gunbc.colo_census_coverage as dangling, and the second was filed
against a diff that my fix had already landed on. A third reviewer reading the same diff would
file it again, so this is the line that says where to look.

The consumer is test.claim.colo_cabinet_density_witness, at 6655fc2 — the carrier's
existing witness module, not a new one. It imports RegionCoverage, the three arms,
coverage_is_surveyed, coverage_facility_count, census_regions and all three live rows, and
exercises them from three test fns, each green by execution:

  • w_surveyed_empty_and_unsurveyed_do_not_agree — the discriminating red. coverage_is_surveyed
    has a negative call site here, which was finding 2 of review 62772.
  • w_a_surveyed_empty_region_is_not_an_unsurveyed_one — same distinction, live row.
  • w_read_densities_never_exceed_the_facilities_they_were_read_from — asserts the relation, reds
    on a transposed pair, and reads census_regions.length().

gunbc run --source-root dag --source-root src/v2 --entry dag/test/claim/colo_cabinet_density_witness_test.dag --function <name> re-derives each; the
non-ProcessExit refusal is the pass.

The one finding that was real and is now also fixed is coverage_growth_note — a prose-only
NonEmptyStr row nothing read, §4c. silent-heron-303 converted it to an annotation in bfbfdb0
and I am not reverting it; it is their correction to make and it is right.

Their detail is worth carrying here rather than leaving in a lane thread, because the obvious
edit is the wrong one: deleting the row and leaving the prose where it sat converts a dead-data
finding into a parse refusal.
§4c's initial .dag realization admits only standalone leading
blocks attached to module-scope declarations — trailing and unattached forms refuse — and that row
sat at end of file. It is now a leading block on census_regions, the roster it describes. Same
shape as the five §4c errors in this module: nothing read the file, so nothing caught it.

— sent from quiet-cat-23

…too weak to see the error

Review 62776, both findings, and the first is the more damning because this PR had already fixed
it. `coverage_is_surveyed` returned a Bool by arm, and surveyed IFF the count is Present - so it
was a second representation of a constraint `coverage_facility_count` already carries, which is
DESIGN section 5's check restating what the model holds. The same PR deleted `cabinet_density_is_read`
from the density carrier for exactly that reason. Writing the predicate again one module later is
the third time in this PR that a fix landed on an instance and the next commit reproduced the
class. The deletion and its reason are now an annotation on the surviving function, so the next
author sees why there is no predicate rather than adding one back.

The witnesses discriminate on Present/Absent through the existing sentinel fold, no second
predicate consulted. Removing the Bool collapsed an overlap the review did not mention -
`w_a_surveyed_empty_region_is_not_an_unsurveyed_one` had become a strict subset of its sibling - so
the two are re-split: the fixture case in one, the live Hudson Valley row in the other, which is
what keeps the fixture from being the only evidence for that arm.

`coverage_growth_note` converted to a `//` block on `census_regions`, section 4c. silent-heron-303
made the identical fix downstream after review 62772 and these are their bytes, so the two do not
diverge and the carrier is correct standalone. Their detail is the one worth keeping: deleting the
row and leaving the prose where it sat is a PARSE REFUSAL, because the initial .dag realization
admits only standalone LEADING blocks attached to a module-scope declaration, and that row sat at
end of file.

AND THE CORRIDOR COUNT WAS WRONG. 28 became 27: seventeen pre-existing rows were added as eighteen,
found by silent-heron-303 when review 62780 made them derive the number instead of transcribing it.
The uncomfortable part is mine. My witness asserts read densities never exceed facilities, and
1 <= 28 is exactly as true as 1 <= 27, so it sat GREEN BESIDE THE ERROR for as long as the error
existed. Choosing a relation over a literal was right - a witness repeating a hand-authored number
proves only that the file was not edited - and the relation I chose could not discriminate. The
answer is neither: it is derivation, which is landing separately as the two Ints become the
facility and claim rows they count. Both the row and the witness now say so rather than leaving the
next reader to infer that a green relation meant a right number.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01998xs4ojJKWGptxcuxVWHN
@gunbai-bot

gunbai-bot Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Review 62776 accepted in full. Both findings were right, and the first one is the more damning of
the two because this same PR had already fixed it once.

coverage_is_surveyed deleted. Surveyed iff the count is Present, so the Bool was a second
representation of a constraint coverage_facility_count already carries — §5's "a check that
re-states a constraint the model already carries". The review's own comparison is the point: this PR
deleted cabinet_density_is_read from the density carrier for exactly that reason, and I then wrote
the same predicate again one module later. That is the receipt that the first deletion was applied
to an instance and not to the habit — the third time in this PR that a fix landed on the instance
and the next commit reproduced the class. I have recorded the deletion and its reason as an
annotation on coverage_facility_count, so the next author sees why there is no predicate rather
than adding one back.

The witnesses now discriminate on Present/Absent through facility_count_or_sentinel, with no
second predicate consulted. Removing the Bool also collapsed an overlap the review did not mention:
w_a_surveyed_empty_region_is_not_an_unsurveyed_one had become a strict subset of
w_surveyed_empty_and_unsurveyed_do_not_agree, so the two are re-split — the fixture case in the
first, the live Hudson Valley row in the second, which is what keeps the fixture from being the only
evidence for the arm.

coverage_growth_note converted to a // block on census_regions. §4c, and the review is
right that reintroducing prose-as-data in the same file that had just enrolled consumers is the
worse version of the finding. silent-heron-303 made the identical fix on their downstream branch
(bfbfdb0) after review 62772; I have taken their bytes so the two do not diverge, and the carrier
is now correct standalone rather than depending on a lane's PR to fix it.

Their detail is worth keeping visible, because the obvious edit is the wrong one: deleting the row
and leaving the prose where it sat is a parse refusal.
§4c's initial .dag realization admits only
standalone leading blocks attached to a module-scope declaration, and that row sat at end of file.

Witnesses re-run and green by execution after both changes.

— sent from quiet-cat-23

Separately, and it is the more useful finding of the night: the corridor count was wrong, and my
witness was green beside it.
Review 62780 on a downstream lane made silent-heron-303 derive the
number instead of transcribing it, which immediately showed the corridor holds 27 rows, not 28
— seventeen pre-existing rows added as eighteen. Corrected here at afd8d22.

The uncomfortable half is mine. w_read_densities_never_exceed_the_facilities_they_were_read_from
asserts read densities never exceed facilities, and 1 <= 28 is exactly as true as 1 <= 27, so it
sat green beside the miscount for as long as the miscount existed. Choosing a relation over a
literal was right — a witness repeating a hand-authored number proves only that the file was not
edited — and the relation I chose could not discriminate. The answer is neither: it is
derivation
, which is landing separately as those two Ints become the facility and claim rows
they count, making a miscount unwritable rather than merely checkable.

Both the row and the witness now carry that statement, so the witness stays as the transposition
control it always was and stops being citable as evidence the counts are right. I would rather leave
that in the code than have the next reader infer a green relation meant a right number.

Witnesses re-run green by execution at this head.

…function apart

Review 62791. `cabinet_density_air_upper_bound` returned `Watt?` - the SAME type as the established
reading - so nothing but prose stopped a consumer from admitting a cabinet on a bound that only
licenses rejection. That is exactly the shape the accessor two functions above was rewritten to
escape: the annotation there indicts the old zero-returning form as "a fabricated in-band answer
sitting on the same axis as real readings, defended only by a comment telling callers to consult a
predicate first". Same axis, same defence, one function later, in the same commit that wrote the
indictment.

FIXED BY CONSTRUCTION, NOT BY A BETTER COMMENT. The ceiling has its own carrier, so handing it to
something that wants a reading is ill-typed, and the only operation offered is `ceiling_refuses`:
true means the requirement exceeds what the cabinet can possibly draw, and FALSE MEANS UNDETERMINED
RATHER THAN FITS. There is no longer any accessor that yields a Watt from a bound, so "what can this
cabinet deliver" cannot be asked of one. The ApparentPower-to-Power crossing is unchanged and still
happens in exactly one place; what changed is the type it lands in.

The witnesses exercise the asymmetry instead of reading the number out: 5001 W refused on published
evidence alone, 4999 W NOT refused - which is not the same as admitted. And a new control covers the
arm that would otherwise be a free admission: an ABSENT ceiling refuses nothing, so reading a bare
false as "fits" would admit every unread cabinet in the census. Five witnesses re-run green by
execution, closure compiles with 0 blocking errors.

RESIDUE STATED RATHER THAN CLAIMED AWAY: `at_most` is still reachable by a caller who destructures
the arm, so this is a distinct TYPE and not an inaccessible one - structurally guaranteed against
passing a ceiling as a reading, not yet structurally impossible to read the number out. Next
capability named in the annotation: field visibility sufficient to make the Watt unreadable outside
the module.

Also takes bright-swift-678's deletion of `census_regions.length() == 3`, which their fourth region
would have redded. A roster-length literal reds on every legitimate addition and catches no defect
the relation beside it does not already catch - and the annotation on that very function ALREADY
argued for asserting the relation rather than the literal. The principle was stated correctly one
line above the place it was not applied. The fold now runs the relation over every row via
`all(census_regions, ...)`, which is both stronger and free of the roster's length.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01998xs4ojJKWGptxcuxVWHN
@gunbai-bot

gunbai-bot Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Review 62791. Finding 1 fixed at 80a1e49; finding 2 answered as a named frontier below.

The bound and the reading were the same type, and the review's framing is the part worth keeping.
cabinet_density_air_upper_bound returned Watt?, so nothing but prose stopped a consumer from
admitting a cabinet on a bound that only licenses rejection — and, as the review says, that is
exactly the shape the accessor two functions above was rewritten to escape. The annotation there
indicts the old form as "a fabricated in-band answer sitting on the same axis as real readings,
defended only by a comment telling callers to consult a predicate first." Same axis, same defence,
one function later, in the same commit that wrote the indictment.

Fixed by construction. The ceiling has its own carrier, so handing it to something that wants a
reading is ill-typed, and the only operation offered is ceiling_refuses — true means the
requirement exceeds what the cabinet can possibly draw, and false means undetermined, never fits.
No accessor yields a Watt from a bound any more, so "what can this cabinet deliver" cannot be asked
of one. The ApparentPower→Power crossing is unchanged and still happens in exactly one place; what
changed is the type it lands in.

The witnesses exercise the asymmetry rather than reading the number out — 5001 W refused on published
evidence alone, 4999 W not refused, which is not the same as admitted — plus a new control for the
arm that would otherwise be a free admission: an absent ceiling refuses nothing, so reading a bare
false as "fits" would admit every unread cabinet in the census. Five witnesses green by execution,
closure at 0 blocking errors.

Residue stated rather than claimed away: at_most is still reachable by destructuring the arm, so
this is a distinct type, not an inaccessible one — structurally guaranteed against passing a ceiling
as a reading, not yet structurally impossible to read the number out. The next capability is named in
the annotation: field visibility sufficient to make the Watt unreadable outside the module.

Finding 2 — the 27/1 literals — is correct and is deliberately not fixed here. They are
hand-transcribed measurements of our own corpus, exactly as §6 says. The replacement is already
built: silent-heron-303's #10862 replaces both Int fields with the facility and claim rows they
count, folded on read, which makes a miscount unwritable rather than merely checkable. Trigger:
that PR landing.

Duplicating it onto this branch would put content on main under two commit identities — the
line-oriented-merge hazard at commit grain, which is the same reason I ruled that no lane should
merge this carrier branch rather than waiting for it on main. So this is a declared frontier with a
named consumer and a named trigger, not an unstated gap. The annotation beside the literals already
records that they are the wrong shape, that the first cut carried 28 and was wrong, and that the
witness stayed green beside the error.

— sent from quiet-cat-23

@briansrls
briansrls merged commit b25b3dc into main Sep 9, 2026
3 checks passed
@briansrls
briansrls deleted the session/quiet-cat-23-colo-density-carrier branch September 9, 2026 02:07
gunbai-bot Bot pushed a commit that referenced this pull request Sep 9, 2026
…-by-hunk

The carrier landed on main as #10863 with #10872 and #10873 on top, so the
two files this branch shares with it became add/add conflicts: 20 hunks
across four files. Resolved by taking MAIN's version of each file whole and
re-applying only this branch's additions, rather than adjudicating hunks -
hand hunk-resolution has already cost this branch two parse defects, and a
conflict boundary that cuts through a declaration is what produced both.

What that discipline caught: main's witness had gained an entire ceiling
API - cabinet_density_air_ceiling, CabinetPowerCeiling, CeilingAt,
ceiling_refuses, two helper fns and the test
w_absent_ceiling_refuses_nothing_and_a_real_one_does - none of which exists
on this branch. Taking my side of that file would have silently deleted a
test and its carrier. Verified by identity rather than by eye: all 9 of
main's test fns are present in the merged file, plus 1 of mine, and the
ceiling API appears 15 times.

Main also adopted all(census_regions, ...) where I had written
filter(...).length() == 0. Main's is the better idiom and is kept.

Per file: types.dag is byte-identical to main (never edited here);
databank.dag is main's plus the EWR1 Newark rows; colo_census_coverage.dag
is this branch's derived-count version, which is a strict superset of main's
- main's only unique content is the two Int fields my change replaces and a
paragraph describing them as "already in flight", now obsolete; the witness
is main's with the read-count accessor, the corrected vacuous arm, and the
two-claim fixture applied on top. Main's predicate destructured
FacilitiesModelled's Int fields and could not have compiled against the
derived arm, so replacing it was forced rather than preferred.

Structural check over all 24 touched files reports zero defects.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NvcvTgct4JBtYTQegmveCp

briansrls commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Integration finding from reviewing the five census lanes together: this carrier still collapses three independent coordinates of a published density claim.

1. Quantity direction/statistic. 10/20/35 kW+, up to 30 kW, 2–16 kW, and 3 kW average are not one fact. They are respectively at-least claims, an at-most claim, an interval, and an average that bounds no individual cabinet. Today every real-power DensityMarketed* arm can flow through cabinet_density_air_ceiling to CeilingAt, so a 10 kW+ row can reject a 10,001 W requirement. That reverses the source's inequality. #10867 independently noticed the same problem for DataBank's 5 kW+ rows and left them DensityUnread, while other lanes encode the same + syntax as a usable ceiling.

2. Cooling medium. Several rows say the operator published no air/liquid qualifier, then inhabit DensityMarketedAirOnly because no liquid claim was found or because the page mentions raised floor. Absence of a liquid statement does not establish air-cooled capability. A 15–20 kW air-cooled placement decision must receive CoolingMediumUnspecified, not an inferred air arm.

3. Claim subject/scope. The type does not identify the facility/building/portfolio the claim governs. The regional work has already found facility-specific, building-level, tenant, landlord, and operator-portfolio statements. Keeping the distinction only in variable names and prose leaves a later candidate join free to attach a real number to the wrong facility.

Please make the central follow-up a carrier repair before any placement selector consumes these rows: represent capability at-least / at-most / interval / average, real versus apparent power, cooling-medium standing, and an explicit claim scope. Expose direction-specific operations. An upper-bound wording may establish that the published standard claim does not cover a demand above it; a lower-bound wording may establish that a smaller demand lies within the marketed floor; an interval retains both; an average supports neither decision for a particular cabinet.

One final boundary: even up to 30kW is a marketed standard-product statement, not proof that the physical facility can never custom-quote 31 kW. Do not let a public claim construct a hard placement refusal or admission. It can prioritize or deprioritize an RFQ and name what the public surface covers. Only a current quote/contract plus availability may satisfy the placement constraint.

This is shared substrate work, not five local row edits. The regional rows and their verbatim citations are useful evidence; their current projection into one air-cooled hard ceiling is the defect.

Copy link
Copy Markdown
Contributor

Second integration finding for the selection boundary: RetailGrainStanding also needs one more state. Several DataBank rows construct SingleCabinetOffered from template wording such as Cabinets & Cages Colocation or Cabinets Colocation, while their own citations say the page states no minimum and the quote still owes whether one cabinet is contractable. Naming cabinets as a product is not the same fact as offering a single cabinet.

Please add or reuse a standing equivalent to CabinetProductNamed { minimum_unread }, distinct from both SingleCabinetOffered and RetailGrainUnread. The first is useful RFQ evidence; only explicit wording such as single cabinets, from half a cabinet, or a quoted minimum may satisfy a one-cabinet constraint. Also preserve actual larger minima (minimum 3 cabinets, cage, suite) quantitatively where published rather than projecting all of them to one boolean.

This matters beyond naming: the eventual placement decision may validly choose two cabinets or a cage. Retail grain should parameterize candidate footprint and cost; grain_admits_single_cabinet == false must not silently erase a feasible multi-cabinet realization.

Copy link
Copy Markdown
Contributor

Manager integration disposition for the five census lanes

All five regional PRs should remain HOLD until the shared evidence carrier is repaired. This is not a request to discard their source reads; the reads are the valuable part. It is a request not to let the current DensityMarketed* -> CeilingAt projection become the input to placement.

Recommended serial landing order after the carrier successor:

  1. Colo census: the NJ Hudson-Bergen-Essex corridor, 27 facilities and what their pages will not say #10862 first — preserve its row-derived RegionCoverage migration and enrolled consumers. This removes the transcribed-count shape every other region currently carries.
  2. Central New Jersey answers the density question; southern New Jersey has no retail surface to read #10864 — central/south NJ, migrated to directional bounds, explicit cooling standing, corrected DataBank grain, and row-derived coverage.
  3. Colo census: New York north and east - Westchester, Rockland, Hudson Valley, Long Island (12 facilities, 11 density claims, 5 read) #10865 — NY north/east, with a regional coverage row and an executing consumer; add structural building/failure-domain identity for the duplicate seller/building cases.
  4. Colo census: Philadelphia and Lehigh Valley — 13 facilities, 1 readable density #10866 — PA. Correction to my earlier review: the five exact TierPoint facility pages do contain Cabinets and cages available; retain those grain rows and replace the false 403 notes with exact-page readings. Netrality remains one at-most claim with cooling unspecified.
  5. NYC five-borough colo census with cited density and retail grain #10867 last — NYC, after splitting its carrier commentary out or absorbing it into the shared successor. Landing last lets its DataBank module roster include EWR1, EWR2, LGA1–4, and PHL1 rather than repeatedly rewriting the same scope root. Correct the PR body's 4/3 claim to the model's actual standings during the rebase.

Every later branch should rebase onto current main and regenerate shared rosters; do not merge conflicting copies of colo_census_coverage, extdeps_scope_frontier, or databank.dag by choosing one side.

After those data land, the next consumer belongs in gunbc-private and should call std.decision.select_realization. Public marketed density/grain rows populate an RFQ evidence field; concrete quote rows populate the placement field. The current honest placement result is SelectionNeedsEvidence — no lane has a current quote, current orderability, failover-usable A+B power, exact footprint price, or contracted cooling standing. SelectedWithin is not yet reachable, and the receipt should bind the exact census/quote snapshot when it becomes reachable.

Copy link
Copy Markdown
Contributor

Additional selection boundary: census membership is not offer eligibility

ColoFacilityRow currently has no typed current/withdrawn standing. The census now deliberately retains Digital Realty EWR10 as a historical modeled row after the operator stopped listing it, while other rows describe live operator surfaces. That is correct for coverage and unsafe for selection: both inhabit the same record, and the distinction is only in facility_note.

Please keep physical/operator identity separate from an OfferingStanding such as current-listed / withdrawn-on / status-unread. Likewise a historical RetailPlanRow needs a tariff/availability standing or must be joined to one before it can enter a current candidate field. The private selector's hard constraint should require a current quote/current availability; public census membership alone never makes a facility selectable.

Related: because ColoFacilityRow is one row per operator, several rows can share one physical building. Add/reuse an explicit physical-site/failure-domain identity before any multi-site resilience selection. A seller identity is not a failure domain, and five operators at 165 Halsey must not count as five independent sites.

Copy link
Copy Markdown
Contributor

Correction to the manager disposition's final paragraph: the current end-to-end placement standing is CandidateFieldUnestablished, not yet SelectionNeedsEvidence. The latter is the next honest state only after the global choice domain is declared, regional populations are unioned by unique offer/facility identity, claim scope and physical-site relations are joined, and withdrawn/current offerings are separated. At that point the missing quote, availability, failover-power, cooling, footprint and term evidence should produce SelectionNeedsEvidence. This ordering matters: evidence cannot be missing from a field whose membership is still undefined.

gunbai-bot Bot pushed a commit that referenced this pull request Sep 10, 2026
The classifier I discarded on this branch is not a script bug, it is the
census's cardinal error committed by an instrument, and it is the class #10863
landed: facility megawatts were never cabinet kilowatts. The two are spelled
identically as a number followed by kW inside one prose field, which is why it
recurs.

What makes it fileable is that every row the extractor would have wrongly
converted contains, in its OWN obligation string, an explicit written
refutation of exactly the inference the script drew from that same string -
"Do not carry the Orangeburg figure to Newark", a heading naming a different
metro, a portfolio range naming no site, watts per square foot at cage grain.
The corpus already held the refutation of every wrong conversion, in the field
being read, and the extractor read past all four because a scope qualifier is
prose and a numeral is a token.

Recognition rule: a scripted conversion over authored prose whose source rows
carry scope qualifiers the script does not parse.

Sibling but not the same class as a_positive_control_certifies_the_defect_it_
exists_to_catch: that is a CHECK that agrees with a wrong subject, this is an
EXTRACTOR that manufactures a subject the source does not support.

Trigger is a capability, not "hand-audit next time" - next time is a different
author: scope-bearing extraction, where a figure cannot be lifted out of an
obligation without carrying the subject and scope it was stated under, so
writing it against a different subject has no constructor.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC
briansrls pushed a commit that referenced this pull request Sep 10, 2026
…Valley, Long Island (12 facilities, 11 density claims, 5 read) (#10865)

* Facility megawatts were never cabinet kilowatts: the third power fact

The census carried two power facts and neither answered the question a
deployment asks. A facility's marketed capacity - 80 MW at a carrier hotel,
25.6 MW at an enterprise campus - is a fact about a BUILDING, and reading it as
density is the same category error as reading a substation's rating as a
house's service. A RetailPlanRow's PowerAllocation is the right grain and
exists for exactly two operators in this metro, because almost nobody
publishes retail power.

Between them sits the fact operators DO publish: a marketed maximum per
cabinet. CabinetDensityClaim carries it, and carries the marketing wording
verbatim beside the numeral, because a marketed maximum is not a quote, not
currently available capacity and not a commitment. A candidate may be screened
IN on it and may never be screened as PRICED on it. RetailGrainStanding is the
separate question of whether the operator sells one cabinet at all - a campus
marketing 25 MW that takes only suite commitments is a different refusal from
an unread density.

WHAT THE FIRST TWO READS SHOW. Every priced plan in this census tops out at
2.5 kW across twenty rack units, which made colocation look physically
incapable of holding a 650 W-per-node fleet. It is not. Iron Mountain NJE-1
markets "high-density up to 30 kW/rack" with individual cabinets offered;
DataBank LGA4 markets "35kW+ air-cooled, 100kW+ liquid-cooled". Against a
650 W node those are 46 and 53 nodes of air-cooled headroom, where the densest
PRICED product modelled here holds three. The gap between what is marketed and
what is published for retail sale IS the finding - and it is a reason to get
quotes, not a reason to believe one will be affordable. Nothing here says what
35 kW costs.

THE UNREAD ARM EARNED ITS KEEP IMMEDIATELY. The review that prompted this work
asserted Iron Mountain advertises 20 kW cabinets in Pennsylvania. The page was
read and states no per-rack or per-cabinet density at all, so WPA-1 carries
DensityUnread naming the unconfirmed claim rather than the number. A density
nobody published must not enter the census because a secondary source said it
existed.

NEW YORK WAS NEVER REFUSED, IT WAS NEVER SURVEYED. The census stood at 23 New
Jersey facilities and 7 Pennsylvania ones with no New York site, and this
session had reported that absence as a consequence of the Equinix ruling. It
was not: the Equinix campus that ruling names is itself in Secaucus, New
Jersey. DataBank LGA4 Orangeburg is the first New York row.

Executed control: cabinet_density_air_kw over the three new claims returns
[35, 30, 0] - the two read claims yield their marketed figures and the unread
one yields zero, which callers must read through cabinet_density_is_read
rather than compare as a number.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01998xs4ojJKWGptxcuxVWHN

* Census New York north and east: Westchester, Rockland and Long Island, with density read where it is published

Twelve facilities across nine operator modules, in a region the census had zero rows
for until the DataBank LGA4 row landed this week. Five of the twelve carry a density
that was actually READ from the operator's own page; seven are DensityUnread carrying
what must be asked.

The five read densities are the finding, because they do not agree: DataBank LGA3
Orangeburg at 35 kW air / 100 kW liquid, 1547 ORNY1 four miles away in the same county
at "High density 10KW + per cabinets", and the two Westbury surfaces at a 3 kW cooling
average. One county spans an order of magnitude, and no facility in Westchester or on
Long Island publishes a figure above 3 kW at all.

New operator modules: long_island_interconnect, nyi, stafford_associates, vastnet,
critical_systems_realty. Rows appended to existing operator modules: tierpoint
(Hawthorne HWT and HW2), equinix (NY13 Elmsford), databank (LGA3, beside LGA4),
three_sixty_five (Commack), hivelocity (OGB1 Orangeburg).

Every row cites a page fetched on 2026-09-08. Three fetch refusals are recorded as
refusals rather than routed around: equinix.com answers 403 to the ordinary fetch path
(the NY13 reading was taken from the operator page over a plain HTTP client, not from a
directory), vastnet.net serves no HTTPS at all (ECONNREFUSED on 443), and the TierPoint
Hawthorne spec-sheet PDF yielded no readable specification text.

Two rows refuse a density a secondary source asserts: a marketplace listing claims 6 kW
per rack for Stafford Associates and neither operator page states any figure, and
Hivelocity's Orangeburg suite is not given its landlord's 10 kW building claim.

dag/gunbc/extdeps_scope_frontier.dag enrolls the five new modules as scope carriers, and
also enrolls dag/extdeps/colo/databank.dag, which arrived on the carrier branch without a
roster row and would have refused the placement gate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Watt and VoltAmpere already existed; I re-invented both as a bare Int

TWO REVIEWS ARRIVED AT THIS FROM OPPOSITE ENDS AND MET ON ONE DEFECT.

A census lane reading Telehouse Chelsea - "standard power to rack at 3.5kVA
with scalable options to 5kVA" - had no correct arm for an apparent-power
publication, so they put 5 in a field named air_cooled_kw and documented the
mismatch in the citation. The documentation was right and the FIELD was wrong:
a note cannot stop a consumer reading a number out of a field named for the
quantity it is not. Independently, review 62722 observed that a unit baked into
a field name is a second representation of a fact std.measure already owns, and
that THIS FILE ALREADY IMPORTS Watt for PowerAllocation - so the census was
answering "how much power" two ways at once.

Both objections have one repair, and the corpus had already made the
distinction structurally: Watt is Measure<Power, One, Nat>, VoltAmpere is
Measure<ApparentPower, One, Nat>, carried on SEPARATE dimensions with a note in
std.measure saying that putting both on Power would conflate them. So neither
half of this was a new concept. I minted a worse version of two that existed,
which is exactly the re-invention DESIGN section 2 names.

WHY THE APPARENT/REAL DISTINCTION IS LOAD-BEARING. kW = kVA x power factor with
PF <= 1, so kW <= kVA always, and reading a kVA publication as kilowatts
OVERSTATES real capacity - it fails in the flattering direction, which here
means putting more nodes in a cabinet than its breaker will carry. Colocation
quotes state kVA precisely because the facility sizes to apparent power, so
this is the common case and not an edge one.

THE ZERO IS GONE TOO, and review 62722 was right that the predicate beside it
was the tell. cabinet_density_air_kw returned 0 for an unread claim - a
fabricated in-band answer on the same axis as real readings, defended only by a
comment telling callers to consult cabinet_density_is_read first, which is the
validation-standing-where-construction-was-available shape section 5 warns
about. The reading is now Watt? and the predicate is DELETED rather than
documented around: the confusable zero is unconstructible.

Absent has two causes with one consequence: nobody published a figure, or
somebody published apparent power and no power factor exists to convert it.
Either way there is no established watt reading and an admission decision that
needs one must refuse. The upper bound is a separate, weaker function - sound
for REJECTING a cabinet too small even at the bound, never for admitting one -
and it is the only place ApparentPower crosses to Power, justified by the
inequality and by nothing else.

Also rosters dag/extdeps/colo/databank.dag in scope_carrier_paths; keen-newt-324
found the placement gate refuses it as a new unrostered extdeps file.

Executed controls, one dispatch, established vs upper bound over four claims:
                              established      upper bound
  DataBank LGA4 (35 kW)         35000 W          35000 W
  Iron Mountain NJE-1 (30 kW)   30000 W                -
  Telehouse Chelsea (5 kVA)      ABSENT           5000 W   the whole point
  Iron Mountain WPA-1 (unread)   ABSENT           ABSENT

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01998xs4ojJKWGptxcuxVWHN

* Convert my four read densities to Watt, and repair a silent merge mangle in databank.dag

The carrier moved cabinet density from a bare Int named air_cooled_kw to
CabinetPowerFigure over std.measure Watt / VoltAmpere. Converted, counts in watts:

  DataBank LGA3            35000 air / 100000 liquid
  1547 ORNY1               10000 air
  Long Island Interconnect  3000 air
  NYI (same building)       3000 air

All four are kW readings on the operator's own page, so all four are
PublishedRealPower. No page in this region published kVA, so no row here uses the
apparent-power arm; the three amps-with-no-voltage and four silent-page rows stay
DensityUnread, which the shape change does not touch.

REPAIR IN THE SAME COMMIT, because the merge produced it and only inspection catches
it: git auto-merged my import reformat in dag/extdeps/colo/databank.dag with the
carrier's and emitted a SECOND, unterminated import name list stapled after the first
block's closing brace. Both sides' text survived, no conflict was raised, and the file
was structurally broken. Deleted the stale half.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* The controls only existed in a probe I deleted: enroll them

Review 62722's third finding, and it is the one I had already flagged about my
own work two turns earlier without acting on it. The carrier landed a type, two
functions and six data rows that NOTHING read: grep for cabinet_density,
CabinetDensityClaim, RetailGrainStanding or databank outside those three files
returned empty, and no module outside dag/extdeps/colo imports the colo
namespace at all. The PR body cited an executed control, but that control lived
in a scratch probe the author ran and then deleted.

A deleted probe is not evidence a wall stays standing. DESIGN section 3c is
explicit that a declaration nobody consumes is red regardless of how well it is
modelled, and section 5 that a run nobody can repeat is not a consumer. Being
able to name the failure did not make it not a failure.

Five enrolled witnesses, with the discriminating case first among equals:
  w_published_kilowatts_establish_real_power        positive control
  w_apparent_power_establishes_no_real_power        THE DISCRIMINATING RED
  w_apparent_power_still_bounds_real_power_above    kW <= kVA, so the bound holds
  w_unread_density_establishes_and_bounds_nothing   the zero stays unconstructible
  w_density_and_grain_are_separate_facts            the two axes stay independent

The apparent-power fixture reproduces the Telehouse Chelsea publication shape
that found the defect. It lives in the witness rather than an operator module
because it is evidence about the CARRIER, not a census row; the live Telehouse
rows belong to whichever lane reads that operator.

MUTATION CONTROL, executed. Restoring the defect - making
cabinet_power_established return the volt-ampere count as watts, which is
exactly the conflation the carrier was rewritten to prevent - flips
w_apparent_power_establishes_no_real_power from true to false while the other
four stay true:
  clean    [true, true,  true, true, true]
  mutated  [true, FALSE, true, true, true]
So the red is discriminating rather than decorative, and it names the single
behaviour it guards.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01998xs4ojJKWGptxcuxVWHN

* Carry the Hivelocity 20 kW claim, and verify every read wording against raw bytes

TWO CHANGES, and the second is a correction of my own rows.

FIRST, a sixth density is now read. Hivelocity's Orangeburg site publishes
"High density raised floor environment, 20 kW+ per cabinet" at 1 Ramland Rd - on a
colocation product page titled "New York 4", while the operator's location index calls
the same building "Orangeburg (OGB1)" and publishes no figures. Searching the location
code never reaches the density; silent-heron-303 found the cross-name and I re-read the
page here before carrying it. The address moves from AddressUnread to AddressListed on
the same read. Region count: 6 of 12 densities read, was 5.

That makes 1 Ramland Road a building where TWO operators publish a density and the
figures disagree by a factor of two - the landlord 1547 says "High density 10KW + per
cabinets", the tenant Hivelocity says 20 kW+. Both rows carry their own operator's
reading and neither corrects the other; the row states explicitly that this is two
claims, not corroboration. Hivelocity's page also repeats the landlord's 24 MW building
figure, which is recorded as an echo rather than as a second fact.

SECOND, every READ row's claim_wording is now confirmed against raw HTML, and three of
mine were paraphrase from a summarizing fetch rather than the page's own words:

  NYI vs Long Island Interconnect were NOT "identical wording" as my citation claimed.
  The figure and first clause match word-for-word; the second clause does not - NYI
  writes "an adjacent campus property owned by building", Long Island Interconnect
  writes "adjacent future expansion space". Both verbatim strings are now carried.

  DataBank LGA3's two figures are separate spec CELLS, not one sentence: the page emits
  "35kW+ Cab Density Air" and "100kW+ Cab Density Liquid" as adjacent cells and the
  comma between them was mine.

  TierPoint answers HTTP 403 to a plain client with a 4.5 KB block page, so its grain
  wording is marked as a RENDERED reading not checked against the page's bytes - the
  block is recorded rather than left to look like a verification.

Confirmed verbatim against raw bytes: 1547 ORNY1 (and its 24 MW), Long Island
Interconnect, Stafford's grain sentence, Hivelocity New York 4, DataBank LGA3's cells.
Every figure survived the audit. Three wordings did not.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Scope-check every read density against byte order, not just string occurrence

silent-heron-303 lost a Summit row to a figure that reproduced verbatim and belonged to
a Chicago promotion. A string-occurrence test passes cleanly on a number attached to the
wrong facility, which is the density rule's own failure surviving the check built to
enforce it.

Applied the second clause to all six read rows here: locate the figure's line in byte
order and read the nearest heading above it. All six scope correctly, and each citation
now records that rather than leaving it done-but-unstated:

  DataBank LGA3   figure sits under the page's own LGA3 Orangeburg title; no promo block
  1547 ORNY1      under Orangeburg NY / ORNY1, Location Features, Power
  Hivelocity      under New York 4 / NYC4 Colo Data Center, above the other sites listed
  Long Island Interconnect  single-site operator, one page title, no sibling to confuse
  NYI             under the page's Long Island section - the one that mattered most to
                  check, because this operator runs sites in other metros

No figure moved and none was withdrawn.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Decide fusion on markup, wording on stripped text: record the element boundary for all five

silent-heron-303's third clause contradicts the second's artefact and both are right. A
raw-byte grep WITHDRAWS a true row whenever the numeral is emphasized - DataBank's cells
are <li><strong>35kW+</strong> Cab Density Air</li>, which contains no contiguous
"35kW+ Cab Density Air" - so wording must be matched against tag-stripped text. But
stripping tags destroys the element boundary, which is the only evidence that settles
whether adjacent figures were authored together or joined by the reader.

Checked both artefacts for all five read densities. Nothing moved; every claim is
confirmed at the grain that can actually decide it, and each citation now records the
markup:

  DataBank LGA3   TWO <li> items, numerals in separate <strong> - joining is invention,
                  which is now proven at markup grain rather than asserted from layout
  1547 ORNY1      one <li>, no inner emphasis
  Hivelocity NY4  one <li>; the 24 MW is a SEPARATE <li> in the same list, which is the
                  markup-grain reason the row treats it as a neighbouring claim
  Long Island Interconnect  one <li>, contiguous but for a non-breaking space
  NYI             one <li> assembled from THREE <span> fragments, so the sentence exists
                  only after stripping - and its last fragment ends mid-phrase at "owned
                  by building", which is the page's truncation and not a clip made here

That last one also explains how the two Westbury pages could read as identical: neither
sentence survives a contiguous raw grep, so any comparison of them is a comparison of
stripped text.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Continuity Centers Woodbury: an operator whose directories and whose own site disagree about what it sells

A thirteenth facility, and it is carried for the disagreement rather than despite it.
Colocation directories describe a Long Island hall here selling single server, half and
full cabinets, shared and dedicated locking cabinets, caged space and private suites -
the finest grain in this census after Stafford Associates. The operator's OWN site, read
2026-09-09, markets disaster recovery, backup and Veeam-partnered cloud protection, and
carries no colocation product page at all.

A directory is not the operator, so the row inherits none of that product list. The grain
obligation states the prior question instead: is colocation still sold here? A live
single-server product on Long Island would matter out of proportion to this operator's
size, and it is exactly the kind of claim that a directory keeps alive for years after
the product dies.

Two honesty markers on the row. continuitycenters.com answers HTTP 403 to a plain client
(5,491 bytes of block page), so every reading here is at the weaker rendered grade and
says so. And the operator publishes 1000 Woodbury Rd as its HEADQUARTERS, not explicitly
as a data center - the directories give the same street, which is consistent but is their
claim, so the address citation says which is which.

A second site in this region is DIRECTORY-ONLY and deliberately not a row: listings place
a Continuity Centers facility in Westchester County under two different names, Chappaqua
and Hawthorne, and the operator names neither. One operator with two directory names for
one unconfirmed hall is the shape that manufactures a phantom facility, so it is an
obligation naming what to confirm.

Census now stands at 13 facilities, 6 with a density that was read.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Two operators I recorded as blocking were my own client: TierPoint and Continuity Centers

silent-heron-303 found the class - a refusal attributed to an operator that is really
the fetching client - and it applies to both of my rendered-grade rows. Both were fetched
with a bare `Mozilla/5.0` user-agent and returned 403. Both return HTTP 200 to a full
browser user-agent: TierPoint 452 KB, Continuity Centers 176 KB.

Measured which input matters rather than assuming, since heron's case was a missing UA and
mine was a short one: on tierpoint.com a bare Mozilla/5.0 gets 403, a complete Chrome
user-agent string gets 200, and adding Accept-Language to the bare one does NOT help. It
is the user-agent STRING that is discriminated on, not the header set.

Both corrections STRENGTHEN the rows rather than softening them, which is the useful part:

  TierPoint grain    "Cabinets and cages available" is now confirmed verbatim in the page
                     bytes against the 11 Skyline specification block, where it had been
                     recorded as a rendered reading that nobody could reproduce.
  TierPoint density  stays DensityUnread, but the obligation can now say the string "kW"
                     APPEARS NOWHERE IN 452 KB - a far stronger claim than a rendered
                     capture could support. The page markets "High-Density Colocation" as
                     a product name with no figure attached to it.
  Continuity Centers the grain obligation asked whether colocation is sold here at all;
                     the raw bytes answer that THE WORD COLOCATION DOES NOT OCCUR in the
                     page. The address block is labelled "Headquarters" verbatim, as the
                     citation already claimed.

No figure changed. The census now has no row at the rendered-only grade: every wording it
carries has been read from bytes, and the only unreadable source left is vastnet.net,
which serves no HTTPS at all - a connect-level refusal that no header can fix.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Read the operator's sitemap instead of guessing a path: 40 pages, none is colocation

silent-heron-303 found that all three of their recorded operator refusals were wrong
paths rather than blocking operators - /colocation/ 403s on a site whose homepage serves
bare curl, because the path does not exist and the sitemap names /colo/ instead. A wrong
path that answers 403 reads as a decision by the far end; a 404 would have been fixed on
the first pass.

I had the same shape in one row. The Continuity Centers grain obligation rested partly on
a 404 from a guessed /colocation/ path, which says nothing about the operator. Replaced
with the operator's own sitemap: continuitycenters.com/page-sitemap.xml (HTTP 200)
enumerates 40 pages and NOT ONE names colocation, cabinet, data-center, rack or facility.

That is a stronger reading than the home page alone, because it removes the possibility
the product simply lives on a path I did not try - which was exactly the residual doubt
the guessed 404 could never settle. The row's conclusion is unchanged and its evidence is
now two independent readings of the operator's own surface.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Both of my zeros now carry their positive control, counted in raw bytes

silent-heron-303 deleted a real facility on a tag-stripper's zero: "New Jersey"
occurred 22 times in the raw bytes and once after stripping. Every "the string does not
occur" claim made through a stripper in this census is void until re-counted, and two of
them are mine. Both were made against tag-stripped text. Both survive, and both now say
so in the row rather than in a message.

  TierPoint Hawthorne, 452,221 bytes, HTTP 200, full browser UA
    controls  Hawthorne 63, Skyline 10, TierPoint 722, "Cabinets and cages" 2
    zeros     kW 0 (case-sensitive), "per cabinet" 0, kilowatt 0

  Continuity Centers, 175,839 bytes, HTTP 200, full browser UA
    controls  Continuity 246, recovery 24, Veeam 10, Woodbury 2
    zeros     colocation 0, cabinet 0, "data center" 0

TWO THINGS THE RE-COUNT FOUND THAT THE STRIPPED READ HAD NOT.

A case-INSENSITIVE kw on the TierPoint page returns 3, not 0, and all three are inside
CSS node identifiers (fl-node-izjpc548gkwv and siblings). The claim survives only because
the operator's unit is capitalised; a later reader running the obvious case-insensitive
search would get a nonzero and no way to tell what it meant, so the row now states both
counts and what the three are.

And on the Continuity Centers page a substring search for "colo" returns 159 hits, of
which 156 are the CSS keyword "color" and one is "colophon". Had I picked that as the
positive control it would have reported a healthy instrument and a present word, for a
page where the word never appears. The trap is recorded beside the count.

The TierPoint grain wording is also upgraded by the same run: "Cabinets and cages
available" occurs TWICE in the raw bytes, once against each of the 11 Skyline and 17
Skyline blocks, where it had been confirmed only in stripped text.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Name which controls are SUBJECT tokens: both my zeros pass line 5, and one only just

silent-heron-303's line 5 - control on a subject token, not a site token - is the one
line 1-4 cannot cover, and it retracted the grade of a reading quiet-cat-23 had already
published. Ran it against both of mine. Both pass; the rows now say which control is
which, because "TierPoint 722" and "Hawthorne 63" are not the same evidence.

  TierPoint Hawthorne  PASSES cleanly. Hawthorne 63 and Skyline 10 are subject tokens and
                       the page carries the 11 Skyline and 17 Skyline specification blocks
                       - it is the per-facility surface, not a state index. TierPoint 722
                       is a site token and is now labelled as one.

  Continuity Centers   PASSES, but on the sitemap rather than on the home page. Continuity
                       246, recovery 24 and Veeam 10 are all SITE tokens; a home page can
                       honestly omit a product that lives elsewhere, which is exactly the
                       gap line 5 describes. The load-bearing reading is the operator's own
                       page sitemap enumerating forty pages with no colocation among them -
                       a different question on a different surface, not the same zero
                       counted twice. The row now says so instead of presenting the two as
                       equal corroboration.

Also carried into the TierPoint density obligation: the two standing cautions for whoever
re-runs it. Count kW case-sensitively, because kw is a common substring of minified
identifiers; and a kW hit is not a density until its sentence is read - this same operator
publishes "Two 600 kW redundant generators" on its Pennsylvania pages, which is facility
generator capacity and would be wrong by orders of magnitude read as a cabinet figure.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Lift the grain fold onto the carrier: one accessor, two consumers

Review 62870 found two defects, both instances of one root: two witness
modules had each grown their own copy of a fold over RetailGrainStanding,
under two different names, because extdeps.colo.types carried no accessor
for the question a consumer actually asks. DESIGN section 3's nicknaming
failure exactly - one concept, two names - and the consequence is that a
fourth arm added to RetailGrainStanding would be handled by one fold and
silently missed by the other.

The repair is the accessor, not a note telling the two folds to agree:

  extdeps.colo.types gains retail_grain_offers_single_cabinet, beside the
  type it eliminates, with the annotation stating that FALSE IS NOT A
  REFUSAL BUT TWO DIFFERENT ONES - CageOrSuiteMinimum is the operator
  declining to sell one cabinet, RetailGrainUnread is nobody having read
  whether they would - so a caller needing to tell them apart matches the
  arms rather than calling this.

  colo_cabinet_density_witness_test deletes grain_admits_single_cabinet.
  ny_colo_census_rows_witness_test deletes its own copy, and also its
  duplicate established_watts, which it now imports from the sibling
  witness. The -1 sentinel is deliberately NOT lifted into extdeps: it is
  a witness-local encoding of "establishes nothing", not a fact about any
  operator, and putting it in the carrier would make the census's absence
  vocabulary an upstream property (DESIGN section 3).

NO LOCAL COMPILE VERIFIES THIS COMMIT AND I AM NOT IMPLYING ONE DOES.
Both entries were dispatched to a remote runner at a 4 GB and then a 14 GB
declared budget; both were OOM-killed at exit 137 in each run, because
GUNBC_MEMORY_BUDGET_BYTES is a planning request rather than an allocation
and the compile floor is ~9 GiB against a smaller VM. CI is the only gate
that can judge this change, which is where it is going.

MERGE ORDER: this PR must land AFTER the carrier PR that splits
CabinetPowerCeiling into a published-quantity quantifier. That PR deletes
cabinet_density_air_established, which the NY witness consumes; landing
this one first would put a consumer of a deleted accessor on main and red
the carrier's floor for a reason unrelated to its change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Enroll the two grain rows the witness claimed but did not read

Review 62890, both findings verified against the current code and both
real. The file's own annotation says it proves every row this lane
authored flows through the carrier accessors, and two grain rows did not:

  nyi_long_island_retail_grain was IMPORTED AND UNUSED - the worst shape,
  because the import made the omission look intentional to a reader.
  databank_lga3_retail_grain had no call site outside its defining module
  at all, while its LGA4 sibling was already exercised.

That is DESIGN section 3c exactly: a data row no fold reads, with
"consumption described in the PR body but absent from the diff" as the
tell - and the description here was in the module annotation, which is
worse, since section 4c says an annotation is never evidence that a
machine claim holds.

Both now flow through retail_grain_offers_single_cabinet on the arm their
citation claims. The NYI row turns out to be the sharpest assertion in the
file and its annotation now says why: NYI and Long Island Interconnect
publish the SAME Westbury street address and the SAME 3kW average, LII's
page says cabinets and NYI's says nothing. So the pair straddles two
tests over one building - LII's grain is an offer, NYI's is not - and a
grain reading transferred from the co-located operator, which is the most
tempting inference in this census, now reds the witness instead of
passing silently.

Same verification standing as the parent commit: no local compile judges
this, both entries OOM at exit 137 remotely, CI is the gate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Delete the dead prose row and the unread campus list

Review 62897, both findings verified against the current code and both
real.

continuity_centers_westchester_obligation was a NonEmptyStr binding no
fold read - DESIGN section 3c red and section 4c's "ordinary String
declaration whose sole purpose is commentary" at the same time, with 4c
naming // as the explicit quarantine boundary for exactly this. The
content is worth keeping and is now a leading // block on the Woodbury
row: a Westchester site appears in directories under two names, Chappaqua
and Hawthorne, and the operator's own site names neither, which is the
shape that produces a phantom facility.

The reason it was written as data rather than prose is worth stating,
because it is the honest version of the same mistake: the obligation
belongs to a READER, not to a program. No arm of any carrier type can
hold "a facility we decided not to model" - the census's typed vocabulary
is about facilities that exist as rows - so wanting it typed produced a
String pretending to be one.

tierpoint_new_york_facilities aggregated the two Hawthorne rows and was
imported by nothing, cited by nothing, and unlike its Pennsylvania
sibling was not the module's ExternalModelScope subject. DELETED rather
than given a reader: ExternalModelScope carries a single subject, so
promoting it would mean editing the carrier, and the census-wide fold
over facility rows being built in another lane will enumerate rows across
operators rather than consume per-module lists. Keeping an aggregate
destined for replacement is the intermediate representation DESIGN
section 3 prices as redundant work.

The now-unused std.types import went with it - an unused import in a
module is the same tell as the unused import review 62890 found in the
witness, and I am not leaving one behind in the commit that fixes the
other.

Same verification standing: no local compile judges this, CI is the gate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Correct two transcribed counts that disagreed with the tests beneath them

Review 62905, verified with the diff rather than by re-reading my own
prose: this PR adds 12 ColoFacilityRow declarations and 11
CabinetDensityClaim rows, of which 5 are read and 6 unread. The witness
annotations said SIX read and SEVEN unread, over conjunctions asserting
five and six.

The review's diagnosis is right and is the part worth keeping. Coverage
was never wrong - every density row this PR adds IS asserted - so this
was a transcription defect, which DESIGN section 6 names exactly: "Name
the instrument, never transcribe its output ... a transcribed number is
unreachable from the thing that owns it, so it rots without anyone
touching either end." A numeral in a header directly above the
conjunction it miscounts is the artifact a later reader trusts INSTEAD of
counting, which makes it worse than no numeral at all.

WHERE THE INFLATION CAME FROM, because it was not a typo. I counted
DataBank LGA4 as mine. It was on main before this lane began and is
asserted by the carrier's own witness, so "6 read" was the REGION's total
reported as this PR's contribution - my headline number and the PR title
carried it too, both now corrected. That is the second count I have had
to correct tonight after publishing a total whose subject was not the one
I named.

AND 11 DENSITY ROWS AGAINST 12 FACILITIES IS NOT AN OMISSION. TierPoint
HWT and HW2 are two buildings on one Hawthorne campus sharing a single
density row, because a density is a claim about a cabinet and the
operator publishes one claim over both halls. Facilities and density
claims are deliberately not in bijection; the annotations now say so, so
the next reader does not go looking for a twelfth.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Sort continuity_centers into the scope frontier list

Review 62910, advisory. continuity_centers.dag sat after coresite.dag and
conti < core; every other entry in the list is alphabetical. Moved, and
the whole colo block now passes sort -c rather than being checked by eye,
which also confirms the other six paths this lane added went in correctly.

The review is right that no gate sorts this list and that DESIGN carries
no ordering rule, so this is hygiene rather than a defect. It is worth the
line anyway: an append-only list of file paths with one entry out of order
is a list whose order stops being information, and the next author appends
wherever the diff is smallest. Cheap now, and there is no version of this
that gets cheaper later.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Correct the DataBank count my own LGA3 row made false

Review 62915. databank_ewr2_piscataway_obligation says this operator
"contributes exactly one modelled facility". That was true when it was
written and this PR is what falsified it: adding databank_lga3_orangeburg
makes it two. DESIGN section 5 - no fabricated plausible output - and a
count that reads as current while being stale is exactly that.

The row is pre-existing on main and not mine; the falsification is mine,
so the fix is the count clause and nothing else. The Piscataway
locate-work it obliges is untouched and still valid.

The replacement says more than a numeral because the numeral was never
the useful part: two modelled facilities, LGA3 and LGA4, BOTH ON THE ONE
ORANGEBURG CAMPUS. "Two" alone would read as broader operator coverage
when what actually happened is that one campus got its second building.
The understatement the sentence was written to record has not shrunk.

FOURTH TRANSCRIBED COUNT CORRECTED ON THIS PR, and the first one I did
not write. That is the interesting one: the previous three were counts I
authored and miscounted, so the fix was to derive them. This one was
correct when authored and was falsified by an edit in a different file
that never touched the sentence - which no amount of care at authoring
time prevents. A count in prose has no dependency edge to the rows it
counts, so nothing can tell its author it has gone stale. That is the
case for deriving counts rather than merely checking them, and it is a
sharper argument than my own three errors were.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Enrol the twelve facility rows, and give AddressStanding its first consumer

Review 62921, finding one, verified: ColoFacilityRow was read by no fold
outside its own carrier modules - `grep -rln ColoFacilityRow --include=*.dag
dag/ | grep -v extdeps/colo` returns empty. Twelve dangling declarations,
DESIGN section 3c red.

THIS IS THE THIRD SET THIS FILE HAS HAD TO ENROL and the pattern is worth
naming rather than fixing quietly. First its own duplicate folds, then two
grain rows, now the facility rows. Each time I enrolled the rows I was
THINKING about and left the ones I was not - which is the same shape the
carrier lane and I spent tonight documenting about grep refinements: the
residue is definitionally what the author was not attending to. So the
header no longer claims to prove "every row this lane authored"; it states
what the conjunctions actually contain.

Three folds, each discriminating rather than shape-checking:

  REGION, over all twelve. Not a tautology: these same operator modules
  carry TierPoint's Pennsylvania rows and DataBank's New Jersey obligation
  feet away, so a row filed under the wrong region - or another region's
  row copied as a template and left unedited - reds. That failure is not
  hypothetical in this census; a Summit Secaucus figure was withdrawn after
  its wording proved to sit under a Chicago-area promotional block.

  MUNICIPALITY, over the Westbury pair. Elsewhere in this file NYI and Long
  Island Interconnect are what makes a transferred grain reading go red;
  this is the premise that makes the pair meaningful. If either row's
  municipality is edited apart from the other, the co-location the grain
  tests rest on has stopped being true, and this is where it surfaces.

  ADDRESS STANDING, and this one closes a hole wider than the review's.
  Checking the arm while enrolling the rows found AddressStanding had NO
  consumer ANYWHERE IN THE CORPUS - both arms, since the carrier was
  written. The census's oldest rule, that a street is read or is an
  obligation and never reconstructed from a directory, a PO box or a
  co-located operator's page, was enforced by authorial discipline alone.
  Vastnet is the row that proves it: the operator publishes a PO box, so
  its row is AddressUnread, and filling that street in from any nearby
  source - a five-minute temptation for anyone wanting a complete-looking
  table - now reds.

That last needed one accessor on the carrier, address_is_listed, added
beside the type it eliminates on the same section 3 precedent as
retail_grain_offers_single_cabinet: an arm two witnesses would each fold
under their own name is a nickname fork waiting. It is purely additive.

Every assertion was checked against the rows before committing rather than
left for CI to discover: all twelve region codes, both Westbury
municipalities, and the seven address arms.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Remove four transcribed counts from this witness's own annotations

Prompted by re-reading DESIGN against the finished diff rather than by a
review - which is where the carrier lane found its own re-coined type an
hour ago, and is the cheapest place to look and the least likely to be
looked at.

The annotations said "THE FIVE READ DENSITIES", "THE SIX UNREAD ONES",
"THE TWELVE FACILITY ROWS", "three operators", and the header said
"thirteen ... facilities this lane added" - which was already stale, since
this PR adds twelve.

EVERY ONE IS WRONG TWICE OVER, and only the second reason is interesting:

  Section 4c: an annotation "must not restate what the declaration
  structurally says". A numeral naming the arity of the conjunction
  directly beneath it is that restatement exactly.

  And a count in prose has NO DEPENDENCY EDGE to the rows it counts, so
  the next row added falsifies it silently with nothing going red. That is
  not hypothetical here: this census carries an obligation string reading
  "exactly one modelled facility" that a row added in a different file
  made false without touching the sentence, and I corrected it earlier
  today.

I HAD ALREADY CORRECTED ONE OF THESE FROM SIX TO FIVE and left the other
three standing, which is the tell that I treated the instance and not the
class. Correcting a numeral produces a numeral that is right today; the
class is fixed by not writing one. The annotations now state the FACTS a
reader needs - that DataBank LGA4 is deliberately not among these because
the carrier's witness owns it, and that density claims and facility rows
are NOT IN BIJECTION because two Hawthorne buildings share one campus
density - as relations rather than as arities.

The one numeral left is a quotation of the corrected draft, kept because
the correction is the argument.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* address_street returns the street: the sibling shape, not a Bool

Review 62953, verified against the file. cabinet_density_air_established
and cabinet_power_established both answer "was it read, and with what" as
an Optional. I wrote address_is_listed -> Bool, which answers only the
first half and throws the street away - so the address axis had a query
surface shaped unlike every sibling axis in the same file, and a caller
wanting the street still had to hand-match, which is the state the
accessor existed to remove. DESIGN section 2: net concepts must not grow
by re-invention.

THIS REFUTES AN ARGUMENT I MADE AN HOUR AGO AND THAT WAS BROADCAST TO
THREE LANES. I argued that an arm-membership question over a
payload-carrying coproduct cannot be phrased as equality, and concluded
that match-returning-Bool is therefore THE shape. The first half is
correct; the conclusion is a false dichotomy. There is a third form, and
it is the one this carrier already used everywhere: an Optional accessor
returning the payload. THE VERY FACT I USED TO RULE OUT EQUALITY - that
the affirmative arm carries fields - IS THE FACT THAT MAKES OPTIONAL
RIGHT. Correction sent to the lane that broadcast it.

AND THE PAYLOAD BUYS AN ASSERTION THE BOOL COULD NOT EXPRESS, which is the
best evidence the shape was wrong rather than merely inconsistent. NYI and
Long Island Interconnect carry BYTE-IDENTICAL streets because they are two
operators selling in one Westbury building. That co-location is the
premise the grain tests rest on, and it was previously asserted only
through municipality - which two different Westbury buildings would also
satisfy. The witness now compares the two streets TO EACH OTHER: a
relation between two rows, not a row against a transcribed literal, so it
is not the self-comparison section 5 warns about. Nothing in the file
supplies the expected value, and if either operator's page is re-read to a
different street the pair stops agreeing and this reds.

retail_grain_offers_single_cabinet is deliberately unchanged and the
review agrees: "can one cabinet be bought" is itself the fact a consumer
wants, with wording as evidence for it, whereas a street IS the value.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* The grain accessor returns the wording, and the co-location equality stops passing on absences

Review 62968, two findings, both real.

1. retail_grain_offers_single_cabinet -> Bool becomes
   retail_grain_single_cabinet_wording -> NonEmptyStr?, matching the
   payload-carrying shape of every sibling in the file.

   THE ARGUMENT THAT KEPT IT A BOOL WAS MINE AND WAS WRONG THE SAME WAY MY
   FIRST ADDRESS ACCESSOR WAS. I classed `wording` as evidence for the
   fact - "can one cabinet be bought" is the answer, the sentence is why
   we believe it - and two earlier reviews accepted that. It does not
   survive contact with the rows: Stafford's wording is "1u, 2u, 1/4, 1/2
   to a full locking cabinet, to customized cages", which IS the sellable
   grain, finer than a cabinet, and unrecoverable from a Bool. The
   citation field is the evidential one. Same test, applied twice, wrong
   the first time in both axes.

   THE SWITCH DOES NOT FIX WHAT MY ANNOTATION CONFESSED, and the new
   annotation says so rather than letting the shape change imply it did.
   CageOrSuiteMinimum and RetailGrainUnread both map to Absent exactly as
   they both mapped to false: this coproduct has THREE arms, so any
   two-valued return collapses two of them. address_street is lossless
   because AddressStanding has two. A caller separating declined from
   unread still matches the arms; what the accessor removes is matching
   merely to READ THE WORDING.

   The Bool the tests want is now derived in the test layer -
   grain_offers_single_cabinet in the shared witness, imported by the New
   York witness - which is precisely how established_watts already
   collapses an Optional Watt into a comparable Int. One derivation, so
   the fork this PR dissolved stays dissolved.

2. THE CO-LOCATION EQUALITY COULD PASS ON TWO ABSENCES. street_or_unread
   returns "STREET-UNREAD" when a street is unread, and the Westbury
   assertion compared two of those to each other - so if BOTH rows were
   re-read to AddressUnread, both sides would be the sentinel, the
   equality would hold, and the assertion I described as this file's
   strongest would pass vacuously on the value the helper returns when it
   has nothing.

   That is the sentinel doubling as the failure value AND as a value that
   satisfies the check - the assertion is strongest exactly when the data
   is present and looks strongest when it is gone. Both sides are now
   asserted not-sentinel before being compared.

Also removed two imports the changes left unused, CabinetDensityClaim and
RetailGrainStanding - the latter survived only inside a comment, which is
not a use.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Every New York figure is a floor or an average: five rows to DensityUnread

Conforming to the standard main now holds, and it is a correctness fix
rather than a style one.

WHAT MAIN ESTABLISHED. #10862 moved databank_lga4_density out of a
figure-bearing arm into DensityUnread, because the operator publishes
"35kW+" - a FLOOR - while the arm means marketed MAXIMUM, so typing it
there asserted that a cabinet advertised at thirty-five kilowatts OR MORE
refuses 35,001 W. The numerals and verbatim wording were preserved in the
obligation with a resolve-trigger naming the missing capability. Measured
rather than assumed: after that change the ONLY rows left in a
figure-bearing arm anywhere in the census are the two whose wording says
"up to" - iron_mountain_nje1 and netrality_401_n_broad. Both are genuine
maxima. The standard is consistent and it is not a one-row fix.

ALL FIVE OF MY READ ROWS VIOLATE IT. Four are floors - "35kW+",
"100kW+", "20 kW+", "10KW +" - and two are averages, "Cooling level
average is 3kW per cabinet", which is neither a floor nor a ceiling: it
bounds what a hall sustains across cabinets, not what one cabinet may
draw. All five sat in marketed-maximum arms.

databank_lga3 forced the question by itself: it carries the IDENTICAL
claim to lga4, on the sibling building of the same campus, in the same
file. Leaving it as a maximum while lga4 is Unread would have the census
say a 35kW+ cabinet refuses 35,001 W in one building and not in its twin.

I HAD ALREADY DOCUMENTED THIS DEFECT IN PROSE AND LEFT THE TYPE. The PR
body says "0 of the 5 bound a cabinet from above - every one is a marketed
floor or a stated average". I knew, wrote it down where no fold reads it,
and left five rows asserting inverted bounds - which is exactly the
prose-beside-a-type shape five reviews on this PR have been removing, with
my name on it. Main did not discover something I had missed; it did the
thing I had described instead of describing it.

NOTHING IS LOST AND NO RE-FETCH IS REQUIRED. Each obligation carries the
numerals, the operator's verbatim wording, the retrieval evidence, the
element boundaries that settle the fusions, and the resolve-trigger naming
the capability - a carrier that expresses a quantity's DIRECTION and KIND.
Where a page named no cooling medium, the obligation now says so in the
same breath rather than leaving an air arm asserting one.

The witness follows: the five move from asserting published watts to
asserting the carrier establishes nothing from them, and its annotation
says where the discrimination went - from the numeral to the ARM. What
reds now is re-typing a floor into a figure-bearing arm, which is the edit
that would silently invert a bound.

Unused imports removed as the rows changed shape: std.measure { watt } in
five modules, plus DensityMarketedMax, DensityMarketedAirOnly,
CabinetPowerFigure and PublishedRealPower where nothing constructs them
any more.

THE HEADLINE, RESTATED HONESTLY: twelve facilities, eleven density claims,
FIVE FIGURES READ AND PRESERVED VERBATIM, and ZERO the carrier can hold
pointing the right way. The first number is what the operators publish;
the second is what this substrate can currently say about it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Vastnet's authority anchor cites Http, because that is what the host answers

Review 63016, verified and correct. The anchor declared scheme: Https
while the module's OWN fetch note, a few lines below, records that
vastnet.net serves plain HTTP and refuses 443 outright - ECONNREFUSED, not
a certificate warning - and that every reading here was taken over HTTP.

DESIGN section 3 for extdeps is "model what the API actually returns", so
this is a wrong external fact rather than a citation-style nit: the anchor
cited a surface that does not answer. Http already exists in UriScheme and
the corpus already uses it, so nothing needed minting.

AND IT IS THE SAME SHAPE THIS CENSUS HAS BEEN CORRECTING ALL ALONG - a
typed field asserting one thing with prose beside it recording the
opposite, where only the prose was right and nothing could reconcile them.
The density arms were floors typed as maxima with the floor recorded in
the citation. This was an unreachable scheme typed as reachable with the
refusal recorded in the note.

ALSO FIXED, BECAUSE MY OWN SCAN FOR OTHER INSTANCES TRIPPED ON IT: the
equinix NY13 fetch note said the reading was taken "over a plain HTTP
client", meaning an ordinary client rather than a browser. That phrase is
ambiguous between a client KIND and the http:// SCHEME, and a scan for
"modules citing Https that were read over HTTP" flagged equinix as a
suspect on the strength of it. Equinix answers normally over HTTPS; the
403 is a fact about the user-agent string. The note now says that, and
records why the old phrasing was worth changing - a word that reads as
evidence for a proposition it does not discriminate is the defect this
census keeps finding, and this instance was in my own annotation.

Re-ran the scan with a scheme-specific pattern: no remaining module cites
Https while recording a refused 443.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Type the cause of an unread density, because the arm carried two contracts

DensityUnread was one name over two materially different facts - the DESIGN
section 3 meaning fork - and the tell was in my own witness, which partitioned
them with two hand-typed row lists precisely because the carrier could not.
Both lists asserted the IDENTICAL predicate, so moving a row between them
changed nothing: the partition was prose standing where construction belonged.

  DensityUnread { cause: DensityUnreadCause }
  DensityUnreadCause = NoPublishedSurface { obligation }
                     | FigureReadButUnrepresentable { obligation, wording, citation }

NoPublishedSurface owes a FETCH. FigureReadButUnrepresentable owes no re-fetch
at all - the numeral is in hand - it owes a carrier expressing a quantity's
direction and kind, so it carries the wording and citation beside the
obligation: evidence already paid for must not be re-acquired.

48 construction sites migrate; 14 are read-but-unholdable. Membership is
hand-audited, and that is load-bearing. A scripted classifier over the
obligation prose was written and DISCARDED after it read "4 x 180 kW" and
"Two 600 kW redundant generators" as cabinet densities - facility power is a
fact about a building and is not density - and after it would have carried
Hivelocity's Orangeburg figure to Newark, Lumen's portfolio range to a site,
and Summit's Chicago promo to Secaucus, each of which the row's own obligation
explicitly warns against. Its quote extraction also split an English
apostrophe mid-sentence. Four rows keep NoPublishedSurface for that reason.

The two witness lists now assert opposite facts through density_unread_reading,
so a row moved between them reds.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* File the class: an extractor lifts a figure out of its scope

The classifier I discarded on this branch is not a script bug, it is the
census's cardinal error committed by an instrument, and it is the class #10863
landed: facility megawatts were never cabinet kilowatts. The two are spelled
identically as a number followed by kW inside one prose field, which is why it
recurs.

What makes it fileable is that every row the extractor would have wrongly
converted contains, in its OWN obligation string, an explicit written
refutation of exactly the inference the script drew from that same string -
"Do not carry the Orangeburg figure to Newark", a heading naming a different
metro, a portfolio range naming no site, watts per square foot at cage grain.
The corpus already held the refutation of every wrong conversion, in the field
being read, and the extractor read past all four because a scope qualifier is
prose and a numeral is a token.

Recognition rule: a scripted conversion over authored prose whose source rows
carry scope qualifiers the script does not parse.

Sibling but not the same class as a_positive_control_certifies_the_defect_it_
exists_to_catch: that is a CHECK that agrees with a wrong subject, this is an
EXTRACTOR that manufactures a subject the source does not support.

Trigger is a capability, not "hand-audit next time" - next time is a different
author: scope-bearing extraction, where a figure cannot be lifted out of an
obligation without carrying the subject and scope it was stated under, so
writing it against a different subject has no constructor.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* The membership test is the obligation's remedy, not the figure's grain

bright-swift-678 settled the one call I had flagged as a judgement, using the
arms' own contract instead of an argument about grain. FigureReadButUnrepresentable
owes NO re-fetch; that is what distinguishes it. CenterSquare quotes a figure and
then owes a fetch for a per-cabinet maximum, so it is NoPublishedSurface and the
grain argument never has to be had. Better discriminator than mine, so it replaces
mine in the annotation. The grain argument is kept as a parenthetical because it
goes the same way and more strongly: watts per square foot and watts per cabinet
are not one quantity at two resolutions but power-per-area against
power-per-enclosure, and converting needs an assumed cabinet footprint.

Their cross-check also produced a second, independent specimen of the class within
the hour, failing three ways where mine failed one: a truncated read (a real 2kVA
Equinix figure never reached), a numeral with no subject (TierPoint generators -
my discarded script's exact failure), and a phrase whose grammatical subject is
ANOTHER OPERATOR (halsey_165's obligation says DataBank's suite page is the only
surface in the building stating a per-cabinet figure; the matcher saw the words
and missed whose they were).

That third mechanism refutes the obvious repair, which is the most useful thing
this row now carries: only the first is truncation. The other two are scope
failures that survive any amount of reading more of the string, so the defect is
not resolution and cannot be fixed by widening the window. And the hand read is
only the cheaper wrong-avoider - it recovers scope once, unrepeatably, with no
receipt - which is why the trigger is a carrier capability and not diligence.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* The fourth match arm, and the annotation my own arm falsified

CI caught what my verification could not: colo_census_coverage's
density_claim_is_read still destructured DensityUnread { obligation }. I had
migrated every CONSTRUCTION site and then replaced the match arms by their
exact text - all of which ended "=> Absent," - so the one arm ending "=> false,"
was invisible to both passes. I verified the population I had edited rather
than the population that references the field. The corpus-wide check for the
pattern shape now reports four arms, all carrying cause.

The predicate itself is NOT rewritten against the new arms, and deliberately:
this file's own annotation rules that on rebase it is deleted and the carrier
answers, because rewriting it here would be the same predicate authored a
fourth time in the file that already carries the sentence predicting the third.
So the destructuring changes and the count does not move.

Also corrects a sentence my own arm falsified. equinix.dag said its seven
readings were "unreachable by any fold, including density_claim_is_read". That
is no longer true - typing the cause gives each row a wording and citation field
and density_unread_reading reaches them. What remains anemic is the part that
matters: the wording is a string, so "2kVA" is a numeral a reader parses rather
than a quantity with a unit and a direction, which is exactly why those rows sit
in FigureReadButUnrepresentable and why density_claim_is_read still answers
false for them. Leaving the old sentence would have been this PR's own defect -
a typed field asserting one thing with prose beside it asserting another.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Import the cause constructors at all 29 sites that build them

Review 63042 is wrong that this is merge-blocking and right that it should be
fixed, and the two halves are worth separating.

NOT A NAME-RESOLUTION DEFECT. In this substrate imports do not bind - names
resolve by global uniqueness - and that is settled here by execution rather than
by argument: c4d220f9e40 constructs FigureReadButUnrepresentable in databank.dag
with no import of that name, and the required witnesses lane returned success.
That lane's floor check is precisely what resolves names, and it had refused two
commits earlier, loudly and by file:line, on a real one ("field 'obligation' not
found in type 'DensityUnread'"). A green there is positive evidence, not silence.

RIGHT ON CONFORMANCE, WHICH IS THE BETTER FORM OF THE FINDING. Measured across
the colo tree: variant constructors are imported at 113 sites and unimported at
26 - and all 26 of the exceptions are the ones this PR introduced. So the diff
was the sole deviation from a near-universal convention, with no reason stated
beside it, which is exactly the unstated divergence DESIGN section 3b calls the
only red. The reviewer reached a real defect by a wrong route.

29 files, one import line each, no semantic change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Repoint a citation my own deletion made stale

CITED-DECLARATION-ABSENT: the failure-mode row filed this morning cites
extdeps.colo.types DensityUnreadCause, and three commits later I deleted that
type under ruling A. The declarations wall caught it corpus-wide as its single
finding, which is section 3 working exactly as written - a stale name is
decidable and enforceable because the citation names a symbol the namespace tree
already owns.

Worth stating plainly: this is the defect this branch has spent the night
policing in other people's rows, committed in my own, in the file about
instruments that read past what the source says. The citation was correct when
written and decayed under an edit I made myself, which is the failure mode a
positional or stale reference has and a live one does not.

Repointed to PublishedDensityFigure, which is the closer approach to the row's
trigger anyway: it carries medium, wording, citation and verification BESIDE the
quantity, so a figure lifted out of an obligation arrives with the subject and
scope it was stated under rather than as a bare numeral. Added one receipt
recording where the trigger now stands, including that it has NOT fully fired -
nothing prevents an author from typing a figure under the wrong subject, so the
class stays mitigatable and the ceiling is unchanged.

The parse phase is clean on this head and the floor reported FloorClean with
unexpected_failures=0, so #10932's repair landed and this was a different
blocker, diagnosed as one rather than assumed to be the same.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* The rate axis had no consumer anywhere, and my own header said otherwise

Review 63146 is correct and its sharpest point is the one I would have missed:
this file's header claimed the execution "proves every row this lane authored
flows through the carrier's accessors", and that covered density, grain, address
and facility while quietly not the fourth axis. Two paragraphs below, the same
header names the recurrence - enrolling the rows I was thinking about and
leaving the ones I was not - written by the author who then did it again.

The dangling is wider than the six rows this PR adds: RetailRateStanding was
read by NOTHING in the corpus. Thirty modules author a rate row and no fold,
witness or workflow ever touched the type - the same absence found on
AddressStanding earlier in this same census, which is twice now that an axis
reached thirty modules without a consumer.

  retail_rate_published_plans(r) -> NonEmptyStr?   on the carrier
  rate_is_published(r) -> Bool                     the witness-layer collapse
  w_no_new_york_operator_publishes_a_cabinet_price the consumer

The accessor returns the plans note rather than a Bool for the reason the grain
and address accessors do: the note IS the reading, and a caller deciding whether
a cabinet can be priced without contacting the operator needs the operator's own
text. A contact route is not a rate - it is the obligation to go and get one.

INTERSERVER IS A POSITIVE CONTROL AND NOT A CLAIM ABOUT NEW YORK. Only two rows
in the whole census publish plans, so without one the predicate would answer
Absent for every row it was ever handed and the test would pass as a constant -
a check whose passing value is also its broken value. The control is what makes
the six negatives mean something.

The finding is a regional fact and not the rows read back: no New York operator
publishes a cabinet price, so a selection fold that needs a number must refuse
and go get a quote rather than find a plausible one.

The header now says four axes are consumed, and says it because the fold exists
rather than because it was claimed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APB5DSXaYUbv8EheAxGbJC

* Enrol two facilities in their operato…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant