feat(p17b): a context set that spans TWO bases, and a judge told which one [skip-docs]
``contexts/dekke-og-kontrakt-lindaas-2027`` is the first set whose approaches route at more than one knowledge base: a1/a2 at n200-2024 (material requirements) and a3/a4 at r761-2025 (the rig, and the falsification arm). That is the whole reason it exists -- P17b measures that ONE commission can be run across several. ``bundle.txt`` grows a block per base; a set naming one base is one block, so the four pre-P17b files parse byte-identically. The reader now has ONE home (``stress.read_bundle_declarations``): it used to be a private copy in the P14 gate and a second, looser one inside ``stress.main``, and the multi-base form is exactly the change that would have let them drift. Rule U becomes the UNION of every declared base, and that is not a formality. MEASURED 15.09: ``enhetspris`` is absent from n200-2024 and carried by 70 of r761-2025's 2 756 concepts, so anchors admitted per base would have admitted a question the pass as a whole CAN ground. It was dropped from the fifth set's anchors for that reason. ``score_context_set(bundle_id=...)`` restricts the judgement to the approaches routed at THIS base. Without it, judging the n200 outbox reports the r761 approach as ``not_evaluated``/``absent`` -- a false finding, because that approach WAS evaluated, against the other base, under the other run_id. That defect is pinned by its own arm. The judge's CLI refuses to guess when a set declares several bases, with an rc-0 control on ``--bundle``. Arm (d) gained a second half: every DECLARED base must be named by some approach, because a base no approach names is never run. The P19/B2 fasit denominator moved 26 -> 32 and is asserted, not dropped: six new references, two of them bare ``prosessnr`` (12.11, 12.12), so B1's punctuation-and-digits form is now exercised by a fasit and not only by a known-positive. Suite 1774/5, golden byte-unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
5e4c497a84
commit
da0ccd0489
8 changed files with 496 additions and 57 deletions
|
|
@ -140,10 +140,17 @@ def test_a_code_the_baseline_carries_is_never_refused_for_its_shape() -> None:
|
|||
|
||||
|
||||
def test_every_fasit_reference_in_every_context_set_is_an_identifier() -> None:
|
||||
"""(d) The 26 the order names, with the denominator, plus this repo's own cost code.
|
||||
"""(d) Every fasit reference across every context set, with the denominator.
|
||||
|
||||
One of them — ``Krav 3.3.2—1_1`` — is why the second form grew an optional ``_<n>`` suffix.
|
||||
Measured, not anticipated: before that it was the single reference the classifier called prose.
|
||||
|
||||
**The denominator MOVED 26 -> 32 with P17b's fifth context set**, and it is asserted rather
|
||||
than dropped for the reason it was written down in the first place: a list comprehension over
|
||||
``contexts/*/fasit.json`` that quietly found fewer rows would make this arm weaker without
|
||||
making it red. The six new ones are four ``Krav x.y.z—n`` from n200-2024 and TWO bare
|
||||
``prosessnr`` from r761-2025 (``12.11``, ``12.12``) — the punctuation-and-digits form B1 added,
|
||||
now exercised by a fasit and not only by a known-positive.
|
||||
"""
|
||||
refs = [
|
||||
concept["ref"]
|
||||
|
|
@ -151,7 +158,7 @@ def test_every_fasit_reference_in_every_context_set_is_an_identifier() -> None:
|
|||
for row in json.loads(open(path, encoding="utf-8").read())["must_cite"]
|
||||
for concept in row["concepts"]
|
||||
]
|
||||
assert len(refs) == 26, f"denominator moved: {len(refs)}"
|
||||
assert len(refs) == 32, f"denominator moved: {len(refs)}"
|
||||
assert [r for r in refs if not has_identifier_form(r)] == []
|
||||
assert has_identifier_form("ENERGI-TOTAL-EL"), "this repo's own reference cost code"
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue