feat(visibility): en lenke som ikke ble fulgt sier det - spor + betinget linje (ORDRE 20260821T142704Z)

okf._walk toleret en ulesbar/utenfor-basen lenke uten aa etterlate spor (okf.py:182
"continue  # broken link"), og navigate_bundle returnerte kun filene den FANT. En base
der halve innholdet aldri ble lest var derfor umulig aa skille fra en base der de
dokumentene aldri ble skrevet - og toerrkjoeringen sa ingenting.

Toleransen er UROERT: OKF SPEC §4 krever at navigasjonen ikke kaster, og den kaster
fortsatt ikke. Dette er synlighet, ikke en ny nekt.

To tenner (samme form som ordre 20260821T092039Z, synlig uforankring):

1. okf.SkippedLink + Bundle.skipped - strukturert spor, aldri en streng: hvilken fil
   lenken sto i, lenketeksten ORDRETT (operatoeren redigerer den teksten, ikke den
   resolverte stien), og hvilken av de TO grunnene som gjaldt - outside-bundle (escape,
   ofte bevisst) eller missing (inne i basen, ingen lesbar fil, nesten alltid en
   skrivefeil). Dedup-grenen (canonical in seen) registreres ALDRI: den er korrekt
   navigasjon og det som terminerer sykler.
2. run.skipped_links_notice - EN renderer, tar den alt opploeste tuppelen, returnerer
   None naar ingenting ble hoppet over. Printes paa BEGGE flater: --live-dry-run og
   den fulle enkeltkjoeringen (en kjoering som PRODUSERTE et forslag fra en halvlest
   base er der tausheten kostet mest).

Defaulten er MOTSATT forrige ordres, og forskjellen er innsikten: cost_baseline_anchored
er paakrevd fordi begge defaults lyver, mens en TOM tuppel her er et aerlig positivt
utsagn ("hver lenke ble fulgt") - external_calls-presedensen. Vei-stien navigerer ingen
base, saa tom er bokstavelig sant der ogsaa.

