feat(v5): Etappe W-4 — Metadaten-Automatik mit Sicherheitsgrad
Ampel / ampel (push) Failing after 1m20s
Ampel / ampel (push) Failing after 1m20s
metadaten/: discmerkmale.ts (BDMT-Studio-Titel, ISO-9660- und UDF-Volume-Label direkt vom Medium — OHNE koffi, ueber fs auf \.\G: —, Label-Normalisierung, Fingerabdruck, progressive Titel-Kandidaten), tmdb.ts (v3-Key UND v4-Token, de-DE, /find fuer deutsche Texte zu OMDb-Treffern), omdb.ts, zuordnung.ts (die Confidence-Kaskade 0,95/0,90/0,80/0,60/0,30 aus prescan.py). ablage/poster.ts. Kern meldet 'disc-info' beim Einlegen; die Pipeline benennt den fertigen Ordner '<Titel> (Jahr)', schreibt movie.nfo/tvshow.nfo mit echten Metadaten und laedt das Poster. Fenster zeigt 'sehr wahrscheinlich: … · 95 %'. ZWEI Kaskaden-Schwaechen LIVE GEFUNDEN und gehaertet (gegen die echten APIs gemessen, Keys aus den Docker-Settings der VM, nicht persistiert): 1. 'Spartacus Gods Of The Arena' wurde zum FILM 'Spartacus' (1960) — der stark gekuerzte Kandidat traf woertlich, bevor die volle Anfrage als spezifische SERIE galt. Kaskade jetzt JE KANDIDAT woertlich→spezifisch (spezifisch nur fuer die volle Anfrage, auch fuer Serien). Nachgemessen: jetzt Serie, 90 %. 2. OMDbs t=-Suche machte aus dem Label 'Bd Evg D2' selbstbewusst 'BD Scream 5' — jetzt Wort-Jaccard-Gate >= 0,5. Nachgemessen: der Fall ist jetzt ein ehrlicher 60-%-Vorschlag, den das UI nachfragt. Messwerte: Akira→95% · Evangelion 2.22→80% (der dokumentierte Fund) · Spartacus GotA→Serie 90% · Bd Evg D2→Vorschlag 60%. Dazu ein neuer Quelltext-Hygiene-Waechter (keine rohen Steuerbytes — zweimal beim Schreiben passiert, einmal haette ein Test dadurch anders gemessen als gelesen). 165 Tests gruen, Smoke gruen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
e840b7f327
commit
5f386e5406
@@ -79,6 +79,24 @@ describe('§ 4.1 — kein HTTP-Server, kein Port, kein localhost', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('Quelltext-Hygiene — keine rohen Steuerbytes', () => {
|
||||
it('keine Datei enthält Steuerzeichen außer Tab/LF/CR', () => {
|
||||
// Zweimal passiert (30.08.2026): Escape-Sequenzen wie \x00 landeten
|
||||
// als ECHTE Bytes in der Datei — grep meldet „Binary file", Diffs
|
||||
// leiden, und ein Test sah dadurch anders aus, als sein Quelltext las.
|
||||
const testDateien = readdirSync(join(WURZEL, 'test'))
|
||||
.filter((name) => /\.(ts|tsx)$/.test(name))
|
||||
.map((name) => ({
|
||||
pfad: `test/${name}`,
|
||||
inhalt: readFileSync(join(WURZEL, 'test', name), 'utf8'),
|
||||
}))
|
||||
const verstoesse = [...dateien, ...testDateien]
|
||||
.filter((d) => /[\x00-\x08\x0b\x0c\x0e-\x1f]/.test(d.inhalt))
|
||||
.map((d) => d.pfad)
|
||||
expect(verstoesse).toEqual([])
|
||||
})
|
||||
})
|
||||
|
||||
describe('§ 6.7 — EINE Quelle für Einstellungen', () => {
|
||||
it('node:sqlite wird nur in kern/speicher/db.ts angefasst', () => {
|
||||
// Der rc11-Fund: Oberfläche schrieb in die Datenbank, der Betrieb las
|
||||
|
||||
Reference in New Issue
Block a user