From 6ed225dad8d4f03313bb153976f2d95aeb9e7524 Mon Sep 17 00:00:00 2001 From: Gustav Louv Date: Sat, 7 Nov 2026 01:16:26 +0100 Subject: [PATCH 1/2] test: two source checks follow the Chrome track's code (claims 27, skriv-ankommer 6g) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dialog receipt on main 9f66e2e (the full run-all.sh, which CI does not run) found two checks that read the helper's source too strictly: - claims 27 read vaultNavne in Accessibility.swift - search words that recognise a Danish password-manager page by its title, never shown to anyone - as Danish text a person reads. Only that list is exempt, from its declaration to its «]»; a Danish string before or after it is still red. - skriv-ankommer 6g required the secure-field guard in set-value on one line; the Chrome track split it over two (and put the vault check in front). Both conditions are still required. Calibrated: the old checks are red on main, the new ones green; a Danish sentence after the list, and the guard without isSecure or without the macOS signal, each turn them red. Co-Authored-By: Claude Opus 5.5 --- test/claims.mjs | 6 ++++++ test/skriv-ankommer.mjs | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/test/claims.mjs b/test/claims.mjs index a17f34d2..8c71ed1c 100644 --- a/test/claims.mjs +++ b/test/claims.mjs @@ -1452,9 +1452,15 @@ esac const syndere = []; for (const fil of FILER27) { + let iVaultListe = false; fs27.readFileSync(join(ROOT, fil), 'utf8').split('\n').forEach((l, i) => { const t = l.trim(); if (t.startsWith('//') || t.startsWith('*') || t.startsWith('/*')) return; + // 7/11 (dialogproeven paa 0.4.1, MAALT): `vaultNavne` i Accessibility.swift er SOEGEORD, der genkender en dansk + // adgangskode-side paa dens titel («adgangskodeadministrator», «adgangskoder») - de matches, de vises aldrig. + // Kun netop den liste undtages, fra erklaeringen til dens «]»; en dansk streng foer eller efter den er stadig roed. + if (/^static let vaultNavne = \[/.test(t)) iVaultListe = true; + if (iVaultListe) { if (/\]\s*$/.test(t)) iVaultListe = false; return; } // ⛔ 23/9: vagten faeldede `import { taelOgTael } from './sloejfe.js'`. // Et FILNAVN er ikke tekst et menneske laeser i et svar - husets egne // moduler hedder programlaas.js, godkend.js, sloejfe.js med vilje. diff --git a/test/skriv-ankommer.mjs b/test/skriv-ankommer.mjs index 1c07a3fd..70ad069a 100644 --- a/test/skriv-ankommer.mjs +++ b/test/skriv-ankommer.mjs @@ -180,7 +180,7 @@ print(valg.map { v -> String in switch valgEfterSoegning(antal: v.0, stoppedeTid && tastKrop.indexOf('kombiSkriverTekst(combo)') < tastKrop.indexOf('Input.hotkey('), tastKrop.slice(0, 160)); const svKrop = m.slice(m.indexOf('case "set-value":'), m.indexOf('case "at":')); check('6g set_value paa FOKUS (uden soegning): ogsaa macOS-signalet doemmer (R24, Astra)', - /if AX\.isSecure\(t\.el, role: role\) \|\| \(fokusVej && skriveDom\(fokusSikkert: false, sikkerIndtastning: macosSikkerIndtastning\(\)\) == \.sikkertFelt\) \{/.test(svKrop) + /if AX\.isSecure\(t\.el, role: role\)\s*\|\| \(fokusVej && skriveDom\(fokusSikkert: false, sikkerIndtastning: macosSikkerIndtastning\(\)\) == \.sikkertFelt\) \{/.test(svKrop) && /fokusVej = true/.test(svKrop), svKrop.slice(0, 120)); check('7e valget efter en soegning (R24, adfaerd med ÉT fund): efter tidsudloeb vaelges intet uden index - heller ikke med --first; index vinder; tvetydigt overskrives aldrig', valgDom === 'U,U,v0,v0,T,t,v0,0,X,U', valgDom); From 9fe3400a91f049fae27d44bb8f5e17cafdbd2917 Mon Sep 17 00:00:00 2001 From: Gustav Louv Date: Sat, 7 Nov 2026 01:26:18 +0100 Subject: [PATCH 2/2] =?UTF-8?q?test=20claims=2027:=20the=20vaultNavne=20ex?= =?UTF-8?q?emption=20closes=20at=20the=20first=20=C2=AB]=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Opus R25 (measured): the exemption ended only on a line that ends in «]», so a list closed by «] // comment», «].map {…}», «] + x» or «]; static let …» left the rest of Accessibility.swift unread and the check green. It now closes at the first «]»; if anything follows it, the line is read like any other (and turns red on the list's own words), and a list that never closes is red. Measured with the harness: base green; A1, A3, A4, A6 red. (An unterminated list cannot compile, so a list that closes at a later «]» is not a reachable state.) Co-Authored-By: Claude Opus 5.5 --- test/claims.mjs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/test/claims.mjs b/test/claims.mjs index 8c71ed1c..19e54f39 100644 --- a/test/claims.mjs +++ b/test/claims.mjs @@ -1460,7 +1460,14 @@ esac // adgangskode-side paa dens titel («adgangskodeadministrator», «adgangskoder») - de matches, de vises aldrig. // Kun netop den liste undtages, fra erklaeringen til dens «]»; en dansk streng foer eller efter den er stadig roed. if (/^static let vaultNavne = \[/.test(t)) iVaultListe = true; - if (iVaultListe) { if (/\]\s*$/.test(t)) iVaultListe = false; return; } + if (iVaultListe) { + // R25 (Opus, MAALT): listen lukkes ved FOERSTE «]». Staar der noget efter den (en kommentar, .map, + x, ; …), laeses + // linjen som alle andre (og bliver roed paa listens egne ord) - ellers blev resten af filen aldrig laest. + const slut = t.indexOf(']'); + if (slut < 0) return; + iVaultListe = false; + if (t.slice(slut + 1).trim() === '') return; + } // ⛔ 23/9: vagten faeldede `import { taelOgTael } from './sloejfe.js'`. // Et FILNAVN er ikke tekst et menneske laeser i et svar - husets egne // moduler hedder programlaas.js, godkend.js, sloejfe.js med vilje. @@ -1508,6 +1515,7 @@ esac } } }); + if (iVaultListe) syndere.push(`${fil.split('/').pop()}: vaultNavne lukkes aldrig - resten af filen blev ikke laest`); } check('27. intet mennesket kan laese er paa dansk', syndere.length === 0, syndere.length ? `${syndere.length} strenge, fx: ` + syndere.slice(0, 2).join(' | ')