Sporet bor paa RunResult.skipped_links (RUN-nivaa: navigasjonen skjer EN gang per
kjoering, foer noe forslag finnes), aldri paa ProvenanceStamp, som beskriver gaten som
doemte EN kandidat. Ingenting av dette naar bundle_context - derfor er de commons-eide
nav-goldenene byte-uendret, og Bundle( har fortsatt EN konstruksjons-sted (maalt).

Load-bearing MAALT (tests/test_navigation_visibility_loadbearing.py), aatte mutasjoner
alle roede mot HELE suiten + groenn kontroll 897 passed / 5 skipped:
  detach missing-registreringen (6 roede) · detach outside-bundle (2) · kollaps de to
  grunnene til en (2) · registrer dedup-grenen (1) · renderer returnerer alltid linja
  (3, inkl. kontrollene - omisjonen er selv gatet) · detach dry-run-printen (1) ·
  detach full-run-printen (1) · konstant tom trace ut av run_project (4).

Docs rettet der de paasto det motsatte: kunnskapsbase-for-en-kjoring.md §5.7 + §6,
presentasjon-bygge-kunnskapsbase.html (steg 8, steg 9, fallgruve 3, avslutningen),
README-ens navigasjonsavsnitt, og CLAUDE.md-ens navigasjons-kontrakt-invariant.
This commit is contained in:
Kjell Tore Guttormsen 2026-08-21 17:18:18 +02:00
commit 56c48f6f65
7 changed files with 547 additions and 28 deletions

View file

@ -313,7 +313,7 @@
du vil at det skal se.</p>
<div class="done"><b>Ferdig når</b>Hvert dokument du har laget er lenket. Et dokument uten lenke
eksisterer ikke, uansett hvor det ligger. Og trenger du fagstoff fra en annen base: kopier det
inn — lenker ut av basen følges aldri, uten feilmelding.</div>
inn — lenker ut av basen følges aldri, men tørrkjøringen lister dem, så du ser at det skjedde.</div>
</section>
<section class="slide">
@ -323,15 +323,19 @@
stopper der — den koster ingenting, og kan kjøres hver gang basen endres.</p>
<table>
<tr><th>Tørrkjøringen beviser</th><th>Den beviser ikke</th></tr>
<tr><td>at basen åpner</td><td>at lenkene når alle dokumentene</td></tr>
<tr><td>at navnet stemmer overalt</td><td>at innholdet er godt</td></tr>
<tr><td>at kostnadsgrunnlaget er lesbart</td><td>at forslagene blir kloke</td></tr>
<tr><td>at basen åpner</td><td>at innholdet er godt</td></tr>
<tr><td>at navnet stemmer overalt</td><td>at forslagene blir kloke</td></tr>
<tr><td>at kostnadsgrunnlaget er lesbart</td><td>at alt du laget faktisk er lenket</td></tr>
<tr><td>hvilke lenker den ikke klarte å følge</td><td></td></tr>
<tr><td>at ingen ekstern tjeneste kontaktes</td><td></td></tr>
</table>
<p>Mangler kostnadsgrunnlaget, sier tørrkjøringen fra. Er en lenke brutt, hoppes dokumentet stille
over — det er den ene feilen du må lete etter selv.</p>
<div class="done"><b>Ferdig når</b>Tørrkjøringen er grønn, og du har lest gjennom listen over
dokumenter den faktisk fant.</div>
<p>Mangler kostnadsgrunnlaget, sier tørrkjøringen fra. Er en lenke brutt, stopper den fortsatt
ikke kjøringen — men den skrives ut, med dokumentet den pekte på og hvorfor den ikke ble fulgt
(<code>missing</code> = ingen fil der, <code>outside-bundle</code> = peker ut av basen). Er alle
lenker fulgt, står det ingenting. Den feilen den fortsatt ikke kan se, er dokumentet
<em>ingen</em> lenker til — da finnes det ingen lenke å rapportere.</p>
<div class="done"><b>Ferdig når</b>Tørrkjøringen er grønn, den lister ingen lenker den ikke fulgte,
og du har lest gjennom listen over dokumenter den faktisk fant.</div>
</section>
<section class="slide">
@ -416,8 +420,10 @@
dømmer bare mot tall forslaget fant på selv. Dette er den dyreste feilen, fordi den er usynlig.</li>
<li><strong>Gjennomførte tiltak står ikke i basen.</strong> Systemet foreslår dem på nytt, og
besparelsen dobbelttelles.</li>
<li><strong>Dokumenter uten lenke.</strong> De leses aldri, og ingen feilmelding sier fra.
Symptomet er at forslagene virker uinformerte uten at noen skjønner hvorfor.</li>
<li><strong>Dokumenter uten lenke.</strong> De leses aldri, og ingen feilmelding sier fra —
for det finnes ingen lenke å klage på. Er lenken der, men feil, sier tørrkjøringen nå fra;
er den aldri skrevet, er dokumentet usynlig. Symptomet er at forslagene virker uinformerte
uten at noen skjønner hvorfor.</li>
<li><strong>For mye materiale.</strong> Alt som lenkes leses i sin helhet. Ti sider støy koster
like mye oppmerksomhet som ti sider substans.</li>
<li><strong>Utledede tall.</strong> Et tall ingen kan peke på en kilde for, forurenser alt som
@ -433,8 +439,9 @@
kostnadstallene og å få en fagperson til å skrive ned rammene sine.</li>
<li><strong>Det finnes ingen automatikk</strong> som lager basen av regnearkene deres. Det er
håndarbeid, og det er derfor det tar tid.</li>
<li><strong>Det finnes ingen «er basen klar»-knapp.</strong> Tørrkjøringen er det nærmeste, og
den sier ingenting om brutte lenker eller om innholdet er godt.</li>
<li><strong>Det finnes ingen «er basen klar»-knapp.</strong> Tørrkjøringen er det nærmeste: den
sier fra om kostnadsgrunnlaget mangler og lister lenkene den ikke klarte å følge, men den sier
ingenting om et dokument ingen har lenket til, og ingenting om innholdet er godt.</li>
<li><strong>Systemet dømmer ikke.</strong> Det foreslår og kontrollerer regnestykket.
Vurderingen av om tiltaket er klokt, gjør fagpersonen — og den vurderingen er det basen lærer av.</li>
</ul>