You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(qa): derive the authz matrix docblock's ledger figures instead of hand-typing them
`authz-conformance.matrix.ts` stated the REST route ledger holds "94 rows /
19 families" in the present tense and undated. Measured today the table holds
91 rows / 19 families: the families count was right, the row count was not.
The cause was NOT the route-guarding move (`cc837dbfec`) whose own stale
figures sat seven lines below it in the same docblock — guarding a route never
changes its ledger disposition. It moved when #14503 took the three REST
package read/delete rows out of the ledger (94 -> 91, `sdk` 84 -> 81; families
unmoved at 19 because all three departing rows carried `family: packages`,
which survives on the publish row). Two stale figures in one docblock with two
entirely different causes; attributing this one to the neighbour teaches the
wrong lesson, so the docblock now records the attribution.
Correcting the constant alone would leave the mechanism intact, so all four
figures in that sentence — both ledgers' rows and their families/domains — are
now DERIVED and pinned in the companion test against a scoped read of the
ledger each one names. The pin reads the PROSE rather than an exported
constant: the defect is a sentence that went false, and lifting the number into
a symbol would leave the sentence free to rot while the symbol stayed green. No
symbol is exported from `packages/rest` or `packages/runtime` for it — both
ledgers are only read, through the scoping rule `probeSource` already used,
now extracted as `scopedSource` so there is one rule rather than two.
The pin folds `//` continuations before matching, which is load-bearing rather
than tidying: every figure in that docblock wraps mid-phrase, so a
line-at-a-time literal search for the row/family phrase reads ZERO against the
very file that carries it. A control case pins that failure, because a zero
from an instrument blind to the shape is not a reading of absence. Five more
cases prove the pin bites — stale rows, stale groups, a deleted figure, a
second unpinned copy, and that the anchor is the ledger PATH so the dated
"94 -> 91" attribution is not mistaken for a present-tense claim — each
doctored from the measured value so no case hand-types a count of its own.
The runtime ledger's "82 rows / 21 domains" in the same sentence measured
CORRECT today and is pinned unchanged.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSf4DV7ziu4V5j73e46b7c
`${claim.file}: the docblock states no (N rows / M ${claim.groupNoun}) figure for it — the pin has lost its subject`,
1595
+
);
1596
+
continue;
1597
+
}
1598
+
if(claimed.length>1){
1599
+
problems.push(
1600
+
`${claim.file}: ${claimed.length} present-tense figures state its size; exactly ONE pinned copy is allowed`,
1601
+
);
1602
+
}
1603
+
constactual=measureLedgerTable(claim);
1604
+
if(actual.rows!==actual.groupOccurrences){
1605
+
problems.push(
1606
+
`${claim.file}: the scoped table yields ${actual.rows} \`route:\` but ${actual.groupOccurrences} \`${claim.groupNoun.slice(0,-3)}\`-field occurrences — the scope is reading non-rows, so neither count is a reading`,
1607
+
);
1608
+
continue;
1609
+
}
1610
+
for(constcofclaimed){
1611
+
if(c.rows!==actual.rows){
1612
+
problems.push(`${claim.file}: docblock says ${c.rows} rows, the table holds ${actual.rows}`);
1613
+
}
1614
+
if(c.groups!==actual.groups){
1615
+
problems.push(
1616
+
`${claim.file}: docblock says ${c.groups}${claim.groupNoun}, the table holds ${actual.groups}`,
0 commit comments