# ASSESSOR – Umsetzungsplan ## Management Report text revision (2026-10-04, Phase 7) Explicit user request: the report repeated the same generic sentences in every row and theme. Report Engine only (no Core change): renderer 3.3.0, Business Impact mapping 2.1.0 with fuller theme impact text, new versioned `management-report-texts.ts` 1.0.0 with a German name, Sachverhalt, Einordnung and Ansatzpunkt per Context category, written from the catalog conditions of each category. Theme sheets get a data-derived Kernaussage and per-category blocks; the Summary gets data-derived statements; disclaimers appear once in Lesehinweise und Aussagegrenzen; the 38-row observation table becomes one count/date-range sentence; the redundant Findings row is replaced by the deviation rate; Base Severity stays out of theme sheets as before. Permanent test: every category has complete text, no scanner names, the proof disclaimer occurs once. Reviewed with a local Dummy rendering from the stored Context result. Reporting and Context tests pass (126). Shipped within 2.16.4. ## Business Impact - independent Work filter and clickable bars (2026-10-04, Phase 7) Current user correction: Business Impact must have its own selection, never select or replace the Context Cluster filter. The four Client Info columns open Work with the independent `report:business-impact` facet. The same four filters appear underneath Security Domains in the Work sidebar, with counts, a persistent selection marker and a second click to clear that theme. Existing Context selection is preserved on chart navigation and on sidebar selection; normal filter intersections still apply. Context Cluster remains directly before Source: Scan. Unassigned remains omitted. These are authorized Core Presentation extension points; no evaluation, verdict, source data or stored client data changes. The facet reads the same published counting keys and theme assignments as the existing report/chart, not every category attachment. This excludes category attachments without published deviation evidence, which direct Dummy verification found could inflate Control & trust by three. The Context index publishes the existing immutable report projection alongside its unchanged cluster facet. Optional engines hide the extension; disabling Report clears only Business Impact, while disabling Context clears both derived selections. Synthetic exact-interaction acceptance in Dark/Light covers clicking a chart, visible separate dropdown selections, retaining a selected cluster, sidebar toggle, exact matching records, input immutability, optional-engine behavior and an attachment without deviation evidence. Patch 2.16.5 is the backward-compatible release for this refinement; final activation and full verification are recorded below. No phase is marked complete. Verification completed: 1,909 tests passed, 15 optional skips; local-only and design checks passed. Both production builds passed, with the existing bundle-size advisory. Product package/lockfile and UI/API version contracts agree on 2.16.5. Existing report-export test expectations were synchronized with the already changed heading and count-column position, without changing report text. Direct Dummy interaction in both themes confirms 221 / 63 / 121 / 69 in chart, sidebar and Work, Context stays All on theme selection, and clearing Resilience preserves an explicitly selected Detection Blind Spots cluster. Screenshots saved outside the repository. The canonical backend was restarted from the verified bundle; health confirms 2.16.5, PostgreSQL and unchanged revision 540. No report was generated or stored during these interactions. ## One finding, one category - Context and Business Impact (2026-10-04, Phase 13E / Phase 7) Explicit user decision supersedes multiple cluster membership in counts and the six overlapping Business Impact themes: a deviation is never counted twice. Context Engine 1.11.0 keeps exactly one primary cluster per finding and GPO setting in `clusterIds` (order: catalogued before recognized before estimated, then most supporting evidence, then base severity, then ID); further clusters stay traceable in `secondaryClusterIds`. Catalog 1.10.0 declares `primaryClusters` for all eight conditions several clusters list (ESC8 -> AD CS Escalation; CIS Printers -> Host Credential & Privilege; delegatable admins -> Kerberos Delegation Abuse; privileged SPN and service-account policy -> Kerberoasting; password-never-expires rules -> Password Guessing); catalog validation rejects a shared condition without one. The heatmap counts each deviation only in its primary cluster, so its cells add up to the unique finding total; cluster condition states are unchanged. Report mapping 2.0.0 has four disjoint themes (Kontrolle & Vertrauen, Informationen & Daten, Betriebsfähigkeit, Widerstandsfähigkeit & Wiederanlauf); every category belongs to exactly one, AD Reconnaissance to Informationen & Daten. Financial and compliance consequences are one prose note, never a counted theme. Dummy with the stored context: heatmap 474 = 474 unique (previously 499); themes 221 / 63 / 121 / 69, plus 3 deviations without a Context category = 477. Permanent tests: heatmap sum equals unique count, missing primary cluster is a catalog error, every category in exactly one theme. Client Info (released Presentation, Core Tests, Platform): the Business Impact row has four equal columns in theme order with English labels; its permanent test checks four bars, labels and no Financial/Compliance bar in both themes. Verified in the browser with Dummy: 4 columns, 221 / 63 / 121 / 69, no overflow. Shipped as patch 2.16.4 (the pending, not yet documented working-tree version); full npm test passed with 1,908 tests and 15 optional skips, client and server production builds passed. Open: the 3 deviations without a Context category are not yet explained. No phase is marked complete. ## Client Info - possible Business Impact columns (2026-10-04, Phase 7) User-authorized Presentation/Platform/Core Tests refinement: six vertical columns below Security Domains show the existing deterministic primary Business Impact distribution, with English labels and counts. The user explicitly excludes the unassigned column here. The total and Security Domains remain authoritative and unchanged; financial/compliance possible consequences remain available in the report even when their primary counts are zero. The Report Engine counting-key helper is shared with the live Client Info workspace; current source selection limits the population without changing Context assignments. This is a pinned read-only presentation extension to published Context and Report results, covered by architecture tests. No external service, model, database write, score change or historical report rewrite is introduced. Verified with the actual Dummy Client Info, Scan All: 121 / 0 / 57 / 221 / 0 / 69; six columns only, no unassigned label, Core total still 477. Actual Light rendering inspected and saved outside the repository; synthetic interaction tests cover both themes, optional-engine toggles, request reuse, input immutability and unchanged Core presentation. Full npm test: 1,906 passed, 15 optional skips; local-only and design checks passed. Both production builds passed with the existing bundle-size advisory. Backward-compatible presentation refinement released as patch 2.16.4; package/lockfile and UI/API version contracts synchronized. The identified existing backend was restarted using the canonical PostgreSQL configuration; health confirms 2.16.4 and unchanged revision 540. Report renderer remains 3.2.3. Excluding unassigned means the six displayed values sum to 468 rather than changing the 477 total; this is the explicit requested display decision. No phase is marked complete. ## Management Report - exclusive finding distribution (2026-10-04, Phase 7) Explicit user correction supersedes overlapping counts in the Business Impact overview: its table and chart must distribute all 477 Dummy deviations exactly once. Report-only mapping 1.1.0 assigns a category's direct consequence to its main theme; financial/compliance downstream consequences remain in the possible-impact prose. Conflicting or missing primary assignments stay in Nicht eindeutig zugeordnet, with no arbitrary tie-break. The authoritative summary workspace additionally publishes the exact deviation counting keys; only these keys enter named bars. Stored Core data, verdicts, scores and Context associations remain unchanged. Complete Context evidence stays in theme details and the technical report. No phase is marked complete. Authorized direct Dummy verification uses all 477 current Work deviations at revision 540 and the corresponding archived Context publication: Betriebsfähigkeit 121, Finanzielle Auswirkungen 0, Informationen & Daten 57, Kontrolle & Vertrauen 221, Compliance & Haftung 0, Widerstandsfähigkeit & Wiederanlauf 69, Nicht eindeutig zugeordnet 9; sum exactly 477. Synthetic acceptance covers overlapping technical evidence, conflicting primary themes, unmapped findings, out-of-scope keys, order independence, unchanged inputs and equal table/chart totals. The corrected Dummy preview is saved outside the repository in the task's visualization directory. Product/backend activation awaits a current Platform/Core Tests release. Release completed after current Platform/Core Tests consent: patch 2.16.3 and renderer 3.2.3, package/lockfile and UI/API version contracts synchronized. Full npm test passed with 1,904 tests and 15 optional skips, including the actual export-button interaction checking that chart counts sum to the full unfiltered population. Architecture, Core/Context/Report invariance, local-only and design checks passed. Both production builds passed. The identified backend was restarted from the verified bundle; health confirms 2.16.3, canonical PostgreSQL and unchanged revision 540. The regular report-run API generated Dummy archive 20261004T160231Z-5340b9c2; independent extraction verifies all seven table counts sum exactly to 477 and agree with the diagram. The final API HTML is saved as the reviewable Dummy artifact outside the repository; no historical report or real customer report was rewritten. No phase is marked complete. ## Context heatmap - total beside heading (2026-10-04, Phase 7 / 13E) Explicit user refinement of the compact header: show `Findings: ` directly beside `Context heatmap`, aligned on the text baseline. The existing Context Engine's unique heatmap-finding count is reused; overlapping category membership never increases the total. The scope subtitle and legend remain absent, and the reduced top spacing remains intact. Only Context Engine component, styles and acceptance tests changed; no Core extension point, count contract, report or stored data is modified. Synthetic scope-change, overlap, empty-state and click-path tests pass in both themes: 20 focused tests, including Core/Context invariance. Design-language check passed. Cosmetic display refinement only, no separate product release or backend restart; concurrent work is preserved. ## Report wording refinements (2026-10-04, Phase 7) Counting correction (Phase 7 / 13E): published Context cluster evidence previously exposed multiple technical result IDs per rolled-up GPO setting; the theme union incorrectly counted those IDs as individual findings. The publication now additionally provides immutable counting keys (scanner occurrence and GPO scope/setting identity). Report themes union those keys, preserving all original result IDs and cross-theme membership. Summary reads the shared Core workspace summary with current GPO evaluations through an additional existing read-only repository method, instead of historical GPO evaluation row counts. No verdict, stored data, Core count or scoring changes. Synthetic tests reproduce 482 evidence rows for 477 unique findings, check overlapping themes and the displayed table/chart/summary, and preserve inputs. Read-only verification of Dummy at revision 540 reproduces the exact screenshot: previous theme counts 193/305/482/294/112/208 become 167/279/399/229/112/190. Context currently maps 474 unique findings; the user's 477 total is not substituted by that mapped count in Summary. Initial backend activation and product release awaited current Platform/Core Tests consent. Release verification: subsequent current Platform/Core Tests consent authorizes patch 2.16.2 and renderer 3.2.2, including the preceding wording refinements. Full suite: 1,903 passed, 15 optional skipped. The final workspace-summary integration passed 76 focused Report/Context, export-click, architecture and UI/API version tests. Direct canonical read-only Report execution confirms 477 deviations / 759 assessed at unchanged revision 540, and a new Dummy report was archived successfully; historical archives remain unchanged. No real customer report was generated. The first compiled API export check returned a generic internal error; direct source runtime and archive verification succeeded after the final summary integration. Both final production builds and backend API activation are checked before reporting release complete. No phase is marked complete. Final activation verified: both production builds passed after the final summary integration, and the identified backend was restarted with that bundle against the canonical PostgreSQL datastore. The regular report-run API successfully generated and archived Dummy run 20261004T153811Z-0ec39826 at unchanged repository revision 540. Its Summary states 477 deviations / 759 assessed, the six theme counts are 167/279/399/229/112/190, and all user-removed notes are absent. This resolves the earlier compiled-export verification failure. Existing HTML exports remain immutable and must be regenerated to display this release. Further screenshot correction: remove the technical sentence about findings without a cluster assignment from Summary. Underlying assignments and appendix data remain unchanged; the synthetic renderer test permanently checks that the sentence is absent. The subsequent screenshot correction also removes the count/overlap note beneath the theme bar chart. The diagram and its counts remain unchanged; synthetic rendering verifies the note is absent. Another explicit screenshot correction removes the automatic-assignment/specialist-review note from each theme sheet. Conditional impact wording and underlying confidence data are preserved; a permanent synthetic renderer assertion checks the sentence is absent. Explicit screenshot corrections: remove the technical overlap/absence-of-evidence note beneath the Business Impact overview, use Summary for both first-sheet summary labels, present Handlungsfelder as a heading with bullet points for evidenced themes, and replace Blätter with Angaben in the introductory prose. Counting, absent-evidence handling and stored data remain unchanged. These small Report Engine presentation refinements do not create a separate product release. Fourteen synthetic renderer tests pass, including both Summary labels, the omitted note, the exact evidenced-theme list and the revised introductory wording. The local synthetic preview is regenerated; production backend activation remains separate from source/preview changes. No phase is marked complete. ## Management Report - ASSESSOR overview and confidentiality (2026-10-04, Phase 7, 2.16.1) Explicit user correction: the report presents ASSESSOR only, with no scanner names or source breakdowns. Management appears only in the repeated page header; every header and footer states Streng vertraulich. Evidence columns show plain finding counts, and the theme overview includes a bar chart of those counts. These presentation requirements supersede earlier visible attribution and confidence breakdowns; retained source data and published Context assignments remain unchanged. Possible Business Impact stays conditional, with no impact grades or amounts. Generation remains entirely offline, without Internet or LLM. The first sheet now displays the existing ASSESSOR Overall Score as a full-circle SVG donut beside the summary. It reads the shared report projection directly without changing Core scoring: zero is valid, and absent or invalid scores show unavailable rather than an invented zero. Theme counts deduplicate findings within each theme; overlapping themes are never summed into a total. Historical report archives remain unchanged. Renderer 3.2.1 and the binding report template record the refinement. Verification: full npm test passed with 1,901 tests and 15 optional skips; architecture, local-only, engine invariance and design checks passed. Permanent tests cover the actual report-export click, score rendering including zero and missing values, scanner-name suppression, header-only Management wording, confidentiality, count-only tables, chart counts and input immutability. Both production builds passed after the final diagram placement, as did the UI/API version contracts. A synthetic production-renderer preview was inspected locally; no customer report was generated or replaced. Current Platform and Core Tests consent authorized patch release 2.16.0 -> 2.16.1 and backend activation. Health confirms 2.16.1, PostgreSQL and unchanged repository revision 540. Concurrent Client Info changes are preserved; no phase is marked complete. ## Client Info - remove standalone trigger and simplify heatmap header (2026-10-04, Phase 7) Explicit user correction with current Presentation and Core Tests consent: remove only the Client Information button from the Dashboard action row, retaining its data, API and standalone browser. Management Report and Technical Report remain blue. The Context heatmap header now contains only its title: remove the scope subtitle, total-findings display and legend. Existing category colors, per-tile findings, scope selection and exact Work navigation remain intact. Reduce the heatmap top margin from the shared space-8 to space-6 token (32px -> 24px); removing the subtitle also moves the grid upwards without changing the shared outer panel inset. This supersedes the preceding three-button and heatmap-header display agreements only for these visible elements. Twenty-eight synthetic tests passed across both themes, including retained standalone browser behavior, scope changes, Work navigation and Core/Context invariance; design-language checks passed. Cosmetic scope only: no separate product release, backend restart or customer-data operation. Concurrent Report Engine work is preserved. ## Client Info - blue action buttons (2026-10-04, Phase 7) Explicit user colour-role exception with current Presentation, Platform and Core Tests consent: Client Information, Management Report and Technical Report use the same theme-aware blue background, text and border tokens as Engines, including hover and active states. A dedicated class limits the shared CSS rule to these three actions; geometry, engine activation and report behavior remain unchanged. Synthetic Dashboard interactions cover both themes and preserve disabled report buttons when Report Engine is off. Four focused Client Info tests and the design-language check passed. This small cosmetic refinement does not create a separate product release or change the shared product version. No backend restart or customer-data operation; concurrent Management Report work is preserved. ## Management Report - possible business impact (2026-10-04, Phase 7, renderer 3.2.0) Explicit user decision: replace the category-first management reading with the six proposed management themes, labelled exclusively **Möglicher Business Impact**, with no impact grades, money amounts or actual client-impact assessment. Report generation must use no Internet or LLM. This supersedes the earlier content sequence and prohibition on business-consequence wording only for clearly conditional possible consequences; the approved export layout, Context evidence and all Core disclosure/verdict boundaries remain binding. Implemented within Report Engine: versioned report-only mapping 1.0.0 from published Context category IDs to Betriebsfähigkeit, Finanzielle Auswirkungen, Informationen & Daten, Kontrolle & Vertrauen, Compliance & Haftung and Widerstandsfähigkeit & Wiederanlauf. Fixed German text describes possible consequences and action guidance only when corresponding evidence exists. Each theme contains observation, action, attribution, confidence and limits. Themes without evidence state no derivable impact; unknown or unmapped categories stay visible in the appendix. Counts deduplicate published result IDs within each theme and never add overlapping themes into a total. Summary and management overview precede six theme sheets; complete Context heatmap and method/technical domain appendix remain. Context Base Severity never becomes an impact rating. Core data, Context assignments and historical report archives are unchanged. The revised binding template records this user decision. Verification: 44 focused Report Engine/export-button tests passed, including deterministic generation with network access stubbed to fail, overlap counting, empty/unknown categories, confidence, disclosure and input/storage invariance. Full `npm test`: 1,890 passed, 15 optional tests skipped; architecture, local-only, engine invariance and design checks passed. Client and server TypeScript checks passed. Final report-only table-width refinement passed all six affected renderer/export tests. A synthetic production-renderer preview was generated and inspected locally; it contains no customer data or remote assets. No customer report was generated or replaced. No phase is marked complete. Remaining release step: Report renderer version advances 3.1.1 -> 3.2.0. Product-version reassessment recommends minor 2.15.2 -> 2.16.0 for this backward-compatible management-report capability. Package/lockfile, Core UI/API version tests, production builds and activation in the running backend await a current **Platform, Core Tests** release, as required by AGENTS.md; those Core files and the running backend were not changed for this request. Product version remains 2.15.2 until that release step is authorized and verified. Concurrent workspace changes are preserved. Release completed (2026-10-04): the user's subsequent current **Platform, Core Tests** release authorized the remaining step. Minor product version 2.16.0 is synchronized in package/lockfile and Core UI/API version contracts. All 54 focused version, HTTP, Report Engine and export-button tests passed; both production builds passed, with the existing bundle-size warning only. The identified local backend was restarted with the verified bundle; health confirms 2.16.0, PostgreSQL and unchanged repository revision 540. The backend bundle contains renderer 3.2.0 and the new Business Impact template. The synthetic local preview was regenerated and returns HTTP 200 with version 2.16.0. New Management Reports use the new template; no customer report or historical archive was generated or replaced during release verification. The entire earlier report verification remains recorded above; no phase is marked complete and concurrent Client Info work is preserved. ## Data Hub - returning catalog versions update correctly (2026-10-04, Phase 7, 2.15.2) Verified correction under current Reference Catalogs, Presentation, Platform and Core Tests consent. Reference recognition previously skipped a historical run with the same deterministic identity even when a newer run used different catalogs, leaving the status permanently pending after A -> B -> A. Reprocessing now checks the latest run's input, recognizer version and catalog hashes for unchanged work. Returning to a historical combination creates a new immutable reference run with a timestamp newer than previous runs and a distinct identity. Historical runs, source findings and reviews remain unchanged; no schema or repository contract changes are required. The existing detail panel explicitly reports an incomplete update when the subsequent status still contains pending scans, retains retry and only reports success when pending work is zero. No visual layout or theme change. Verification: permanent synthetic service coverage includes repeated A -> B -> A transitions, a backwards-moving clock, unchanged retries and preserved historical runs/findings/reviews. Permanent click-path tests execute the real service through the API client boundary in both themes; incomplete-update feedback remains covered. All 26 focused tests passed. Full `npm test`: 1,888 passed, 15 optional tests skipped; local-only, architecture, engine invariance and design checks passed. Both production builds and UI/API version contracts passed. Patch 2.15.1 -> 2.15.2 records this backward-compatible correction; existing bundle-size warnings remain. The identified local backend was restarted from 2.15.0 to 2.15.2 against the unchanged canonical PostgreSQL datastore. LSW's regular reference-update API processed its one remaining pending scan after restart: 3 indexed scans, 0 pending. A second call returned 0 processed and 3 unchanged. This verification appended reference metadata only, with no reimport or destructive operation. Concurrent edits are preserved and no phase is marked complete. ## Data Hub - pending catalog references marked red (2026-10-04, Phase 7, 2.15.1) Explicit user correction with current Presentation, Platform and Core Tests release: pending Catalog references recognition is important actionable maintenance and marks the client overview dot and Manage button red, including before client selection. This supersedes the earlier yellow overview treatment of pending references. A dedicated `reference-update` presentation state retains the reference-update explanation instead of classifying pending work as a processing failure. It takes precedence over yellow profile/re-evaluation/review notices; real processing errors retain priority and the tooltip preserves both causes. After successful recognition, the remaining processing state determines the color. The existing Catalog references detail panel and its Update references action stay intact; scanner outcomes, scores, imports and stored data are unchanged. No actual customer reference update was executed. Verification: permanent synthetic DataHub interactions cover Dark/Light, initially unindexed and previously indexed outdated references, Manage/update/back, successful clearing, failed update and retry, status retry, catalog/import refresh and error priority. An additional check preserves a concurrent yellow profile-update task after reference recognition. Browser verification with synthetic clients confirms red pending-reference dots/Manage in both themes and green/red/yellow remaining states after simulated completion. All 24 focused tests passed; full `npm test`: 1,885 passed, 15 optional tests skipped. Architecture, engine invariance, local-only and design checks passed. Both production builds and UI/API version contracts passed; scoped diff whitespace checks clean. Patch 2.15.0 -> 2.15.1 records this backward-compatible UI correction. Existing bundle-size and unrelated React-key warnings remain. Concurrent edits and historical decisions are preserved; no phase is marked complete. ## Security Domains - strukturierte Zuordnung (2026-10-04, Phase 7 / Evaluation; umgesetzt, 2.15.0) **Umsetzung und Verifikation (2026-10-04).** Die Umsetzung erfolgte mit Core-Freigabe `Evaluation, Ingest, Reference Catalogs, Presentation, Core Tests, Platform, Governance`; die Fortsetzung mit erneuter Freigabe `Evaluation, Ingest, Presentation, Core Tests, Platform`. Der Hook hatte die erste Freigabe nach einer Hintergrund-Benachrichtigung verworfen. Umgesetzter Stand: - **Klassifizierer:** ein einziger in `src/evaluation/security-domains.ts`, Version 2.0.0. Er liest nur Raw-Data-Felder; ein Werkzeug-Hinweis über die `toolId` des Blatts gilt für Einzelblätter ohne `Source: Scan`. - **Zuordnungstabellen:** versioniert je Profil, in `src/profiles/{cis-cat,group-policy,maester,pingcastle,purple-knight}/*-security-domains.ts`. Maester akzeptiert auch die Feldnamen `Block`, `ID` und `Tag` (JSON-Listen). - **Abgeleitete Raw-Data-Felder:** - `Benchmark section` für CIS-CAT (in `canonical-model-to-dataset.ts`). - Für Security-Template-Einstellungen ohne Vergleich: `Policy section`. Gelesen wird er aus dem ASSESSOR-eigenen Beobachtungstitel ` · `, nur bei Übereinstimmung aller Quellen. - Für Security-Template `Registry Values`: `Registry path`, aus der Vergleichsidentität bzw. demselben Titel. Dieser Fall ergab sich erst aus der Dummy-Prüfung und betrifft 49 Einstellungen. - Offen: ein eigenes Projektionsfeld für Abschnitt und Schlüssel wäre sauberer. Es bräuchte Freigabe für Normalization und Disclosure. - **Titelerkennung:** Sie ignoriert `Benchmark section` als Titelquelle (`record-builder.ts`). - **Report:** `domainOf` nutzt den Work-Datensatz, über die Occurrence bzw. Scope und Technical Identity. Ohne Work-Datensatz greift der Klassifizierer auf die strukturierten Ergebnisfelder zurück. - **Bereinigung:** Die `Unclassified`-Zweige in Client Info, Sidebar und Facet sind entfernt. Die Vereinbarungen in AGENTS.md sind ersetzt. - **GPO-Tabelle:** Der Eintrag `File Security` ist entfallen, weil die Local-only-Prüfung das Wort `File` sperrt; er ergab dieselbe Domain wie die Auffangstufe. Verifiziert: - **Tests:** 13 neue synthetische Klassifizierer-Tests (eine Stufe je Test, keine `Unclassified`-Domain, Summe gleich Gesamtzahl, Unabhängigkeit vom Ergebnis, Werkzeug-Hinweis, Report-Rückfall). Dazu ein neuer Test, dass Report und Work für Scanner- und GPO-Ergebnisse dieselbe Domain liefern. Zehn bestehende Testdateien wurden an die neue Vereinbarung angepasst, darunter der dauerhaft beibehaltene Klickpfad-Test Client Info → Work-Facet. - **Testsuite und Prüfungen:** `npm test` mit 1.882 bestandenen und 15 übersprungenen Tests; die Local-only- und Designprüfung bestanden. - **Builds:** Beide Produktionsbuilds bestanden; die bekannte Warnung zur Bundle-Größe bleibt. - **Version:** UI und API melden 2.15.0. - **Browserprüfung mit dem freigegebenen Dummy:** - Client Info zeigt sechs Domains mit den Abweichungen Identity 112, Privileged 54, Infrastructure 19, Hardening 245, Cloud 7, Monitoring 40. - Der Klick auf System Hardening setzt das Work-Facet auf `hardening` mit 245 Datensätzen und Status `Deviation`. - Es gibt kein `Unclassified` und kein neues Facet `Benchmark section`. - **Dummy-Verteilung nachher** (alle 1.833 Datensätze): Identity 302, Privileged 152, Infrastructure 58, Hardening 1.077, Cloud 149, Monitoring 95. - **Herkunft der Zuordnungen:** - CIS: 411 über Stufe 2, davon 87 Pass und 323 Fail auf verschiedene Domains verteilt, statt 187 bei Identity. - Maester: 317 über die Stufen 1/3, 1 über Stufe 5. - PingCastle 37 und Purple Knight 119 über Stufe 1. - GPO: 880 über Stufe 4, 68 über Stufe 5. Versionsentscheidung: Minor 2.14.3 → 2.15.0, weil sich die sichtbaren Domain-Kategorien und Domain-Pass-Raten ändern. Package, Lockfile und die Versionsverträge für UI und API sind synchronisiert. Historische Reports behalten ihre Domains. Für diese reine Neuzuordnung gespeicherter Felder ist kein Reimport und kein Verarbeitungsmanifest nötig. Die Phase wird nicht als abgeschlossen markiert. Ursprünglicher Planungsstand: Bisher war nur die Planung erfolgt, noch kein Code geändert. Der Nutzer hat im Chat zwei Entscheidungen getroffen: **6 Domains** und **zuerst Plan plus Dummy-Vorher-Zahlen**. Die Umsetzung braucht eine eigene Core-Freigabe, die der Nutzer in seiner Nachricht selbst schreibt. Voraussichtlich nötig: `Evaluation, Ingest, Reference Catalogs, Presentation, Core Tests, Platform`. Die Freigabe-Zeile im eingefügten Vorschlag war nur ein Beispiel und gilt nicht als Freigabe. **Problem (am Code bestätigt).** `src/features/dashboard/security-domains.ts` ordnet Prüfungen über Textmuster zu. Dabei gewinnt das erste passende Muster. Identity steht ganz oben und erkennt schon `user`, `account` und `password`. Die Beschreibung zählt mit, deshalb landet „Group Policy“ als Umsetzungsweg bei GPO. Die Maester-Suiten stehen in einer Feature-Datei statt im Profil. Außerdem gibt es zwei Klassifizierer: `securityDomainIdForRecord` für Work und Client Info, `securityDomainIdForUnifiedResult` für die Report-Projektion. Sie lesen unterschiedliche Felder. **Entscheidung des Nutzers vom 2026-10-04 (wird mit der Umsetzung verbindlich).** Es gibt sechs Domains: 1. Identity & Authentication 2. Privileged Access & Delegation 3. AD Infrastructure & PKI 4. System Hardening 5. Cloud & Collaboration 6. Monitoring & Recovery `GPO & Baseline` entfällt als Domain. Die GPO-Sicht bleibt über `Source: Scan = GPOs` und die GPO-Facets vollständig erhalten. Bei der Umsetzung werden diese Vereinbarungen in AGENTS.md abgelöst. Das braucht die Freigabe `Governance`: - „Security Domain bietet alle acht Katalogeinträge“ - „reine GPO-Sicht = `GPO & Baseline`“ - die acht Knoten der Domain-Spine in Client Info - die Domain-Pass-Raten im Report `Unclassified` entfällt. **Zielmodell.** Es gibt einen einzigen Klassifizierer in `src/evaluation/` für Work, Client Info, Work-Facet und Report-Projektion. Die Zuordnung hängt nur an der Prüfung, nie am Ergebnis. Pass und Fail folgen also denselben Regeln. Jede Prüfung bekommt genau eine Domain. Die erste Stufe mit einem Treffer entscheidet: 1. Native Kategorie bzw. exakte Regel-ID nach der Profiltabelle. 2. CIS-CAT-Abschnittstitel aus der Score-Tabelle desselben Laufs (`cis-benchmark-section-titles.ts`), nie die Nummer allein. 3. Maester-Suite bzw. Kontroll-ID. 4. GPO `Policy section` bzw. `Policy type`. 5. Auffangdomain je Quelle. Jede Zuordnung trägt die Stufe und das Quellfeld mit. Je Quelle wird ausgewiesen, wie viele Prüfungen in Stufe 5 landen. Es gibt keine Textmuster über Titel oder Beschreibung. Die Tabellen sind versioniert und liegen im Scanner-Profil (analog `securityScoring`). Keine Abhängigkeit von der Context Engine. **Dummy-Vorher-Stand (heutiger Klassifizierer, Projektblatt, 1.833 Datensätze, nur Zählwerte).** - CIS-CAT (411): - Fail: `identity` 120, `gpo` 94, `hardening` 58, `authentication` 23, `infrastructure` 16, `cloud` 5, `privilege` 5, `recovery` 2 - Pass: `identity` 67, `gpo` 8, `authentication` 4, `hardening` 2, `infrastructure` 2, `unclassified` 2, `privilege` 1, `recovery` 1 - Die Härtung ist damit deutlich unterrepräsentiert. - Maester (~ 330): fast alles `identity` (Fail 61, Pass 68, Skipped 86), nur 8 `cloud`. Das gilt auch für ORCA/Exchange. - PingCastle (37): `identity` 25, `hardening` 4, `infrastructure` 3, `authentication` 2, `recovery` 2, `gpo` 1. - Purple Knight AD (~ 120): überwiegend `identity`, 2 `unclassified`. - GPOs (948): alle `gpo` (Fail 25, Pass 25, `Not configured` 879, `No baseline rule` 19). **Verfügbarkeit der Quellfakten (Reimport-Prüfung).** - CIS-CAT: Alle 411 Ergebnisse lösen einen Abschnittstitel desselben Laufs auf. Vorkommende Hauptabschnitte: Account Policies, Local Policies (Security Options, User Rights Assignment), System Services, Windows Defender Firewall, Advanced Audit Policy, Administrative Templates (Computer/User). - Purple Knight: `Category` ist gespeichert. Werte: Account Security, AD Infrastructure Security, AD Delegation, Kerberos Security, Group Policy Security, Hybrid (AD). - Maester: `Category`/Block ist gespeichert, ebenso die Regel-ID-Präfixe. Blocks: Maester/Entra, CISA, ORCA, EIDSCA, CIS, Exposure Management, Maester/Exchange, Teams, Intune, AzureConfig u. a. Präfixe: `CISA.MS.AAD`/`EXO`/`SHAREPOINT`, `EIDSCA.*`, `CIS.M365`, `MT.*`, `ORCA`. - PingCastle: `Category` (Anomalies, Stale Objects, Privileged Accounts, Trusts) wird im HTML- und im XML-Pfad gespeichert, `Model` nur im XML-Pfad. Die Kategorie allein ist für Anomalies und Stale Objects zu grob. Vorschlag: eine exakte Regel-ID-Tabelle im Profil, mit der Kategorie als Rückfall. Dafür ist kein Reimport nötig, weil die Regel-ID immer gespeichert ist. - GPO: Das Feld `Policy section` ist für Privilege Rights, System Access, Registry Values und Audit-Subkategorien gesetzt. Korrektur derselben Planung: Von den 825 Einstellungen ohne dieses Feld haben 810 einen gespeicherten Registry-Pfad. Das ist das Ziel `key` der technischen Policy-Identität. Die übrigen 15 sind Security-Template-Einstellungen (Kerberos Policy, Privilege Rights). Ihr Abschnitt steht strukturiert in `identity.target.section`. Stufe 4 liest deshalb die technische Identität: Security-Template- bzw. Audit-Abschnitt oder Registry-Schlüssel. Sie liest nicht die Feldbeschriftung oder den Titel. - Registry-Schlüssel werden über eine versionierte Präfix-Tabelle zugeordnet, der längste Treffer gewinnt. Der Vergleich ignoriert Groß- und Kleinschreibung, die Hive gehört nicht zum Schlüssel. Vorschlag: - `...\Windows\EventLog`, `...\PowerShell\ScriptBlockLogging`/`Transcription`, Audit → Monitoring & Recovery - `Control\Lsa`, `Kerberos`, `Biometrics`, `Windows\System` mit Logon-Werten → Identity & Authentication - `CredentialsDelegation`, `AdmPwd`/`LAPS`, `Services\NTDS` → Privileged Access & Delegation bzw. AD Infrastructure & PKI - `SystemCertificates` → AD Infrastructure & PKI - Defender, Firewall, FVE (BitLocker), Office, Internet Explorer, Edge, Tcpip, Netbt, LanmanServer, MrxSmb10, Print und alle übrigen Schlüssel → System Hardening - Die ADMX-Kategorie (Pfad in den Administrative Templates) ist im ADMX-Katalog nicht gespeichert. Sie würde eine Parser-Änderung und eine Neuauswertung der Baselines erfordern und ist für die Zuordnung nicht nötig. - Dummy-Verteilung der Schlüssel ohne Abschnitt: Internet Explorer 231, `Policies\Microsoft\Windows` 197, Office 191, Defender 51, Firewall 27 sowie kleinere Gruppen. `Policies\Microsoft\Windows` wird eine Ebene tiefer unterschieden. **Nutzervorgabe 2026-10-04: Zuordnung grundsätzlich über Raw Data.** Raw Data entspricht `record.fields` mit Wert (`RawDataView.tsx`). Prüfung am Dummy-Projektblatt: - PingCastle (37): `Source Rule ID` und `Category` sind zu 100 % vorhanden. `Model` fehlt (HTML-Import). Die Regel-ID-Tabelle reicht. - Purple Knight (119): `Category` und `Source Rule ID` sind zu 100 % vorhanden. Reicht. - Maester (318): `Category`/Block, `Source Rule ID` und `Tags` sind zu 100 % vorhanden. Reicht. - CIS-CAT (411): **Lücke.** Raw Data enthält nur `Source Rule ID` (Nummer), `Benchmark Item` und `Control Mappings`, keinen Abschnittstitel. Der Titel steht nur in der Section-Score-Tabelle des Berichts und in der Record-Eigenschaft `benchmarkSectionTitles`. Vorschlag: ein zusätzliches Raw-Data-Feld `Benchmark section` mit dem Titelpfad aus derselben Lauftabelle, ohne Reimport. Alternativ dienen die nativen `Control Mappings` (CIS Controls) als gröbere Stufe. - GPO (948): `Policy type` 100 %, `Registry path` 85 %, `Policy section` 13 %. **Lücke bei 15** Security-Template-Einstellungen mit `No baseline rule`: Sie haben weder Abschnitt noch Pfad. Abschnitt und Schlüssel stehen nur im erzeugten Titel, `Technical Identity` ist ein Hash. Vorschlag: `Policy section` auch für diese Zeilen aus `identity.target.section` füllen, statt den Titel zu zerlegen. - `Source: Scan` (Stufe 5) ist überall zu 100 % vorhanden. Ergebnis: Es ist voraussichtlich kein neues Verarbeitungsmanifest und kein Reimport nötig. Die Zuordnung liest nur bereits gespeicherte Felder. **Entscheidungen des Nutzers vom 2026-10-04 (zweite Runde).** - CIS-CAT bekommt das neue Raw-Data-Feld `Benchmark section`. Es enthält den Titelpfad aus der Section-Score-Tabelle desselben Laufs. Bei fehlendem oder mehrdeutigem Titel bleibt das Feld weg, es wird nichts erraten. Stufe 2 liest dieses Feld. - Entra-Prüfungen (EIDSCA, CISA.MS.AAD, Maester/Entra, Conditional Access, MFA, Identity Protection) gehören zu `Identity & Authentication`. Exchange, Teams, SharePoint, ORCA, Intune und die übrige Tenant-Konfiguration gehören zu `Cloud & Collaboration`. - Purple Knight `Group Policy Security` gehört zu `System Hardening`. - GPO: `Policy section` wird auch für Security-Template-Zeilen ohne Baseline-Regel aus `identity.target.section` gefüllt. Das ist ein Vorschlag aus der Raw-Data-Prüfung, den der Nutzer nicht ausdrücklich beantwortet hat. Er ist als Teil der Umsetzung vorgesehen, sofern der Nutzer nicht widerspricht. Damit sind alle inhaltlichen Fragen geklärt. Offen ist nur noch die Core-Freigabe, die der Nutzer selbst schreibt. **Risiken.** - `Not configured`-GPO-Einstellungen verteilen sich künftig auf Domains. Zu prüfen ist, dass sie in Domain-Scores weiterhin score-neutral bleiben. - Gespeicherte lokale Facet-Auswahlen mit `gpo` oder `unclassified` müssen beim Laden still und sichtbar entfallen. - Die Report-Pass-Raten ändern sich. Historische Reports behalten ihre Werte. **Abnahme.** - Synthetische Tests je Profil, eine Stufe pro Test. - Kein `Unclassified`. Die Summe der Domains entspricht der Gesamtzahl. - Gleiche Domain für dieselbe Prüfung in Work, Client Info und Report. - Der Regressionstest für den Klickpfad Client-Info-Drilldown → Work-Facet bleibt erhalten. - Dummy-Nachher-Verteilung gegen den Vorher-Stand oben. - Versionsentscheidung (Minor, weil sich die sichtbaren Domain-Kategorien ändern) nach Abnahme. ## Operating systems - EOL overview removed (2026-10-04, Phase 7, 2.14.3) Explicit user decision supersedes the earlier EOL overview-field implementation: remove `EOL OS` from the Operating systems tile because the lifecycle-reference effort does not provide enough value. Current Core release covers Presentation, Platform and Core Tests. The tile again uses only its existing source-backed inventory facts, with the existing empty Inventory marker. Original report tables and the Results interaction remain unchanged; no lifecycle catalogue, evaluation, reimport, migration or stored-data change is introduced. Historical decisions and source-verification notes below remain intact. Verified: permanent synthetic interaction checks in Dark and Light assert that the tile contains no EOL field even when a retained source value exists, preserves inventory facts, opens original Results evidence and leaves the snapshot unchanged. Empty tiles also omit the EOL placeholder in both themes. Browser inspection with synthetic data confirms Dark/Light and the Results interaction. Full `npm test`: 1,869 passed, 15 optional tests skipped; local-only, design, architecture and engine-invariance checks passed. Both production builds, product-version UI/API contracts and scoped diff whitespace checks passed. Existing client bundle-size and unrelated React-key warnings remain. Patch 2.14.2 -> 2.14.3 records this backward-compatible presentation correction; package/lockfile and version contracts are synchronized. No phase is marked complete; concurrent workspace edits are preserved. ## EOL OS - source verification correction (2026-10-04, Phase 7 / 13C) User reports that EOL OS does not work. Read-only audit found that the preceding implementation and test only accept a hypothetical `EOL OS` column: the synthetic import test explicitly injects that table into the fixture. This proves parser handling, not that a normal PingCastle export supplies the value. Public source verification of `netwrix/pingcastle` master found no EOL aggregate in `ReportHealthCheckSingle.cs`'s computer-account/OS table generator and no direct EOL aggregate in the inspected `HealthcheckData.cs`. Therefore the prior statement that EOL is a supported native overview value is not established and must not be repeated as verified scanner coverage. PingCastle does publish individual ObsoleteOS rules, for example `S-OS-2012` in `HeatlcheckRuleStaledObsolete2012.cs`; this rule reads OS occurrence counts and respects a paid-support override. Such findings can be displayed as native scanner evidence, but they are not a complete, overlap-free EOL inventory. Missing rule findings do not establish zero EOL systems. Public sources: https://github.com/netwrix/pingcastle/blob/master/PingCastleCommon/Report/ReportHealthCheckSingle.cs and https://github.com/netwrix/pingcastle/blob/master/PingCastleCommon/Healthcheck/Rules/HeatlcheckRuleStaledObsolete2012.cs . No customer report was inspected and no Core file was changed in this audit. The unsupported overview field remains pending explicit current Core consent for its correction; no phase is marked complete. Historical verification notes below are retained and superseded by this source-coverage correction. ## Operating systems - EOL OS field (2026-10-04, Phase 7) Explicit user request and current Ingest, Normalization, Presentation, Platform and Core Tests release: Client Info's Operating systems tile now reserves its second fact for `EOL OS`, including narrow tiles that display only two facts. It reads an explicit retained PingCastle Computer Information total with an EOL OS/OS EOL/end-of-life OS label. Zero is preserved; missing, malformed, unassessed, contradictory or multiple source totals show the existing unknown marker. No lifecycle judgement is inferred from an OS name or current vendor lifecycle dates, and separate reports/rows are never added. Results now includes the original EOL table alongside the OS inventory, with existing native evidence and source references. The generic importer already retains these fields, so no extractor, mapping, native overall score, persistence, migration or reimport changes were required. 77 focused synthetic import, OS-tile/Results, dashboard, evidence, architecture and UI/API-version tests passed. Permanent interactions cover both themes, the visible second fact, Original Results and unchanged observations; count checks cover zero, invalid, absent and multiple/conflicting sources. Browser inspection confirmed Dark/Light with synthetic data and the native EOL table under Results. Local-only and design checks passed. Patch 2.14.1 -> 2.14.2 records this backward-compatible presentation refinement; package/lock and UI/API version contracts are synchronized. Existing imported reports without an explicit retained EOL total remain unknown; actual customer report coverage was not validated. No phase is marked complete, concurrent changes preserved. Final verification for the EOL OS batch: both production builds passed, including TypeScript checking of the synthetic fixtures; the final 12-test PingCastle import rerun passed and scoped `git diff --check` is clean. Existing client bundle-size warning remains. ## Cloud Information - konkrete Istwerte (2026-10-04, Phase 13C / 7, 2.14.2) Nutzerkorrektur mit aktueller Core-Freigabe Ingest, Normalization, Presentation, Platform und Core Tests: Vier identische Verfuegbarkeitshinweise haben keinen ausreichenden Aussagewert. Die dauerhaft sichtbare Kachel zeigt jetzt je Cloud-Bereich einen konkreten, ausdruecklich berichteten Wert, etwa Authentifizierungsmethode, berichtete permanente Rollenzuweisungen, Admin-Consent-Request-State oder Gastrolle. Dies ersetzt die unten historisch dokumentierten Verfuegbarkeitshinweise aus 2.14.1. Fehlende/unassessed/unklare Werte erscheinen als `Not reported`; Konflikte werden sichtbar. Weitere Fakten und komplette Originalnachweise bleiben ueber Results erreichbar. Kompakte Labels und ein Wert pro Feld erhalten die gemeinsame 14px/16px-Typografie und quadratische Kachel ohne Inhalts-Scrollbar in den geprueften synthetischen Beispielen. Die pure Normalisierung liest ausschliesslich bereits erhaltene Maester-Testdetails mit exakter nativer Regel-ID und ausdruecklichen Istwert-Templates/Tabellen. Passed/Failed oder Empfehlungen liefern niemals Konfigurationswerte. Zahlen werden als berichtete Testteilmengen gekennzeichnet, nicht als vollstaendige Tenant-Inventare. Mehrere Scan-/Tenant-Scopes werden nicht zusammengerechnet, widerspruechliche Quellen nicht aufgeloest. Offizielle Generatoren und Microsoft-Semantik wurden geprueft; Offline-Mapping und Grenzen stehen in `docs/CLIENT_INFORMATION.md`. Keine Onlineabfrage zur Laufzeit und keine Kundenberichte als Testdaten. Der rueckwaertskompatible Client-Information-Lesevertrag 1.1.0 ergaenzt `cloudFacts` fuer den vollstaendig gefilterten Scope vor Pagination, mit kanonischer Property, Wert, Quellen-/Scan-/Dateibezug, Quellzeit, Scope und Mapping-Version. Future Engines nutzen weiterhin ausschliesslich den veroeffentlichten read-only Port. Keine Persistenz-, Schema-, Finding-, Score-, Result-DB- oder Engine-Aenderung. Bereits erhaltene passende Nachweise profitieren ohne Reimport; fehlen sie, bleibt regulaerer Reimport notwendig. Profil-/Extractor-Versionen bleiben unveraendert, da keine neue Extraktion stattfindet; der bestehende native Maester-Overall-Score-Vertrag bleibt erhalten. Verifiziert: 23 fokussierte Leseport-/Cloud-/UI-/Importtests sowie 49 Import-/Scoring-/Architekturtests bestanden. Permanenter synthetischer UI-Test prueft vier konkrete Bereiche, Results mit Originaltabelle, Dark/Light, leere dauerhaft sichtbare Kachel und unveraenderte Quellen; die echte Dashboard-Interaktion bleibt abgedeckt. Drei Importformate liefern dieselbe Source-backed Normalisierung ohne veraenderte Finding-Outcomes. Vollstaendiges `npm test`: 1.867 bestanden, 15 optionale Tests uebersprungen; Local-only-/Design-, Architektur-, Disclosure- und Engine-Invarianztests bestanden. Browserpruefung bestaetigt Dark/Light, konkrete vier Felder, Results-Aufruf und leere Kachel. Beide Produktionsbuilds, UI/API-Versionsvertraege und `git diff --check` bestanden. Zwischenzeitliche Typfehler paralleler OS-Workspace-Aenderungen wurden dort korrigiert; anschliessender Build erfolgreich. Bestehende Bundle-Groessenwarnung bleibt; kein Meilenstein neu als abgeschlossen markiert. Versionsentscheidung: Patch 2.14.2 als Verfeinerung der bestehenden Client-Information-Faehigkeit; die bereits parallel vorbereitete gemeinsame Package-/Lockfile-/UI-/API-Version 2.14.2 wurde beibehalten statt pro Teilbearbeitung weiter zu inkrementieren. Gleichzeitige lokale Arbeiten und historische Entscheidungen bleiben erhalten. Grenzen: ausschliesslich deklarierte native Ausgabeformen; keine pauschale Aussage ueber komplette Cloud-Konfiguration, eligible/permanent Gesamtzahlen oder Report-only-Policies. ## Engine outlines - contrast correction (2026-10-04, Phase 7) User rejected the first outline as visually indistinguishable from related ordinary tiles and requested explicit Light-mode consideration. The engine identity frame now uses a 2px shared emphasis outline in the theme's neutral secondary-text color, including the left marker: light grey in Dark, dark grey in Light. It no longer shares the faint related-node border color. Blue remains the keyboard-focus role; yellow remains the selected frame and related-arrow role. The generic `engine: true` contract continues to apply to future Engines. This entry corrects the visual acceptance of the preceding implementation without rewriting its history. Permanent Dark/Light interaction checks now guard the stronger identity outline as well as deselection and unchanged arrow behavior. 24 focused diagram, architecture and UI/API-version tests passed; browser inspection confirmed all three unselected Engine frames in both themes and yellow selection with exactly three highlighted Context connections. Both production builds and local-only/design checks passed. Version remains 2.14.1: correction of the same current UI batch, no independent capability release. No data, persistence, relationship or phase-completion change; unrelated workspace changes preserved. ## Engine outlines - user decision and implementation (2026-10-04, Phase 7) Explicit user decision applies to every current and future Engine: its Data Flow tile always has a subtle neutral frame. Only selecting the Engine highlights its frame and related arrows in yellow; hovering or deselecting leaves arrows neutral. The shared engine style now supplies the full neutral border, and node descriptors declare `engine: true` instead of relying on a hardcoded list of three IDs. Future Engine descriptors must use this declaration to inherit the same visual contract. Existing initial Core selection, relationships and data flows remain unchanged. Verified under the current Presentation, Platform and Core Tests release: 24 focused diagram-interaction, UI/API-version and architecture tests passed. Permanent synthetic interaction tests cover all three Engines, hover, selection and deselection in both themes. Browser inspection of the production component with synthetic data confirmed neutral unselected frames and yellow selected relationships in Dark/Light. Both production builds, local-only/design checks and `git diff --check` passed. Existing bundle-size warning remains; no persistence or engine behavior changed and no phase is marked complete. Product version retained at the already prepared 2.14.1 as part of the current shared patch batch; concurrent workspace changes preserved. ## Cloud Information - dauerhaft sichtbare Kachel (2026-10-04, Phase 7, 2.14.1) Explizite Nutzerkorrektur: Die Cloud-Information-Kachel wird immer angezeigt, auch wenn keine Cloud-Nachweise importiert sind. Dies ersetzt die vorherige bedingte Einblendung als Vorschlag. Nach aktueller Core-Freigabe fuer Presentation, Platform und Core Tests ist die Kachel in der bestehenden Client-Info-Umgebungskachelreihe umgesetzt: vier Felder fuer Sign-in/Conditional Access, Rollen/Berechtigungen, Application consent und externen Zugriff/Sharing. Vorhandene beobachtete Nachweise erscheinen als `Source evidence available`; sonstige vorhandene Nachweise als `Source evidence not assessed`; fehlende als `No retained information`. Test-Outcomes liefern keine erfundenen Konfigurationswerte. Die Kachel verwendet die bestehenden quadratischen Kachelstile, vier Fakten, 14px Labels/16px Werte und den normalen Results-Button. Results oeffnet den bestehenden Client-Information-Browser mit den vier Cloud-Bereichen und dem exakten Mandanten-/Timeslot-/Scan-Scope. Die Bereichsauswahl und Reset behalten den Cloud-Scope bei. Ohne gespeicherten Mandanten bleibt die Kachel sichtbar und Results zeigt den vorhandenen leeren Quellenhinweis. Scopewechsel schliessen das bisherige Datenfenster durch den Scope-Key. Der allgemeine Client-Information-Button bleibt unveraendert erreichbar. Keine neue Extraktion, Tabelle, Persistenz, API-/Engine-Beziehung oder Datenfluss; Work-Filter und Core-Werte bleiben unveraendert. Verifikation: vollstaendiges `npm test` erfolgreich, 1.854 Tests bestanden, 15 uebersprungen; Local-only-/Design-, Architektur- und Engine-Invarianzpruefungen bestanden. Permanente synthetische Dashboard-Interaktionen pruefen Dark/Light, immer sichtbare vier Cloud-Felder ohne Daten, beobachtete und nicht bewertete Nachweise, den echten Results-Aufruf mit Originaldetails, Cloud-Filter/Reset, unveraenderte Work-Filter und deaktivierte optionale Engines. Bestehende Kachelanzahlpruefungen wurden um genau die neue Kachel erweitert. Browserpruefung mit synthetischen Daten bestaetigt Dark/Light, leere sichtbare Kachel und leeren Results-Aufruf. Beide Produktionsbuilds und UI/API-Versionsvertraege bestanden; `git diff --check` ohne Fehler. Laufender Backend-Healthcheck: 2.14.1, PostgreSQL. Versionsentscheidung: Patch 2.14.0 -> 2.14.1 als UI-Ergaenzung des bestehenden Client-Information-Vertrags; Package/Lockfile und Versionsvertraege synchronisiert. Bestehende Bundle-Groessenwarnung und fremde React-Key-Testwarnung bleiben bestehen. Keine Phase als abgeschlossen markiert, keine Kundenberichte gelesen oder reimportiert, gleichzeitige lokale Arbeiten erhalten. Neue Maester-Nachweise erfordern weiterhin regulaeren Reimport; die Kachel behauptet weder vollstaendige Cloud-Konfiguration noch einen Livezustand. ## Client Information - Umsetzung 2026-10-04 (Phase 13C / 7; Version 2.14.0) Nach expliziter Core-Freigabe fuer Ingest, Normalization, Store, Presentation, Platform und Core Tests ist der unten dokumentierte Auftrag umgesetzt und synthetisch verifiziert. Der neue Core-Lesevertrag `ClientInformationReadPort` 1.0.0 und der HTTP-Zugang `/projects/:id/client-information` erschliessen den vorhandenen Beobachtungs-/Berichtsbestand gezielt nach Mandant, Timeslot, Scanlauf, Bereich, Eigenschaft, Objekt, Scanner und Erfassungszustand. Client Info bietet dafuer den Button **Client Information** mit Filterung, Originalwerten/Tabellen, Provenienz, Details, Pagination und Retry. Optional deaktivierte Engines beeintraechtigen ihn nicht. Bestehende Snapshot-, Finding-, Review- und Exportvertraege bleiben erhalten; technische Additional-Information-Felder im Finding Reader wurden nicht pauschal umbenannt. Entscheidungen: vorhandene Core-Tabellen weiterverwenden, keine Migration oder Datenkopie; aktuelle nicht ersetzte Importlaeufe als Standard, historische Laeufe nur explizit; keine Zusammenfuehrung widerspruechlicher Quellwerte und keine Livezustandsbehauptung. Jede Abfrage wird gegen die committed Repository-Revision geprueft. Exakte Quellverweise behalten ihre eindeutigen Ziele auch ueber Abschnittsseiten hinweg. Engines erhalten ausschliesslich den veroeffentlichten Leseport, gebunden an read-only Repository-/DB-Zugriff; bisherige Engines wurden nicht auf andere Inputs umgestellt. Die Data-Flow-Beschreibung des vorhandenen kanonischen Bestands nennt Client Information und den Leseport; es gibt keine neuen Tabellen oder Engine-Schreibbeziehungen. Mehrwert: Maester 1.2.0 ergaenzt bekannte Cloud-Testdetailwerte aus HTML und Excel/CSV zu Authentifizierung/Conditional Access, Rollen, App-Zustimmung und externem Zugriff/Sharing. Originaltext und enthaltene Tabellen bleiben erhalten. Alle neuen Werte sind als `reported-test-evidence`, `inventoryComplete: false` mit exakter nativer Regel-ID und Quellstatus gekennzeichnet. Ein Teststatus wird niemals als Konfiguration interpretiert. Der native Overall-Score-Vertrag wurde geprueft und bleibt bei der expliziten Nichtverfuegbarkeit eines numerischen Gesamtscores; die gemeinsame Scoringlogik bleibt unveraendert. Historische Verarbeitungsmanifeste bleiben erhalten, fruehere Maester-Importe empfehlen Reimport. Es wurde kein Kunden-Reimport ausgefuehrt. Verifikation: vollstaendiges `npm test` erfolgreich, **1.853 Tests bestanden, 15 uebersprungen** (darunter die nicht aktivierten echten PostgreSQL-Integrationstests). Neue synthetische Tests pruefen drei Importformate, unveraenderte Finding-Outcomes und Originalwerte, fehlende/unbekannte Nachweise, read-only PostgreSQL-Abfragen, Scopes/Historie, Revisionen, Pagination/Links, HTTP-Validierung und die echte Dashboard-Interaktion in beiden Themes inklusive Apply/Reset/Retry und veralteter Antworten. Architektur-, Engine-Invarianz-, Scoring-, Disclosure-, Local-only- und Designpruefungen bestanden. Veraltete Client-Info-Tests wurden an die bereits verbindliche Directory-Integration vom 2026-10-02 angepasst, mit vollstaendigen Domain-Information-Result-Pruefungen. Synthetische Browserpruefung bestaetigt Dark/Light, vorhandenes Datenfenster und Eigenschaftsfilter. Beide Produktionsbuilds und UI/API-Versionsvertraege bestanden, `git diff --check` ohne Fehler. Der laufende Backend-Healthcheck meldet 2.14.0 und PostgreSQL. Keine Kundendaten wurden fuer Implementierungstests gelesen. Versionsentscheidung: rueckwaertskompatible neue Abfragefaehigkeit, daher Minor 2.13.5 -> **2.14.0**; Package, Lockfile und Versionsvertraege synchronisiert. Historische Report-/Versionsangaben bleiben unveraendert. Bestehende Warnungen fuer Client-Bundlegroesse und einen React-Key in einem fremden RichTextValue-Test bleiben bestehen. Keine Phase als abgeschlossen markiert; gleichzeitige lokale Arbeiten erhalten. Offene Grenzen/Risiken: Vollstaendige Cloud-Konfigurationsinventare sind nicht durch Testnachweise ersetzt; unbekannte JSON/XML-/Exportstrukturen benoetigen weitere quellengestuetzte Profilerweiterungen. Die konkrete Abdeckung echter Kundenberichte wurde nicht verifiziert. Neue Extraktionen werden erst bei einem gesonderten regulaeren Reimport sichtbar. Der Port filtert derzeit den vorhandenen scoped Snapshot im Backend, nicht per neuen SQL-Indizes; grosse Scopes koennen entsprechend Arbeitsspeicher benoetigen. Mehrseitige Leser muessen Revisionen vergleichen. Interne Daten bleiben den bestehenden UI-/Export-Disclosure-Regeln unterworfen. Details, genaue ID-/Formatabdeckung und Engine-Nutzung: [CLIENT_INFORMATION.md](CLIENT_INFORMATION.md). ## Client Information - urspruenglicher Nutzerauftrag 2026-10-04 (Planungsstand vor Freigabe) Der Nutzer benennt den bisher als Zusatzinformationen bezeichneten scannerbezogenen Mandanteninformationsbestand **Client Information**. Der Bestand soll alle bisher gewonnenen Informationen erhalten und gezielt sowohl fuer die heutige ASSESSOR-Anwendung als auch fuer spaetere Engines abrufbar sein. Dazu kommen die besprochenen Cloud-Konfigurationsinformationen, soweit die Originalberichte sie tatsaechlich enthalten. Dies ist eine dokumentierte Anforderung, noch keine implementierte oder verifizierte Core-Aenderung. Umsetzungsumfang und Abnahmeentwurf: - Den vorhandenen Bestand aus `EnvironmentObservation` und `ScannerReportSection` als Grundlage verwenden: Originalwerte, komplette Abschnitte/Tabellen, Erfassungszustaende und Datei-/Scan-Provenienz bleiben erhalten. Die einheitliche fachliche Bezeichnung lautet Client Information. - Einen versionierten, gezielt abfragbaren Lesevertrag bereitstellen: Mandant, Assessment/Timeslot, Scanlauf, Informationsbereich, Eigenschaft und betroffenes Objekt. Client Info und Engines lesen denselben abgegrenzten Datenstand. Stabile fachliche Schluessel erlauben den Abruf ohne UI-Textsuche oder erneutes Parsen durch eine Engine. - Der Jetzt-Zustand bezeichnet den aktuellen importierten Stand im gewaehlten Scope, mit Scan-/Erfassungszeit und Repository-Revision; er behauptet keinen Livezustand der Kundenumgebung. Historische Laeufe bleiben adressierbar. Widerspruechliche oder unterschiedlich alte Quellen bleiben zugeordnet sichtbar und werden nicht still zusammengefuehrt. - Zusaetzliche Cloud-Bereiche anhand der tatsaechlichen Quellfelder erschliessen: Anmeldemethoden und Conditional-Access-Konfiguration samt berichteten Ausnahmen; Cloud-Rollen und berichtete aktive/berechtigte Zuweisungen; App-Consent-, Gastzugriffs- und externe Freigabeeinstellungen. Ein vorhandener Test oder Findingtitel beweist weder das Vorliegen der Konfigurationswerte noch ein vollstaendiges Inventar. Fehlende Angaben bleiben ausdruecklich fehlend. - Engines konsumieren Client Information ausschliesslich ueber deklarierte Read-only-Ports und Read-only-Datenbankzugriff; der Bestand gehoert zum Core. Bestehende Privacy-/Disclosure-Regeln gelten auch fuer den neuen Lesevertrag. Keine engineeigene Kopie oder Schreibmoeglichkeit in Core-Daten. - Namensaenderungen nach fachlicher Bedeutung vornehmen: Die bisherige Finding-Reader-Rubrik `Additional Information` enthaelt auch technische Einzelbefundfelder und ist nicht automatisch identisch mit dem Mandanteninformationsbestand. Keine pauschale Text-Ersetzung als Ersatz fuer den gemeinsamen Informationsvertrag. - Synthetisch pruefen: gezielter Abruf bestehender und neuer Informationen, Scope-/Mandantentrennung, historische Datenstaende, fehlende/widerspruechliche Werte, Herkunftstreue, identische UI-/Engine-Grundmenge sowie unveraenderte Findings/Verdicts/Scores und Engine-Invarianz. Betroffene UI-Interaktionen dauerhaft absichern. Bestandspruefung: `getEnvironmentSnapshot` existiert bereits im Repository und in der API; Context- und Report-Read-Ports nutzen ihn. Der jetzige Snapshot-Query grenzt nach Mandant, Assessment und Scanlaeufen ein; fachlich gezielte Abfragen sind darauf aufbauend zu gestalten. Die konkrete Cloud-Feldabdeckung der Kundenberichte ist noch nicht verifiziert. Bestehende Importe erhalten neue extrahierte Werte nur durch einen gesonderten regulaeren Reimport. Core-Umsetzung wartet auf die Freigabe der betroffenen Bereiche Ingest, Normalization, Store, Presentation, Platform und Core Tests. Eine Schemaaenderung oder ein Reimport wurde weder vorgenommen noch durch diese Dokumentation freigegeben; falls erforderlich, gelten die bestehenden Backup-/Migrationsregeln. Dokumentationsaenderung ohne Produktversionsanhebung, ohne Laufzeitaenderung und ohne Phasenabschluss. 2026-10-02 - Phase 7 / approved Management Export assignment wording (Report renderer 3.1.1, verified): User explicitly selects Nach Katalog, Nach Befundmerkmalen and Thematisch eingeordnet. New Management Reports use these labels consistently in the reading key, category assignment tables and count summaries. Descriptions use plain technical/content-clue wording; thematic assignments explicitly remain pending professional confirmation. Report-authored Geschätzt/geschätzt and deterministic/anchor wording are removed from Management HTML. Internal catalogued/recognized/estimated values, counts, technical export, source data and historical archives are unchanged. The permanent Report Engine template records this user decision. 18 focused management, report-run/narrative, boundary and invariance tests passed, including a new synthetic export test with nonzero counts in all three tiers, exact labels throughout, preserved qualification and unchanged input. Synthetic management preview regenerated through the production renderer; server production build and design/local-only checks passed. Management renderer patch 3.1.0 -> 3.1.1 records the editorial change in new archive metadata. Product version reassessed and retained at 2.13.5: this is a terminology-only Report Engine edit with no Core/product capability, schema, data or layout change. No Core source/test/version files were edited. Existing local backend restarted to activate the renderer, retaining canonical PostgreSQL; frontend API health is ok. No phase completion or new dataflow relationship, no full-suite rerun. 2026-10-02 - Phase 7 / Activity reload control (2.13.5 patch, verified): Current Presentation/Core Tests/Platform release adds the requested neutral circular-arrow button immediately after History when loading ends incomplete or cancelled and no task remains active. Accessible name/title Reload application; mouse or native Enter reloads the current application page through window.location.reload. The same action remains available beside a manually minimized incomplete Activity indicator. It does not mark failures as recovered, clear history or alter readiness; running/queued work and recovered Ready suppress it. Existing green Ready dot, manual minimization, five-second automatic minimization and historical failure behavior remain. Shared button geometry, token-sized SVG and both themes retained. Permanent synthetic React interactions in Dark/Light verify presence after failure, click callback from expanded/minimized states, unchanged activity records, absence while running and after same-operation recovery despite historical failure. 24 Activity/UI/API version tests passed; both production builds, design/local-only checks and diff check passed. Browser synthetic preview verified native Enter and mouse reload navigation, both themes and visible compact geometry; screenshot saved. Patch 2.13.4 -> 2.13.5 with package/lock/version contracts synchronized. No persistence, API/dataflow or engine relationship change, backend restart or full-suite rerun; existing bundle-size warning remains. 2026-10-02 - Phase 7 / approved Management Report template retained: user explicitly approved the implemented report and requested a permanent template inside Report Engine. Added src/reporting/MANAGEMENT_REPORT_TEMPLATE.md with binding visual/content/data contracts and linked it from REPORT_STRATEGY.md. Existing renderer remains the executable template. Documentation-only; no product version change or runtime changes. Dataflow inspection found Context -> Report still marked Planned in EngineDataFlow.tsx despite the implemented publication bridge; diagram update remains a separate Presentation/Core Tests/Platform released request. No phase completion claimed. 2026-10-02 - Phase 7 / Client Info layout rollback (2.13.4 patch, verified): Explicit user correction "Setz alles wieder zurueck! Wieder wie vorher!" followed by current Presentation/Core Tests/Platform release supersedes the compact-workspace selection documented below. Only the last Client Info layout batch is reverted: Overall Score and Security Domains again sit side by side with the established connectors, Data and Domain Information use their previous arrangement, the compact Context heatmap is full-width underneath, and square environment tiles return to their horizontally scrollable row. Original coverage/ring dimensions, responsive breakpoints and environment-tile first-read disclosure are restored. Accepted Risks and all earlier functionality, including six clickable Data facts, complete Domain Information Results, heatmap totals/cluster drilldowns, engine preferences and report actions, remain intact. No unrelated concurrent changes were reverted; frontend/backend continue running against the canonical datastore. The permanent synthetic full-Dashboard regression now checks this restored layout in both themes, preserved source values/Core counts, complete native Domain Information Results and the exact Context-to-Work click. 63 focused layout, popup, disclosure, risk, report, engine-boundary/invariance and UI/API version tests passed; both production builds and design/local-only checks passed. Synthetic browser inspection confirms the restored geometry, both themes and 14px labels/16px values; screenshot saved. Product patch 2.13.3 -> 2.13.4 records the verified rollback without rewriting historical release/report versions. Existing client bundle-size warning remains. No schema/dataflow change, backend restart, full-suite rerun or phase completion claim. 2026-10-02 - Phase 7 / management report reference layout (2.13.2 patch, verified): User-provided Huntsman page explicitly becomes the exported Management Report's layout/style reference: white report sheets, ASSESSOR logo in header/footer, orange headings, dark table headers, alternating light rows, two-column explanatory/evidence blocks and factual bar charts. This export-only user decision supersedes earlier app-style guidance for this report's palette/layout; Core application views and tokens stay unchanged. Existing ASSESSOR logo and Inter are embedded offline. Overview and heatmap precede one sheet per populated Context category; each shows catalog description, separate scanner/GPO counts, category Base Severity, confidence and source attribution, followed by scope/method appendix. Footers number logical report sheets, not physical PDF pages. No invented time series, score, impacted endpoint count, ownership or business consequence. Coverage chart uses published assessed counts; category bars use published scanner/GPO counts. 51 distinct focused report/invariance/export/UI/API version tests passed (module-list sort corrected and rechecked), both production builds and design/local-only checks passed. Browser synthetic preview has loaded logo, two-column/table/chart layout and no horizontal overflow at the normal viewport. No PDF pagination or real customer regeneration acceptance claimed. Provided downloaded HTML was inspected read-only and remains unchanged. Product/lock/version contracts synchronized; no backend restart, no schema or engine relationship change; phase remains in progress. 2026-10-02 - Phase 7 / Client Info, selected compact workspace (2.13.3 patch, implemented and verified): User explicitly selected the attached third proposal, Kompakter Arbeitsbereich, then released Presentation, Core Tests and Platform. The existing Client Info now groups Overall Score and coverage, all Security Domains and the Context heatmap in the left analysis column; Data with its six clickable facts, Domain Information and all five Environment groups occupy the right column. Accepted Risks remains the existing full-width list/detail register below. This chosen layout supersedes the earlier six-square-tile environment row and side-by-side posture arrangement: environment groups are stacked flat reading surfaces, with existing first-read fields and complete Results retained. Decorative ring-to-domain connectors are hidden in the stacked arrangement; scores, source-balanced computation, population semantics, source selection, report actions, engine choices, native evidence, risk records and Work drilldowns are unchanged. No API request, parsing, persistence or engine relationship was added. The heatmap retains its compact 186px tiles with up to four columns, all 22 categories and unique Finding count. Narrow containers stack the columns; the shared root inset remains 20px and fields retain 14px labels/16px values in both themes. Verification: permanent synthetic full-Dashboard interaction tests in Dark/Light check left/right placement, all eight domains plus applicable Unclassified, six Data facts, five environment groups, full-width risk register, all 22 heatmap categories, unchanged Core values when enabling Context, opening all eleven Domain Information fields and original evidence, closing Results and selecting the exact Work cluster, with unchanged input data. Existing six-fact popup, progressive disclosure, posture, risk, report-control, Context boundary and Report invariance checks remain. 63 focused tests passed, including UI/API product-version contracts; both production builds, local-only/design checks and diff check passed. Browser inspection used a static rendering of the actual synthetic Dashboard output to verify both themes, responsive stacking, typography and no horizontal overflow; event behavior was verified in the actual React interaction tests, not the static preview. Screenshot saved. Patch 2.13.2 -> 2.13.3, package/lock and both version contracts synchronized. Existing client bundle-size warning remains; no full-suite rerun, real-client data change, backend restart or phase completion claim. Concurrent changes preserved. 2026-10-02 - Phase 13B / Dataflow presentation clarification (2.13.1 patch, verified): Result DB materialization tile now states Data protection & disclosure and explicitly describes removal or masking of sensitive identity data, validation before storage and the shared controlled result set for Result DB UI and exports. This documents existing disclosure behavior only; internal-analysis remains distinct. No processing, schema, engine relationship, arrow style or selection change. Current Presentation/Core Tests/Platform consent; 17 focused Dataflow/UI/API version tests, design check and both production builds passed. Package/lock and version contracts synchronized. Existing client bundle size warning remains; no backend restart, no new phase completion, no screenshot acceptance claimed. ## Context-based Management Report (Phase 7 / published Phase 13E results) 2026-10-02 - Version 2.13.0, implemented and focused verification complete: current Presentation/Core Tests/Platform release connects the management export to Context Engine's published, frozen result contract. Report Engine does not import Context internals; the already pinned backend extension composes published Context results through the canonical read-only port. The same project, assessment IDs, scan-run IDs and repository revision are checked before rendering/archive; unstable reads retry, mismatched scope or absent producer blocks management generation. Core remains unchanged with engines off. New management generation is blocked in Client Info while Context is off and late UI output is suppressed; technical-only generation still works without computing Context, with no fallback management file. Historical archive renderers and projections are preserved. Delivered: Management Summary, all 22 category tiles sorted by actual Context color, unique Finding total, populated problem fields with scanner/GPO counts and catalogued/recognized/estimated confidence, generic review guidance referencing original recommendations in the Technical Report, documented risk acceptance and selected work states, conditional existing delta evidence, environment/source/time coverage and Domain appendix. No invented business loss, probability, ownership, deadlines, effort, threat scenarios or new priority. General category descriptions are labelled as catalog explanation, not a proven shared attack path. Category Base Severity and technical verdicts stay distinct; neutral is not secure, overlapping clusters are not summed, GPO backups are not effective host observations. Missing comparison evidence is stated explicitly. Result IDs stay out of Management HTML and are preserved with matching Context counts in Report B and the confidential frozen archive JSON. Standalone HTML uses embedded existing Inter, no script or external resources. The export reads Context only on demand, reusing a matching cached result; no additional customer-load work. Verified: 67 focused Report/Context/publication, actual Client Info export interaction, HTTP generation, archive/replay, on/off invariance, architecture and UI/API version tests passed; both final production builds, design/local-only checks and diff check passed. Synthetic browser preview uses the production Context publisher and renderer with 22 categories, no customer data. Existing client bundle-size warning remains. Capability release 2.13.0 supersedes concurrently established 2.12.6; package/lock and UI/API version contracts synchronized. Report Engine 0.3.0, projection 1.3.0 and management renderer 3.0.0 version the new artifact. No persistence migration, canonical datastore change, backend restart or phase completion claim. Current running backend must load the new build before the live export changes. New implemented data-flow relationship: published Context results -> Report Engine; remind the user to request the Engine diagram update separately. A real customer export and rescan-backed delta were not accessed in this side conversation. ## Context-Heatmap in Client Info (Phase 13E / 7) 2026-10-02 - Phase 7 / Data-Kennzahlen als Results-Einstieg (2.12.6, umgesetzt und fokussiert verifiziert): Aktuelle Presentation/Core-Tests/Platform-Freigabe macht AD Domains, Entra Tenant, User Accounts, Computer Objects, Domain Controllers und GPOs zu nativen klickbaren Kennzahl-Kacheln. Die bestehende EnvironmentResultsButton-/FloatingDataWindow-Interaktion zeigt den unveraenderten Uebersichtswert, passende retained Originalbeobachtungen mit Quelle/Scan und die jeweiligen originalen Reportabschnitte samt bestehenden Such-/Detail-/Paging-Funktionen. Eigene Evidenzgruppen begrenzen User-/Computer-/DC-/Domain-/Entra-/GPO-Inhalte. GPO Results zeigt die bereits geladenen verarbeiteten Backup-Dateien, Anzahl, Status und Zeit; der bestehende projektweite Zaehler und seine Datenpopulation bleiben erhalten und werden als All processed client backups benannt. Bestehende GPO-GUID- bzw. Maester-Praesenz-Fallbacks werden als solche erklaert, ohne Detailobjekte zu erfinden. Unbekannte Werte bleiben ein Gedankenstrich; fehlende Quellabschnitte bleiben explizit fehlend. Kachelgeometrie, beide Theme-Tokens und 14px-Daten/16px-Werte bleiben erhalten, Hover und blauer Tastaturfokus zeigen die neue Interaktion. Escape/Close stellt Fokus auf die ausloesende Kennzahl zurueck; Oeffnen aendert weder Work-Filter noch Daten und erzeugt keine neuen Requests. Permanente synthetische Tests klicken alle sechs echten Dashboard-Kennzahlen in beiden Themes, pruefen exakte Werte/passende Evidenz, getrennte User-/Computer-Inhalte, Backup-Herkunft, Escape/Fokus, Dateninvarianz und Requestzahl; separater Test prueft unbekannten Wert ohne erfundene Null/Zeilen. 53 unterschiedliche fokussierte Kennzahl-/Domain-/Evidenz-/Layout-/UI-API-Versionspruefungen bestanden (52 im ersten Lauf, abschliessend drei Kennzahltests einschliesslich neuer Missing-data-Abnahme); Design-/Local-only-Pruefung, diff check und beide Produktionsbuilds bestanden. Synthetische Browserabnahme mit Enter, Escape, Maus und Dark/Light; Screenshot gespeichert. Patch 2.12.5 -> 2.12.6, Package/Lockfile und Versionsvertraege synchron. Kein Vollsuite-Neulauf, Backend-Neustart, Persistence-/API-Vertrags- oder Engine-/Dataflow-Beziehungswechsel; bestehende Bundle-Warnung und concurrent changes bleiben, keine Phasenabschlussbehauptung. 2026-10-02 - Phase 13E / 7, eindeutige Heatmap-Gesamtzahl (2.12.5, umgesetzt und fokussiert verifiziert): Auf aktuelle Presentation/Core-Tests/Platform-Freigabe steht Findings: N unmittelbar links neben der Severity-Legende. Die Anzahl umfasst die eindeutigen Scanner-Abweichungen und GPO-Settings, die in der Heatmap des ausgewaehlten Timeslots vertreten sind. Die vorhandene Evidenzprojektion wird fuer Kacheln und Gesamtzahl gemeinsam verwendet; mehrere Bedingungen, Evidenzen oder Clusterzuordnungen desselben Findings erhoehen die Gesamtzahl nicht. Scanner und GPO behalten getrennte Identitaeten, GPOs ihren Scope; bestandene Ergebnisse bleiben ausgeschlossen und der bestehende Recognition-Reassignment-Ausschluss bleibt erhalten. Neue Context-Daten aktualisieren den memoisierten Zaehler, leere Daten zeigen 0; Lade-/Fehlerzustaende zeigen keine erfundene Zahl. Keine Quellen-, Verdict-, Katalog-, Persistenz- oder Engine-/Dataflow-Beziehungsaenderung. Permanente synthetische Komponenteninteraktion in beiden Themes prueft Position vor der Legende, 29 GPOs plus zwei Scanner, ueberlappende Cluster/Evidenz, Pass-Ausschluss, unveraenderte Daten, Cluster-Klick und Wechsel zu leerem Scope; Dashboard-Klick prueft zusaetzlich die Gesamtzahl. 30 fokussierte Heatmap-, UI/API-Versions- und Core-Grenztests, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Synthetische Browserabnahme in Dark/Light und schmalem Container ohne Ueberlauf; Screenshot gespeichert. Patch 2.12.4 -> 2.12.5 fuer rueckwaertskompatible UI-Ergaenzung, Package/Lockfile und Versionsvertraege synchron. Kein Vollsuite-Neulauf oder Backend-Neustart; bestehende Bundle-Groessenwarnung bleibt, keine Phasenabschlussbehauptung und concurrent changes erhalten. 2026-10-02 - Phase 7 / Directory in Domain Information integriert (2.12.4, umgesetzt und fokussiert verifiziert): Nach aktueller Presentation/Core-Tests/Platform-Freigabe entfaellt die separate Directory-Kachel. NetBIOS name, Schema version, Domain created und Entra ID erscheinen zusammen mit den bestehenden Domain-Angaben in Domain Information. Der gemeinsame Results-Button verwendet die bestehende FloatingDataWindow-Interaktion und zeigt alle elf Domain-Information-Felder, einschliesslich der oben bereits dargestellten Domains-/DC-Zaehler und unbekannter Angaben, sowie die bisherigen Directory-Quelltabellen und Beobachtungen. Nur die erste Leselinie vermeidet weiterhin doppelte Zaehler; Results wird nicht durch diese Uebersichtsfilter gekuerzt. Keine neuen Quellen oder fachlichen Ableitungen. Permanenter synthetischer Dashboard-Klicktest in beiden Themes prueft die vier integrierten Werte, das Fehlen der Directory-Kachel, alle elf Result-Felder, Originalevidenz und unveraenderte Work-Filter. 50 fokussierte Dashboard-/Result-/UI-API-Versionspruefungen, Design-/Local-only-Pruefung, diff check und beide Produktionsbuilds bestanden. Patchversion fuer die rueckwaertskompatible UI-Zusammenfuehrung; Package/Lockfile und Versionsvertraege synchron. Abnahmegrenze: synthetische DOM-Interaktionen und bestehende Theme-Tokens, keine neue Browser-Screenshot-Abnahme. Bestehende Bundle-Groessenwarnung bleibt; kein Backend-Neustart, keine Persistenz- oder Engine-/Dataflow-Aenderung, keine Phasenabschlussbehauptung. Build-Abnahme zur nachfolgenden Korrektur 2.12.3: Client- und Serverproduktionsbuild erfolgreich; bestehende Client-Bundle-Groessenwarnung bleibt. `git diff --check` ohne Fehler. 2026-10-02 - Context-Zaehlung und Smartcard-Zuordnung korrigiert (Phase 13E, Patch 2.12.3): Die Heatmap ignoriert den historischen Fallback-Condition-Eintrag eines GPO-Findings nach `assigned-by-recognition` und zaehlt es nur in seinen zugeordneten Clustern. Zuvor zeigte Other solche bereits zugeordneten GPO-Abweichungen weiterhin, waehrend Work sie korrekt ausschloss. Der permanente synthetische Dashboard-Interaktionstest reproduziert 29 neu zugeordnete GPO-Settings plus zwei verbleibende Scanner-Findings und prueft nach Kachel-Klick die Uebereinstimmung von Kachelzahl und Work-Facet-Mitgliedschaft. Katalog 1.9.1 ergaenzt Purple Knight SI000147 anhand des vom Nutzer vorgelegten Berichtstexts: deaktivierte Smartcard-only-Kennwortrotation gehoert zu Lateral Movement Exposure; eine eigene Bedingung und vorsichtige Aussage bewahren die konkrete Bedeutung, ohne eine ATT&CK-Technik oder einen kompromittierten Zustand zu behaupten. Die unspezifische Maester-Regel MT.1024 ohne konkrete Empfehlung bleibt Other; keine Zuordnung aus der generischen Rule-ID. Regressionen pruefen fail/warning, Pass-/Not-run-Ausschluss, unveraenderte Eingabedaten und exakte Regelzuordnung. 100 unterschiedliche fokussierte Context-, Reader-, Facet- und Produktversionspruefungen bestanden, einschliesslich erneuter Reader-Pruefung nach Anpassung des dynamischen Katalogversionsvertrags. Design-/Local-only-Pruefung bestanden. Produkt-Patchversion nach aktueller expliziter Platform/Core-Tests-Freigabe synchronisiert; keine Core-Finding-, Verdict-, Severity-, Datenbank- oder API-Vertragsaenderung. Kein Backend-Neustart oder Kundendatenzugriff; Phase bleibt in Arbeit. Produktionsbuild-Abnahme wird nach Abschluss unten ergaenzt. 2026-10-02 - Version 2.12.2, kompakte Heatmap und direkter Finding-Klickpfad umgesetzt und fokussiert verifiziert: Die ausdrueckliche Nutzerkorrektur ersetzt die nachfolgend historisch dokumentierte Detailauswahl. Jede Kachel zeigt nur Base Severity, Kategorie und die Gesamtzahl zugeordneter Scanner-/GPO-Findings. Die vorhandene Deduplizierung bleibt bestehen; Bedingungen sind keine Findings. Kacheln verwenden die gemeinsame kompakte Breite von 186px und werden stabil nach ihrer dargestellten Farbe sortiert: Critical, High, Medium, neutral. Klick, Enter und Leertaste oeffnen unmittelbar Work mit dem exakten Context-Cluster-Filter und Abweichungsstatus, ohne Heatmap-Detailansicht. Alte Such-/Source-/Arbeitsfilter werden zurueckgesetzt; aus einem einzelnen Quellblatt wird auf das befuellte Projektblatt gewechselt, damit die gesamte Clusterliste ueber alle Quellen erreichbar ist. Timeslot und Client bleiben erhalten. Keine Aenderung an Quellen, Katalog-Grundschwere, Verdicts, Core-Scores oder Persistenz; keine neue Engine-/Dataflow-Beziehung. Abnahme: 60 fokussierte Tests ueber Context, Architektur, Dashboard, Quellnavigation und UI/API-Versionsvertraege bestanden; Design- und Local-only-Pruefung sowie beide Produktionsbuilds bestanden. Synthetische Browserpruefung in beiden Themes und bei 358px Containerbreite ohne Ueberlauf, mit Maus und Tastatur, bestanden. Permanente Interaktionsregression prueft den echten Dashboard-Klickpfad einschliesslich Quellblattwechsel. Patchversion fuer die rueckwaertskompatible Darstellungs-/Navigationskorrektur, Package/Lockfile und Versionsvertraege synchron. Bestehende Bundle-Groessenwarnung bleibt; kein Backend-Neustart und keine neue Abnahme realer Kundendaten. Phase 13E bleibt in Arbeit. 2026-10-02 - Version 2.12.0, umgesetzt und fokussiert verifiziert: Auf Nutzerauftrag ist die recherchierte Tabelle mit allen 22 bestehenden Context-Clustern als eigener versionierter Quellenkatalog `src/assessment-context/context-cluster-severity.ts` (1.0.0, Recherche-/Pruefdatum 2026-10-02) hinterlegt. Einstufung: vier Critical, 13 High, vier Medium, ein Undetermined. Jede fachlich eingestufte Kategorie besitzt Begruendung, Einschraenkung und lokal gespeicherte Quellenangaben; die Einstufung ist eine kuratierte ASSESSOR-Grundschwere und kein von den Quellen vergebener Cluster-Score. `Other Deviations` bleibt unbestimmt. Die bisherigen Security Domains und ihre Zuordnung bleiben unveraendert. Entscheidung und begrenzte Erweiterung des bisherigen Context-Darstellungsvertrags: Die neue Heatmap darf die bestaetigte statische Kategorie-Grundschwere mit den bestehenden Severity-Farbtokens darstellen, wenn das vorhandene Context-Ergebnis Belege enthaelt. Sie erzeugt keine Finding-Severity, kein CVSS, keine normalisierte Prioritaet, kein Pass/Fail und keine clientbezogene Aussage zur Ausnutzbarkeit. Ohne Belege sowie bei unbestimmter Grundschwere bleibt eine Zelle neutral; neutral bedeutet nicht sicher. Bedingungen, Clusterzustand und Zuordnungssicherheit bleiben getrennt. Die Bedingungen und Cluster-Schwellen werden unveraendert aus Context uebernommen. Scanner-Abweichungen, GPO-Baseline-Abweichungen, deklarierte Techniken sowie erkannte und geschaetzte Zuordnungen werden aus dem vorhandenen Ergebnis gelesen und pro Cluster nach Finding-Occurrence bzw. GPO-Identitaet/Scope dedupliziert; es gibt keine neuen Quellen, Neuinterpretation von Verdicts oder Requests pro Zelle. Reine GPO-Konfigurationsbelege bleiben als Bedingungen erkennbar und werden nicht als beobachtete Host-Findings ausgegeben. Cluster duerfen ueberlappen; ihre Zahlen werden nicht zu einer vermeintlich eindeutigen Gesamtsumme addiert. Client Info zeigt die Heatmap fuer den ausgewaehlten Timeslot ueber alle Quellen, ausdruecklich unabhaengig vom Source-Auswahlfeld. Sie nutzt denselben vorbereiteten Context-Abruf wie die bestehenden Leser. Ein Klick bzw. Enter/Leertaste markiert die Zelle gelb und oeffnet deren Grundschwere, Bedingungen, Zuordnungssicherheit, Begruendung und Quellen. Der Fokus wandert zu den Details und beim Schliessen zurueck zur Zelle. Bei Client-/Scope-/Revisionswechsel verfaellt die Auswahl. Context aus entfernt die Heatmap vollstaendig und erzeugt keine neuen Anfragen; spaete Antworten bleiben ausgeblendet. Ladefehler werden nicht als leere oder sichere Bereiche dargestellt. Der neue Core-Erweiterungspunkt in `DashboardPanel.tsx` ist nach aktueller `Core-Freigabe: Presentation, Core Tests, Platform` in der Architekturpruefung eingetragen; fachliche Core-Berechnungen bleiben frei von Context-Abhaengigkeiten. Abnahme: 116 fokussierte Context-, Architektur-, Client-Info-, Navigations- und UI/API-Versionsvertragstests bestanden; anschliessender Fokus-/Tastaturtest 4/4 nach letzter Scrollkorrektur bestanden. Der synthetische Test mit dem echten Dashboard vergleicht die vollstaendige Core-Darstellung und Dataset-Werte bei aus-/eingeschalteter Engine. Weitere Tests pruefen Vollstaendigkeit aller 22 Eintraege, fehlende native Scanner-Severity, deduplizierte Scanner-/GPO-Zahlen, Passed-Ausschluss, unbekannte Bereiche, unveraenderte Context-Ergebnisse und spaete Antworten. Synthetische Browser-Sichtpruefung in Hell/Dunkel und bei 358px Containerbreite ohne horizontalen Ueberlauf, einschliesslich Maus, Enter, Leertaste und Fokusrueckkehr, bestanden. Beide Produktionsbuilds, Design- und Local-only-Pruefung bestanden; bestehende Bundle-Groessenwarnung bleibt. Minor-Version 2.12.0 fuer die neue rueckwaertskompatible Faehigkeit; Package, Lockfile und Versionsvertraege synchron. Kein Datenbankeingriff, keine Migration, kein Backend-Neustart und keine Phasenabschlussbehauptung. Abnahmegrenze: synthetische UI-/Datenpruefung, keine neue Pruefung eines realen Kundenbestands. Neue dargestellte Beziehung: Context Engine -> Client-Info-Heatmap; Engine-Diagramm-Aktualisierung bleibt ein gesonderter Nutzerauftrag gemaess Erinnerung unten. ## Verbindlicher Diagramm-Pfeilstandard 2026-10-02 - Phase 7 / Ready indicator and explicit minimization (2.12.1 patch, implemented and verified): current Presentation/Core Tests/Platform release adds the requested green system-status dot beside Ready in both expanded Activity and the single compact button. Ready text remains accessible; the decorative dot uses the existing theme-aware state-online token. A native minimize button with an × sits immediately right of History when Ready; clicking or pressing Enter collapses the panel and its disclosure without removing history or changing readiness. The existing five-second automatic minimization and new-work restoration remain unchanged. Permanent both-theme Activity interaction acceptance verifies the actual minimize/reopen path, retained failed history, dot presence only while Ready, action placement and absence while waiting/not ready. Verified: 22 Activity and UI/API version tests passed, security/design checks and both production builds passed. Synthetic production-component browser verification confirms both theme colors, automatic compact state, mouse/Enter minimization and history reopening; screenshot retained. Version decision: backward-compatible presentation refinement, patch from the concurrently established 2.12.0 to 2.12.1, package/lock and both version contracts synchronized. No full-suite rerun for this focused correction; existing client bundle warning remains. Concurrent changes preserved, no phase completion or engine/data-flow change. 2026-10-02 - Phase 7 / confirmed client identity edits (2.11.10 patch, implemented and verified): explicit user decision requires a mandatory warning before saving changes to the existing Client Information Name or Consultant. Current Presentation/Core Tests/Platform release implements that guard in the shared native form-submit path, including implicit Enter submission. The dialog lists only changed fields with previous and proposed persisted values. Cancel, Escape, close and backdrop dismissal write nothing and retain the draft for review; Confirm changes saves the reviewed form snapshot through the existing API and read-back verification. Re-submitting after cancellation requires confirmation again. Unchanged identity fields, Remarks-only edits and new-client creation retain their existing flow. Initial focus is Cancel, keyboard focus cycles inside the dialog and closure restores the prior focus; Enter on Cancel never confirms. A synchronous save guard prevents duplicate API writes. Existing project ID, creation time and unrelated attributes are retained; no repository/schema/API persistence contract change. Shared dialog, theme surfaces, control geometry and 14px labels/16px values are used; no new palette. Permanent actual DataHub interaction acceptance covers Name, Consultant and both changes, old/new values, no writes before confirmation, Escape/Cancel, native form resubmission, one confirmed save, read-back and preservation of unrelated data; Remarks-only edits remain direct. Verified: 19 Client Info/reference interaction/layout tests plus 15 version/API/Core-boundary tests passed; local-only security/design checks and both final production builds passed. Synthetic shared-dialog browser verification covers dark/light, Cancel and explicit confirmation by Enter, focus wrapping and readable old/new values. Version decision: backward-compatible presentation safety correction, patch 2.11.10. No full-suite rerun for this focused change, no phase completion claimed; existing bundle warning and concurrent changes preserved. No engine/data-flow relationship change or diagram update required. 2026-10-02 - Phase 7 / minimal Ready button (2.11.9 patch, implemented and verified): current Presentation/Core Tests/Platform consent implements the user's correction that the minimized Activity panel still obstructed work. Collapsed Activity now renders one neutral shared-geometry Ready button, with no panel surface, border, padding or second History control. Its transparent positioning wrapper fits the button instead of reserving the 560px panel width. Clicking or pressing Enter opens the existing panel with History already expanded. New work still opens the full current status and the existing five-second Ready timer is unchanged. Manual collapse of a non-ready state retains its actual status text rather than asserting Ready. Readiness, request identity, historical outcomes and data quality contracts remain unchanged. Permanent both-theme interaction acceptance now verifies a single Ready button, absence of the panel, direct history opening and automatic panel restoration from the tiny state when new work starts. Updated earlier interaction tests select the newly mounted compact control after collapse instead of clicking a detached panel button. Verified: 22 activity/UI/API version tests passed; local-only security and design checks and both production builds passed. Synthetic current-component browser checks confirm dark/light, mouse/Enter history opening and an approximately 66x28px compact control with a transparent, unpadded, borderless wrapper. Version decision: backward-compatible presentation refinement, patch 2.11.9. No full-suite rerun for this focused correction, no phase completion claimed; existing bundle warning and concurrent changes preserved. No engine/data-flow change or diagram update required. 2026-10-02 - Phase 7 / final Ready and timed minimization (2.11.8 patch, implemented and verified): current Presentation/Core Tests/Platform release implements the user's final-state correction. Activity shows Ready only when no operation is active/queued and the latest attempt for every tracked operation has completed. A successful retry replaces that operation's earlier failure for readiness while keeping the failed invocation in History. API operation identity includes backend, method and exact request path/scope; a success for a different client cannot resolve another client's request failure. Display labels can change without changing operation identity; identifiers/URLs remain internal and are never rendered. Latest operation outcomes are retained separately from pruned/cleared history, so clearing or dismissing rows cannot manufacture readiness. This is conservative: an outstanding unsuccessful operation still prevents Ready until the corresponding operation succeeds. Earlier failures/cancellations now appear only inside the optional History, without a Needs attention decision queue. This explicitly supersedes the 2.11.6 failure-first presentation and immediate all-success collapse. Ready stays expanded for five seconds, then automatically minimizes to the compact Activity/History bar. New work opens the panel, cancels an earlier timer and starts a fresh five-second interval after successful completion; manually reopening History after minimization stays open until another load cycle. No request is retried or changed by this UI. Native buttons, existing neutral styles and readable Ready content retained. Verified: twelve activity acceptance tests include both themes, recovered failures, exact 4,999/5,000ms boundary, queued/new work at an old deadline, reopening History, exact request-scope matching, clearing/dismissing/pruning invariance and concurrent API behavior. Full suite 1,807 passed, 15 skipped; local-only security/design checks and shared UI/API version contracts passed; both production builds passed. Synthetic production-component browser checks confirm Ready, automatic minimization and History reopening in dark/light. Version decision: backward-compatible status correction, patch 2.11.8. No source, assessment, engine execution, persistence or Data Flow relationship change; no diagram update required. Existing bundle warning remains, no phase completion claimed, concurrent work preserved. 2026-10-02 - Phase 7 / reachable Context Cluster options (2.11.7 patch, implemented and verified): current Presentation/Core Tests/Platform release applies the user's request to the shared Work filter projection. Context Cluster options with zero hits under the existing self-excluding facet counts are no longer offered. Search, status and other active restrictions still determine those counts; selecting a cluster does not hide reachable alternatives from that same facet. All remains available, including an empty scope. A currently selected cluster that becomes empty remains visible as a disabled current option so the UI does not silently drop a restriction; All explicitly clears it. This supersedes the earlier Work-control behavior of offering every catalog cluster at zero hits. The complete engine vocabulary and results, all other declared facets, filter counts and engine activation remain unchanged. Permanent actual SearchFilterBar acceptance covers selecting a cluster, narrowing search to another cluster, disabled zero-hit selection retention, choosing All and a completely empty result scope. Existing badge selection and both-theme checks remain. Verified: 49 filter/Context/GPO tests plus 20 UI/API version and architecture/invariance tests passed; local-only security and design checks and both production builds passed. Version decision: backward-compatible presentation correction, patch 2.11.7. No full-suite rerun for this small focused correction, no phase completion claimed; existing bundle warning and concurrent changes preserved. No data-flow or engine relationship change; no diagram update required. 2026-10-02 - Phase 7 / activity overview (2.11.6 patch, implemented and verified): current Presentation/Core Tests/Platform consent implements the approved compact activity design. Needs attention appears before running/waiting work, cancellations stay distinct, and the summary includes failures even while other operations run. The operation label is primary and the engine secondary. Successful history starts collapsed; an explicitly opened panel/history stays open through updates. Exact engine/label repeats form expandable groups retaining every recorded invocation. The fixed panel header sits above a scrolling body using the shared 20px inset, 14px informational text and existing controls/theme tokens. All-success state defaults to a compact header with History count. Durations below one second show <1s; active durations update from real timestamps, with no inferred percentage or ETA. Clear completed removes only successes. Failures and cancellations survive success-history pruning and can be acknowledged individually with Dismiss, which never removes active tasks. The existing 40-success history bound remains; acknowledged task records are UI telemetry, not assessment data. Legacy clearFinishedActivities remains for existing non-UI cleanup callers. No invented error detail or retry action: current telemetry contains a state, engine, operation label and timestamps only. No source, result, engine execution, database or Data Flow relationship changes; no diagram update required. Verification: eight activity acceptance tests include real concurrent API operations, exact grouping, opened-history invariance, failure/cancellation retention through pruning and success clearing, individual dismissal and active-task protection. Full suite 1,802 passed, 15 skipped; local-only security and design checks passed; shared UI/API version contracts and both production builds passed. Synthetic current-component browser checks cover light/dark, compact all-success state, keyboard history opening, group expansion and failure/active preservation after Clear completed. Version decision: backward-compatible UI/status refinement, patch 2.11.6. Existing client bundle-size warning remains; no phase completion claimed and concurrent work preserved. 2026-10-02 - Phase 7 / separate no-hit recovery actions (2.11.5 patch, implemented and verified): current Presentation/Core Tests/Platform release implements the user's correction in Work, Result DB and Pathfinder. The shared companion now has exactly two actions. Reset filters delegates to each view's existing normal reset, including Work/Pathfinder's existing My Workspace behavior and Result DB's default Deviation filter. Search all Findings clears result restrictions and selects All Findings within the current client, timeslot and active sheet; Result DB clears filter values while retaining the exact project/assessment/scan scope. The user's two-action correction explicitly supersedes the earlier separate source-preserving no-hit recovery button: Search all Findings also clears the source facet. Pathfinder retains its binding deviation-only graph scope; its Search all Findings action opens Work with the All filter through the existing navigation callback. No source, verdict, disclosure, persistence or engine behavior changes; no Data Flow diagram update required. Permanent synthetic interaction acceptance compares the no-hit Reset action directly with normal reset and verifies both actions in all three real views, Pathfinder-to-Work navigation, unchanged client/timeslot/sheet, unchanged source data and scoped Result DB queries. Verification: full suite 1,799 passed, 15 skipped; local-only security and design checks passed; UI/API product-version contracts and both production builds passed. The earlier import timeout did not recur in this run. Version decision: backward-compatible correction, patch 2.11.5 shared by UI and API. Existing client bundle-size warning remains; phase status unchanged and concurrent work preserved. Visual verification for the 2.11.5 no-hit action correction: the shared production component's explicitly synthetic preview was inspected in light and dark; both native buttons remain readable and use the existing control styles. The preview supplies no customer data and does not replace the actual-view interaction acceptance above. 2026-10-02 - Phase 7 / process-arrow clearance correction: current Presentation/Core Tests/Platform release covers this local presentation fix. Fresh desktop geometry already cleared the earlier screenshot's intersections, but browser testing exposed direct upload and source-result paths crossing intervening tiles in the responsive one-column layout. Each proposed orthogonal path now checks every measured tile rectangle with stroke clearance; intersecting paths select a clear measured side rail. Source and destination ports stay 4px outside tile boundaries so triangular tips also clear the tiles. The existing engine arrow style, 17 declared deliveries, yellow connected-edge selection and table popup behavior are retained. Permanent synthetic acceptance selects a finding tile, resizes from unequal desktop lanes to stacked tiles, checks every segment against every tile, checks destination clearance and verifies retained selection. Verified: 17 focused diagram/UI/API version tests passed, security/design checks passed, both production builds passed. Live checks in light and dark at desktop width and in the stacked layout found zero arrow or label intersections. Existing bundle-size warning remains. Version decision: included in the related current 2.11.4 refinement batch already present in the shared workspace; no separate version edit. No API, persistence, engine behavior or phase-status change; concurrent work preserved. 2026-10-02 - Phase 7 / process tile selection and arrow spacing: current Presentation/Core Tests/Platform consent increases processing gaps from 64px to 96px and the shared maximum content width to 1266px, preserving 358px tiles. Clicking a tile surface or its native title button selects/deselects it independently of table detail selection. Selected tiles have the same yellow outline and side marker as engine modules. Every directly connected arrow is highlighted along its complete route, including labels and triangular arrowheads; unrelated arrows remain neutral, matching the engine diagram's connected-edge selection semantics. Consumer routes have more separated label levels. Table chips still open the existing popup and closing it preserves an independently selected tile. Permanent synthetic acceptance covers surface selection, exact connected paths, yellow-marker references, chip navigation, popup closing and deselection. Verified: 10 focused tests, security/design checks and production builds passed; live mouse and Enter-key selection/deselection plus light/dark styling verified. Version decision: same related unreleased 2.11.3 refinement batch, no separate version edit. No data-flow semantics, API, persistence or engine behavior change. Phase status unchanged; existing bundle warning remains. Explizite Nutzerentscheidung 2026-10-02: Die bestehende Pfeildarstellung in `Engines & relationships` (`src/features/db-structure/EngineDataFlow.tsx`, `.db-engine-flow__edges` und `.db-engine-flow__edge-label` in `src/styles/datahub.css`) ist die verbindliche visuelle Referenz fuer Beziehungspfeile in Diagrammen. Auch der darunterliegende Data Flow uebernimmt diese Darstellung. Beziehungen werden als durchgehende, gerichtete Linien mit klarer dreieckiger Pfeilspitze und lesbarer Beziehungsbeschriftung dargestellt; rechtwinklige Verzweigungen verwenden denselben Stil. Implementierte Beziehungen sind durchgezogen, geplante Beziehungen gestrichelt und ausdruecklich als geplant beschriftet. Tatsaechlich bidirektionale Beziehungen tragen Pfeilspitzen an beiden Enden. Neutrale Linien verwenden `--line-strong`, ausgewaehlte Beziehungen `--marking-color`; Linienstaerke, Marker-Geometrie und Beschriftungsrollen folgen der genannten Referenz. Keine dekorativen Effekte oder neue Palette. Dieser Standard ersetzt ausschliesslich die Pfeildarstellung, nicht die bestehenden Interaktionen oder fachlichen Beziehungstypen anderer Diagramme. Phase-7-Auftrag, zunaechst als Dokumentationsentscheidung gespeichert und am 2026-10-02 nach erneuter Freigabe umgesetzt: Fehlende sichtbare Beziehungen im unteren Data Flow ergaenzen und bestehende Verbinder an diesen Standard angleichen. Vor der Darstellung jede Verbindung gegen den implementierten Datenfluss pruefen; keine Beziehung allein aus der Kachelposition ableiten. Funktionen bleiben unveraendert. Keine Produktversionsaenderung fuer die urspruengliche Dokumentationsentscheidung. 2026-10-02 - Phase 7 / process relationship arrows: on current Presentation/Core Tests/Platform release, replaced disconnected CSS connector fragments with 17 labelled, directed SVG relationships using the existing engine diagram's 2px lines, 7px triangular markers and 14px labels. Added upload branches, processing chains, baseline input, source-result merge, disclosed-storage-to-Result-DB delivery, direct scanner/policy findings to Work and scanner history to comparison. Other tables remain unconnected because their processing assignment is unknown. Source checks: repository rebuildResultDb source readers, policy/scanner Work projections and compareProjectTimeslotEvidence. No Policy-history arrow: the implemented timeslot comparison consumes scanner runs. DOM geometry and ResizeObserver adapt routes to current tile sizes; merge paths clear taller GPO tiles, side routes bypass consumers, selected table endpoints highlight connected paths. Existing engine overview semantics, popup/table navigation, schema refresh and dictionary retained. Permanent synthetic interaction acceptance now verifies the previously missing relationships, arrow markers, selection/closing invariance and a resize with unequal lane heights. Verified: 10 focused tests passed; security/design checks and both final production builds passed; current-code light/dark browser inspection passed. Existing bundle-size warning remains. Version decision: same related unreleased 2.11.3 refinement batch; no separate version edit. Concurrent backend work untouched, no API/schema/engine behavior change, no phase completion claimed. 2026-10-02 - Phase 7 / shared filter-empty companion and direct reset (2.11.4 patch, implemented and verified): user chose Work, Result DB and Pathfinder, then renewed Presentation/Core Tests/Platform consent. Added an original local SVG companion with a magnifying glass and gentle searching motion to the completed no-hit states. It uses existing neutral theme roles, shared typography/control geometry and an 88px size token; reduced-motion preferences disable animation. It is decorative and hidden from assistive technology; the visible no-hit heading stays authoritative. Shared native Reset filters buttons support mouse and keyboard. Work and Pathfinder clear search, facets, status restrictions, My Workspace-only and path restrictions while preserving the client, timeslot and active sheet. Work retains its distinct Show all results for this source action, including the documented source-preserving behavior. Result DB uses its existing reset contract (Deviation enabled, remaining filters cleared) and preserves its exact project/assessment/scan scope. Pathfinder's empty overlay permits button clicks without intercepting the graph elsewhere. No engine, importer, evaluation, source, storage or disclosure changes; no Data Flow diagram update required. Verification: 15 focused tests passed across new actual Work/Pathfinder/Result DB no-hit/reset interactions, GPO visibility and source recovery, graph text behavior and Result DB scope. Tests prove results return, all intended restrictions clear, source values stay unchanged and client/timeslot/sheet remain selected. Existing GPO source-action acceptance now identifies that action by its text instead of assuming the first button. Final three interaction tests passed again after a test-only optional-query typing correction. UI/API version contracts passed. Full suite: 1,794 passed, 15 skipped, one known default 5-second node-import-engine timeout; separate default reruns also timed out. Diagnostic rerun with a CLI-only 15-second timeout passed all five tests, with the affected format test taking 4,034ms; permanent acceptance deadlines remain unchanged and the default full suite is not claimed green. Security/design checks and both final production builds passed; existing client bundle-size warning remains. Dummy-client live Work inspection passed in light/dark; Pathfinder reset via Enter restored graph nodes. Shared component screenshots saved as filter-empty-light.png and filter-empty-dark.png. Result DB click verified with synthetic API data and the real component; live Result DB inspection was interrupted by the development backend rebuild/page reload, so no completed live Result DB reset claim. During the earlier live client opening, the separate Context request returned HTTP 500 after about five seconds; Core results opened through existing error handling. That runtime Context failure is an unresolved separate observation, not fixed or certified by this UI batch. App/backend health reports 2.11.4 with PostgreSQL revision 535 unchanged. Version decision: backward-compatible UI refinement, patch 2.11.3 -> 2.11.4; package/lock and UI/API version contracts synchronized. Phase status unchanged; no milestone completion claimed. Concurrent Data Flow/backend changes retained. Additional visual acceptance fixture for the 2.11.4 empty-state batch: `tests/filter-empty-state-preview.html` renders the shared production component with explicitly synthetic text and no backend reads. Its complete captioned screenshot is `filter-empty-preview.png`; this is a component preview, not a substitute for the real reset-interaction tests described above. ## Verbindliche Erinnerung: Engine-Diagramm bei Data-Flow-Aenderungen 2026-10-02 - Phase 7 / Data Flow layout alignment: current Presentation/Core Tests/Platform consent covers a CSS-only follow-up. Summary, schema actions, engine diagram, inspector, process flow and dictionary now share the diagram's 1130px maximum content width and centered alignment. Reference data starts level with the processing lanes; lane tiles remain centered on their connector spines. Result DB and Work form a compact centered pair. All content, relationships, selections and detail-window behavior retained. Verified: 10 focused layout/flow/interaction tests passed after retaining the existing segment-inset contract; security/design checks, client and server production builds passed, with the client rebuilt after final CSS corrections. Live light/dark inspection confirms identical section width and alignment. Existing bundle-size warning remains. Version decision: included in the current unreleased 2.11.3 refinement batch already present in the shared workspace; no separate version edit. Concurrent backend/performance work was left untouched. Phase status unchanged; no architecture or data-flow semantics changed. Explizite Nutzerentscheidung 2026-10-02: Bei jeder Umsetzung, die den dargestellten Data Flow betrifft, erinnert der bearbeitende Agent den Nutzer im Abschlussbericht daran, den Auftrag zur Aktualisierung des Engine-Diagramms zu geben. Ausloeser sind neue, entfernte oder geaenderte Engines, Datenquellen, Verarbeitungsschritte, Lese-/Schreibports, Speicherorte, UI-/Exportverbraucher und Beziehungen sowie der Wechsel einer dargestellten Beziehung zwischen geplant und implementiert. Die Erinnerung nennt konkret, welcher Teil der Darstellung betroffen ist. Die Erinnerung lautet: "Diese Aenderung betrifft den Data Flow (). Bitte gib mir den Auftrag: Aktualisiere das Engine-Diagramm." Wenn die aktuelle Nachricht die Diagrammaktualisierung nicht bereits ausdruecklich beauftragt und die betroffenen Core-Bereiche freigibt, fuegt der Agent die erforderliche Freigabephrase hinzu: "Core-Freigabe: Presentation, Core Tests, Platform". Bestehende ausdrueckliche Auftraege werden innerhalb ihrer aktuellen Freigabe ausgefuehrt; keine doppelte Erinnerung fuer eine bereits erledigte Aktualisierung. Keine automatische Aktualisierung und keine Behauptung, das statische Engine-Diagramm erkenne Architekturveraenderungen selbst. Die bestehende nachrichtenbezogene Core-Freigaberegel bleibt unveraendert. Dokumentationsentscheidung: dauerhaft im Implementierungsplan gespeichert; keine Code-, Governance-Datei- oder Produktversionsaenderung. Phasenstatus unveraendert. 2026-10-02 - Phase 7/13E / quality-preserving client read optimization (2.11.3 patch, implemented and verified): explicit Store/Platform/Presentation/Core Tests release; data quality takes precedence over speed. PostgreSQL internal-analysis pagination reuses complete source projections within the exact query scope (all arguments except offset/limit). Every call checks the live database revision before and after reading, including cache hits and commits from other backend/worker instances. A revision change discards the read and retries up to three times; repeated changes or an unverifiable revision fail explicitly. Concurrent identical reads share their source load; failed loads are evicted. Retention is process-local, bounded to eight entries and 32 MiB per repository; oversized results remain complete but are not retained. Returned pages and categories are independent copies. Result DB disclosure continues through its existing materialized, disclosure-checked path and never consumes the internal cache. Context additionally reuses full policy evaluations, baseline analyses, assessment lists and models only inside a single revision-checked attempt; retries and new Context runs have fresh read ownership. No schema, migration, persisted source, verdict, score, reference catalogue or engine activation change. Client opening still waits for enabled Context before publishing its workspace; original Raw Data and historical-score loading remain intact. Verification and limits: the permanent synthetic PostgreSQL paging test compares every field, ordering and count for all 2,501 results across three pages against uncached derivation, with one instead of three full source loads. It covers caller mutation, same-count content changes through a live revision, scope separation and the separate disclosure path. Cache and Context tests cover concurrent reads, bounded retention without truncation, failure/retry and revision-change retry with complete Context equality. Full suite: 1,792 passed, 15 skipped; security and design checks passed. Final focused checks after query-snapshot/read-port tightening: 32 passed, including actual client opening/Context waiting and UI/API version contracts. Both final production builds passed; existing client bundle-size warning remains. App HTTP 200 and backend PostgreSQL health at 2.11.3, repository revision 535. Actual cold-client latency against the reported 80 seconds has not been measured under a controlled identical-client workload; no percentage or time reduction is claimed. Large initial reads and Context computation still run in full, and any repository commit invalidates reuse, including unrelated scopes. Version decision: backward-compatible performance refinement, patch 2.11.2 -> 2.11.3 with package/lock and both version contracts synchronized. Phase status unchanged; no milestone completion claimed. Data Flow follow-up: remind the user to request an Engine diagram update for the revision-checked Core read reuse and request-local Context read step; no automatic diagram edit. 2026-10-02 - Phase 7 / Data Flow process-tile refinement: with current Presentation/Core Tests/Platform consent, adapted the existing processing tiles to the engine tiles' flat neutral surfaces, square geometry and shared side marker. Limited tiles to the existing 358px content width and centered the three processing lanes within that width; retained typography, all source labels, table counts, connectors, table selection, relationship highlights and floating detail windows. Long table names wrap without truncation. CSS only; no data flow, API, engine or persistence changes. Verified: 20 focused flow/layout/interaction and UI/API version tests passed; final security/design checks and both production builds passed. Live inspection passed in light and dark, all 17 tiles had no horizontal content overflow, and the scan_runs detail window opened and closed normally. Existing bundle-size warning remains. Version decision: part of the same related unreleased 2.11.2 presentation refinement batch; no additional increment. Phase status unchanged. 2026-10-02 - Phase 7 / interactive Data Flow diagram (follow-up to the preceding overview): on renewed Presentation/Core Tests/Platform release, replaced the always-open engine table with an interactive architecture diagram. Nine selectable modules include all three engines, source inputs, canonical PostgreSQL, read-only port, UI consumers and report outputs. Nine labelled relationships show directional delivery, bidirectional Core database read/write and the dashed, explicitly Planned Context-to-Report target. Selection highlights connected edges and opens an inspector; native buttons support keyboard activation and deselection. The complete relationship table remains in a closed disclosure. Narrow views scroll the diagram without shrinking 14px information text; inspector stacks. Coordinates live in CSS classes, using current tokens and flat tiles, with no engine imports, requests or data writes. Existing schema flow, table popups and dictionary retained. Version decision: same unreleased, related 2.11.2 refinement batch; no additional version increment. Permanent synthetic tests cover module selection, deselection, directed/bidirectional markers, planned output and disclosure; 20 focused tests passed before the final CSS correction, and 14 final diagram/layout/import tests passed afterward. Full suite: 1783 passed, 15 skipped, one unrelated 5-second timeout in node-import-engine; all five tests in that unchanged suite passed in the separate rerun (format test 3504ms). Security/design checks passed. Both production builds passed; final client rebuild after the CSS-class and read/write-marker corrections also passed. Existing bundle-size warning remains. Live mouse/keyboard selection, both themes and horizontal overflow checked. Phase status unchanged; planned report Context integration remains outside this UI change. 2026-10-02 - Phase 7 / Data Flow engine overview (2.11.2 patch): renamed DB Structure to Data Flow in navigation and header. Added Core, Context and Report with nine directed data-delivery relationships, canonical PostgreSQL, read-only Core port, UI consumers and separate report archive. Context-to-Report is explicitly Planned: current report generation does not consume published Context results. Architecture includes disabled engines. Corrected obsolete Result DB wording and assigned result_db_rows/result_db_state to Core-owned disclosure materialization before its consumer. Existing table details preserved. No API, persistence or engine behavior changes. Verified: 1783 tests passed, 15 skipped; UI/API version contracts, architecture and engine invariance passed; security/design checks and both production builds passed, client build repeated after final order correction. Live inspection in both themes; backend healthy at 2.11.2 with PostgreSQL. Existing bundle warning remains. Version decision: backward-compatible refinement, patch 2.11.1 -> 2.11.2, package/lock synchronized. Phase status unchanged. Follow-up request for a more futuristic diagram awaits renewed Core consent under the per-message rule. 2026-10-01 - Phase 7/13 / Maester description table rendering: shared Markdown presentation recovers flattened pipe tables with retained line breaks inside prose cells, without crossing blank lines, headings, code fences, lists or another delimiter. The reader also handles tables mixed with supported inert inline HTML (links, emphasis and br); original retained fields are untouched. Shared rich-text tables use the agreed 14px data typography. Permanent synthetic reader regressions cover both cell-break representations, full cell text, headers, links and unchanged originals; the shared parser regression preserves a following list. Synthetic browser checks and visual inspection passed in dark and light. Verification: 1782 tests passed, 15 skipped; security/design checks passed; client and server production builds passed, including a refreshed client build after the typography correction. Version decision: bundled into the concurrently established 2.11.1 patch batch; package/lock and UI/API version checks already agree and were not overwritten by this change. No importer, persistence, verdict or score change; no reimport required. Ambiguous table structures remain source text. No phase completion claimed. 2026-10-01 - Phase 13E / client Context loading and All count (2.11.1): Client opening now prepares the enabled Context Engine after the canonical workspace is ready and before publishing the loaded client. A Core API request cache, weakly owned by the dataset and keyed by the exact scope, shares that attempt with every reader; no engine implementation is imported into Core. The Context hook makes no request for an empty dataset and never returns a previous scope's result while a new scope loads. Failed attempts remain visible instead of silently restarting on reader mount; Core results remain accessible, with an English notice to reopen the client to retry. Disabled Context makes no request. Work and Pathfinder's shared Context Cluster selector shows All (N), counting each matching record once, including records without cluster membership, while respecting other filters and excluding its own selection. Overlapping clusters do not inflate the total. Patch version 2.11.1 records this backward-compatible correction; package/lock and UI/API contracts agree. Verified: 37 focused tests passed, including the actual Open/client-switch interactions, deferred Context response, failure/reopen, disabled engine, scope changes, filtered and zero-hit All counts, and version contracts. Synthetic browser checks and visual inspection passed in dark and light. Both production builds passed; the final client build also includes the synchronous stale-scope guard. Local-only and design checks passed. Full suite: 1781 passed, 15 skipped, one unrelated failure in tests/shared/markdown.test.ts:40 (wrapped flattened table followed by a list); the Markdown source and test were not changed by this task. Running backend reports 2.11.1 and unchanged repository revision 535; frontend HTTP 200. Limits: the screenshot did not expose the original failed HTTP response, so its specific backend error was not independently reproduced. This change removes the verified premature/duplicate request path; it does not speed up Context computation itself. No persistence changes, no phase completion claimed. 2026-10-01 - Phase 7/13 / shared operation transparency (2.11.0 capability release): adds the English Activity panel across all views. A Core-owned, in-memory platform registry tracks parallel operations with area/engine, specific activity, elapsed time and Waiting/Running/Completed/Failed/Cancelled state. Active tasks survive clearing; completed history is bounded to 40 entries. Core never imports engine implementations. The shared API client names every request (except routine health polling), including Client/assessment/scan/model loading, Context calculation, Report generation, MITRE catalog refresh/download, baseline and evaluation catalogs, import preview/completion, GPO/policy work, Result DB/filter/schema refresh and persistence requests. Unknown future API operations get a generic public label; future engines can provide describeActivity or use beginActivity/trackActivity without a Core dependency on that engine. Local work is explicitly covered for client model conversion and review hydration, source-file preparation, GPO folder preparation, MITRE file validation, Result DB and Work exports, workspace snapshots, current-sheet export and clipboard preparation. Existing GPO status polling updates a queued/running activity; leaving that import control records stopped monitoring, not cancellation of the server job. Existing local progress dialogs remain in place. No invented percentages or simulated engine startup: cached/disabled/unused engines do not create fictitious work. Server calls show the known operation, not unsupported internal download/parse percentages. The browser is yielded before expensive local work while an activity view is subscribed. Failed activities retain their state even when a finally block runs. Labels contain no request URLs, query values, client IDs or response payloads. No schema, migration or durable activity history. Version increases from 2.10.0 to 2.11.0 because this is a new backward-compatible application-wide capability, with package/lock and UI/API contracts synchronized. Synthetic browser checks cover concurrent Core, Context, Report, catalog and future-engine tasks, waiting, failure, collapse and clear in both themes. Verification: full suite 1770 passed, 15 skipped; local-only and design checks passed. Additional final App/header/GPO and activity tests 13/13 passed. Product-version UI/API checks passed. Both production builds passed for 2.11.0; no phase completion claimed. 2026-10-01 - Phase 7/13 reader refinement / Maester: native TestScript now appears as a closed Test details disclosure, preserving the complete original code and whitespace. The section uses the retained Maester Title instead of the generic Finding label. If no displayable native result statement exists in the loaded record, a neutral missing-evidence notice appears; no problem statement, remediation or verdict is invented. Existing result-lead and remediation extraction remain unchanged. The source extractor already retains native ResultDetail.TestResult and non-object ResultDetail; the screenshot alone cannot establish whether the original MT.1024 report lacked that text. No extraction change or reimport is required for this presentation fix. Verified: 49 reader tests, including opening/closing full code and retaining a supplied native statement; synthetic browser interaction and visual checks in both themes; client/server builds, local-only security and design checks passed. Version remains 2.10.0 as part of the current unreleased refinement batch; no phase completion claimed. 2026-10-01 - Phase 13 / Result DB CSV export: adds Export CSV beside JSONL and Excel, using the complete filtered scope and the exact disclosed JSONL result projection. CSV uses UTF-8 BOM and semicolons, one row per result, complete nested values as JSON text, plus export date, disclosure policy and handling notice columns. Long values are not truncated. Spreadsheet formula neutralization also covers leading line breaks/control whitespace. Verified: all 33 export/disclosure tests passed, including 1001 filtered results through the CSV button and round-trip checks for quoting, Unicode, line breaks and long values. Browser CSV and Excel downloads and visual review passed in both themes; local-only and design checks passed. No schema or dependency change. This extends the same unreleased 2.10.0 export capability batch, so the product version remains 2.10.0; no phase completion claimed. CSV itself retains long values, but spreadsheet applications may impose their own import limits; XLSX explicitly splits oversized cells. Client and server production builds passed. 2026-10-01 - Phase 13 / Result DB Excel export (bundled into the existing unreleased 2.10.0 capability batch): Result DB offers Export Excel beside Export JSONL. It queries the complete filtered assessment scope through the existing pagination contract and converts the exact disclosed JSONL projection into XLSX; there is no second privacy policy or raw-data path. Results has one row per result, filterable columns and literal cells (no imported formulas); Export info retains the disclosure version and handling notice. Nested values remain JSON text; values above Excel's cell limit are preserved in ordered Long text parts, with explicit references in Results. Excel's worksheet limit produces an actionable error instead of a partial export. The existing xlsx dependency is loaded only when exporting. No schema, backend, dependency or product-version change; 2.10.0 remains the combined release, no phase completion claimed. Verification: 14 focused JSONL/Excel disclosure tests, including a 1001-result UI export across pages, exclusion of a passed result under the active deviation filter, long text reconstruction and literal formula-like text. Synthetic browser download and visual review passed in dark and light. Final verification: full suite 1753 passed, 15 skipped; local-only security and design checks passed; client and server production builds passed. 2026-10-01 - Phase 7/13E UI refinement (bundled into 2.10.0): shared Engines control added to Client Info and Pathfinder. Pathfinder filters now use Work's horizontal controls in the header; Details move to the left, explicitly superseding the earlier right-panel decision. Header grows when filters wrap; narrow graph actions wrap and the left inspector stays in place. No persistence/schema change. Verified: full suite 1738 passed, 15 skipped, security/design checks and both production builds passed; subsequent targeted navigation and graph interaction tests 6/6 passed. Synthetic browser acceptance covers both themes, filter wrapping, left-side Details, node selection and the locked Core Engine checkbox. New navigation acceptance retains optional-engine choices across Work, Client Info and Pathfinder. Version remains 2.10.0 as one related release batch; no phase completion claimed. Real customer data was not used for visual checks. 2026-09-30 - Phase 13E / UI-Stufe Pathfinder (in 2.10.0 gebuendelt, umgesetzt, per Test verifiziert; Sichtpruefung beider Themes steht aus): Bei eingeschaltetem Layer wird jeder Kontext-Cluster mit Befunden im Graphen ein eigener Knoten vom Typ `Context` im Beziehungsring. Jeder Befund, der Belege fuer den Cluster liefert, ist gestrichelt mit ihm verbunden. Cluster ohne Befunde im aktuellen Graphen erzeugen keinen verwaisten Knoten. Ein Klick auf den Cluster-Knoten setzt dieselbe Work-Facette `Context Cluster` wie der Filter; das Graph-Filter-Bridge ordnet einen Cluster-Knoten nie einer gleichnamigen anderen Facette zu. Die Details stehen ausschliesslich im rechten Panel: Zustand, Bedingungen (erfuellt von gesamt, erforderlich, unbekannt), Bedeutung und der Hinweis, dass es sich um eine abgeleitete zweite Lesart handelt. Befund-Details nennen zusaetzlich ihre Cluster. Die bestehenden Pathfinder-Regeln bleiben unveraendert: Text-Schalter, keine Karten im Graphen, Extract Path, Mark all und Reset view. Die Gestaltung nutzt die vorhandene Beziehungsfarbe `--graph-relation` mit groesserem Knotenradius und gestrichelten Kanten; es gibt keine neue Farbe und keine Statusfarbe. Ist der Layer aus, ist der Graph identisch mit dem Graphen ohne Kontext (Test). Tests: Graphaufbau mit und ohne Kontext, Filter-Bridge, Pathfinder-Interaktion mit echtem Engine-Lauf auf synthetischem Befund (Layer an und aus). Volle Suite: 1712 bestanden, 6 bekannte vorbestehende Fehler; beide Builds und die Local-only-Pruefung sind gruen. 2026-09-30 - Phase 13E / Katalog 1.8.0: GPO-Abweichungen im Kontext, Policy-Analyzer-Suchschluessel ausgeblendet (in 2.10.0 gebuendelt, umgesetzt und verifiziert): Nutzerentscheidung "Ja, so umsetzen" nach der Feststellung, dass nur 3 von 25 abweichenden GPO-Einstellungen im Dummy einen Cluster hatten. Engine 1.8.0 liest das autoritative, zusammengefasste Baseline-Urteil aus `policy-evaluation` (Abweichung erfuellt die Bedingung, Passed widerlegt sie) und leitet nichts neu her. Den technischen Zielpfad liefert fuer schluesselbasierte Identitaeten wie SrpV2 die neue Lesemethode `listPolicyEvaluations` im Nur-Lese-Port. Katalog 1.8.0 enthaelt 15 Bedingungen und 42 Urteilsregeln: privilegierte Benutzerrechte, Delegierungsrecht, Netzwerk- und lokale Anmelderechte, Ueberwachungsrichtlinie, Firewall-Logging und -Profile, DNS-Client, Softwareeinschraenkung/AppLocker, Sperrzeiten, Kennwortlaufzeit, umkehrbare Speicherung, Anmeldezeiten und Office-Formularanmeldung. Dazu kommt die GPO-Auffangbedingung. Der spezifischste Schluessel entscheidet; katalogisierte Wertsemantiken haben Vorrang. Der Reader zeigt `Evaluated by ASSESSOR` mit dem Urteil. Ausserdem wurde nach Nutzerwunsch der Block `Policy Analyzer search key` im Reader-Kopf ausgeblendet; die Ableitung bleibt erhalten. Nur-Lese-Lauf gegen den Dummy-Client: alle 477 Abweichungen in Work sind in einem fachlichen Cluster (452 Scanner, 25 GPO), der Auffang-Cluster bleibt leer; Revision unveraendert. Volle Suite: 1708 bestanden, 6 bekannte vorbestehende Fehler, 15 uebersprungen; beide Builds und die Local-only-Pruefung sind gruen. 2026-09-30 - Phase 13E / Context-Badges im Finding Reader (in 2.10.0 gebuendelt, umgesetzt, per Test verifiziert; Sichtpruefung steht nach Neustart des laufenden Backends noch aus): Nutzerwunsch: Die Kontext-Cluster eines Befunds erscheinen als etwas groessere Badges links in der Aktionszeile des Finding Readers (vor AI search). Sie nutzen denselben Kontextabruf und dieselbe Zuordnung wie der Context-Abschnitt, springen per Klick dorthin und erscheinen nur bei eingeschaltetem Layer. Die Gestaltung verwendet nur vorhandene Tokens: neutrale Kontur, 14px Semibold, kein Statusfarbton, Hover nur ueber die Flaeche. Der Abnahmetest `Reader ausserhalb des Kontexts mit Layer an und aus identisch` behandelt die Badges als Kontext-Element. 2026-09-30 - Phase 13E / Katalog 1.7.0: jede Abweichung im Kontext (in 2.10.0 gebuendelt, umgesetzt und verifiziert): Nutzerentscheidung: Jeder Fail oder jede Abweichung ist ein Befund, wird nicht in Frage gestellt und gehoert in einen Cluster; der Kontext ist das zentrale Werkzeug fuer die scanneruebergreifende Struktur. Das ersetzt die polaritaetsbasierten Ausschluesse aus Katalog 1.6.0; AGENTS.md wurde angepasst. Umsetzung: Die Bedingungen sind so formuliert, wie der Befund es aussagt. Beispiele: `LAN-Manager-Ebene unter NTLMv2 only, LM & NTLM verweigern` (zweite Bedingung auf derselben GPO-Semantik), `LDAP-Signierungsdurchsetzung nicht aktiviert`, `automatische Anmeldung nicht ausdruecklich abgeschaltet`, `Global-Admin-Anzahl ausserhalb der Empfehlung`. Engine 1.7.0 ordnet in dieser Reihenfolge zu: exakte Regel-ID; bei CIS-CAT sonst der spezifischste Abschnittstitel aus dem eigenen Report (75 Titel, zum Beispiel Printers, Microsoft Defender Antivirus, Remote Desktop Services, Data Collection and Preview Builds); sonst der sichtbare Cluster `Other Deviations (not yet catalogued)`. `warning` zaehlt jetzt wie `fail` als Abweichung. Katalog 1.7.0 bringt 54 Bedingungen und 38 exakte Regeln sowie die neuen Cluster Data Sharing & Privacy, Physical & Local Access, Patch & Configuration Drift und Other Deviations. Der Reader zeigt die Zuordnung ueber den Report-Abschnitt beziehungsweise `deviation not yet catalogued` an. Tests: Die Engine-Tests wurden auf die neue Regel umgestellt, darunter bleibt eine umnummerierte oder unkatalogisierte Abweichung sichtbar. Neu ist ein Test fuer die Abschnittszuordnung (spezifischster Titel, Elternabschnitt, Vorrang der exakten Regel, Fallback). Nur-Lese-Lauf gegen den Dummy-Client: Jede Abweichung hat einen fachlichen Cluster, der Fallback wird nicht benoetigt (0). 534 Scanner-Befunde sind zugeordnet, davon 288 ueber den Report-Abschnitt, 647 von 885 haben Kontext; alle fachlichen Cluster sind `present`; Revision unveraendert. Volle Suite: 1706 bestanden, 7 bekannte vorbestehende Fehler, 15 uebersprungen; beide Builds und die Local-only-Pruefung sind gruen (der Abschnittstitel `File Explorer` steht wegen der Kernpruefung kleingeschrieben, der Vergleich ist ohnehin unabhaengig von Gross- und Kleinschreibung). ISO-Korpus-Upload 2026-09-23 (Phase 13F, Nutzerauftrag): Data Hub nimmt die passenden DIN-27001-/27002-PDFs gemeinsam ueber eine token-geschuetzte Same-Origin-API an. Der vorhandene PDF-Parser laeuft in einem begrenzten Worker; der private versionierte JSON-Korpus bleibt als Wiederaufbauquelle im Artefakt-Volume, temporaere Original-PDFs werden nach dem Parsing und nach unterbrochenen Starts entfernt. Ein Hintergrundjob zeigt Parse-/Embedding-/Aktivierungsstatus und Chunkfortschritt; die Statusabfrage erkennt einen unvollstaendigen oder unerreichbaren Index. Qdrant-Ersatz ist nun auf die Korpusversion begrenzt; erst nach vollstaendigem Ingest wechselt die aktive Mappingversion, bei einer neuen fehlgeschlagenen Version bleibt die bisherige aktiv. Ein identischer Upload kann einen verlorenen Index anhand der erwarteten Chunkzahl neu aufbauen. Der Operator-Token ist eine Uebergangsberechtigung bis Phase 14 und schuetzt ausschliesslich diese globale Aktion. Der Nutzer hat Speicherung der privaten Korpusquelle und den konfigurierten Embedding-Endpunkt fuer diesen lizenzierten Inhalt bestaetigt. Vor der letzten Statuspraezisierung bestand der Standardlauf mit 1.584 Tests und 16 uebersprungenen opt-in Integrationen; danach bestanden die vier fokussierten HTTP-/UI-/Client-/Indexdateien mit 29 Tests sowie beide Typechecks. Beide Builds und Local-only-/Designchecks bestanden vor der Statuspraezisierung. Keine PostgreSQL-Migration oder Scanner-Reimport; die echte PDF-/Provider-/Qdrant-Abnahme auf dem Zielserver bleibt offen. Phase 13F bleibt in Arbeit. 2026-09-30 - Phase 13E / Katalog 1.6.0 und deklarierte D3FEND-Gegenmassnahmen (in 2.10.0 gebuendelt, umgesetzt und verifiziert): Nutzerentscheidung "Ja, D3FEND einbauen und uebrige Luecken durchgehen". Engine 1.6.0 gruppiert vom Scanner deklarierte, aktive D3FEND-IDs getrennt von ATT&CK; der Finding Reader zeigt dafuer den Block `Declared D3FEND` mit dem Hinweis `Same countermeasure according to the scanners; not a proven common cause.` Lueckenauswertung: Die ausgefuehrten Befunde ohne Bedingung beim Dummy-Client wurden nach Themen durchgesehen, die in mehreren Scannern vorkommen. Die Bedeutung unklarer Regeln wurde am eigenen Reporttext geprueft. Katalog 1.6.0 ergaenzt 64 Bedingungen mit 113 exakten Regeln. Bestehende Cluster: Credential Relay (u. a. gehaertete UNC-Pfade, SMB-Gastanmeldung, unsichere DNS-Updates, CIS 5.1 Spooler, CIS 18.4.6 NetBT), Kerberoasting (CIS 2.3.11.4 RC4/DES), Password Guessing (Kerberos Armoring), Detection Blind Spots (CIS 17.x, Prozess-Befehlszeile, Sicherheitsprotokoll, NTLM-Audit, Firewall-Logging, Defender for Identity, Entra-Logweiterleitung und Rollenwarnungen), Lateral Movement (LAPS, RDP-Sitzungslimits und -Verbindungsschutz), Host Credential & Privilege (gefaehrliche Benutzerrechte, gespeicherte RDP-Kennwoerter, AlwaysInstallElevated, Remote Credential Guard), AD Privileged (DnsAdmins, Schema Admins) sowie Cloud Sign-in und Cloud Privileged. Neue Cluster: Malicious Code Execution, AD Persistence Indicators, AD Reconnaissance, AD Recovery Gaps, Cloud App Consent und Cloud External Access. Bewusst nicht zugeordnet: PingCastle A-DnsZoneAUCreateChild (der Report stuft ihn selbst als informativ und die Standardkonfiguration als sicher ein); CIS 2.3.11.6 LAN Manager (CIS verlangt Stufe 5, ein Fail auf Stufe 3 oder 4 belegt kein LM/NTLMv1); CIS 2.3.5.4 LDAP-Signierung Enforcement (ein Fail belegt nicht, dass keine Signierung verlangt wird); CIS 18.5.1 AutoAdminLogon (ein Fail belegt nur fehlende Abschaltung); die Global-Admin-Anzahl (ein Fail kann zu viele oder zu wenige bedeuten); MT.INV-Untersuchungen, ablaufende App-Anmeldedaten (Verfuegbarkeit) und reine CA-Pflegeregeln. Der MITRE-Titel T1204.002 steht wegen der Local-only-Pruefung (Muster `File`) als `Malicious file`. Tests: Engine-, Katalog- und Reader-Tests, darunter ein neuer D3FEND-Reader-Test. Nur-Lese-Lauf gegen den Dummy-Client: alle 17 Cluster sind `present`; 208 Scanner-Befunde haben eine exakte Bedingung (vorher 95), 613 von 885 insgesamt Kontext; ausgefuehrte Befunde ohne Bedingung 501 statt 614; Revision unveraendert. Volle Suite: 1705 bestanden, 7 bekannte vorbestehende Fehler, 15 uebersprungen; beide Builds und die Local-only-Pruefung sind gruen. 2026-09-30 - Phase 13E / Katalog 1.5.0 Password Guessing Exposure (in 2.10.0 gebuendelt, umgesetzt und verifiziert): Anlass war die Nachfrage des Nutzers, warum ein Befund wie Purple Knight SI000096 trotz ausreichender Angaben im Scan keinen Kontext hat. Die Luecke war eine Katalogluecke und keine Datenluecke. Neuer Cluster `password-guessing-exposure` (MITRE T1110.001/T1110.002) mit neun Bedingungen: Kennwortlaenge unter 14 bzw. unter 8 Zeichen, Komplexitaet aus, Sperrschwelle aus oder ueber 5, kurze Sperr-/Zuruecksetzzeit, schwache Richtlinie fuer privilegierte Nutzer, keine Richtlinie fuer lange Dienstkonto-Kennwoerter sowie die bestehenden Bedingungen fuer nie ablaufende Kennwoerter. Die Zuordnung erfolgt nur ueber exakte Regel-IDs mit dem nativen Regeltext: CIS-CAT 1.1.4/1.1.5/1.2.1/1.2.2/1.2.4, PingCastle A-MinPwdLen/S-PwdNeverExpires/A-NoServicePolicy und Purple Knight SI000096. Die Entra-Regeln EIDSCA.PR01/PR03 (Kennwortschutz) und PR05/PR06 (Smart Lockout) ergaenzen den bestehenden Cluster `cloud-sign-in-protection-gaps`, A-NoServicePolicy zusaetzlich `kerberoasting-exposure`. PingCastle P-ServiceDomainAdmin bleibt bewusst ungemappt, weil ein Pass (weniger als zwei Konten) die Bedingung nicht widerlegt. GPO: Die Kontorichtlinien aus [System Access] (MinimumPasswordLength, PasswordComplexity, LockoutBadCount) sind nun katalogisiert. Engine 1.5.0 liest dafuer nur exakte Ganzzahlen aus `scalar`-Werten; alles andere bleibt `unknown`. Tests: synthetischer Regressionstest mit GPO-Wert und Befunden aller Scanner, inklusive Widerspruch zwischen deklariertem und beobachtetem Wert und `not_run`. Nur-Lese-Lauf gegen den Dummy-Client: der Cluster ist `present` mit 9 von 9 Bedingungen, Entra-Anmeldeschutz 7 von 7. Eine GPO-Sicherung deklariert abgeschaltete Komplexitaet, waehrend CIS-CAT 1.1.5 auf dem Host besteht; das wird als Widerspruch angezeigt. 558 von 885 Scanner-Befunden haben Kontext; Revision unveraendert. Volle Suite: 1704 bestanden, 7 bekannte vorbestehende Fehler, 15 uebersprungen; beide Builds und die Local-only-Pruefung sind gruen. Offen zur Nutzerentscheidung: Gruppierung nach vom Scanner deklarierten D3FEND-Gegenmassnahmen (Purple Knight: 70 Deklarationen in 19 Gruppen). 2026-09-30 - Phase 13E / CIS-Kontrollbereich (in 2.10.0 gebuendelt, umgesetzt und verifiziert): Nutzerentscheidung "Ja, CIS-Kontrollbereich auch einbauen"; sie ersetzt den Vermerk im vorigen Eintrag, dass der CIS-Kontrollbereich nicht gewaehlt wurde. Engine 1.4.0 gruppiert CIS-CAT-Befunde nach der exakten Nummernhierarchie ihrer Regel-ID (`9.1.1` liegt in `9.1` und `9`), und zwar nur innerhalb desselben Scan-Laufs, weil andere Benchmarks dieselben Nummern verwenden. Titel und die vom Scan genannten Pass/Fail-Zahlen stammen aus der gespeicherten Abschnittstabelle `cis-cat-section-scores` desselben Reports (bestehender Helper `cisBenchmarkSectionTitles`); mehrdeutige Titel oder Zahlen entfallen. Dafuer liest der Nur-Lese-Port zusaetzlich `getEnvironmentSnapshot`, begrenzt auf die CIS-Laeufe im Scope. Der Finding Reader zeigt den Block `CIS control area` mit oberstem und naechstem Abschnitt, Anzahl im Timeslot, Fail/Pass und dem Abschnittsscore laut Scan-Report sowie dem Hinweis `Same benchmark section of this scan report; not a proven attack chain.` Tests: synthetische Engine-, Lauf- und Reader-Tests, u. a. fuer die Trennung nach Scan-Lauf und fuer mehrdeutige Tabellenzeilen. Nur-Lese-Lauf gegen den Dummy-Client: 551 von 885 Scanner-Befunden haben Kontext (vorher 171); 160 CIS-Abschnitte, alle mit Titel und Scan-Zahlen, und die Scan-Zahlen stimmen mit den importierten Befunden ueberein; Revision unveraendert. Volle Suite: 1702 bestanden, 7 bekannte vorbestehende Fehler, 15 uebersprungen (node-import-engine unter Volllast zeitweise instabil, einzeln 5/5); beide Builds und die Local-only-Pruefung sind gruen. 2026-09-30 - Phase 13E / deklarierte ATT&CK-Taktik und CIS-Cluster (in 2.10.0 gebuendelt, umgesetzt und verifiziert): Nutzerentscheidung: Vom Scanner deklarierte ATT&CK-Referenzen duerfen Befunde im Kontext verbinden, und zwar nur `declared`, aktiv und mit exakter ID; die Aussage lautet `gleiche Taktik laut Scanner`, nie `gleicher Angriffsweg`. AGENTS.md und REFERENCE_RECOGNITION.md wurden entsprechend angepasst. Engine 1.3.0 liest dafuer die gespeicherten Referenzlaeufe (neueste Laufe je Scan, nur Befunde des Timeslots; die Lesemethode `listReferenceRuns` wurde im Nur-Lese-Port ergaenzt). Der Reader zeigt den Block `Declared ATT&CK` mit Anzahl, Scannern und Fail/Pass. Katalog 1.4.0 (Nutzerwahl Richtung 1): Relay wurde um mDNS, NetBIOS und WPAD erweitert, Kerberos Delegation um das Hinzufuegen von Computerkonten (SI000011, S-ADRegistration). Neu sind `Lateral Movement Exposure` (RDP ohne NLA, WinRM Basic/unverschluesselt/Remote-Management, SMBv1, Firewall aus bzw. eingehend erlaubt, breite Netzwerk-Anmelderechte), `Host Credential & Privilege Exposure` (gespeicherte Netzwerk-Anmeldedaten, eigene SSPs in LSASS, WinRM-RunAs, UAC) und `Detection Blind Spots` (PowerShell-Logging, A-AuditPowershell, A-AuditDC). ATT&CK-IDs gibt es nur dort, wo MITRE den Zusammenhang dokumentiert (T1021.x, T1555.004, T1547.005, T1548.002, T1557.001); PowerShell-Logging, WPAD und WinRM-RunAs bleiben ohne ID. Der CIS-Kontrollbereich wurde nicht gewaehlt; der ARF-Import wird nicht verfolgt. Nur-Lese-Lauf gegen den Dummy-Client: 171 von 885 Scanner-Befunden haben Kontext (vorher 51), davon 82 ueber Cluster und 116 ueber deklarierte ATT&CK-IDs (beim Dummy deklariert nur Purple Knight); 0 abgewiesen, alle 10 Cluster `present`, Revision unveraendert. 2026-09-30 - Phase 13E / Work-Facette `Context Cluster` (in 2.10.0 gebuendelt, umgesetzt und verifiziert): Die Facette erscheint nur bei eingeschaltetem und geladenem Layer, direkt vor `Source: Scan`. Beschriftet ist sie gemaess der UI-Sprachentscheidung englisch. Sie bietet alle Katalog-Cluster, auch mit 0 Treffern. Ein Record gehoert zu einem Cluster, wenn er Belege liefert: GPO-Zeilen ueber Technical Identity und Scope, Scanner-Befunde ueber die Finding-Occurrence. Die Facette wird zentral in `filterAndSortRecords` und `selectWorkFacets` eingehaengt; Liste, Zaehler, Facettenzaehlung, Sidebar-Domains und Work-Export nutzen denselben Index. Mit ausgeschaltetem Layer entfaellt sie, und diese Pfade laufen wie zuvor. Aenderungen am Assessor-Filtercode sind additiv: optionales `valuesFor` an `DynamicFacet`, optionales `contextClusters` in den Filteroptionen. Abschalten entfernt einen aktiven Kontextfilter ueber den bestehenden Abgleich der Filterleiste. Waehrend der Layer an ist und laedt, bleibt ein gesetzter Filter bestehen; eine Aktualisierung desselben Timeslots nutzt den letzten geladenen Stand weiter. Verifiziert: 5 Facettentests (Dauerpruefung an/aus identisch, exakte Clusterauswahl, alle Cluster, Position vor `Source: Scan`, Entfernen beim Abschalten, Erhalt beim Laden) und ein Grenztest (Client Info, Scoring, Result DB und Server-Persistenz ohne Kontextimport). Vollsuite 1696 bestanden; die bekannten 7 Fehler unveraendert. `tests/server/node-import-engine.test.ts` lief in der Vollsuite einmal in ein Timeout (`STACK_TRACE_ERROR`, keine fachliche Abweichung); einzeln besteht er 5/5. Er beruehrt den Import-Parser und nicht diese Aenderung und ist als zeitabhaengig wackelig vermerkt. Beide Builds, Local-only- und Design-Check bestanden. In der echten App mit dem Dummy-Client: Aus zeigt 477 Befunde ohne Facette; an zeigt 477 Befunde mit Facette vor `Source: Scan` und Zaehlungen je Cluster; `Credential Relay Exposure` gewaehlt zeigt 8 Befunde, und die Sidebar-Domains zaehlen mit; wieder aus entfernt Facette und Filter, und es sind 477 Befunde. Naechster Schritt laut Reihenfolge: Pathfinder. 2026-09-30 - Phase 13E / neue Reihenfolge Schritt 1: AD-Katalog-Batch (in 2.10.0 gebuendelt, umgesetzt und verifiziert): Katalog 1.3.0 mit drei neuen Clustern. `Kerberos Delegation Abuse`: Purple Knight SI000079, SI000080, SI000066, SI000071, SI000070, SI000065, SI000099, SI000016, SI000031 sowie delegierbare Admins (P-Delegated). `AD CS Escalation`: SI000157, PingCastle A-CertTempCustomSubject, SI000156, SI000090, SI000091, SI000095. `Kerberoasting Exposure`: privilegierte SPNs, SI000152, SI000151, SI000067, SI000029. Erweitert wurden `Credential Relay Exposure` um Coercion ueber den Print Spooler auf DCs (SI000077, A-DC-Spooler; T1187) und ESC8 als Relay-Ziel sowie `AD Privileged Account Exposure` um Shadow Credentials (SI000351). ATT&CK-IDs stehen nur dort, wo MITRE die Technik dokumentiert (T1187, T1649, T1558.003). Fuer Delegation nennt keine gepruefte Technik S4U oder RBCD (T1558, T1550.003 geprueft); diese Aussagen tragen deshalb keine ATT&CK-ID und stuetzen sich auf die Microsoft-Doku zu Kerberos Constrained Delegation und den Scan-Report. Ausgeschlossen: A-WeakRSARootCert2 (kein Eskalationspfad). Ein Befund kann mehrere Cluster stuetzen (P-Delegated in zwei). Der Reader-Hinweis nennt jetzt die Abdeckung (`context covers X of Y scanner findings and Z GPO settings`). Ein gehaerteter Relay-Cluster aus reinen GPO-Werten ist jetzt korrekt `undetermined`, weil Spooler und ESC8 nur Scanner belegen; `not-present` ist mit passenden Scanner-Ergebnissen weiter getestet. Verifiziert: Vollsuite 1691 bestanden, dieselben 7 bestehenden Fehler; beide Builds, Local-only- und Design-Check bestanden. Nur-Lese-Lauf gegen den Dummy-Client: 51 von 885 Scanner-Befunden zugeordnet (vorher 29), 0 abgewiesen, alle 7 Cluster `present`, Revision unveraendert. In der echten App zeigt der Nutzerbefund `Write access to RBCD on DC` (SI000079) jetzt Kontext; der Hinweis zeigt 51 von 885. Schalter und Suche wurden danach zurueckgesetzt. Naechster Schritt laut neuer Reihenfolge: Work-Facette `Kontext-Cluster`. 2026-09-30 - Phase 13E / Nutzerentscheidung neue Reihenfolge der UI-Stufen: Die Reihenfolge aus Freigabe (b) wird geaendert. Grund: Bei rund 3 % Katalogabdeckung wirken weitere Ansichten leer, und die dauerhafte Pruefung `Layer an/aus identisch` gehoert zur Work-Facette und soll stehen, bevor der Layer in weitere Ansichten wandert. Neue Reihenfolge: (1) AD-Katalog-Batch (Kerberos Delegation, AD CS, Erweiterung des Relay-Clusters um Coercion, Kerberoasting) und ein Hinweis mit Abdeckungszahl im Reader, (2) Work-Facette `Kontext-Cluster` mit dem Test, dass Work-Zahlen, Filter und Status mit Layer an und aus identisch bleiben, (3) Pathfinder, (4) Client Info. Die Freigaben (a) und (c) bleiben unveraendert; Stufe 1 Finding Reader ist erledigt. 2026-09-30 - Phase 13E / Nutzerentscheidung Scan-Report (Wortlaut): "Explicit user decision 2026-09-30: for every scanner, the official scan report is authoritative. Rule IDs, rule text and outcomes it states are accepted as they are; no separate verification against vendor documentation is required. Exact rule-ID matching and the rule that non-executed checks stay unknown remain unchanged." Umsetzung: Das Belegart-Feld `verifiedAgainst` und die Pflicht einer Dokumentationsquelle je Scanner-Regel entfallen. Eine Scanner-Regel braucht nur exakte Rule-ID, Regeltext aus dem Report und Polaritaet `fail-means-met`; vorhandene Herstellerquellen bleiben als optionale Leseverweise. Exakte Rule-ID-Zuordnung, CIS-Umnummerierungsschutz und `nicht ausgefuehrt = unbekannt` sind unveraendert. Verifiziert mit Tests (eine Regel ohne Dokumentationsquelle ist gueltig; ungueltiger optionaler Link und fehlender Regeltext werden weiter abgewiesen). Katalogversion 1.2.0 bleibt, weil sich keine Zuordnung und kein Ergebnis aendert. 2026-09-30 - Phase 13E / Kontext Schritt 3, weitere Cluster (in 2.10.0 gebuendelt, umgesetzt und verifiziert): Katalog 1.2.0 und Engine 1.2.0 fuehren eigenstaendige Bedingungen ein, die nur Scanner beobachten (ohne GPO-Einstellung). Neue Cluster: `Cloud Privileged Access Exposure` (Maester CISA.MS.AAD.7.4, MT.1025, MT.1027, CISA.MS.AAD.7.3, CIS.M365.1.1.1, CISA.MS.AAD.3.6, MT.1024.adminMFAV2), `Cloud Sign-in Protection Gaps` (CISA.MS.AAD.1.1, MT.1024.blockLegacyAuthentication, CISA.MS.AAD.2.3, MT.1012, MT.1024.signinRiskPolicy, CISA.MS.AAD.3.1, CISA.MS.AAD.3.5) und `AD Privileged Account Exposure` (PingCastle P-Delegated, P-ProtectedUsers, P-AdminLogin; Purple Knight SI000020, SI000028, SI000019). Jede Aussage ist als `favours`/`begünstigt` formuliert und traegt eine geprueft verlinkte ATT&CK-Technik: T1078.004, T1110.003, T1078.002 oder T1558.003. Die Wortwahl-Pruefung hat zwei Aussagen mit `kompromittierter Konten` abgewiesen; sie lauten jetzt `Anmeldungen mit gestohlenen Zugangsdaten`. Bewusst ausgeschlossen: die Global-Admin-Anzahl (CISA.MS.AAD.7.1, MT.1032, CIS.M365.1.1.3), weil ein Fail `zu viele` oder `zu wenige` bedeuten kann. Nutzerentscheidung 2026-09-30: Der offizielle Scan-Report ist massgeblich. Eine dort genannte Regel gilt, auch wenn die Herstellerdoku hinterherhinkt (die veroeffentlichte PingCastle-Liste enthaelt z. B. die P-Regeln nicht). Die Belegart je Scanner-Regel heisst `scanner-report` bzw. zusaetzlich `vendor-documentation`, beide mit gleichem Gewicht; AGENTS.md wurde ergaenzt. Neue Invariante: Jede Cluster-Bedingung hat mindestens eine Belegquelle. Verifiziert: 2 neue Tests, Vollsuite 1691 bestanden, dieselben 7 bestehenden Fehler; beide Builds, Local-only- und Design-Check bestanden. Nur-Lese-Lauf gegen den Dummy-Client: 29 von 885 Scanner-Befunden zugeordnet (vorher 9), 0 abgewiesen; alle vier Cluster sind `present` (Relay 4/7, Cloud Privileged 6/6, Sign-in 5/5, AD Privileged 3/4); die Revision blieb unveraendert. 2026-09-30 - Phase 13E / Kontext fuer alle Scans, Schritte 1 und 2 (in 2.10.0 gebuendelt, umgesetzt und verifiziert): Auf Nutzerwunsch erscheint der Abschnitt `Context` jetzt bei jedem Finding aller Scanner; Befunde ohne Katalogeintrag erhalten den Hinweis `not in the context catalog ... yet`. Katalog 1.1.0: Die LLMNR-Bedingung ist praezisiert zu `LLMNR is not turned off` (GPO-Wert 1 erfuellt sie weiterhin), dazu kommen 9 Scanner-Zuordnungen mit exakter Tool- und Rule-ID, Polaritaet `fail-means-met`, Original-Regeltext und Quelle: PingCastle S-OldNtlm und A-NoGPOLLMNR, Purple Knight SI000154 und SI000153, CIS 2.3.9.2, 2.3.8.1, 2.3.11.8, 2.3.5.3 und 18.6.4.4. CIS-Zuordnungen verlangen zusaetzlich den exakten Einstellungsnamen im Befund als Schutz gegen Umnummerierung. Bewusst ausgeschlossen: CIS 2.3.11.6 (Fail heisst nur `nicht Stufe 5`, das beweist keine LM/NTLMv1-Antworten), CIS 2.3.5.4 (Semantik der neuen Enforcement-Einstellung nicht belegt) und Purple Knight SI000188 (anderes Thema). Fuer LDAP-Signierung und Channel Binding gibt es keine belegbare PingCastle-ID; die veroeffentlichte Regelliste ist aelter als A-NoGPOLLMNR, das nativ in den Daten vorkommt. Engine 1.1.0: Beobachtete Fakten (`observed-by-scanner`) stehen getrennt von den deklarierten (`declared-in-gpo-backup`). Fail erfuellt die Bedingung, Pass widerlegt sie, alle anderen Outcomes bleiben unbekannt. Neues Signal `declaredVersusObserved`, wenn GPO-Deklaration und Scanner-Beobachtung auseinandergehen; Anbindung an Scanner-Findings ueber die Finding-Occurrence. Die Timeslot-`scanRunIds` gelten nur fuer Scanner-Befunde, wie in Work. Der Reader zeigt je Bedingung alle Belege nebeneinander. Verifiziert: 5 neue Tests (exakte Zuordnung, Umnummerierungsschutz, gleichlautender Titel mit anderer Rule-ID wird nicht zugeordnet, not_run bleibt unbekannt, Widerspruchssignal, Timeslot-Filter, Scanner-UI). Vollsuite 1689 bestanden, dieselben 7 bestehenden Fehler; beide Builds, Local-only- und Design-Check bestanden. Nur-Lese-Lauf gegen den Dummy-Client: 885 Scanner-Befunde, davon 9 zugeordnet und 0 durch den Schutz abgewiesen; der Cluster ist `present` (4 Bedingungen erfuellt, 3 nicht erfuellt, 0 unbekannt); die Revision blieb unveraendert. In der echten App zeigt der PingCastle-Befund S-OldNtlm den Context mit der Beobachtung und dem Cluster; der Schalter wurde danach zurueckgesetzt. Ein Screenshot war nicht moeglich, weil das Pane nicht zeichnete; die Pruefung lief ueber den DOM-Text. 2026-09-30 - Phase 13E / Kontext-Layer Stufe 1 Finding Reader (in 2.10.0 gebuendelt, umgesetzt und verifiziert): Nutzerentscheidung: Die englische Oberflaeche beschriftet den Layer mit `Context` und nutzt die englischen Aussagen (`favours`); `Kontext` und `begünstigt` gelten fuer deutsche Reports. AGENTS.md wurde entsprechend praezisiert. Der Schalter `Context` steht in der Work-Werkzeugleiste neben `My Workspace` im gemeinsamen Button-Stil (aria-pressed, gelbe Aktivmarkierung); Standard aus, lokal je Anwender gespeichert (`ASSESSOR.contextLayer`). Der Abschnitt `Context` im Finding Reader erscheint nur fuer GPO-Datensaetze und nur bei eingeschaltetem Layer, nach Problem, Next step, GPO-Quellen und Wertevergleichen und vor Description und Remediation. Er zeigt die deklarierten Backup-Werte mit Bedeutung und Link-Hinweis, Bedingungen mit Glyph und Text, `favours`-Aussage mit ATT&CK-ID, den Clusterzustand mit Zaehlwerten und die Quellen als https-Links mit `noopener noreferrer`. Nicht katalogisierte Einstellungen erhalten einen klaren Hinweis. Die Darstellung ist eine neutrale Tile-Flaeche ohne Statusfarbe und nutzt nur bestehende Tokens. Die Daten werden einmal je Scope und geladenem Datenstand angefragt, nicht je Datensatz. Verifiziert: 5 Verhaltenstests (aus: kein Request; an: ein Request und Inhalte; der Reader ausserhalb des Abschnitts ist mit Layer an und aus identisch; Abschalten entfernt den Abschnitt; Speicher; keine Filter-, Review- oder Schreibaufrufe im Layer-Code). Echte App mit dem freigegebenen Dummy-Client in Dark und Light: Schalter sichtbar, Abschnitt bei `RequireSecuritySignature` mit Katalogdaten, Abschalten entfernt ihn; Theme und Schalter danach zurueckgesetzt. Vollsuite 1684 bestanden, dieselben 7 bestehenden Fehler; beide Builds, Local-only- und Design-Check (unveraendert 18 bestehende Treffer) bestanden. Offen: In der Backup-Zeile steht die ASSESSOR-Backup-Instanz-ID statt eines GPO-Namens, weil die Beobachtung keinen Anzeigenamen traegt; Pathfinder, Work-Facette und Client Info. 2026-09-30 - Phase 13E / Kontext-Engine und API (in 2.10.0 gebuendelt, umgesetzt und verifiziert; UI-Stufen offen): Neues Modul `src/assessment-context/` mit Katalog 1.0.0, Engine 1.0.0 und `context-run.ts`. Die Engine liest dieselben aktuellen `policy-observation`-Ergebnisse wie Work und deren gespeicherte Identitaetsaufloesung, prueft die Revision vor und nach dem Lesen und erzeugt kein Verdict, keine Prioritaet und keinen Hostzustand. Neuer Endpunkt `GET /api/v1/projects/:id/assessment-context?assessmentIds=...`: Timeslot ist Pflicht (400), Projektpruefung (404), 503 bei nicht verfuegbarer Engine, 409 bei wechselndem Datenstand; begrenzter Cache je Revision und Scope. Er nutzt denselben schreibgeschuetzten Leser wie die Report Engine. Layer-Andockpunkt: `settings` je Technical Identity und Scope, identisch zu den Feldern der Work-GPO-Zeile. Dazu kommen Vertragstyp `AssessmentContextResponse` und Client-Methode `getAssessmentContext`; die UI ruft noch nichts auf. Verifiziert: 12 neue Tests (Katalogvalidierung, Konflikte, unverlinkte Quellen, geloeschte und unbekannte Werte, Clusterzustaende, Determinismus, unveraenderte Eingaben, Revisionspruefung, Architekturgrenze, unveraenderte gespeicherte Daten) und HTTP-Tests. Nur-Lese-Lauf gegen den freigegebenen Dummy-Client: 51 Beobachtungen, davon 3 semantisch zugeordnet und 0 unaufgeloest; der Cluster ist `undetermined`, weil 2 Bedingungen nicht erfuellt und 5 nicht deklariert sind; die Revision blieb unveraendert. Vollsuite 1679 bestanden, dieselben 7 bestehenden Fehler; beide Builds, Local-only-Check (jetzt inklusive `src/assessment-context`) und Design-Check bestanden. Versionsentscheidung: in der noch nicht committeten Release 2.10.0 gebuendelt. Keine Reimport-, Schema- oder Datenbankaenderung. 2026-09-30 - Phase 7 / Report Engine v0.2 (in 2.10.0 gebuendelt, umgesetzt und verifiziert): Die Nutzerentscheidung legt die Kernaussagen Gesamtbild, Schwerpunkt und Aussagegrenze fest, platziert unter den drei Kennzahlen des Management Reports, mit Belegen im Technical Report und im Archiv. `src/reporting/report-narrative.ts` (1.0.0) leitet die Aussagen deterministisch nur aus den Aggregaten ab. Gleichstaende nennen alle beteiligten Domains; Anteile werden exakt verglichen; eine Aussage ohne Datengrundlage entfaellt; es gibt keine Schwere-, Risiko- oder quellenuebergreifende Rangaussage. `report-statement-text.ts` enthaelt die feste deutsche Formulierung fuer beide Renderer. Ein positiver Anteil wird nie auf 0 % gerundet, sondern als `unter 1 %` angezeigt. Die Projektion 1.2.0 fuehrt ID-Listen je Security Domain und je Abdeckungsgruppe; die nicht bewerteten Gruppen zerlegen alle nicht bewerteten Ergebnisse vollstaendig. Management-Renderer 2.1.0 (Block `Kernaussagen`, ohne IDs) und Technical-Renderer 1.1.0 (`Belege der Kernaussagen` mit demselben Satz und den Result-IDs; Result-Index mit Result-ID-Spalte). Report-Engine-Version 0.2.0; das Archiv-Manifest fuehrt die Narrative-Version. Verifiziert: 5 neue synthetische Tests (Zahlen, Gleichstand, Einzahl/Mehrzahl, unter 1 %, fehlende Grundlage, Position unter den Kennzahlen, keine IDs im Management Report, Belege im Technical Report); Vollsuite 1667 bestanden, 15 uebersprungen, dieselben 7 bestehenden Fehler; TypeScript, beide Builds, Local-only- und Design-Check bestanden. Sichtpruefung mit synthetischen Beispieldaten ueber eine voruebergehende lokale Vorschau: Block unter den Kennzahlen im Stil des Abschnitts `Lesart`; bei 375 px kein horizontaler Ueberlauf und 16 px Randabstand. Die voruebergehende Startkonfiguration wurde wieder entfernt. Versionsentscheidung: v0.2 wird mit der noch nicht committeten v0.1 in 2.10.0 gebuendelt, keine weitere Versionserhoehung. Keine Reimport-, Schema- oder Datenbankaenderung. 2026-09-30 - Phase 7 / Report Engine v0.1 (2.10.0, umgesetzt und verifiziert mit einer offenen Teilabnahme): Die Report Engine laeuft eigenstaendig neben ASSESSOR und liest nur. Neu sind der Lese-Port `src/reporting/report-read-port.ts` (nur 11 Lesemethoden, eingefroren, ohne Schreibmethoden) und `report-run.ts` (Revision vor und nach dem Lesen, bis zu drei Versuche, sonst `ReportStateChangedError`/HTTP 409). Server-Adapter: `server/reporting/report-read-runtime.ts` mit eigenem Pool (`default_transaction_read_only=on`, `application_name` assessor-report-reader, max. 2 Verbindungen, keine Migrationen) und `server/reporting/report-archive.ts` (einmalig geschrieben, schreibgeschuetzt, Manifest mit SHA-256, Loeschung mit dem Client, Speicherort per `ASSESSOR_REPORT_ARCHIVE_DIR` bzw. lokalem Anwendungsdatenordner, nie in Repository, Anwendungsordner oder OneDrive). Ergaenzungen ausserhalb der Engine, ohne Aenderung der Assessor-Logik: `PostgresAssessorRepository.openReadOnly` (verweigert beschreibbare Sitzungen und stoesst keinen Result-DB-Neuaufbau an; noetig, weil `create()` schreibt), `sslConfiguration` exportiert, Startverdrahtung (faellt die Engine aus, laeuft ASSESSOR weiter und nur Reportlaeufe werden mit 503 abgelehnt), Archivloeschung beim Loeschen eines Projekts, Projektpruefung mit 404 in beiden Report-Routen, neuer Endpunkt `POST /projects/:id/report-runs`, und `report-projection` liest ueber den Port. Client Info laedt jetzt die serverseitig erzeugte, archivierte Datei; der Browser rendert keine Reports mehr, und der Report-Inhalt ist unveraendert. Compose-Deployment erhaelt ein eigenes Report-Archiv-Volume. Verifiziert: Vollsuite 1662 bestanden (13 neue Tests), 15 uebersprungen, dieselben 7 bestehenden Fehler; TypeScript fuer Client und Server, beide Builds, Local-only- und Design-Check; Architekturtest um Server-Adapter erweitert. Inhaltsfreie Pruefung gegen die kanonische Datenbank ohne Schreibversuch (schreibgeschuetzte Sitzung, Revision unveraendert, keine Schreibmethode erreichbar). Offen: Ausfuehrung des Integrationstests fuer eine abgelehnte Schreibanweisung mit einer Testdatenbank. Versionsentscheidung: Minor-Version 2.10.0 fuer die rueckwaertskompatible neue Faehigkeit (Archiv und Report-Lauf-API), zusammen mit der verhaltensneutralen Verschiebung. Keine Reimport-, Schema- oder Migrationsaenderung, und die Datenbank wird nicht veraendert. 2026-09-30 - Phase 7 / Report Engine Schritt 1: Verschiebung nach `src/reporting/` (umgesetzt und verifiziert): Projektion, Korrelation, Assembler, `client-report-projection` und beide Renderer liegen ohne Logikaenderung in `src/reporting/`, ihre Tests in `tests/reporting/`. Angepasst wurden nur Importpfade (API-Client nur Typimport, DashboardPanel, HTTP-Server). Neuer Architekturtest `tests/reporting/reporting-boundary.test.ts` erzwingt: Aus der Engine importieren nur DashboardPanel, HTTP-Server und API-Client (nur Typen); kein Aufruf schreibender `AssessorRepository`-Methoden; keine Imports aus React/Tauri/pg, `server/`, `src/app` oder `src/components`. Er wurde mit absichtlichen Verstoessen gegengeprueft. `src/reporting` ist zusaetzlich im plattformneutralen Local-only-Check. Verifiziert: Vollsuite 1649 bestanden (vorher 1645, plus 4 Grenztests), 14 uebersprungen; dieselben 7 bestehenden Fehler in 6 Dateien, kein neuer und keiner entfallen. TypeScript fuer Client und Server, beide Produktionsbuilds, Local-only- und Design-Check bestanden. Versionsentscheidung: keine Aenderung der Produktversion, weil es ein verhaltensneutraler Zwischenschritt ist; er wird mit Report Engine v0.1 gemeinsam versioniert. Keine Reimport-, Persistenz-, API- oder UI-Aenderung. 2026-09-30 - Phase 7 / Report Engine entschieden (geplant, keine Umsetzung): Der Nutzer entscheidet die Verschiebung der Report-Bausteine nach `src/reporting/` ohne Logikaenderung, ein serverseitiges unveraenderliches Reportarchiv ausserhalb von Repository und OneDrive (`ASSESSOR_REPORT_ARCHIVE_DIR`, Loeschung mit dem Client) und die vier Grenzen: gemeinsamer Domain-Katalog, Severity nur je Quelle, Review-Status nur als Selbstauskunft und nicht in Report A, Szenarien nur ueber Phase 13E. Einzelheiten und Abnahme stehen in Phase 7, Abschnitt Report Engine. Nur Plan-Dokumentation; Produktversion unveraendert. 2026-09-30 - Phase 13E / Kontext-Engine und abschaltbarer Kontext-Layer (geplant, Nutzerfreigabe, keine Umsetzung): Der Nutzer gibt (a) einen kuratierten, quellenbelegten und versionierten Semantic-/Relationship-/Cluster-Katalog, (b) die Reihenfolge Engine/API, Finding Reader, Pathfinder, Work-Facette, Client Info und (c) die nur bei eingeschaltetem Layer sichtbare Work-Facette `Kontext-Cluster` als Ergaenzung der GPO-Facettenliste frei. Der Kontext ist eine parallele, abschaltbare Lesart ueber gespeicherten Assessor-Ergebnissen. Er veraendert weder Verdict noch Score, technische Filter, Reviews, Result DB oder Priority Findings, und er speist spaeter auch die Report Engine. Kein `CANONICAL_MODEL v2`, weil Observation, Identitaet, Aggregation, Evaluation und Conflict/Duplicate in Phase 13B bereits bestehen. Einzelheiten, Grenzen und Abnahme: Abschnitt Phase 13E. Nur Plan-Dokumentation; Produktversion unveraendert. Referenzerkennung 2026-09-26 (Phase 13D, erster Umfang umgesetzt und verifiziert, Version 2.8.0): ATT&CK/D3FEND werden gemeinsam aus gespeicherten Originalfeldern erkannt und mit Quellen-/Katalogherkunft in eigenen Laeufen gespeichert. Normale Batchimports leiten automatisch ab; bestehende Scans werden ueber `Recognize references` im Clientbereich explizit nachverarbeitet. Pathfinder und Reader nutzen die gespeicherten Referenzen. PostgreSQL-Migration 023 mit vorherigem verifiziertem Backup; keine Client-Datenbanktrennung, Finding-Identitaets-, Scoring- oder Review-Aenderung. Siehe Phase 13D und `docs/REFERENCE_RECOGNITION.md`. Status: lebendes Projektdokument Gefiltertes Result-DB-ISO-Batchmapping 2026-09-16 (Phase 13F, ausdruecklicher Nutzerauftrag): Result DB bietet `Map all ISO controls` neben Refresh und Export JSON. Export und Batch leiten ihren Scope aus demselben normalisierten `UnifiedResultQuery` ab; der gewaehlte Timeslot bleibt aeussere Grenze, alle aktiven Filter einschliesslich des Standardfilters `deviation: true` grenzen weiter ein, und Pagination/geladene Zeilen haben keinen Einfluss. Der Server liest stabil alle Treffer, bricht bei veraenderter Gesamtzahl sicher ab, zaehlt Nicht-Scanner und nicht unterstuetzte Findings getrennt, dedupliziert global nach `ruleKey`, verwendet erfolgreiche/aktive Mappings wieder und plant fehlende beziehungsweise zuvor fehlgeschlagene Regeln ueber dieselbe auf zwei parallele Retrieval-/Modellpipelines begrenzte Queue wie Einzelaktionen. Atomare deterministische Claims verhindern doppelte Modellaufrufe. Migration 027 speichert nur den projektgebundenen normalisierten Filter-/Timeslot-Snapshot, Hash, Idempotenz, Status und Aggregatfortschritt; globale Mappingzeilen bleiben autoritativ. Das Dialogfenster zeigt Treffer und Fortschritt, bindet laufende Batches an den beim Start erfassten Filterstand und erzeugt ausschliesslich Vorschlaege; Accept/Reject bleibt manuell in Work. Filterwerte, Occurrence-Assets, Pfade, Mandanten- und Reviewdaten gelangen nicht in Retrieval oder LiteLLM. Die fruehere Batch-Zurueckstellung ist fuer diesen manuellen gefilterten Lauf ausdruecklich aufgehoben; die repraesentative Retrievalbewertung bleibt offenes Qualitaetsrisiko. Keine Scannerverarbeitung, kein Manifestbump und kein Reimport. Verifikation: `npm test` mit 1.315 bestandenen Tests und zehn uebersprungenen opt-in Integrationen, Local-only-/Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich (bestehender Bundlehinweis). Der synthetische regulatorische End-to-End-Integrationstest blieb ohne aktivierte lokale Abhaengigkeiten uebersprungen. Korrektur nach Anwendung von Migration 027: Eine nachtraeglich in dieselbe Datei aufgenommene reine Sortiersequenz verletzte die Migrationsimmutabilitaet und der Checksum-Schutz stoppte das Backend korrekt. 027 ist exakt auf den angewandten Stand ohne Sortiersequenz zurueckgesetzt und durch eine feste SHA-256-Regression (`d89055c3e723b09d8d8be7f4225bfd08442f0d66e4e0b4ea3aa62ae6209e9ee9`) geschuetzt; Repositoryabfragen verwenden wieder den bereits angelegten stabilen `created_at, id`-Index. Es gibt keine Migration 028 und keine neue Datenbankmutation. Nach freigegebenem WSL-Neustart wurden der gesunde kanonische Container, Port `127.0.0.1:5432`, Volume `assessor-2_0_assessor-postgres-data`, der identische Ledger-Checksum und das Fehlen von 028 read-only bestaetigt; der automatisch neu gestartete Backendprozess meldet HTTP 200 und `persistence=postgresql`. Kein Backup war fuer die Korrektur erforderlich, weil keine neue Migration ausgefuehrt wurde. ISO-27002-Mapping-Vertikalschnitt 2026-09-15 (Phase 13F, ausdruecklicher Nutzerauftrag): Die beiden lokal lizenzierten deutschen DIN-2024-PDFs werden serverseitig mit PDF.js und Positionsdaten in einen nicht eingecheckten Korpus-v2 ueberfuehrt. Passwortpflichtige, kopiergeschuetzte, textlose, uebergrosse oder strukturell unvollstaendige Dokumente scheitern geschlossen; ISO 27001 und 27002 muessen dieselben 93 Kontrollen mit 37/8/14/34 Themenkontrollen liefern. `assessor_regulatory_chunks_v2` enthaelt 705 mit lokalem BGE-M3 erzeugte, abschnitts- und kontrollsichere Chunks aus 558 Dokumenten, einschliesslich ISO-27001-Referenzen, Seiten-, Editions-, Parser- und Hashprovenienz; Sparse bleibt reserviert. Der Einzel-Finding-Dienst gruppiert 32 Dense-Treffer auf acht Kontrollen, bindet ISO-27001-Evidenz an, uebergibt nur die minimierte Public-Signal-Query und hoechstens 48.000 Zeichen ISO-Evidenz an das vorhandene Work-LiteLLM und akzeptiert ausschliesslich lokal validierte, evidenzgebundene JSON-Vorschlaege. Migration 025, beide Repositories und drei projektgebundene APIs speichern Runs und Accept/Reject-Entscheidungsereignisse append-only; Work zeigt den manuellen Ablauf inline mit Polling und Seitenbelegen. Ein realer synthetischer End-to-End-Test ueber kanonisches PostgreSQL, llama.cpp/BGE-M3, Qdrant und den freigegebenen LiteLLM-Gateway bestand einschliesslich Optimistic-Conflict und Cascade-Cleanup. Der laufende Entwicklungsserver wendete die additive Migration um 13:42 vor dem um 13:52 erstellten und verifizierten Backup automatisch an; beide neuen Tabellen waren leer. Diese Abweichung ist offen dokumentiert und wird nicht als Vorabbackup ausgegeben. Scannerverarbeitung blieb unveraendert; kein Manifestbump oder Reimport. Regulatory-RAG-Llama-Livebaseline 2026-09-15 (Phase 13F, Nutzerstart): Der lokal gestartete llama.cpp-Server Build 10472 meldet Health 200 und bedient BGE-M3 FP16 ueber den OpenAI-kompatiblen Endpoint. Die produktiv gebauten CLIs indexierten den eingecheckten ausschliesslich synthetischen EN/DE-Korpus mit sechs Dokumenten als sechs 1.024-dimensionale Chunks in den kanonischen Qdrant 1.19.1. Drei ausdruecklich sprachuebergreifende Smoke-Cases erreichten bei K=3 HitRate 1,0, Recall 1,0 und MRR 1,0; alle erwarteten Kontrollen standen auf Rang 1. Das belegt End-to-End-Verkabelung und grundlegende Sprachueberquerung, wegen nur drei klar getrennten Kontrollthemen aber keine produktive Retrievalqualitaet. Qdrant enthaelt sechs synthetische Punkte; PostgreSQL und Realdaten wurden nicht beruehrt. 1.285 Standardtests bestanden, acht optionale PostgreSQL- und ein optionaler Qdrant-Test uebersprungen; Local-only-/Designpruefung und beide Produktionsbuilds erfolgreich (bestehender Bundlehinweis). Ein repraesentativer autorisierter Korpus und unabhaengig gelabelter EN/DE-Satz bleiben fuer die reale Baseline erforderlich. Regulatory-RAG-Local-Embeddings 2026-09-15 (Phase 13F, Nutzerentscheidung): Die autorisierte Legacy-Collection `regulation_catalog_v1` wurde nach exakter Ein-Collection-Pruefung geloescht; der leere alte Qdrant-1.12.4-Container wurde entfernt, sein bisheriges Volume jedoch bewahrt. Der authentifizierte `assessor-2_0-qdrant-1` mit Qdrant 1.19.1 laeuft nun am kanonischen `127.0.0.1:6333`; Auth 401/200, gruene Collection und null Punkte sind bestaetigt. Fuer die lokale Dense-Entwicklung ist BGE-M3 mit llama.cpp festgelegt: multilingual, native 1.024 Dimensionen und damit passend zur Collection. Der Embeddingadapter erlaubt HTTP nur fuer Loopback, verlangt weiterhin einen Bearer-Key und lehnt Remote-HTTP ab. Ein neuer optionaler Request-Dimensionsschalter bleibt fuer einen spaeteren LiteLLM-Vergleich mit `text-embedding-3-large` standardmaessig aus, weil llama.cpp die native Modelldimension liefert. Das installierte llama.cpp Build 10472 ist vorhanden; ein BGE-M3-GGUF beziehungsweise dessen freigegebener Download und Serverstart fehlen noch. 1.285 Standardtests bestanden; acht optionale PostgreSQL- und ein optionaler Qdrant-Test uebersprungen, Local-only-/Designpruefung und beide Produktionsbuilds erfolgreich (bestehender Bundlehinweis). Keine PostgreSQL-Mutation, keine Realdateninspektion und kein Reimport. Regulatory-RAG-WSL-Liveabnahme 2026-09-15 (Phase 13F, Nutzerkorrektur): Docker Engine 29.7.2 und Compose 5.5.0 sind in WSL2/Ubuntu erreichbar. Der kanonische Container `assessor-2_0-postgres-1` ist gesund und bindet unveraendert `127.0.0.1:5432` mit dem kanonischen externen Volume; PostgreSQL wurde nicht gelesen oder mutiert. Da ein veralteter, unauthentifizierter Qdrant 1.12.4 aus dem separaten Compose-Projekt `assessor` Port 6333 und das nichtleere Collection-Label `regulation_catalog_v1` belegt, wurde er nicht gestoppt oder veraendert. Der neue authentifizierte `assessor-2_0-qdrant-1` mit Qdrant 1.19.1 wurde fuer die Abnahme auf Loopback-Port 6334 und dem getrennten rebuildbaren Volume gestartet. Ohne Key antwortet er 401, mit Key 200. Ein opt-in Produktioncode-Integrationstest erstellte die gruene Collection `assessor_regulatory_chunks_v1` mit Dense 1.024/Cosine, Sparse-Slot, neun Payloadindizes und einem synthetischen Punkt und pruefte Replace, Filter und Retrieval erfolgreich; sein reservierter synthetischer Korpus wurde danach geloescht und die Collection enthaelt wieder null Punkte. Der reale Ingestion-CLI-Lauf stoppte vor Provideraufruf und Qdrantmutation, weil die konfigurierte loopback-HTTP-Embedding-URL die verpflichtende HTTPS-Pruefung nicht besteht und lokal nicht erreichbar ist. 1.284 Standardtests bestanden; acht optionale PostgreSQL- und ein optionaler Qdrant-Test wurden im Standardlauf uebersprungen, der Qdrant-Test separat 1/1 bestanden. Local-only-/Designpruefung und beide Produktionsbuilds erfolgreich (bestehender Bundlehinweis). Kein Realdatenzugriff, keine PostgreSQL-Mutation und kein Reimport. Regulatory-RAG-Finding-Retrieval 2026-09-15 (Phase 13F, ausdruecklicher Nutzerauftrag): Die bestehende `UnifiedResultProjection` ist ueber eine backendinterne fail-closed Grenze an den `RegulatoryRetriever` angebunden. Nur katalogeigene oeffentliche Maester-/PingCastle-Regel-IDs, fest definierte oeffentliche Technikthemen und bekannte oeffentliche Toolnamen gelangen in die Embeddingquery; Rohtexte werden ausschliesslich lokal zur Themenklassifikation gelesen, waehrend Titel, Beschreibung, Empfehlung, Assets, Pfade, Mandanten-/Projekt-/Review- und Provenienzdaten nicht kopiert werden. Ohne oeffentliches Signal findet kein Retrieval statt. Ein begrenzter versionierter EN/DE-Evaluationsvertrag und `rag:evaluate` messen HitRate@K, Recall@K und MRR auf Kontrollebene und geben nur Aggregatmetriken aus. 1.283 synthetische Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; Local-only-/Designpruefung und Client-/Server-Produktionsbuild erfolgreich (bestehender Bundlehinweis). Kein API-/UI-Pfad, keine Datenbankmutation, keine automatische Mappingbehauptung und kein Reimport. Organisatorische Datenschutzfreigabe, autorisierter Korpus und reale Dense-Baseline bleiben offen. Regulatory-RAG-Grundlage 2026-09-15 (Phase 13F, ausdruecklicher Nutzerauftrag): PostgreSQL bleibt alleinige fachliche Quelle fuer Mandanten, Assessments, Scans, Findings, Ergebnisse und Reviews. Qdrant 1.19.1 ist als authentifizierter, rebuildbarer regulatorischer Suchindex in lokale und Deployment-Compose-Stacks aufgenommen. Ein versionierter plattformneutraler Chunkvertrag, deterministische Kontrolltextsegmentierung, ein abgesicherter OpenAI-kompatibler Adapter fuer ein explizit konfiguriertes mehrsprachiges Embeddingmodell, Qdrant-Collection-/Payload-Indexverwaltung, dichte gefilterte Suche, ein CLI-Ingestionpfad und getrennte Candidate-/Reranker-Schnittstellen bilden den minimalen Vertikalschnitt. Die Sparse-Vektorposition ist fuer spaetere Hybridabfrage reserviert, wird aber noch nicht als implementierte BM25-/Sparse-Suche ausgegeben. Finding-Query-Builder, automatische Zuordnung, LLM-Klassifikation, Confidence-Kalibrierung, Nutzeroberflaeche und persistierte Mappingprovenienz bleiben offen. 1.275 synthetische Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; Local-only-/Designpruefung und Client-/Server-Produktionsbuild erfolgreich (bestehender Bundlehinweis). Docker ist auf diesem Host nicht installiert; deshalb keine Compose-Livevalidierung, kein Qdrant-Start und kein echter Embedding-/Korpuslauf. Keine Scanner-, PostgreSQL- oder Realdatenmutation und kein Reimport. Work-LiteLLM-AI-Overview 2026-09-14 (Phasen 7/13C mit Phase 11, ausdruecklicher Nutzerauftrag): Client Info besitzt eine eigene `AI Overview`-Registerkarte fuer normale, gemischte und reine Defender-Timeslots. Eine explizite Generate-/Regenerate-Aktion liest den gesamten aktiven Timeslot ohne Source- oder Darstellungsfilter, verwendet unveraendert den versionierten `resultsToPrivacySafeExportJson`-Vertrag, bildet daraus einen kanonisch sortierten SHA-256-Input und uebergibt ausschliesslich diesen datensparsamen Inhalt serverseitig an das konfigurierte Work-LiteLLM. HTTPS-Pflicht, fest konfigurierte Ziel-URL, Redirectablehnung, Bearer-Secret nur im Backend, Timeout, Antwortgroesse, objektgrenzenbasierte hierarchische Chunks, maximal 64 Aufrufe und lokale Schema-/Quell-ID-Pruefung begrenzen die externe Verarbeitung. Migration 024 und beide Repository-Implementierungen speichern append-only Runs mit eindeutiger Timeslot-Idempotenz, Lifecycle, Lease, Versions-/Hash-/Modellmetadaten und ausschliesslich dem validierten Endergebnis; Browser, Export und Logs erhalten weder API-Key noch Providerantworten oder Zwischenprompts. Gespeicherte Ergebnisse bleiben bei deaktivierter Generierung lesbar und werden bei Input-, Modell-, Prompt- oder Schemadrift als veraltet markiert. AI-Ausgaben sind rein beratend und veraendern keine Scores, Findings, Reviews, Imports oder Accepted-Risk-Daten. 1.262 synthetische Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; Local-only-/Designpruefung und Client-/Server-Produktionsbuild erfolgreich (bestehender Bundlehinweis). Die lokale Secretdatei enthaelt Modus, HTTPS-Work-URL, Modell und Key; ein minimaler synthetischer Workstation-Request erreichte den Gateway, wurde jedoch mit HTTP 401 abgewiesen, ohne den Providerbody auszulesen oder auszugeben. Docker ist auf diesem Ausfuehrungshost nicht verfuegbar; daher wurden weder kanonisches PostgreSQL-Backup noch Anwendung von Migration 024 oder PostgreSQL-Integration ausgefuehrt. Credentialfreigabe, erfolgreicher synthetischer Workstation-/Server-Liveaufruf und Migration bleiben Betriebsabnahme. Keine Realdateninspektion und kein Reimport erforderlich; Phasenstatus unveraendert. 2026-09-29 - Phase 7 / produktiver Management Report mit Heatmap und Ergebnisbalken (2.9.1, umgesetzt und fokussiert verifiziert): Die bestehende Client-Info-Aktion `Management Report` erzeugt fuer den gewaehlten Kunden und Timeslot jetzt den faktenbasierten HTML-Bericht aus der gemeinsamen Reportprojektion. Der alte Mixed-Method-Score, Donut, Domain-Spine, Priority-Finding-/Scannerlisten, Konvergenz, Massnahmen und Source Overview entfallen nur aus Report A; Report B bleibt technisch. Der Bericht zeigt erfasste DC, bewertete und abweichende Ergebnisse, eine Heatmap des Abweichungsanteils und die zusaetzlich vom Nutzer gezeigte Pass-/Abweichungs-Grafik mit Pass Rate und Stueckzahlen je Security Domain. Unbewertete Bereiche erhalten keine Prozentzahl; GPO-Ergebniszeilen und Policy-Vergleiche bleiben getrennte Zaehleinheiten. Keine LLM-, Internet-, Zeitfortschreibungs- oder Business-Risikoableitung. Der separate Dummy-HTML-Entwurf und sein Download-ZIP enthalten dieselbe zweite Grafik; die Produktionszahlen sind dynamisch, der Dummy-Entwurf bleibt ein gespeicherter Beispielstand. `docs/REPORT_STRATEGY.md` haelt die explizite Abloesung des frueheren Report-A-Inhaltsvertrags fest. Entscheidung: Patchversion 2.9.1 fuer die rueckwaertskompatible Export-Darstellung; keine Projektions-, API-, Persistenz-, Import- oder Datenbankaenderung. Verifiziert: 13 fokussierte Renderer-, Client-Info-Klickpfad- und UI/API-Versionsvertragstests, beide Produktionsbuilds, Design- und Local-only-Pruefung sowie `git diff --check`. Risiko/Abnahmegrenze: Die Security-Domain-Zuordnung bleibt die bestehende heuristische Zuordnung; die Grafik ist keine Risiko- oder Schutzgradbewertung. Eine visuelle Browserabnahme des produktiv heruntergeladenen HTML steht aus; der Phasenstatus wird nicht als neu abgeschlossen markiert. Nachpruefung 2026-09-30 vor dem Release-Commit: Vollsuite 1645 bestanden, 14 uebersprungen, 7 Fehler in 6 Dateien; dieselben 7 Fehler treten auf dem vorherigen Commit ohne 2.9.1 identisch auf und sind damit bestehend, nicht durch 2.9.1 verursacht. Client- und Serverproduktionsbuild bestanden. 2026-09-29 - Phase 7 / faktenbasierte Management-HTML mit Heatmap: Auf ausdrueckliche Nutzerkorrektur zeigt reports/management-dummy-fakten-heatmap-2026-09-29.html nur heute vorhandene Dummy-Reportwerte (ein erfasster DC; 998 bewertete, davon 579 abweichende Ergebnisse; neun Security-Domain-Zuordnungen einschliesslich Nicht zugeordnet). Die Heatmap kodiert ausschliesslich den Anteil abweichender bewerteter Ergebniszeilen je Bereich, nicht Risiko oder Schwere; GPO-Ergebniszeilen und gesonderte Policy-Vergleiche sind sichtbar als unterschiedliche Zaehleinheiten bezeichnet. Kein Mixed-Method-Score, keine scannerbezogene Rangliste, keine erfundenen Szenarien, Business-Auswirkungen oder Zeitfortschreibung. Statische Pruefung: neun Tilewerte und Farbstufen korrekt, Summen 579/998, lokale Assets vorhanden, keine Skripte. Dies ist ein separater HTML-Darstellungsentwurf aus bereits gespeicherten Dummy-Exportzahlen, keine produktive Generatoraenderung und kein frischer Datenbankabzug. Produktversion unveraendert; visuelle Browserabnahme wegen lokaler URL-Richtlinie offen. 2026-09-29 - Phase 7 / manuell redigierter Management-Brief zum freigegebenen Dummy: Nach Nutzerentscheidung, vorhandene Dummy-Befunde fachlich zu verdichten, wurde reports/management-dummy-managementbrief-2026-09-29.html als neuer einseitiger HTML-Entwurf erstellt. Der Brief nutzt das zuletzt gewuenschte neutrale ASSESSOR-Layout, trennt je Risikobereich Beobachtung, moegliche Betriebswirkung und offenen Nachweis und verzichtet auf Mischscore, Domain-Balken, Toolnamen, Findinglisten, erfundene Fristen und Fortschrittsbehauptungen. Die Aussagen zu geschuetzten AD-Rechten, Admin-Aktivitaet, Zertifikatsdiensten, einem erfassten DC, zuletzt gemeldetem Backupdatum und Cloud-Zugriffsschutz beruhen auf den zuvor gesicherten Dummy-Befunden; kritische Dienste, OT-Abhaengigkeiten, tatsaechliche Ausnutzung und Wiederherstellbarkeit bleiben offen. Dies ist manuelle Berichtserstellung und belegt noch keine entsprechende automatische ASSESSOR-Funktion. Statische HTML-/Daten- und lokale Assetpruefung bestanden (ein Blatt, drei getrennte Risikobereiche, keine Scanner-/Score-/Zeitvorgaben); Browser-Sichtpruefung bleibt wegen der lokalen URL-Sicherheitsrichtlinie offen. Produktive Report-Erzeugung und Produktversion unveraendert. 2026-09-29 - Phase 7 / Management-Report-Machbarkeitsansicht: reports/management-dummy-live-moeglich-2026-09-29.html zeigt im Look des zuletzt erarbeiteten Entwurfs ausschliesslich bereits vorhandene Report-Projektionsdaten aus dem zuvor erzeugten produktiven Dummy-Export (Projekt/Domaene, ein erfasster DC, 998 bewertete und 579 abweichende technische Ergebnisse, Reviewstatus nur soweit vorhanden). Es gibt keinen Mixed-Method-Score und keine manuell erfundenen Risikoszenarien, Business-Auswirkungen, Restaurierungsannahmen oder aktuellen Zustandsbehauptungen. Fehlende Business-/OT-Abhaengigkeiten und fehlende Szenarioregeln sind als Aussagegrenze sichtbar. Dies ist ein separater statischer HTML-Darstellungsentwurf, keine neue produktive Generatorfunktion und kein frischer Datenbankabzug. Statische Pruefung: lokale Assets und HTML-Struktur gueltig, Werte mit dem bestehenden Dummy-Export abgeglichen, keine Toolnamen oder Skripte. Produktive Report-Erzeugung und Produktversion bleiben unveraendert; visuelle und fachliche Abnahme offen. 2026-09-29 - Phase 7 / Management-Report-Arbeitsentwurf, Cloud-Pruefstatus aus Managementseite entfernt: Die Balkengrafik zur Auswertbarkeit importierter Cloud-Pruefungen lieferte keine eigenstaendige betriebliche Aussage und wurde aus Seite 1 der separaten Revision entfernt. Die unvollstaendige Pruefbasis bleibt einmal als Aussagegrenze direkt beim Cloud-Risiko auf Seite 2 genannt. Der Bericht behauptet aus der Testanzahl weder Schutzgrad noch Fortschritt. Produktive Report-Erzeugung und Produktversion unveraendert; visuelle Abnahme weiterhin offen. 2026-09-29 - Phase 7 / Management-Report-Arbeitsentwurf, Zeitbezug und Pruefstatus korrigiert: Die fruehere Grafik rechnete das zuletzt gemeldete Backupdatum vom 27.05.2026 bis zum Berichtsdatum fort und suggerierte damit ohne Nachweis eine 125 Tage andauernde fehlende Sicherung. Die korrigierte, separat gespeicherte Fassung reports/management-dummy-2026-09-29-revision.html zeigt nur die Ist-Angaben der Erhebung (ein erfasster DC, zuletzt gemeldetes Backupdatum). Die zweite Grafik heisst nun Auswertbarkeit der Cloud-Pruefungen und trennt 147 bewertete, 169 nicht ausgefuehrte und zwei weitere unbewertete Ergebnisse; sie ist keine Schutz- oder Umgebungsabdeckungsquote. Der zuvor gelieferte Berichtspfad wurde zwischenzeitlich anderweitig geaendert und deshalb nicht ueberschrieben. Keine Aenderung an produktiver Report-Erzeugung oder Produktversion; fachliche und visuelle Abnahme bleiben offen. 2026-09-29 - Phase 7 / Management-Report-Arbeitsentwurf 0.3, Nutzerkorrektur: Der Bericht ist ein ASSESSOR-Bericht, der die Scanner nur als Datenquellen nutzt, und eine Information fuer das Management, keine Anleitung. `reports/management-dummy-2026-09-29.html` nennt daher keine Werkzeuge und keine Scanner-Finding-Titel, enthaelt keine Etappen, Zeithorizonte, Owner oder Empfehlungslisten und verzichtet auf Kommentar- und Rechtfertigungssaetze. Aufbau: Kopfdaten, Zusammenfassung mit Kennzahlen, Gesamtbewertung mit drei statischen SVG-Grafiken (Ergebnis der 998 auswertbaren Pruefungen, Pass Rate und Abweichungen je Security Domain), sieben thematische Feststellungen mit Sachverhalt und Einordnung, Bewertungsgrundlage mit der verbindlichen GPO-/Mixed-Method-Formulierung. Die Optik der Fassung 0.2 ist nach Nutzerangabe die visuelle Zielvorgabe und wurde beibehalten. Zahlen stammen aus dem produktiven Dummy-Management-Export vom selben Tag. Browserpruefung: 3 Grafiken, 7 Feststellungen, kein horizontaler Ueberlauf, keine externen Ressourcen. Produktive Report-Erzeugung, `docs/REPORT_STRATEGY.md` und Produktversion unveraendert; fachliche Abnahme offen. Ersetzt die Fassungen darunter. 2026-09-29 - Phase 7 / Management-Report-Arbeitsentwurf, fachliche Nutzerkorrektur: Der separate Dummy-HTML-Bericht ist jetzt eine zweiseitige, sachliche Managementeinordnung statt einer Scannerliste mit Massnahmen-Roadmap. Toolnamen, Einzel-Finding-IDs, angenommene Owner, Aufwaende und fixe Fristen wurden aus dem Bericht entfernt. Die zwei Grafiken zeigen nur belegte Groessen: 125 Tage seit der zuletzt erfassten AD-Sicherung (27.05. bis 29.09.2026) und die Cloud-Pruefabdeckung mit 147 bewerteten von 318 Pruefungen; 169 von 318 wurden nicht ausgefuehrt. Risiken werden als moegliche betriebliche Folgen beschrieben; Kompromittierung, Restore-Faehigkeit sowie konkrete Dienste-/OT-Abhaengigkeiten bleiben ausdruecklich offen. Statische Pruefung: zwei Seiten, zwei Grafiken, lokale Assets vorhanden, Zahlen und Links konsistent. Eine visuelle Browserpruefung durch den Agenten war wegen der Browser-URL-Sicherheitsrichtlinie fuer lokale Dateien nicht moeglich. Die produktive Report-Erzeugung und Produktversion bleiben unveraendert; fachliche und visuelle Abnahme sind offen. Diese Korrektur ersetzt die Inhaltseinteilung des frueheren separaten Entwurfs vom selben Tag, nicht die produktive Reportstrategie. 2026-09-29 - Phase 7 / Management-Report-Arbeitsentwurf, Lesbarkeitskorrektur: Nach dem ersten Oeffnen zeigte der Quelltext lange Base64-Zeilen fuer Schrift und Logo. Beide Assets liegen jetzt als lokale Dateien unter `reports/assets/`, waehrend die HTML-Datei relative Pfade verwendet. Der Bericht bleibt ohne Netzwerkressourcen und kann als Paket aus HTML und Assets bearbeitet und weitergegeben werden. Keine Aenderung an der produktiven Report-Erzeugung oder Produktversion; fachliche Abnahme bleibt offen. 2026-09-29 - Phase 7 / Management-Report-Arbeitsentwurf fuer Dummy (eigenstaendige HTML-Datei, fachliche und visuelle Abnahme offen): `reports/management-dummy-2026-09-29.html` wurde als selbsttragende, statische Entscheidungsvorlage aus der gespeicherten Report-Projektion des freigegebenen Dummy-Projekts erstellt. Entscheidung fuer diesen Entwurf: Seite 1 nennt die ungeklärten AdminSDHolder-/Admin-Aktivitaets-Findings und drei begruendete Risikoszenarien ohne Mischscore; Seite 2 traegt Evidenz-IDs, angenommene Owner/Fristen/Aufwaende, Kontrollen und Restrisiken; der Anhang trennt Scanner-Findings und GPO-Zaehleinheiten. Die produktive Management-Overview-Erzeugung und `docs/REPORT_STRATEGY.md` bleiben unveraendert; dieser Entwurf ist keine Freigabe eines neuen Exportvertrags. Verifiziert: 8 HTML-Abschnitte, alle internen Evidenzlinks aufloesbar, keine externen Ressourcen und keine Registry-Pfade im sichtbaren Text; Browser-Vorschau geprueft. Risiken/offene Abnahme: Kritische Business Services und OT-Abhaengigkeiten, Change-Erklaerung, Gegenkontrollen, formelle Risikoakzeptanz und Beschlussdaten sind im Import nicht belegt; das Backupdatum ist 27.05.2026 (am Entwurfsdatum 125 Tage alt), waehrend die 55 Tage nur der alte PingCastle-Scantext sind. Kein Produktversionsschritt, weil nur ein separat bearbeitbarer Berichtsentwurf ohne Aenderung des Anwendungs-Vertrags entstanden ist. 2026-09-29 - Client-Info-Umgebungskacheln (Phase 7, Darstellung umgesetzt; visuelle Abnahme offen): Die sechs vorhandenen Kacheln bleiben bei Vollbildbreite in einer Rasterzeile, haben gleiche quadratische Geometrie und laufen bei schmaleren Fenstern innerhalb des Rasters horizontal statt nach unten umzubrechen. Jede Kurzansicht zeigt hoechstens vier quellengestuetzte Fakten, in schmalen Quadraten zwei; alle weiteren Werte und Quelltabellen bleiben ueber den jeweiligen Results-Button zugaenglich. Die Betriebs- und Scandaten wurden nicht veraendert. Acht fokussierte Tests einschliesslich synthetischem Results-Klickpfad, die Designpruefung, der Produktversionsvertrag und beide Produktionsbuilds bestanden. Risiko/Abnahmegrenze: Der lokale Browser zeigte sechs gleich grosse Quadrate in einer Zeile; bei 260px Breite verdeckten lange Fakten vor der Nachkorrektur teilweise die zweite Faktenzeile. Die daraufhin ergaenzte Containerregel ist gebaut und getestet, aber ein erneuter sichtbarer Dark-/Light-Vergleich bei normalem Vollbildzoom ist wegen stockender Client-Navigation noch ausstehend. Die bestehende Version 2.9.0 wird wegen dieser offenen UI-Abnahme und weiterer paralleler, noch nicht gemeinsam freigegebener Arbeitsstaende nicht fuer diese einzelne Aenderung erhoeht. Der Phasenstatus bleibt unveraendert. 2026-09-28 - Phase 13 / Result DB ohne Umgebungs-Fingerabdruecke (2.9.0, umgesetzt und verifiziert): Eine Threat-Model-Pruefung des JSONL-Exports zeigte zwei Probleme. Erstens ein Vertragsverstoss: Die Offenlegungsprojektion kopierte alle Felder, sodass `reviewStatus`, `reviewDisposition` (inklusive akzeptierter Risiken) und `reviewPriority` in Result DB API und JSONL gelangten. Zweitens erlaubten exakte Anzahlen, Zeitangaben, GPO-Istwerte mit Principals, Umgebungsbeobachtungen (DC-Anzahl, Funktionsebenen, Scores) und konkrete Baseline-Releases, die Umgebung wiederzuerkennen und den Angriffsaufwand zu kalibrieren. Neue verbindliche Nutzeranforderung: Die Result DB muss datenschutzkonform sein und darf keine Angriffsanleitung bieten; Exporte koennen an lokale und externe LLMs sowie Dritte gehen. Diese Anforderung ersetzt ausdruecklich die Entscheidung vom 2026-09-25, Istwert, Scannerwerte und Baseline-Release vollstaendig offenzulegen (AGENTS.md aktualisiert). Umsetzung: Disclosure Policy 3.0.0 mit kompilergepruefter Feldklassifikation `RESULT_DB_FIELD_DISCLOSURE`; Review-Spalte und Review-Facetten aus der Result DB entfernt; GPO nur noch mit Setting-ID, Sollwert, Relation und Baseline-Familie, zusammengefassten identischen Baseline-Erwartungen und ohne Quellenanzahl; Anzahlen, Datum, Zeit und Dauer in Scannerprosa ausser CIS-CAT als `[count]`/`[date]`/`[time]`/`[duration]` bei erhaltenen oeffentlichen Kennungen; Zusatzbeobachtungs-Policy 2.0.0 nur mit binaeren Konfigurationszustaenden; JSONL-Schema 3.0.0 mit `generatedOn` (nur Datum), datiertem Dateinamen und Kennzeichnung `confidential-security-posture`. Work und interne Analyse behalten alle Originale; keine Import-, Schema-, Persistenz- oder Bestandsmutation und kein Reimport. Risiko/Grenze: Oeffentliche Zahlenschwellen in Nicht-CIS-Empfehlungstexten (etwa Passwortlaengen) werden ebenfalls zu `[count]`, weil statischer und umgebungsbezogener Scannertext ohne Katalogbeleg nicht sicher unterscheidbar ist; das LLM verliert zudem Istwert und Mengen. Die inhaltsfreie Live-Pruefung gegen den laufenden Backend-Stand 2.9.0 mit der kanonischen PostgreSQL (nur Zaehler und Wahrheitswerte, keine Inhalte) fand drei weitere Punkte, die behoben sind: GPO-Titel aus Registry-Pfaden (`Software\Policies`) wurden seit Policy 2.5.0 faelschlich als `DOMAIN\Konto` in Principal-Platzhalter verwandelt (10.367 Zeilen; Titel behalten jetzt wie die Regel-ID ihre technische Identitaet), dokumentierte Microsoft-Principals im Sollwert nutzen jetzt die zentrale Liste `src/shared/windows-codes.ts` samt `NT SERVICE`/`NT VIRTUAL MACHINE`/`Window Manager`/`Font Driver Host`, und kompakte Dauerangaben (`24h`, `30d`) werden ersetzt. Live-Ergebnis: 14.726 Result-DB-Zeilen ohne Review-, Istwert-, Quellenanzahl- oder Identitaetsfelder, keine freistehende Ziffer in Nicht-CIS-Scannerprosa, alle GPO-Baselines nur als Familie, keine Istwerte in Varianten, Umgebungszeilen nur boolesch, keine Review-Facette; der Einzelabruf per ID ueber das PostgreSQL-Repository (28 Zeilen, darunter 8 mit internem Reviewstatus) gibt keine zurueckgehaltenen Felder aus; die Oberflaeche zeigt 9 Spalten ohne Review-Spalte und -Filter und im GPO-Detail nur Sollwert, Relation und Baseline-Familie. Grenze: 6 Sollwerte enthalten je einen nicht gelisteten Principal (SID-Muster `S-1-5-99-*`), der fail-closed als Platzhalter bleibt. Der PostgreSQL-Integrationstest wurde nicht ausgefuehrt, weil er Migrationen und Loeschungen ausfuehrt und laut `docs/POSTGRESQL.md` nie auf die produktive Datenbank zeigen darf, waehrend AGENTS.md eine zweite ASSESSOR-Datenbank verbietet. Tests: synthetische Fingerabdruck- und Ziffernwaechter-Tests fuer Projektion und JSONL, Baseline-Familie, Zusammenfassung der Varianten, Zusatzbeobachtungen, lokales Repository, angepasste PostgreSQL-Integrationserwartung (nicht gegen die kanonische Datenbank ausgefuehrt) und die Nutzerinteraktion `Export JSONL` in der Result DB. Fokussierte Tests, Typpruefung, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild bestanden; die volle Suite zeigt nur die 7 bereits auf dem unveraenderten Stand d8f131d fehlschlagenden Tests in Client-Info-/GPO-/Timeslot-Dateien. Nachtrag 2026-09-28 (Disclosure Policy 3.1.0, gleicher unveroeffentlichter Stand 2.9.0): Die Nutzerpruefung des Dummy-Exports (Policy 3.0.0; Dummy ausdruecklich zur Inhaltspruefung freigegeben) bestaetigte die Schliessung der Lecks und fand Ueberschwaerzung. Behoben: `[count].` statt Schrittnummern, Hersteller-Schwellenwerte im Empfehlungsfeld (Titel und Beschreibung bleiben voll geschwaerzt), CIS-Nummern und `Rule`-Verweise als `[ip]` (IPv4 nur noch alleinstehend, nie Teil laengerer Punktfolgen oder dokumentierter Bereichsgrenzen) sowie oeffentliche Richtlinien-/Registry-Pfade, umgebrochene Pfadzeilen und dokumentierte Windows-Autoritaeten als `[account]` (Dummy vorher 1.443 laut Nutzerauswertung, jetzt 1); der Handling-Hinweis nennt die erhaltenen oeffentlichen Baseline-Erwartungen. Live ueber alle Clients (nur Zaehler): 0 `[ip]`, 1 `[account]` (Named Pipe `SQL\QUERY`, bewusst fail-closed), 0 zerstoerte Listenmarker, keine freistehende Ziffer in Nicht-CIS-Titeln/-Beschreibungen. Offen: oeffentliche Domains, URLs und Graph-Berechtigungsnamen (`Directory.ReadWrite.All`) werden weiterhin zu `[domain]`/`[url]`; die Versionsfelder bleiben als Verfahrens- und Kompatibilitaetsangabe erhalten. Nachtrag 2 (Disclosure Policy 3.2.0, weiterhin unveroeffentlichter Stand 2.9.0): Die zweite Nutzerpruefung bestaetigte, dass meine vorherigen Dummy-Zaehler ungefiltert waren (4.760 statt 579 Abweichungszeilen) und die Listenmarker-Korrektur nur Zeilenanfaenge erfasste. Behoben im Exportumfang `deviation:true`: `[count].` in Inline-Aufzaehlungen 172 -> 1 (verbleibend eine einzelne Nummer ohne Folge), `[url]` 263 -> 2 (Platzhalter-Host `IP`), `[domain]` 58 -> 1 (Drittanbieter-Domain in einem Codebeispiel), `[account]` 0; ausserdem Zielwerte `set to N` in Empfehlungen, `adminCount=1`, Abschnittsnummern `CISA N.`, `Microsoft 365` und die Leerzeichen-Bereinigung vor `.onmicrosoft.com`. Die inhaltsfreie Pruefung ueber alle Clients fand 15 verbliebene `onmicrosoft.com`-Nennungen, alle generischer Maester-Text MT.1074 (`the .onmicrosoft.com domain`), kein Tenant-Name; 0 E-Mail-Adressen, 0 `[ip]`, keine Review- oder Istwertfelder. Nachtrag 3: Eine selbst eingefuehrte Luecke ist behoben: Links wurden erst nach dem Einsetzen von `[id]` bewertet, sodass ein Portal-Link an `[id]` abbrach und der Rest (etwa `/resourceGroups/`) im Klartext blieb. Links werden jetzt zuerst und als Ganzes bewertet; GUIDs, Platzhalter und Azure-Ressourcenpfade machen einen Link nicht oeffentlich. Synthetischer Regressionstest vorhanden. Nachtrag 4 (Phase 11/13, Migration 024 nach verifiziertem Backup `before-result-db-materialization-20260928.dump`, 388 TOC-Eintraege, SHA-256 im Manifest): Auf verbindliche Nutzeranforderung wird die Result DB beim Erzeugen geprueft und gespeichert (WYSIWYG fuer UI, API, Einzelabruf und JSONL) und traegt pro Zeile ein inhaltsfreies Protokoll; die Ansicht zeigt den Pruefstand und `Open original in Work`. Ein Identitaetswaechter pro Client (1.3.0) entfernt die eigenen Namen des Clients; drei Fehlalarmquellen (Asset-Kategorien, `*.name`-Umgebungsfelder, Registry-Pfade aus GPO-Werten) wurden an Dummy und ueber inhaltsfreie Zaehler gefunden und behoben. Live: 14.726 Zeilen, 0 Zeilen mit gesperrten Feldern, Aufbau rund 11 s nach Start. Ebenfalls auf Nutzerentscheidung: Maester zeigt die Ergebnisaussage (`ResultDetail` bzw. `Result` neben `Status`) wieder wortgetreu als `Problem`, live an Dummy bestaetigt. Der PostgreSQL-Integrationstest wurde nicht ausgefuehrt (keine erlaubte Testdatenbank). Die volle Suite zeigt nur die 7 bereits auf d8f131d fehlschlagenden Tests. Nachtrag 5 (2026-09-29, Disclosure Policy 3.3.1, weiterhin unveroeffentlichter Stand 2.9.0): Eine externe Bewertung des Dummy-Exports (Policy 3.2.0) fand drei Punkte, die am Code bestaetigt und behoben sind. Erstens verriet die Protokollliste `withheldFields`, bei welchen Zeilen der Client Reviewstatus, -prioritaet, -verantwortliche oder Faelligkeit gepflegt hatte; die Review-Felder werden jetzt zurueckgehalten, ohne im Protokoll zu erscheinen. Zweitens wurde `score` je Finding offengelegt; Purple-Knight-Indikatorscores und berechnete PingCastle-Punkte skalieren mit den betroffenen Objekten und werden jetzt zurueckgehalten. Drittens Ueberschwaerzung: `Limited` gilt nicht mehr als Rechtsform (Rechtsformen nur noch in registrierter Schreibweise), Versionen direkt am Namen (`Tls1.2`, `v1.0`), `Windows 95`, `2012-R2` sowie Verweise `step N`, `Option N` und `Page N` bleiben, dokumentierte Microsoft-GUIDs aus dem oeffentlichen Katalog (ASR-Regeln, erstanbieterseitige Anwendungs-IDs, eingebaute Rollenvorlagen, gegen Microsoft Learn geprueft) bleiben, jede andere GUID bleibt `[id]`. Die gemeldete ID-Kollision `18.10.42.11.1.1` war kein Parserfehler: Import und Original tragen `18.10.42.11.1.1.1` und `.2`, aber die Offenlegung liess nur sechs Ebenen durch; CIS-Nummern behalten jetzt bis zu acht Ebenen. Bewusst unveraendert, weil verbindlich: Zahlen in Titeln und Beschreibungen bleiben geschwaerzt (etwa CISA-Verhaeltnis, MachineAccountQuota-Standard), der Trace bleibt Teil jeder Zeile und des JSONL, GPO-Vergleiche werden weiter einzeln gezaehlt. Live nach automatischem Neuaufbau (Dummy freigegeben): 579 Dummy-Abweichungszeilen mit 0 `[organization]`, 0 `[id]`, 0 doppelten CIS-IDs; ueber alle Clients 14.726 Zeilen, 0 mit `score`, 0 mit Review-Feldnamen. Synthetische Regressionstests fuer Projektion, Protokoll und die Nutzerinteraktion Zeilendetail/`Export JSONL` mit gespeicherten Zeilen; keine Schema-, Import- oder Originaldatenaenderung, kein Reimport. Nachtrag 6 (2026-09-29, Disclosure Policy 3.4.0, gleicher Stand 2.9.0): Auf Nutzerentscheidung behaelt das Empfehlungsfeld zusaetzlich dokumentierte Herstellerwerte (`set to N` innerhalb eines Satzes ohne weitere Zahl, `value is N`, `the number N`, `assign N`, `N as the Value`, `N for mode`, Attributfilter wie `admincount=1`, `zero (0)`, `N+`, `N methods` und `only N will be listed`); Titel und Beschreibungen bleiben voll geschwaerzt, beobachtete Anzahlen im Empfehlungsfeld bleiben `[count]`. Dummy: `[count]` im Empfehlungsfeld 15 -> 0 (18 vor der `Option N`-Korrektur) (Titel 17, Beschreibung 9 unveraendert). Inhaltsfreie Pruefung ueber alle Clients: 16 Regeln mit neu erhaltenen Werten, jede mit genau einem Wertesatz ueber alle Clients, in denen sie vorkommt; 5 Regeln kommen nur bei einem Nicht-Dummy-Client vor, alle mit oeffentlicher Regel-ID und Anweisungsform (`set ... to N`, Attributfilter), nicht inhaltlich geprueft. Die volle Suite zeigt neben den 7 bekannten Fehlschlaegen 3 weitere in `client-info-facts.test.tsx`, die aus parallelen, nicht von dieser Aenderung stammenden Client-Info-Anpassungen (`DashboardPanel.tsx`, `OperatingSystemInventory.tsx`, `ui-tokens.css`) folgen. 2026-09-26 - Phase 7 / Doppelte Client-Info-Fakten entfernt (2.8.7, umgesetzt und verifiziert): Der zuvor erprobte Work-artige Dashboardumbau wurde auf ausdruecklichen Nutzerwunsch vollstaendig zurueckgenommen. Die anschliessend beauftragte kleine Bereinigung behaelt alle bestehenden Kacheln, Positionen, Donuts, Domainverbindungen, CSS-Regeln und Results-Popups. Domain, Forest, beide Functional Levels und DC OS stehen in Domain Information; NetBIOS, Schema, Erstellungsdatum und Entra-Identitaet in Directory; Bestandszahlen bleiben in Data. Directory und Inventory zeigen identische Uebersichtsfakten nicht nochmals; ihre Results behalten saemtliche Kategorienwerte und Originaltabellen. Verglichen werden nur dieselben benannten Fakten mit gleichem Anzeigewert, nie unterschiedliche Fakten allein wegen gleicher Werte. Abweichende oder nicht numerische Angaben bleiben erhalten; unbekannte Werte bleiben unbekannt. Entscheidung: Patchversion 2.8.7 fuer die rueckwaertskompatible Darstellungsbereinigung, keine Daten-, Import-, Scoring-, API- oder Persistenzaenderung. Verifikation: 52 fokussierte Tests einschliesslich befuellter/leerer Datenlage, nicht numerischer DC-Angabe, tatsaechlicher Directory-/Inventory-Results-Klickwege, Posture-Verbindungen und UI-/API-Versionsvertrag; beide Produktionsbuilds, Design-/Local-only- und Diffpruefung bestanden. Synthetische Light-/Dark-Browserpruefung bestaetigt 14px/16px Rollen, 20px Inset und vollstaendige Results. Die gebaute CSS-Datei ist unveraendert. Grenze: unterschiedliche Darstellungen desselben Quellwertes werden vorsichtshalber nicht als identisch unterdrueckt. Phasenstatus unveraendert. 2026-09-26 - Phase 6/7 / Scanner-Einstieg im Report, CIS-Abschnitte und Work-Zusammenfuehrung (2.8.6, umgesetzt und verifiziert): Purple-Knight-Scanlaeufe mit Umfangsnamen (`for Active Directory`, `for Entra ID`, kombiniert) loesen ueber deklarierte Profil-`runNames` wieder auf das Purple-Knight-Profil auf; zuvor fielen sie in gemischtem Work auf generic zurueck (kein Problem/Next step, generische Status-, Facetten-, Result-Linker- und Graphlogik). Maester ohne Remediation-/HelpUrl-Feld zeigt den nativen Description-Abschnitt `#### Remediation action:` deklarativ (`firstRead.nextStepSection`) als Next step; der Text davor bleibt Hintergrund, jeder Text erscheint einmal. Eingefuehrte PowerShell-Befehle werden auch nach `script ...:` und bei Beginn mit Variablenzuweisung als Befehlsblock abgesetzt; exportbedingt flachgeklopfte Befehle erhalten nur in der Anzeige Zeilen an eindeutigen Grenzen (Anweisung nach schliessender Klammer, Pipeline), ausschliesslich Leerraum aendert sich. Purple-Knight-`Likelihood of compromise` endet vor dem angehaengten nativen `References`-Abschnitt (`firstRead.impactReferenceMarker`); die Referenztitel erscheinen an der Referenzposition, verlorene Absatzumbrueche werden angezeigt. CIS-Abschnittsnamen stammen ausschliesslich aus der gespeicherten Section-Score-Tabelle des eigenen Scanlaufs: `CIS Category` zeigt Nummer und Namen in numerischer Ordnung; Work-Ueberschriften ersetzen nach Nutzerkorrektur die fuehrende Regelnummer durch den Titel des umgebenden Abschnitts, die Nummer bleibt Source Rule ID, Plaketten zeigen Nummer plus Tooltip; widerspruechliche oder fehlende Titel lassen die Nummer stehen. Ursache fuer im Dummy nicht sichtbare Titel und Referenzen: Die Zusammenfuehrung von All Records mit GPO-Ergebnissen kopierte eine manuelle Feldliste. `withRebuiltLayout` uebernimmt jetzt alle Datensatzmetadaten und ersetzt nur Layoutfelder (id, index, title, fields, filled, meta, sourceFile, sourceSheet, highlighted); ein Schutztest mit synthetischem unbekanntem Zusatzfeld sichert kuenftige Metadaten. Dummy ueber den realen Work-Ladeweg (nur Zaehlungen): 411/411 CIS-Datensaetze mit Titeln und Referenzen, 160/160 benannte CIS-Kategorien, 92/92 getrennte Purple-Knight-Referenzabschnitte. Entscheidung: Patchversion 2.8.6 fuer rueckwaertskompatible Korrekturen und Verfeinerungen ueber gespeicherte Fakten; kein Reimport, keine Schema-, Import-, Scoring- oder Review-Aenderung. Verifikation: synthetische Regressionen fuer die tatsaechlichen Pfade (gemischtes Work mit und ohne GPO, Reader, Facetten, Kacheln, Zusammenfuehrung), Versionsvertragstests, beide Produktionsbuilds; Gesamtsuite 1.608 bestanden, 14 uebersprungen, dieselben sechs vorbestehenden fachfremden Fehler in GPO-/Security-Domain-/Result-DB-/Dashboard-Tests. Risiken/Grenzen: Security-Domain-Zuordnung bleibt stichwortbasiert (gesonderte Entscheidung offen); Pathfinder und Graphansichten zeigen CIS-Titel weiterhin mit Nummer; Purple-Knight-Referenztitel ohne Trennzeichen bleiben ein Textblock. Phasenstatus unveraendert. 2026-09-26 - Phase 7 / Finding-Reader-Abstaende (2.8.4, umgesetzt und verifiziert): Die gemeinsame Abschnittsregel umfasst jetzt div und section, damit GPO-Quellen und Baseline-Vergleich denselben Tokenabstand verwenden: space-4 (16 px) vor/nach der Trennlinie, space-2 (8 px) zwischen Feldueberschrift und Text. Redundante Abschlusslinien am letzten Quellblock und letzten Reader-Feld entfernt; Problem-/Next-step-Sonderabstaende bleiben erhalten. Synthetischer permanenter Klicktest prueft den gerenderten GPO-Reader vor, nach und nach erneutem Schliessen des Baseline-Disclosures. 44 gezielte Reader-/UI-/API-Versionsvertragstests, beide Produktionsbuilds, Design-/Local-only- und Diffpruefung bestanden. Synthetische Light-/Dark-Sichtpruefung bestaetigt jeweils rund 16 px Abschnittsabstand. Patchversion fuer die gemeinsame Darstellungskorrektur; keine Daten-, Import-, Bewertungs- oder Persistenzaenderung. Risiko: Die gemeinsame Regel wirkt auch auf weitere native Reader-Abschnitte; fokussierte Reader-Regressionen decken die bestehenden Faelle ab. Phasenstatus unveraendert. MITRE-Onlineaktualisierung und Originaldownload 2026-09-26 (Phase 7, Nutzererweiterung, umgesetzt und verifiziert): Data Hub bietet `Update from MITRE`, `Download from MITRE` und den weiterhin vorhandenen manuellen `Import JSON file` als Fallback. Update holt das aktuelle offizielle Enterprise-STIX-Bundle serverseitig, prueft Format und Versionsnummer und aktiviert nur eine neuere Version als gemeinsam gespeicherten kompakten Katalog. Die Datei liegt atomar im privaten Artefaktverzeichnis; kein PostgreSQL-Schema und keine Assessment-Daten werden geaendert. Download liefert die unveraenderte originale MITRE-Datei mit Versionsnamen und aktiviert sie nicht. Der App-Start laedt den gemeinsamen Katalog auch bei direktem Pathfinder-Einstieg; ein aktiver Graph aktualisiert sich im aktuellen Browser sofort. Ein lokaler manueller Override bleibt bewusst browserlokal und wird durch einen erfolgreichen Update-Klick im selben Browser entfernt; andere Browser behalten ihren eigenen Override. Entscheidung: rueckwaertskompatible neue Faehigkeit, daher Minorversion 2.7.0. Risiken/Grenzen: Onlineaktionen benoetigen Erreichbarkeit des offiziellen MITRE-GitHub-Repositories; die bereits gebuendelte v19.2 und der manuelle Import bleiben offline verfuegbar. Ein fremder Browser mit lokalem Override sieht die gemeinsame neue Version erst nach dessen Entfernung. Synthetische Service-/HTTP-/UI-Regressionen, 16 fokussierte MITRE-/Versions-/Data-Hub-Tests, Local-only- und Designpruefung sowie beide Produktionsbuilds bestanden. Ein Live-Updateabruf bestaetigte v19.2 als aktuellen Stand (`updated=false`); der Live-Download antwortete mit HTTP 200, Originaldateiname `enterprise-attack-v19.2.json` und 53.835.637 Bytes. App/Backend laufen mit 2.7.0 und dem kanonischen PostgreSQL; Health `ok`, Repository-Revision 496. Die Gesamtsuite meldete vor Korrektur eines neuen Test-API-Mocks 1.550 bestandene, 13 uebersprungene und sieben fehlgeschlagene Tests; der Mock-Test wurde anschliessend fokussiert erfolgreich erneut geprueft. Sechs vorbestehende fachfremde Fehler in GPO-/Security-Domain-/Result-DB-/Dashboard-Tests bleiben. Der dokumentierte Phasenstatus bleibt unveraendert. MITRE-ATT&CK-Katalog 2026-09-26 (Phase 7, umgesetzt und verifiziert): Der versionierte Standardkatalog wurde aus MITREs offiziellem Enterprise-STIX-2.1-Bundle v19.2 reproduzierbar erzeugt (15 Taktiken, 697 aktive Techniken, 1.057 aktive Entitaeten). Der Data-Hub-Upload ist wieder sichtbar und akzeptiert offizielles Enterprise-STIX sowie das bisherige kompakte ASSESSOR-JSON; Reset und aktive Versionsanzeige bleiben erhalten. Der geoeffnete Pathfinder uebernimmt Upload und Reset ohne Remount. Die bisherige v18.1-Datei wurde als nicht mehr genutzter Standard entfernt. Entscheidung: rueckwaertskompatible Patchversion 2.6.47, keine Scanner-, API-, Schema-, Datenbank- oder Bestandsdatenmutation. Risiken/Grenzen: Individuelle Matrizen bleiben browserlokale Overrides; ein vorhandener Custom-Stand kann daher weiter aelter als der neue Standard sein, wird aber als `Custom` kenntlich. Im schmalen Codex-Browser war die Karte per Accessibility sichtbar; ein vollbreiter visueller Dark-/Light-Vergleich wurde dort nicht abgenommen. 21 fokussierte MITRE- und UI-/API-Versionsvertragstests, Data-Hub-Layouttest, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden; laufendes Backend meldet 2.6.47, `ok` und `postgresql`, App HTTP 200. Gesamtsuite: 1.548 bestanden, 13 uebersprungen, sechs fachfremde bestehende Fehler in GPO-/Security-Domain-/Result-DB-/Dashboard-Tests. Der dokumentierte Status von Phase 7 (`abgeschlossen`) bleibt unveraendert; dieser Nachtrag ist separat verifiziert. Pathfinder-Details-Wertespalte 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die Faktenzeilen im rechten Detailsbereich nutzten eine automatische Wertespalte, die zusaetzlich auf 66 Prozent ihrer eigenen Breite begrenzt war und Woerter sowie Zahlen mit `overflow-wrap: anywhere` in einzelne Silben beziehungsweise Ziffern zerlegte. Die Werte erhalten jetzt eine feste flexible Spalte mit mehr Platz; mehrteilige Werte brechen nur an Wortgrenzen um, lange ungetrennte technische Kennungen bleiben in ihrem eigenen Bereich horizontal lesbar. Schriftrolle, Quellwerte und semantische Statusfarben bleiben unveraendert. Ein synthetischer Finding-Klicktest prueft die tatsaechlich angewandte Spalten- und Umbruchregel; 14 fokussierte Graph- und UI-/API-Versionsvertragstests, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Backend 2.6.46 am bestehenden kanonischen PostgreSQL gestartet; Health `ok`, App HTTP 200, Repository-Revision 496. Entscheidung: rueckwaertskompatible Patchversion 2.6.46 ohne Daten-, Import-, API-, Schema- oder Persistenzaenderung. Phase 7 bleibt offen. DB-Structure-Einfuehrung entfernt 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Der redundante `Database dictionary`-/`Relational schema`-Textblock oberhalb der Kennzahlen und der erklaerende Satz unter `Data flow` sind entfernt. Schema-Status, `Refresh schema`, Kennzahlen, Ablaufueberschrift, Tabellenbuttons, Popups und Schichtenverzeichnis bleiben erreichbar. Unbenutzte CSS-Regeln fuer beide Texte sind entfallen; die Aktionszeile bleibt am rechten Rand. Der synthetische Klicktest bestaetigt das Fehlen beider Texte bei weiter bedienbarem Refresh-Button und Ablauf; die vorhandenen Popup- und Dictionary-Klickpfade bestehen weiter. 17 fokussierte UI-/API- und Versionsvertragstests, Design-/Local-only-Pruefung sowie beide Produktionsbuilds bestanden. Backend 2.6.45 am bestehenden kanonischen PostgreSQL gestartet; Health `ok`, App HTTP 200, Repository-Revision 496. Entscheidung: rueckwaertskompatible Patchversion 2.6.45 ohne Daten-, Import-, API-, Schema- oder Persistenzaenderung. Phase 7 bleibt offen. DB-Structure-Tabellenpopup 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Ein Klick auf einen Tabellenbutton im Datenfluss oeffnet Spalten, Constraints und Beziehungen wieder im gemeinsamen verschiebbaren Tabellenpopup statt in einem Inline-Abschnitt unter dem Ablaufplan. Referenzierende Tabellen bleiben als Buttons im selben Fenster erreichbar; Schliessen und Escape beenden das Popup und lassen den Ablaufplan unveraendert. Das supersediert nur die Detailplatzierung der juengsten DB-Structure-Ablaufplanentscheidung; das getrennte Schichtenverzeichnis behaelt seine Offenlegung. Ein synthetischer Klicktest prueft Button, Popup-Inhalt, Tabellenwechsel im Popup und Escape; insgesamt 16 fokussierte UI-/API- und Versionsvertragstests, Design-/Local-only-Pruefung sowie beide Produktionsbuilds bestanden. Backend 2.6.44 am vorhandenen kanonischen PostgreSQL gestartet; Health `ok`, App HTTP 200, Repository-Revision 496. Entscheidung: rueckwaertskompatible Patchversion 2.6.44 ohne Daten-, Import-, API-, Schema- oder Persistenzaenderung. Phase 7 bleibt offen. Pathfinder-Extract-Path 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): `Extract` heisst nun `Extract Path`. Die Aktion benoetigt einen tatsaechlich ausgewaehlten Graphknoten und zeigt nur diesen Knoten, seine direkten Nachbarn und die direkt von ihm ausgehenden Kanten. Eine blosse Filterauswahl oder `Mark all` extrahiert keinen ganzen Graphen und erweitert den Pfad nicht ueber Nachbarn hinaus. `Exit Extract Path` stellt die vorherige Auswahl, Markierung und Kamera wieder her; die getrennte Zweigsemantik von `Mark all` bleibt bestehen. Dies supersediert die bisherige breite Zweigextraktion, ohne deren historische Entscheidung umzuschreiben. Ein synthetischer aktiver Klicktest prueft deaktivierte Extraktion ohne Knotenauswahl, Kategorie- und Finding-Pfad sowie Rueckkehr zum vollstaendigen Graphen; der reine Graphhelfer prueft die Grenze an gemeinsam genutzten Beziehungen. 22 fokussierte Tests einschliesslich UI-/API-Versionsvertrag, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Backend 2.6.43 am bestehenden kanonischen PostgreSQL gestartet; Health `ok`, App HTTP 200, Repository-Revision 496. Entscheidung: rueckwaertskompatible Patchversion 2.6.43 ohne Daten-, Import-, API-, Schema- oder Persistenzaenderung. Phase 7 bleibt offen. Pathfinder-Finding-Details 2026-09-25 (Phase 7, Nutzererweiterung, umgesetzt und verifiziert): Der rechte `Details`-Bereich zeigt fuer Finding-Knoten nun dasselbe Severity-Sechseck wie die Work-Kachel neben dem vollstaendigen Titel. Zusaetzliche, nur bei vorhandener Quelle sichtbare Fakten sind nativer Source status, Werkzeugname, exakte `Source Rule ID`, Kategorie und MITRE-ATT&CK-Kennungen; der bisherige abgeleitete Risikowert ist als `Graph risk` kenntlich. Relation-Knoten erhalten weder Finding-Sechseck noch Finding-Fakten. Die vollstaendigen Inhalte bleiben ueber `Open in Work` und `Results` erreichbar. Der synthetische aktive Pathfinder-Klicktest prueft High-Sechseck, Quellstatus, Regel-ID, Kategorie, Technik und den Relation-Gegenfall; 18 fokussierte Graph-/Filter- und UI-/API-Versionsvertragstests, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Backend 2.6.42 am bestehenden kanonischen PostgreSQL gestartet. Entscheidung: rueckwaertskompatible Patchversion 2.6.42 ohne beabsichtigte Daten-, Import-, API-, Schema- oder Persistenzaenderung. Phase 7 bleibt offen. Pathfinder-Text statt Graphkarten 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die frueheren `Off`-/`Labels`-/`Text`-Modi und die Hover-/Auswahlkarten im Graphen sind durch einen einzigen `Text`-Schalter ersetzt. Knotentext startet sichtbar und bleibt beim Klick auf einen Punkt sowie beim Abwaehlen, Markieren und Extrahieren in seinem gewaehlten Zustand. `Reset view` stellt den sichtbaren Text wieder her. Knoteninformationen und Aktionen erscheinen nur im rechten `Details`-Bereich; die Graphflaeche behaelt ihre Knoten, Kanten und kompakten Knotentexte. Die Kollisionsberechnung des standardmaessig aktiven Texts beachtet nur Knoten im sichtbaren Graphausschnitt. Dies supersediert ausdruecklich die Pathfinder-Graphkarten- und Labelmodus-Entscheidungen vom 2026-08-22; deren historische Eintraege bleiben dokumentiert. Ein synthetischer aktiver Graph-Klicktest prueft Standard, Auswahl/Abwahl, Detailbereich, Text-Toggle und Reset; 18 fokussierte Graph-/Filter- und UI-/API-Versionsvertragstests, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. App HTTP 200; Backend 2.6.41 am bestehenden kanonischen PostgreSQL gestartet. Entscheidung: rueckwaertskompatible Patchversion 2.6.41, keine beabsichtigte Daten-, Import-, API-, Schema- oder Persistenzaenderung. Phase 7 bleibt offen. Finding-Reader-Befehl lesbar 2026-09-25 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): Ein im ersten Remediation-Absatz ausdruecklich eingeleiteter PowerShell-Befehl lief bislang im Fliesstext weiter. Der Finding Reader zeigt den erklaerenden Satz und den vollstaendigen Befehl jetzt als getrennte, umbruchfaehige Lesebereiche. Die Originalzeichenfolge bleibt im Befehlsblock kopierbar; der gespeicherte Quellwert, seine Parameter und die bestehende Absatzgrenze zur aufklappbaren `Full remediation` bleiben unveraendert. Das verwendet die vorhandenen Theme- und Typografierollen in Light und Dark ohne neue Farbrolle. Ein synthetischer PingCastle-Reader-Test deckt genau diesen Klick-/Leseweg ab; 21 fokussierte Reader- und UI-/API-Versionsvertragstests, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Backend am kanonischen PostgreSQL auf 2.6.40 neu gestartet; Health `ok`, `postgresql`, Repository-Revision 471 unveraendert. Entscheidung: rueckwaertskompatible Patchversion 2.6.40 ohne Daten-, Import-, API-, Schema- oder Persistenzaenderung. Phase 7 bleibt offen. Tabellenzeilen-Markierungsblau 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die Lesemarkierung angeklickter Datenzeilen in nativen Tabellen und der Result DB verwendet nun in beiden Themes einen eigenen blauen Farbtoken fuer Kontur und transparente Flaeche. Dies ersetzt nur die gelbe Farbe der Tabellenzeile; Kachel-/Steuerelementauswahl bleibt gelb und Tastaturfokus behaelt seinen getrennten Token. Pass-/Fail- und Evidenzfarben sowie Klickaktionen bleiben erhalten. Der synthetische Klicktest prueft beide Tabellenarten, horizontales Scrollen und die blauen Stilrollen; 16 fokussierte Tabellen-, Design- und UI-/API-Versionsvertragstests, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Das Backend wurde am kanonischen PostgreSQL von 2.6.38 auf 2.6.39 neu gestartet; Health meldet `ok`, `postgresql` und die unveraenderte Repository-Revision 471. Entscheidung: rueckwaertskompatible Patchversion 2.6.39 ohne Daten-, API-, Schema- oder Persistenzaenderung. Phase 7 bleibt offen. Work-Quellenwechsel setzt Filter zurueck 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Beim Wechsel von `Source: Scan` in Work blieben zuvor Suche, Ergebnisstatus, andere Facetten, Record-/Pfadumfang oder `My Workspace` aktiv und konnten die neu gewaehlt Quelle leer erscheinen lassen. Die Auswahl setzt diese alten Einschraenkungen jetzt auf den bindenden Work-Standard `Deviation` samt Standardsortierung zurueck und wendet danach die neue Source-Auswahl an. Das gilt auch fuer `Source: Scan: All`; die Ansicht sowie Client und Timeslot bleiben erhalten. Eingehende Client-Info-/Pathfinder-Drilldowns behalten ihren bewusst gesetzten Kontext bis zu einem tatsaechlichen Quellenwechsel in Work. Ein synthetischer Test mit echtem AppProvider waehlt GPOs, setzt widersprechende Filter, wechselt zu Maester und zurueck auf All und prueft jeweils sichtbare Datensaetze sowie den vollstaendigen Filterzustand. 37 fokussierte Quellen-/Facettentests, UI-/API-Versionsvertrag, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Entscheidung: rueckwaertskompatible Patchversion 2.6.38; keine Daten-, API-, Import-, Schema- oder Persistenzaenderung. Grenze: Eine Source ohne Abweichungen hat unter dem bindenden Standardstatus `Deviation` weiterhin null Treffer; `Result Status: All` bleibt dafuer waehlbar. Phase 7 bleibt offen. Tabellenzeilen markieren 2026-09-25 (Phase 7, ausdruecklicher Nutzerwunsch, umgesetzt): Ein Klick in eine Datenzeile setzt pro Tabelle eine sichtbare Lesemarkierung ueber die gesamte Zeilenbreite, auch beim horizontalen Scrollen. Die gemeinsame Ereignisbehandlung erreicht native Tabellen in Work, Client Info und schwebenden Results-Fenstern sowie die zeilenbasierte Result DB; Tabellenkoepfe und Virtualisierungsplatzhalter bleiben ausgenommen. Die Markierung kombiniert die bestehende gelbe Auswahlrolle mit einer transparenten Toennung ueber der vorhandenen Zellenflaeche, sodass fachliche Pass-/Fail- und Evidenzfarben erkennbar bleiben. Zeilenaktionen und Links laufen weiter; das Work-Grid merkt die ausgewaehlte Datensatz-ID beim vertikalen Virtualisieren und trennt die Auswahl beim Blattwechsel. Die Regel steht dauerhaft in AGENTS.md. 42 fokussierte synthetische UI-/API-, Tabellen- und Klicktests, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Entscheidung: rueckwaertskompatible Patchversion 2.6.37, keine Daten-, API-, Import-, Schema- oder Persistenzaenderung. Risiko: Die frueheren acht fachfremden Fehler im Gesamttestlauf bleiben separat offen; eine Inhaltspruefung an realen Mandantendaten erfolgt gemaess Privacy-Regel nicht. Phase 7 bleibt offen. Donut-Bogenkante 2026-09-25 (Phase 7, erneute Nutzerkorrektur, umgesetzt): Der gestrichelte SVG-Kreis hinterliess am Start des Farbbogens bei 12 Uhr eine sichtbare schraege Kante. Alle Bildschirm-Donuts in Data Hub und Client Info, einschliesslich Score- und mehrteiliger Verteilungsringe, zeichnen den Anteil nun als gefuelltes Ringsegment mit exakt radialen, flachen Enden. Die neutrale volle Spur, die semantischen Farben, Anteile, Beschriftungen und Klickziele bleiben erhalten. Die zusaetzliche Lesbarkeitsmarkierung fuer Anteile unter 2 % beginnt jetzt ebenfalls genau am Segmentanfang. Ein synthetischer Mandantenauswahltest und Geometrietests decken 0, sehr kleine, 10-, 25- und 100-Prozent-Faelle ab; 38 fokussierte UI-, Interaktions- und UI-/API-Versionspruefungen sowie Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Der isolierte Browser-Sichttest konnte wegen der Browser-URL-Richtlinie nicht ausgefuehrt werden. Der Gesamttestlauf hatte acht weitere Fehler in bereits separat veraenderten Client-Info-, GPO-, Result-DB- und Reader-Bereichen; sie betreffen nicht die hier geaenderte Ringgeometrie und bleiben als offenes Risiko bestehen. Entscheidung: rueckwaertskompatible Patchversion 2.6.36, keine Daten-, Import-, Schema- oder Persistenzaenderung. Phase 7 bleibt offen. Client-Info-Donut ohne Innenrahmen 2026-09-25 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): Der `Deviations`-Donut in der `Data`-Kachel erbte im hellen Theme den neutralen Tile-Rahmen der allgemeinen Donut-Karte und zeigte dadurch ein zweites Rechteck innerhalb der bereits gerahmten Data-Kachel. Nur dieser verschachtelte Donut verwendet jetzt die transparente gemeinsame Segment-Rahmenrolle; die aeussere Kachel und der blaue Tastaturfokus bleiben erhalten. Synthetische Sichtpruefung in Light und Dark zeigt Titel, Ring, Wert und Interaktion ohne innere Kontur. Der vorhandene Client-Info-Results-Klicktest wurde auf die seit 2.6.31 verbindliche direkte Tabellendarstellung aktualisiert. 31 fokussierte Layout-, Interaktions- und UI-/API-Versionspruefungen, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Entscheidung: rueckwaertskompatible Patchversion 2.6.35, ausschliesslich Darstellung und Testpflege, keine Daten- oder Persistenzaenderung. Phase 7 bleibt offen. Client-Info ohne Import-Artefakte 2026-09-25 (Phase 7/13C, Nutzerkorrektur, umgesetzt und verifiziert): `Source text` war ein ASSESSOR-Steuerelement; `Tabelle 35` stammt aus dem generischen HTML-Ersatznamen. Die bisherige Filterung erfasste nur den Tabellennamen, waehrend Titel sowie Teilabschnitts-/Zeilenanzahl-Beobachtungen ihn erneut einblenden konnten. Alle Titelpfade der Client-Info-Results, einschliesslich nativer Popup- und Inline-Ziele, entfernen nun reine Tabellen-Ordnungsnummern und angehaengte generierte Ordinaltitel. Belegte native Ueberschriften wie `Azure AD Connect settings` bleiben erhalten; ohne nativen Tabellentitel steht die vollstaendige Tabelle unter ihrer Abschnittsueberschrift. Die Nutzerkorrektur ersetzt ausdruecklich die `Source text`-Entscheidung aus 2.6.31: Der generierte Aufklapper und zusammengezogene historische Quellprosa erscheinen nicht mehr im Client-Info-Results-Fenster. Strukturierte native Erklaertexte bleiben sichtbar, gespeicherte Originaltexte und Tabellen unveraendert. Synthetischer Directory-Results-Klicktest prueft die berichtete Konstellation, Popup, Inline-Details und Unveraendertheit der Eingaben; alle Results-Kategorien, Betriebssystemtabellen und UI-/API-Versionsvertrag mit insgesamt 39 Tests bestanden. Sichtpruefung ausschliesslich synthetisch in Light und Dark, Design-/Local-only-Pruefung sowie beide Produktionsbuilds erfolgreich. Entscheidung: Patchversion 2.6.34; reine Leseprojektion ohne Import-, Schema-, Persistenz- oder Reimportaenderung. Grenze: Ein nicht gespeicherter nativer Titel wird nicht erfunden. Phase 7/13C bleibt offen. Kleine Donut-Anteile 2026-09-25 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): Der Data Hub rundete Anteile vor dem Zeichnen auf ganze Prozent; ein positiver Anteil unter 0,5 % erschien dadurch als leerer Ring, und 1 % nur als kaum erkennbarer Splitter. Die sechs Data-Hub-Ringe und die Client-Info-Ringe zeichnen nun den ungerundeten Anteil. Positive Anteile unter 2 % erhalten zusaetzlich eine schmale, flache Markierung in derselben semantischen Bogenfarbe; Null bleibt ohne Markierung. Unter 0,5 % steht `<1%` statt `0%`. Dasselbe Verhalten gilt fuer die weiteren Bildschirm-Donuts und den Management-Report; ein Score unter 0,5 von 100 zeigt `<1/100` statt `0/100`. Ringgeometrie, Metrik und Farbrollen bleiben erhalten. Ein synthetischer Data-Hub-Test deckt Mandantenauswahl, Ladezustand und den realen Anteil 4/1833 ab; Komponenten- und Reporttests pruefen 0, 1 und Anteile unter 1 %. Synthetische Sichtpruefung bei normaler kompakter Ringgroesse in Light und Dark; 34 fokussierte Tests inklusive UI-/API-Versionsvertrag, Design- und Local-only-Pruefung sowie Client-/Server-Produktionsbuild bestanden. Entscheidung: rueckwaertskompatible Patchversion 2.6.33, keine Daten-, Import-, Schema- oder Persistenzaenderung. Grenze: Die zusaetzliche Markierung ist ein Lesbarkeitsindikator; die SVG-Bogenlaenge bleibt der exakte Anteil. Phase 7 bleibt offen. Data-Hub-Kennzahlen vorladen 2026-09-25 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): Bisher begann die Abfrage der sechs Statusdonuts erst nach der Mandantenauswahl; der Browser verwarf die fertigen Werte bei jedem Wechsel. Die neuesten scannergebundenen Timeslot-Zusammenfassungen werden jetzt bereits angefordert, sobald die Metadaten des jeweiligen Mandanten vorliegen, waehrend weitere Uebersichtsdaten noch laden. Ein browserseitiger Cache teilt laufende Abfragen, behaelt hoechstens 32 fertige Zusammenfassungen und begrenzt die spekulative Warteschlange auf 32 Eintraege. Zwei Abfragen laufen gleichzeitig; die Auswahl zieht eine wartende Abfrage nach vorne. Wiederverwendung umfasst Repository-Revision, Projekt, Assessment- und Scanlauf-IDs; dieselbe Revision wird bei Data-Hub-Rueckkehr ueber Health geprueft. Import-/Daten-/GPO-Aenderungen und geaenderter GPO-Jobstatus entwerten die Werte, verspätete Antworten ersetzen weder neuere Werte noch eine andere Auswahl. Es werden ausschliesslich die sechs berechneten Kennzahlen vorgeladen, keine Rohberichte oder vollstaendigen Browser-Workspaces. Synthetischer Test am echten DataHub-Klickpfad belegt Anfrage vor Abschluss der Uebersicht, Wiederverwendung laufender Abfragen, null neue Kennzahlenanfragen beim unveraenderten Wechsel und Remount sowie frische Ergebnisse nach Aenderung. Weitere Tests sichern Parallelitaetsgrenze, Auswahlprioritaet, Scope-/Revisionstrennung, Verdraengung und Fehlerbehandlung. 26 fokussierte Tests einschliesslich UI-/API-Versionsvertrag, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Inhaltsfreie Browsermessungen nach Vorladen: 316 ms Auswahl bis sechs bereite Ringe, 317 ms beim Zurueckwechseln, jeweils inklusive Browsersteuerung und ohne parallelen Build; Beobachtungen, keine allgemeine Latenzgarantie. App/Backend laufen mit 2.6.32 und kanonischem PostgreSQL, Repository-Revision unveraendert 471. Entscheidung: rueckwaertskompatible Patchversion 2.6.32, keine Kennzahlensemantik-, Schema-, Import- oder Bestandsaenderung. Grenze: Beim Kaltstart oder einer Auswahl vor Abschluss des Vorladens bleibt die echte Ladeanzeige bestehen; ueber die begrenzte spekulative Warteschlange hinausgehende Mandanten laden bei Auswahl. Phase 7 bleibt offen. Client-Info-Tabellen einheitlich 2026-09-25 (Phase 7/13C, erneute Nutzerkorrektur, umgesetzt und verifiziert): Die 2.6.29-Korrektur war auf historische Admin Groups begrenzt und hatte entgegen der 2.6.14-Vereinbarung wieder Tabellen-Ordnungsnummern eingefuehrt. Der gemeinsame Results-Renderer zeigt jetzt alle gespeicherten Grundtabellen direkt, auch in Directory, Resilience, Password policy, Certificates & PKI, Operating systems und Overall Score sowie bei alten Imports ohne Praesentationsmetadaten. Die alten `Open table`-Eintraege, `Additional source tables`-Schranke und erfundenen `Table N of M`-Titel entfallen. Native Tabellen-/Teilueberschriften bleiben, zusammengezogene historische Quellprosa ist vollstaendig im separaten `Source text` erreichbar. Dies ersetzt ausdruecklich den historischen Popup-Fallback aus 2.6.4 und die Teilkorrektur 2.6.29; die nativen Interaktionsregeln aus 2.6.9/2.6.14 bleiben bindend: Zelllinks oeffnen Popups, Aussenlinks klappen inline auf. Verlinkte Unterabschnitte bleiben jetzt in ihrer Kategorie; Ziele sind auf exakten Scanlauf und Importdatei begrenzt, und alle Tabellen eines Ziels bleiben erreichbar. Facts stehen kompakt in Zellen, breite OS-/Quelltabellen scrollen innerhalb ihres Bereichs. Die Anfangsposition und Groessenanpassung des Results-Fensters verwenden dieselben Abmessungen, damit das Fenster im Viewport bleibt. UI-Abnahme mit ausschliesslich synthetischen Daten in Light/Dark: sechs Results-Fenster, native Popup-/Inline-Pfade, Suche, Tabellencontainment und berechnete 14px Daten/Labels, 16px Werte und 20px Inset. 53 fokussierte Tests einschliesslich echter Results-Klickpfade aller Kategorien, PKI-Unterabschnitten aus zwei Berichten, Tabellenextraktion und UI-/API-Versionsvertrag sowie Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Entscheidung: rueckwaertskompatible Patchversion 2.6.31, keine Daten-, Import-, Schema- oder Persistenzaenderung. App HTTP 200 und Backend-Health melden 2.6.31 mit kanonischem PostgreSQL und unveraenderter Repository-Revision 471. Risiko/Grenze: Native Detailverknuepfungen fehlen in alten Imports; ohne erhaltenes Original koennen sie nicht beweissicher nachgetragen werden. Die gespeicherten Tabellen bleiben unmittelbar lesbar, fehlende Beziehungen werden nicht geraten. Phase 7/13C bleibt offen. Bedeutung von Windows-Standardcodes 2026-09-25 (Darstellung, Nutzerentscheidung, umgesetzt): `PathText` haengt jedem erkannten Standardcode seine dokumentierte Bedeutung an (bekannte SIDs, standardisierte Domaenen-RIDs ohne Aufloesung des Domaenenteils, User-Rights-Konstanten, Registry-Typcodes). Eine gemeinsame Liste in `src/shared/windows-codes.ts` ersetzt die bisherige Einzelloesung fuer SID-Namen; Namen stehen jetzt direkt hinter der jeweiligen SID statt gesammelt am Zeilenende. Unbekannte und kundenspezifische Codes bleiben unveraendert. Reine Darstellung, kein Reimport; Tests fuer das Modul und angepasste Reader-Erwartungen. DB-Structure-Ablaufplan 2026-09-25 (Darstellung, Nutzerauftrag, umgesetzt und verifiziert): Die Ansicht beginnt mit einem Datenfluss im Stil eines Programmablaufplans: Projects & assessments und Upload & custody fuer beide Wege, danach die Spalten Scanner reports (Report processing, Recognition & mapping, Canonical model, Findings & evidence) und GPO backups (Backup inventory, Policy identity, Snapshot aggregation, Baseline evaluation, Policy findings), daneben Microsoft baselines als ausdruecklich beschrifteter Eingang zur Baseline evaluation, unten zusammengefuehrt in Work & review und Comparison over time. Die Zuordnung steht als reine Praesentationsdefinition in `src/features/db-structure/db-structure-flow.ts`; nicht zugeordnete Tabellen erscheinen unter `Other tables`, nichts wird ausgeblendet. Alle 50 aktuellen Tabellen sind zugeordnet. Eine gewaehlte Tabelle traegt die gelbe Auswahl, ihre ein- und ausgehend verknuepften Tabellen werden neutral hervorgehoben, Spalten und Beziehungen erscheinen darunter. Geschaetzte Zeilenzahl 0 wird im Ablauf nicht angezeigt (PostgreSQL-Statistik ohne Analyse). Das bisherige Schichtenverzeichnis bleibt als geschlossene Offenlegung `Table dictionary by layer` erhalten. Verifiziert am Live-Schema (nur Tabellen- und Spaltennamen) in Dark und Light, drei synthetische Tests. Keine Schema-, API- oder Persistenzaenderung. Nachtrag (Nutzerfrage 'Wo ist die Result DB?'): Die Result DB ist keine Tabelle, sondern eine zur Abfragezeit gebildete Leseansicht (Scanner-Findings, Environment Observations, GPO-Vergleiche, GPO-Findings, GPO-Konsistenz). Sie erscheint deshalb als eigene Station `Result DB` neben `Work & review`, wo beide Wege zusammenlaufen, mit ihren Quelltabellen als reinen Sprungverweisen; Auswahl- und Verknuepfungsmarkierung bleiben am besitzenden Schritt. Kachel-Haarlinie im Light-Theme 2026-09-25 (Designsystem, ausdrueckliche Nutzerentscheidung, umgesetzt und verifiziert): Kachelflaeche `#F5F5F7` und App-Hintergrund `#F1F1F4` liegen im hellen Theme nur eine Nuance auseinander; alle Flaechenfarben sollen bleiben. Deshalb traegt im hellen Theme `--tile-border: #DCDDE3` eine neutrale 1-px-Haarlinie, im dunklen Theme bleibt sie transparent. Kachel-Hover hellt die Flaeche auf `#F8F8FA` auf und behaelt die Kontur (vorher dunkler als die Kachel und mit verschwindender Kontur). Kachelinterne Faktentrenner nutzen den neuen Token `--tile-divider`; das globale `--border-subtle` und damit die Work-Listentrenner bleiben unveraendert. Client-Info-, Datahub-, DB-Structure- und Policy-Analyse-Kacheln, die bisher `border: 0` setzten, verwenden jetzt denselben Token. AGENTS.md fuehrt die Ausnahme zur Regel ohne sichtbare Normalkontur als datierte Nutzerkorrektur. Token- und Grammatiktests angepasst und ergaenzt; synthetische Browserpruefung hell (Kontur sichtbar) und dunkel (unveraendert). Teil des noch nicht veroeffentlichten Stands 2.6.30. GPO-Baselinevergleich im Finding Reader kompakt 2026-09-25 (Phase 13B, Nutzerauftrag, umgesetzt und verifiziert): Eine zusammengefasste GPO-Einstellung wiederholte bisher je Baselinepaket dieselbe Variantenzusammenfassung, dieselben Rollen- und Scope-Hinweise sowie identische Erwartungs- und Abweichungszeilen. Der Reader zeigt fuer eine aktuelle, vollstaendig strukturierte Variantenbewertung jetzt einen Abschnitt `Baseline comparison`: Sind alle Paketverdicts und alle Variantenergebnisse woertlich identisch, erscheint eine Aussage mit Varianten- und Paketanzahl sowie gemeinsamen zusaetzlichen/fehlenden Eintraegen; Rollen- und Scope-Hinweis stehen einmal. Jeder gespeicherte Einzelvergleich bleibt in `All baseline comparisons` erhalten, nach Nutzerkorrektur als gruppierte Liste statt fuenfspaltiger Tabelle: je Paket Titel und Verdict in einer Zeile, darunter je Variante Template und Setting reference; Umbrueche nur an Wortgrenzen, die globale Tabellen-Versalschrift entfaellt. Identische Werte werden je Variante nicht wiederholt; bei unterschiedlichen Ergebnissen ist die Aufschluesselung sofort geoeffnet und zeigt je Variante Ergebnis, Erwartung und Abweichung, ohne einen Konsenswert zu bilden. Synthetische Browserpruefung in Light/Dark bei schmaler und breiter Lesespalte. Zweite Nutzerkorrektur (Beispiel mit einheitlichem Fail, aber unterschiedlichen Sollwerten je Paket): Ergebnis- und Wertgleichheit werden getrennt bewertet. Ein einheitliches Ergebnis wird als solches benannt; unterschiedliche Sollwerte erscheinen einmal je Wertgruppe mit namentlich genannten Ausnahmepaketen, die groesste Gruppe mit Paketanzahl. Der separate Block `Expected baseline value` und die je Paket wiederholte Remediation werden im Reader durch diese Gruppen ersetzt; die Remediation behaelt den Hinweis, zuerst das zutreffende Template festzulegen, und kombiniert keine Werte. Die Aufschluesselung oeffnet sich nur bei abweichenden Ergebnissen. Dritte Nutzerkorrektur (Conflict/Duplicate): Tragen mehrere GPO-Backups bei, fasst eine neutrale Wertuebersicht oberhalb der unveraendert vollstaendig sichtbaren Quellabschnitte zusammen, welche Anweisung (Operation, Data, Type code) von wie vielen und welchen Backups stammt; ein nur in Gross-/Kleinschreibung abweichender Registry-Schluessel wird ausdruecklich benannt. Die Uebersicht entscheidet weder Verdict noch Conflict-/Duplicate-Flag und traegt keine rote Markierung; diese bleibt feldgenau im Quellabschnitt. Befund ohne Aenderung: Aggregation (`gpo-policy-snapshot-service.ts`) und Evaluation (`gpo-policy-evaluation-service.ts`) vergleichen Kundenwerte per `canonicalJson` einschliesslich der Schreibweise des Registry-Schluessels, sodass wertgleiche Beitraege mit abweichender Schreibweise als Conflict statt Duplicate gelten koennen. Eine Korrektur waere eine versionierte Engine-Aenderung mit Neuauswertung und wird nur nach ausdruecklicher Nutzerfreigabe umgesetzt. Vierte Nutzerkorrektur (Lesereihenfolge, Ziel: Problem in 2 Sekunden erkennbar): Der GPO-Reader beginnt nach der Einstellungsueberschrift mit einem Block `Problem` (bei anderen Verdicts `Summary`): Configured gegen Expected, beitragende GPO-Backups mit gleichem oder unterschiedlichem Wert, einheitliches oder abweichendes Baseline-Ergebnis, vorhandene Conflict-/Duplicates-Zusammenfassung samt Gross-/Kleinschreibungshinweis und `Next step` mit gruppierter Remediation und den nachweislich abweichenden Backups. Alle Teile stammen aus gespeicherten Werten, Vergleichen und Diagnosezusammenfassungen; der Block bewertet nichts neu und erscheint nur bei aktuellen strukturierten Vergleichen. Die GPO-Quellabschnitte folgen direkt darunter weiterhin vollstaendig ohne Aufklappen (Nutzerbestaetigung 2026-09-25); die Wertuebersicht erscheint dort nur noch bei unterschiedlichen Werten. Der Baseline-Vergleich wiederholt ein einheitliches Ergebnis nicht. Registry path, Technical Identity, Imported, Evaluated und Diagnostics stehen fuer GPO unter Additional Information; Scope bleibt gemaess Entscheidung 2026-09-06 im Report. Nutzerentscheidung: Die Arbeitsfelder Status, Priority, Owner/Team, Due Date, Review-Texte und Marker stehen fuer alle Werkzeuge in einem standardmaessig geschlossenen Abschnitt `Work tracking` unterhalb des Findings, dessen Kopfzeile Status, Priority und gesetzte Owner/Due-Werte zeigt. Fuenfte Nutzerkorrektur: `Problem` und `Next step` sind getrennte Bloecke mit je einem Markierungsstrich in `--marker-width` (Problem in der Outcome-Farbe, Next step im Orange `--next-step-accent` = `--sev-high`). Setzen mehrere GPO-Backups dieselbe Anweisung, liegen die vollstaendigen Quellabschnitte in einer geschlossenen Offenlegung (AGENTS.md-Korrektur 2026-09-25); unterschiedliche Anweisungen, Einzelquellen und historische Vergleiche bleiben sofort sichtbar. Bei gemischten Paketergebnissen erklaert der Problem-Block das Rollup (hoechstes Paketergebnis, Anzahl Fail/Review required, Pakete mit widerspruechlichen Templates), benennt Sollwertgruppen nach Template, sobald sich ein Paket auf mehrere Gruppen verteilt, und zeigt den Hinweis zur Template-Festlegung einmal statt je Paket. Keine Verdict-, Rollup- oder Engine-Aenderung. Sechste Nutzerentscheidung (Rot/Gruen): Falsche Einstellungen sind rot, richtige gruen. Gruen verlangt denselben Beweis wie Rot in Gegenrichtung (ganzer Wert passt zu jeder aktuellen Baseline-Variante bzw. Principal in jeder erwarteten Menge); nur teilweise passende, pruefpflichtige und historische Werte bleiben neutral. Umgesetzt in GPO-Quellabschnitten (`alignedItems`, `policy-source-aligned-value`), im Problem-Block (`Configured` je Eintrag, zusaetzliche Eintraege nicht mehr doppelt) und in den GPO-Konflikt-/Duplikatvarianten im Results-Fenster (Variante nur gefaerbt, wenn alle ihre Quellen dieselbe bewiesene Relation haben). AGENTS.md-Regel ergaenzt; weitere Scanner-Results nur mit quellseitigem Nachweis je Wert/Zeile, CIS-CAT unveraendert. Siebte Nutzerkorrektur: Auch bei unterschiedlichen Anweisungen mehrerer GPO-Backups liegen die vollstaendigen Quellabschnitte zugeklappt (`Show the N source instructions`); die sichtbare Wertuebersicht nennt jede Anweisung mit ihren Backups. Einzelquellen und historische Vergleiche bleiben offen. Rot/Gruen in Scanner-Results: Neue deklarative Profiloption `resultSheetRowStatusCells` faerbt eine Belegzeile nur bei ausdruecklichem quellseitigem Zeilenstatus (widerspruechliche Marker ergeben keine Farbe). Maester setzt sie fuer Haekchen/Kreuz- und Pass/Fail-Zellen seiner Ergebnistabellen; PingCastle und Purple Knight liefern je Zeile nur betroffene Objekte ohne Status und bleiben ungefaerbt; CIS-CAT unveraendert. Reine Darstellungsaenderung ueber bereits gespeicherte Werte, kein Reimport. Entscheidung GPO-Zielrolle je Backup 2026-09-25 (Nutzerentscheidung nach Messung, abgeschlossen): Der Umbau (Rolle je Backup, getrennte Befunde je Rolle, neue Evaluator-Version) wird nicht umgesetzt. Messung mit dem nur Zahlen ausgebenden Skript `scripts/gpo-role-impact.ts`, das die Nutzerin/der Nutzer selbst ausserhalb der App ausfuehrte, am Dummy und an einem echten Projekt: 58 aktuelle Fail-Einstellungen, davon 57 rollenunabhaengig (kein Template irgendeiner Rolle stimmt ueberein) und 1 rollenabhaengig; 0 nur durch nicht erkannte Templates abhaengig. Aus eindeutigen Belegen ableitbar waeren nur 2 von 184 Backups (Default Domain Controllers Policy, Verknuepfung nur mit `Domain Controllers`), 8 wirken domaenenweit, 145 bleiben unbekannt. Der Nutzen (1 von 58) rechtfertigt keinen Eingriff in Evaluation, Persistenz und Neuauswertung. Befund mit Folgeauftrag: 29 von 184 Backups sind nicht verknuepft; 2 Fail-Einstellungen stammen ausschliesslich aus solchen GPOs. Verdicts und Score bleiben dafuer unveraendert; ein Hinweis auf nicht verknuepfte GPOs wurde beauftragt. Umsetzung Hinweis (Phase 13B, Nutzerfreigabe inklusive Reprocessing): Metadatenparser 1.4.0 behaelt aus `GPReport.xml` nur Anzahl und aktivierte Anzahl der `LinksTo`-Eintraege (keine OU-/Domaenennamen); die Backupinstanz traegt `links` mit Validierung, die Unified-Projektion `policyBackupLinkStatus`. Finding Reader: Badge `Not linked` mit Hinweis je Quellabschnitt und `No effect`-Zeile im Problem-Block, wenn alle beitragenden GPOs unverknuepft sind (Teilmenge wird gezaehlt); GPO Processing zeigt `N not linked`. Versionen append-only: `gpo-backup-policy-analysis` und Jobprozessor 2.2.4 -> 2.2.5, damit bestehende Backups `Reprocessing required` zeigen; die Baseline-Vorlagenvariante bleibt 1.3.0. Keine Aenderung an Verdicts, Flags, Score, Evaluator oder SQL-Schema; REIMPORT_POLICY-Klarstellung und AGENTS.md-Regel ergaenzt. Synthetische Parser-, Ingestion-, Reader- und Statuszeilen-Tests. Scanner-Erstlesung (Nutzerentscheidung, alle vier Scanner in einem Schritt): PingCastle, Purple Knight, CIS-CAT und Maester erhalten denselben Aufbau wie GPO: `Problem` (Result, Expected/Found, Affected bzw. Results-Zeilen, Impact) und `Next step` (Remediation/Advised solution, erster Absatz sichtbar, Rest vollstaendig unter `Full remediation`; bei Maester der https-Dokumentationslink) vor Background und References. Die Feldzuordnung steht deklarativ in `presentation.firstRead` jedes Profils; der Reader blendet die verwendeten Felder nicht doppelt ein. Maester-ResultDetail bleibt ausschliesslich in Results. Nur Darstellung ueber gespeicherte Werte, kein Reimport. AGENTS.md-Abschnitt `UI Finding Reader first read` ergaenzt; fuenf synthetische Reader-Tests und angepasste Reihenfolgetests. Historische oder unvollstaendig strukturierte Vergleiche behalten die bisherige Volltextdarstellung. Die Felder Description, Baseline und Comparison bleiben fuer Work-Export, Suche und Filter unveraendert; nur der Reader blendet sie bei vorhandener Struktur aus. Dokumentierte, mandantenunabhaengige Windows-SIDs (z. B. S-1-5-32-549 Server Operators) erhalten neben dem unveraenderten Originalwert eine Namenshilfe; domaenenbezogene SIDs werden nie benannt. Vier synthetische Reader-Tests pruefen identische, abweichende und historische Vergleiche sowie die SID-Namen; bestehende GPO-Rollup-Tests und beide Produktionsbuilds bestanden. Acht Fehlschlaege der Gesamtsuite betreffen parallele, nicht zugehoerige Arbeitsstaende (Client-Info-Domaenenzeilen, Result-DB-Timeslots, Security-Domain-Filter, AppLocker-``-Pruefung) und wurden nicht veraendert. Keine Browserpruefung mit realen Daten (Privacy-Regel). Entscheidung: rueckwaertskompatible Patchversion 2.6.30, reine Darstellungsaenderung ohne Import-, Bewertungs-, Schema- oder Reimportfolgen. Phase 13B bleibt offen. Historische PingCastle-Inventory-Results 2026-09-25 (Phase 7/13C, Nutzerkorrektur, umgesetzt und verifiziert): Die alte Admin-Groups-Projektion zeigte einen zusammengezogenen Quelltext sowie viele gleich benannte `Groups`-Buttons statt nutzbarer Ergebnisse. Fuer vorhandene PingCastle-Imports ohne gespeicherte Linkmetadaten steht die native `Admin groups list` jetzt unmittelbar als durchsuchbare, seitenweise lesbare Tabelle im Results-Fenster. Weitere Quelltabellen bleiben unter `Additional source tables` erreichbar; wiederholte native Titel erhalten eine eindeutige Ordnungsnummer. Generische `Groups`-Unterabschnitte verdecken den konkreteren nativen Tabellennamen nicht mehr. Wiederholte alte `Close`-/`Legend`-Steuertexte erscheinen nicht im Lesetext; der unveraenderte Quelltext bleibt in `Original source text` zugaenglich. Weder eine Gruppe-zu-Detailtabelle-Zuordnung noch ein fehlender Quellentitel wird erfunden. Ein synthetischer Klickpfad prueft die historische Admin-Groups-Liste, die getrennten Detailtabellen und den erhaltenen Originaltext; ein zweiter prueft die alten Graph-Steuertexte. 20 fokussierte UI-/Versions-/API-Tests, Local-only- und Designpruefung sowie beide Produktionsbuilds bestanden. Im vorhandenen Liftket-Bestand sind die native Uebersicht und eine Detailtabelle in Light und Dark lesbar; Light wurde wiederhergestellt. Entscheidung: rueckwaertskompatible Patchversion 2.6.29, reine Leseprojektion ohne Import-, Daten-, Schema- oder Persistenzaenderung. Backend-Health meldet 2.6.29 mit kanonischem PostgreSQL und unveraenderter Repository-Revision 471. Risiko: Alte Imports enthalten weiterhin keine Zuordnung einzelner Admin-Gruppen zu den namenlosen Detailtabellen; diese bleibt bis zu einem quellengestuetzten Reimport unbestimmt. Phase 7/13C bleibt offen. Maester-Testresultat nur in Results 2026-09-25 (Phase 7/13C, erneute ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Der Finding Reader zeigt Maesters `ResultDetail` samt Markdown-Tabelle nicht mehr ein zweites Mal als `Test result` im Report. Das Results-Fenster zeigt den unveraenderten nativen Ergebnistext und die Tabelle weiterhin; Titel, Source Rule ID, Beschreibung, Test details, Tags und Review-Felder bleiben im Reader. Dies bekräftigt die Nutzerentscheidung vom 2026-07-28 und ersetzt nur die spaetere `Test result`-Zeile der Maester-Reader-Hierarchie vom 2026-09-22. Ein synthetischer Reader/Results-Klickpfad prueft genau die gemeldete Doppelanzeige. 63 fokussierte Tests, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Im Dummy steht ein Maester-Testresultat in Light/Dark ausschliesslich im geoeffneten Results-Fenster; Light wurde wiederhergestellt. Entscheidung: rueckwaertskompatible Patchversion 2.6.28, keine Quellwert-, Import-, Schema- oder Persistenzaenderung. App und Backend melden 2.6.28 am bestehenden Port 4173 mit kanonischem PostgreSQL und unveraenderter Repository-Revision 471. Phase 7/13C bleibt offen. Source-metrics-Kachel entfernt 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die Kachel `Source metrics` erscheint nicht mehr in der dauerhaft sichtbaren Client-Info-Umgebungsuebersicht. Die sechs uebrigen Kacheln ruecken in unveraenderter Reihenfolge auf; Quelldaten und Import bleiben unangetastet. Diese Entscheidung ersetzt die fruehere Anzeige der siebten Umgebungskachel in der Uebersicht. Entscheidung: rueckwaertskompatible Patchversion 2.6.27, keine Schema- oder Persistenzaenderung. 24 fokussierte Tests, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Im Dummy zeigen Light und Dark genau die sechs erwarteten Umgebungskacheln ohne `Source metrics`; Light wurde wiederhergestellt. App und Backend melden 2.6.27 am bestehenden Port 4173 mit kanonischem PostgreSQL und unveraenderter Repository-Revision 471. Phase 7 bleibt offen. Security-Domain-Zeilen ohne Rahmen 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die normalen Zeilenrahmen in Client Info entfallen. Die semantischen Kreise und Balken sowie der blaue 2-px-Tastaturfokus bleiben erhalten. Entscheidung: rueckwaertskompatible Patchversion 2.6.26, keine Daten- oder Persistenzaenderung. 34 fokussierte UI-/Versionsvertragstests, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Im Dummy zeigen Light und Dark bei allen acht Domain-Zeilen berechnete `0px` Rahmenbreite; Light wurde wiederhergestellt. App und Backend melden 2.6.26 am bestehenden Port 4173 mit dem kanonischen PostgreSQL und unveraenderter Repository-Revision 471. Phase 7 bleibt offen. Maester-Untertestkennungen 2026-09-25 (Phase 7/13C mit Disclosure-Grenze aus Phase 12/13B, erneuter Nutzerfehlerbericht, umgesetzt und verifiziert): Die vier weiter leeren Screenshotzeilen zu ablaufenden App-Credentials, MFA-Registrierung und Sign-in-/User-Risk-Policies besitzen exakte native MT.1024-Untertestkennungen. Die vorherige Ergaenzung war fuer diese Faelle unvollstaendig. 16 erhaltene Untertest-IDs wurden anhand der [oeffentlichen Maester-Erzeugungsregel](https://raw.githubusercontent.com/maester365/maester/main/tests/Maester/Entra/Test-EntraRecommendations.Tests.ps1), der [Microsoft-Graph-Empfehlungstypen](https://learn.microsoft.com/en-us/graph/api/resources/recommendation?view=graph-rest-beta) und der [Insider-Risk-Dokumentation](https://learn.microsoft.com/en-us/entra/identity/monitoring-health/recommendation-insider-risk-condition) einzeln validiert und exakt freigegeben. Hinzu kommt die historisch dokumentierte [MT.1040](https://maester.dev/docs/tests/MT.1040/). Die Regelsuche behaelt die volle Kennung und verlinkt MT.1024-Untertests auf die existierende Basisdokumentation. Lange Source-Rule-IDs umbrechen in der Result-DB-Spalte vollstaendig statt einer Ellipse. Entscheidung: Disclosure Policy 2.5.3 und Patchversion 2.6.25; keine pauschale Praefixfreigabe, keine Import-, Schema- oder Bestandsmutation. Der Dummy-Katalog deckt damit 308 von 318 verschiedenen Quellkennungen ab. Risiko/Grenze: Die zehn verbleibenden Kennungen, insbesondere die Screenshot-Warnung MT.INV.001, besitzen noch keinen exakten oeffentlichen Beleg; ihre Freigabe bleibt nach der bestehenden Regel gesperrt. 54 fokussierte Tests, Client-/Server-Produktionsbuild sowie Local-only-/Designpruefung bestanden. Die vier gemeldeten Untertests wurden per Live-API und in der Result DB bestaetigt; lange Kennungen bleiben in Light/Dark innerhalb ihrer Zellen lesbar. Light wurde wiederhergestellt. App/Backend melden 2.6.25 am bestehenden Port 4173 mit dem kanonischen PostgreSQL und unveraenderter Repository-Revision 471. Phase 7/13C und 12/13B bleiben offen. Maester-Source-Rule-ID-Luecken 2026-09-25 (Phase 7/13C mit Disclosure-Grenze aus Phase 12/13B, Nutzerfehlerbericht, umgesetzt und verifiziert): Der kanonische Dummy-Bestand enthaelt fuer die im Result-DB-Screenshot leeren Maester-Zellen native Kennungen wie `CIS.M365.1.1.1` und `CISA.MS.AAD.2.3`; der Import hat sie nicht verloren. Die bisherige Disclosure-Freigabeliste kannte im Wesentlichen MT-Kennungen, weshalb die Result DB diese vorhandenen IDs ausgeblendet hat. Die Liste wurde um 245 exakt auf den offiziellen Maester-Suitenlisten dokumentierte IDs aus CIS, CISA, Entra ID SCA, ORCA und Maester erweitert. Im Dummy sind damit 291 von 318 verschiedenen Maester-Quellkennungen freigegeben; 27 Sonder-, historische oder instanzspezifische Kennungen bleiben mangels exakter oeffentlicher Validierung fail-closed. Die gemeinsame Liste versorgt Result DB, JSONL und die oeffentliche Regelsuche. Entscheidung: Disclosure Policy 2.5.2 und rueckwaertskompatible Patchversion 2.6.24, keine Import-, Schema-, Persistenz- oder Bestandsdatenmutation und kein Reimport. Risiko: Zukuenftige neue Maester-IDs benoetigen weiterhin eine dokumentierte Katalogergaenzung; dynamische Instanzsuffixe werden nicht allein durch ein bekanntes Basis-ID freigegeben. Der synthetische Result-DB-Zeilentest deckt die beiden gemeldeten CIS-/CISA-Beispiele einschliesslich Detailansicht ab; der Disclosure-Test prueft alle fuenf Suiten und die Sperre unbekannter IDs. 53 fokussierte Tests, Local-only-/Designpruefung und beide Produktionsbuilds bestanden. Phase 7/13C und 12/13B bleiben offen. Result-DB-Disclosure-Praezisierung 2026-09-25 (Phase 12/13B, ausdrueckliche Nutzerentscheidung, umgesetzt und fokussiert verifiziert): Result DB API und JSONL behalten die konkreten quellengestuetzten Scannerbefunde, oeffentlichen Regelkennungen, Bewertungen, vorhandene Regeltexte und die GPO-Ist-/Sollwerte samt Baseline. Ein nicht vorhandener Scanner-Istwert wird nicht erfunden. Disclosure Policy 2.5.1 bewahrt numerische CIS-CAT-Regelkennungen im Titel und eng bekannte GPO-Richtlinienpfadteile vor falscher IP-/Konto-Redaktion; nicht oeffentliche technische SIDs erhalten stabile resultlokale Platzhalter, auch in verschachtelten Baselinevarianten. Kanonische Originale und internal-analysis bleiben unveraendert. Entscheidung: rueckwaertskompatible Patchversion 2.6.22; gemeinsame Disclosure-Projektion fuer API und JSONL, keine Daten-, Schema-, Import- oder Persistenzmutation. Risiko: Freie Quelltexte und die Kombination konkreter Sicherheitsresultate koennen auch nach Musterredaktion eine Kundenumgebung wiedererkennbar machen; dies ist keine pauschale Freigabe fuer beliebige externe Empfaenger. 25 fokussierte Disclosure-/JSONL-/API-/Versionsvertragstests, Local-only- und Designpruefung sowie beide Produktionsbuilds bestanden. Die Gesamtsuite meldet 1.478 bestandene, sieben fachfremde fehlgeschlagene und 13 uebersprungene Tests; die Fehler betreffen Dashboard-/GPO-XML-/Timeslot-UI-Vertraege ausserhalb dieser Aenderung. Das laufende kanonische PostgreSQL-Backend meldet weiterhin 2.6.21; wegen des dokumentierten automatischen GPO-Reconciliation-Risikos und zur Vermeidung einer Unterbrechung der Hauptaufgabe wurde es in diesem Schritt nicht neu gestartet. Phase 12/13B bleibt offen. Client-Info-Kacheltypografie und Faktenkaestchen 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Alle Client-Info-Dashboardkacheln ausser Overall Score folgen nun Data mit 16 px fuer Titel und lesbare Werte sowie 14 px fuer Informationslabels. Die bisherigen 12-px-Informationslabels in Data wurden auf die verbindliche 14-px-Rolle angehoben. Domain Information und die sieben Umgebungskacheln zeigen jede Information als eigene flache Zelle mit feinen gemeinsamen Trennlinien; Security-Domain-Zeilen tragen denselben zurueckhaltenden Zellkontur. Overall Score, das separate Accepted-Risks-Master/Detail, Werte, Quellen, Scoresemantik und Drilldowns bleiben erhalten. Entscheidung: Die frueheren groesseren H3-/20-px-Schriften einzelner Client-Info-Kacheln werden durch diesen Nutzerwunsch ersetzt; rueckwaertskompatible Patchversion 2.6.23. Risiko: Laengere kuenftige Quelltexte koennen einzelne Kacheln natuerlich vergroessern; weder Informationen noch Schriftgroessen werden gekuerzt. 44 fokussierte UI-/API-/Versionsvertragstests, Design- und Local-only-Pruefung sowie beide Produktionsbuilds bestanden. Am freigegebenen Dummy wurden Light, Dark und die schmale Ansicht ohne Ueberlauf geprueft; bei breitem Layout teilen Posture, Data und Domain Information dieselbe Unterkante. Light und die normale Browserbreite wurden wiederhergestellt. Backend-Health meldet 2.6.23 mit dem kanonischen PostgreSQL. Keine Import-, Daten-, API-, Schema- oder Persistenzaenderung; Phase 7 bleibt in Arbeit. Client-Info-Hardfacts in doppelten Umgebungskacheln 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die sieben dauerhaft sichtbaren Umgebungskacheln verwenden nun die doppelte gemeinsame Kompaktbreite von 372 px. Ein zweispaltiges Faktenraster zeigt in Inventory alle acht ersten Hardfacts einschliesslich Enabled/disabled und Assessed host direkt in der Kachel. Resilience, Password policy und Certificates & PKI zeigen ihre vorhandenen Zusammenfassungen vollstaendig; Directory zeigt seine ersten sechs Fakten, waehrend weitere Angaben in Domain Information und Directory Results erreichbar bleiben. Source metrics zeigt bis zu acht vorhandene Kennzahlen, Operating systems vorhandene Gruppensummen und erste Quellzeilen; vollstaendige Listen, Originalbelege und OS-Tabelle bleiben in Results. Entscheidung: Die bisherige 186-px-/Ein-Fakt-Vorschau ist durch den Nutzerwunsch ersetzt; rueckwaertskompatible Patchversion 2.6.21. Risiko: Laengere kuenftige Quellwerte lassen betroffene Kacheln bei Bedarf natuerlich wachsen, statt Schrift unter die vereinbarten 14-/16-px-Rollen zu senken oder Inhalt abzuschneiden. 33 fokussierte UI-/API-/Versionsvertragstests, Design- und Local-only-Pruefung sowie beide Produktionsbuilds bestanden. Im freigegebenen Dummy messen alle sieben Kacheln in Light und Dark 372 mal 372 px ohne Ueberlauf; Light wurde wiederhergestellt. Backend-Health meldet 2.6.21 mit dem kanonischen PostgreSQL. Keine Import-, Daten-, API-, Schema- oder Persistenzaenderung; Phase 7 bleibt in Arbeit. Client-Info-Source-Overview-Kachel entfernt 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die markierte Source-Overview-Kachel ist aus dem dauerhaft sichtbaren Umgebungsraster entfernt; sieben kompakte 186-mal-186-px-Kacheln bleiben. Der vorhandene Overall-Score-Bereich traegt nun einen Results-Zugang zu den unveraenderten Quell-Score-Beitraegen, einzelnen Quellbefunden und Originalabschnitten, zur Restriktionsinformation, zu den Work-Drilldowns und zur Scoring Methodology. Der Score-Ring bleibt sein eigener Work-Einstieg. Directory zeigt in der kleinen Kachel die quellengestuetzte Domainanzahl statt eines getrennten Domainnamens; der volle Name bleibt in Domain Information und Directory Results. Entscheidung: rueckwaertskompatible Patchversion 2.6.20; die fruehere Pflicht einer eigenen Source-Overview-Kachel wird durch diesen Nutzerwunsch aufgehoben, die Scoresemantik und Provenienz bleiben erhalten. Risiko: Die Quellenliste liegt nun im Overall-Score-Results-Fenster und ist fuer neue Nutzer weniger unmittelbar sichtbar; der klar beschriftete Results-Button ist an der Score-Ueberschrift erreichbar. 44 fokussierte Dashboard-, Interaktions- und Versionsvertragstests, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Der freigegebene Dummy zeigte sieben quadratische Kacheln ohne Ueberlauf, Directory mit `Domains 1`, Score-Results mit fuenf Quellen und Bewertungsaktion; Light und Dark wurden visuell geprueft und Light wiederhergestellt. Backend-Health meldet 2.6.20 mit dem kanonischen PostgreSQL. Keine Import-, Daten-, API-, Schema- oder Persistenzaenderung. Phase 7 bleibt in Arbeit. Client-Info-Umgebungskacheln 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die bisher aufklappbare Environment-Detail-Huelle und ihre zusammenfassende Kopfzeile sind entfernt. Alle acht Gruppenkacheln stehen dauerhaft sichtbar in einem responsiv umbrechenden Raster aus kompakten quadratischen Kacheln. Jede zeigt nur einen priorisierten, quellengestuetzten Ueberblickswert; vollstaendige Faktlisten, Source-Score-Beitraege und Work-Drilldowns, Restriktionshinweise, Betriebssystemtabellen sowie Originalabschnitte und Einzelbeobachtungen bleiben ueber das jeweilige Results-Fenster erreichbar. Die Scoring-Methodology-Aktion ist in Source Overview Results erreichbar. Entscheidung: rueckwaertskompatible Patchversion 2.6.19; die frueher verbindliche Disclosure-, Vier-Spalten-, Dreiviertelhoehen- und Innen-Scroll-Regel wird durch diesen Nutzerwunsch ersetzt. Risiko: Lange kuenftige Quellenwerte duerfen weder gekuerzt noch verkleinert werden und koennen eine einzelne quadratische Kachel vergroessern; das bleibt bei unbekannten Quellen visuell zu pruefen. 32 fokussierte Tests, Design-/Local-only-Pruefung und beide Produktionsbuilds bestanden. Am freigegebenen Dummy wurden die dauerhaften Kacheln, Directory Results und Light/Dark geprueft; der Backend-Health meldet 2.6.19 mit kanonischem PostgreSQL. Keine Import-, Daten-, API-, Schema- oder Persistenzaenderung. Phase 7 bleibt in Arbeit. Client-Info-Domainordnung und Data-Ring 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Domain Information zeigt unveraenderte, quellengestuetzte Werte in logischen Paaren: Domain als volle Zeile, dann NetBIOS name/Forest, Domains/Domain controllers, Domain functional level/Forest functional level, DC OS/Schema version und Domain created/Entra ID. Der klickbare Deviations-Donut nutzt innerhalb des bisherigen Data-Kopfbereichs einen 184-px-Ring statt 128 px; nur seine lokalen Innenabstaende sind verringert, die Ergebniszeile und das 3-mal-2-Faktenraster bleiben vollstaendig sichtbar. Am freigegebenen Dummy haben Posture, Data und Domain Information weiterhin dieselbe 487-px-Hoehe und Unterkante. Light und Dark wurden visuell geprueft, Light wiederhergestellt. 34 fokussierte Dashboard-, Interaktions- und Versionsvertragstests, Design- und Local-only-Pruefung sowie beide Produktionsbuilds bestehen. Entscheidung: rueckwaertskompatible Patchversion 2.6.18 als reine Lese- und Layoutkorrektur; die fruehere Data-Hub-Ringdimension gilt fuer diesen Client-Info-Donut nicht mehr, Komponente, Titel ausserhalb des Rings, Wertsemantik und Work-Drilldown bleiben erhalten. Keine Daten-, API-, Schema- oder Persistenzaenderung. Risiko: Laengere neue Domainwerte koennen Zellen und damit die gemeinsame Kachelzeile natuerlich vergroessern; es wird nichts gekuerzt. Phase 7 bleibt in Arbeit. Client-Info-Domainzeilen auf Kreismitte 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Domainname, Mengenbalken und rechte Anzahl stehen jetzt in derselben Rasterzeile wie ihr Scorekreis. Der bisherige Zwei-Zeilen-Span des Kreises hob die drei anderen Elemente um 10 px an; im freigegebenen Dummy betraegt die gemessene Abweichung nach der Korrektur fuer alle acht Zeilen nur noch etwa 0,01 px. Verbindungsboegen, 487-px-Kachelhoehe, Werte und Drilldowns bleiben erhalten. Light und Dark wurden bei normaler Browsergroesse visuell geprueft, Light wiederhergestellt. 31 fokussierte Dashboard-, Interaktions- und Versionsvertragstests, Design- und Local-only-Pruefung sowie Client- und Backend-Produktionsbuild bestehen. Entscheidung: rueckwaertskompatible Patchversion 2.6.17 als reine Layoutkorrektur ohne Daten-, API-, Schema- oder Persistenzaenderung. Risiko: Bei kuenftig mehrzeiligen Domainnamen waechst die betroffene Zeile natuerlich; sie wird nicht gekuerzt. Phase 7 bleibt in Arbeit. Client-Info-Kachelhoehe und Gaps-Detail 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die eigenstaendige Assessment-Gaps-Kachel ist entfernt. Die autoritative, anklickbare Gaps-Kennzahl und ihr exakter Work-Drilldown bleiben in Data; die GPO-Quellenzeile meldet weiterhin notwendige Neuauswertungen. Security posture, Data und Domain Information besitzen in der breiten Hauptzeile dieselbe Hoehe und Unterkante. Score-Ring, acht Domainknoten, Namen, Mengen und Verbindungsboegen wurden innerhalb dieser Hoehe skaliert, ohne Informationsschrift unter ihre vereinbarten Rollen zu senken oder Inhalte abzuschneiden. Am freigegebenen Dummy wurden bei 1969 px Breite fuer alle drei Kacheln 487 px Hoehe und dieselbe Unterkante gemessen; die letzte Domainzeile endet 34 px oberhalb dieser Kante. Light und Dark wurden visuell geprueft, Light wiederhergestellt. 39 fokussierte Dashboard-, GPO-, Interaktions- und Versionsvertragstests, Design- und Local-only-Pruefung sowie beide Produktionsbuilds bestehen. Der laufende lokale Backendprozess nutzt weiterhin den kanonischen PostgreSQL-Datastore und meldet nach gezieltem Neustart Version 2.6.16. Entscheidung: rueckwaertskompatible Patchversion 2.6.16 als reine UI-Korrektur ohne Daten-, API-, Schema- oder Persistenzaenderung; die fruehere Assessment-Gaps-Kachelentscheidung ist durch diesen Nutzerwunsch ersetzt. Risiko: Andere Quellwerte und sehr schmale Breiten koennen zusaetzliche Zeilen erzeugen; das responsive Layout laesst die Kacheln dann natuerlich wachsen statt Inhalte abzuschneiden. Phase 7 bleibt in Arbeit. Data-Hub-Donut-Ladezeit und Designruecknahme 2026-09-25 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Der Ergebnisendpunkt verwendet fuer die sechs Donuts eine schlanke, schreibfreie Projektblattprojektion und laedt aus PostgreSQL nur die aktuell gueltigen GPO-Auswertungslaufe. Die Auswahl folgt denselben Profil-, Identity-Analyse-, Snapshot- und Evaluations-Supersession-Regeln wie die autoritative Policy-Uebersicht; historische Auswertungen bleiben gespeichert und fuer andere Ansichten verfuegbar. Der erste Aufruf am bestehenden Dummy sank lokal von etwa 13,0 auf 3,4 Sekunden. Alle sechs Werte blieben identisch (`1.833` gesamt, `477` Abweichungen, `282` Passed, `3` Not Applicable, `171` Not Run, `2` Error); der synthetische Mandantenauswahltest bestaetigt weiterhin den Ladezustand ohne falsche Null. Die Donut-Praesentation aus 2.6.12 wurde auf ausdruecklichen Wunsch zurueckgenommen: Titel stehen wieder ausserhalb der Ringe, Data-Hub-Ringe nutzen wieder 128 px und es gibt keinen Ringschatten. Die Wertsemantik und der Ladezustand aus 2.6.13 bleiben erhalten. Data Hub wurde am Dummy in Light und Dark visuell geprueft; Light wurde wiederhergestellt. Entscheidung: rueckwaertskompatible Patchversion 2.6.15, keine Schema-, Bestandsdaten- oder Persistenzmutation. Risiko: Bei groesseren kuenftigen Datenstaenden kann der erste Aufruf weiter mehrere Sekunden benoetigen; die Messung gilt fuer den derzeitigen lokalen Dummy und ersetzt keinen Lasttest. Phase 7 bleibt in Arbeit. Environment-Detail-Originalueberschriften 2026-09-24 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): Die Results-Ansicht zeigt fuer Abschnitte und Tabellen nur belegte PingCastle-Ueberschriften. Zusaetzliche Berichtstitel wie `Original report sections`, `Original report section`, `Original report table`, `Mapped observations from this table`, `Further observations from ...` und die erfundene Tabellen-Ordinalzahl wurden entfernt; technische Beobachtungen bleiben ueber einen neutralen Disclosure erreichbar. Wenn ein vorhandener Abschnitt wegen der alten Extraktion den ersten Unterabschnitt als Label traegt, wird die exakte im gespeicherten Quelltext vor `This section` erhaltene Hauptueberschrift angezeigt; so erscheint `Trusts details` statt des technischen Schluessels `Trustsdetails`. Der doppelte Titel am Anfang der angezeigten Quellprosa entfaellt ohne Aenderung der gespeicherten Werte. Tabellenlinks oeffnen weiterhin Popups, Links ausserhalb der Tabellen klappen Inhalte inline auf. Beide Linkarten sind in Light und Dark blau und unterstrichen ueber `--text-link`. Acht synthetische Environment-Klickpfadtests, neun Versions-/API-Tests, Design- und Local-only-Pruefung sowie beide Produktionsbuilds bestanden. Entscheidung: rueckwaertskompatible Patchversion 2.6.14; reine Leseprojektion und UI, keine Import-, Persistenz- oder Bestandsdatenaenderung. Risiko: Fehlt in einem historischen Import sowohl ein nativer Abschnittstitel als auch ein eindeutig identifizierbarer Quelltextanfang, bleibt dessen technisches Label sichtbar; es wird kein fachlicher Titel geraten. Phase 7 bleibt in Arbeit. Data-Hub-Donuts waehrend des Ladens 2026-09-24 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): Die sechs Ergebnisringe zeigten beim Oeffnen der Ansicht und nach Auswahl eines Mandanten bisher voruebergehend `0 / 0 %`, weil fehlende, asynchron berechnete Timeslot-Metriken in der Praesentation zu Nullwerten umgedeutet wurden. Ein noch nicht geladener Wert erscheint jetzt als `—` mit `Loading…`; vor Mandantenauswahl steht `Select client`, bei einem Ladefehler `Unavailable`. Erst echte Quellergebnisse zeigen Zahlen und einen farbigen Bogen, einschliesslich eines belegten Nullwerts. Beim Mandantenwechsel werden die alten Metriken sofort geleert und der Ladezustand gesetzt, damit keine Zahl eines anderen Mandanten sichtbar bleibt. Ein permanenter synthetischer Klicktest prueft Auswahl, Ladephase und anschliessende Dummy-Werte (`1.833` gesamt, `477` Abweichungen, `26 %`); der Live-Browser bestaetigt die klare Ladephase und danach dieselben Werte. 26 fokussierte UI-/API-/Versionsvertragstests, Design- und Local-only-Pruefung sowie beide Produktionsbuilds bestanden. Entscheidung: rueckwaertskompatible Patchversion 2.6.13 ohne Daten-, API- oder Persistenzaenderung. Phase 7 bleibt in Arbeit. Donut-Darstellung nach neuer Bildreferenz 2026-09-24 (Phase 7, ausdrueckliche Nutzerentscheidung, umgesetzt und verifiziert): Die sichtbaren Ergebnis-Donuts in Data Hub und Client Info sowie der Overall Score tragen ihre Beschriftung nun innerhalb des Rings oberhalb des Hauptwerts. Der gemeinsame Ring ist in kompakten Kacheln groesser und erhaelt in beiden Themes einen dezenten, tokenisierten Schatten. Die ausdrueckliche Praezisierung `nur kein Verlauf` ersetzt das bisherige Schattenverbot ausschliesslich fuer Donut-Ringe: Statusboegen bleiben einfarbig, vollstaendig rund, im Uhrzeigersinn ab 12 Uhr und mit flachen Enden; kategorische Verteilungen und die Score-Semantik `/100` bleiben erhalten. Die Data-Hub-Kacheln, Client-Info-Overall-Score und Deviations wurden im freigegebenen Dummy visuell geprueft; Light und Dark sind lesbar, Light wurde wiederhergestellt. 34 fokussierte UI-/Versions-/API-Tests, Designpruefung und beide Produktionsbuilds bestanden. Entscheidung: rueckwaertskompatible Patchversion 2.6.12 ohne Daten-, API- oder Persistenzaenderung. Risiko: Sehr lange neue Donut-Titel brauchen bei 148-px-Ringen mehr als zwei Zeilen; die gegenwaertigen sechs Statusnamen passen ohne Abschneiden. Phase 7 bleibt in Arbeit. Client-Info-Gaps-in-Data 2026-09-24 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): Die Data-Kachel zeigt `Gaps` als fuenfte anklickbare Kennzahl in der vorhandenen Ergebniszeile. Der Wert bleibt die autoritative Zahl nicht bewerteter, aber anwendbarer Records aus dem aktiven Sheet und optionalen Source-Kontext. Der Klick oeffnet Work mit genau diesen Record-IDs; damit stimmen angezeigte Zahl und geoeffnete Population auch bei gemischten Zustaenden wie `Not configured`, `Not Run`, Review und fehlender Evidenz ueberein. Der bisherige getrennte `Review gaps`-Pfad und die Assessment-Gaps-Detailkachel bleiben erhalten. Bei schmaler Breite ordnet sich die Zeile in zwei Spalten um. Im freigegebenen Dummy zeigt die neue Kennzahl 1.071 und der Live-Klick in Work `Shown 1,071`; Light und Dark sind lesbar, Light wiederhergestellt. 34 fokussierte Tests einschliesslich synthetischem Klickpfad und Versionsvertrag, Design-/Local-only-Pruefung sowie beide Produktionsbuilds bestanden. Entscheidung: rueckwaertskompatible Patchversion 2.6.11 ohne Daten- oder Persistenzaenderung. Phase 7 bleibt in Arbeit. Client-Info-Data-und-Domain-Kacheln 2026-09-24 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): Der klickbare Deviations-Donut nutzt innerhalb der Data-Kachel den verfuegbaren Platz bis zum neuen gemeinsamen Groessentoken statt der kompakten Data-Hub-Ringbreite. Die Domain-Information-Kachel gibt dem Domainwert eine volle, typografisch hervorgehobene Zeile und verwendet fuer alle Fakten die vereinbarte 14-px-Label-/16-px-Wertrolle. `DC OS` stammt ausschliesslich aus beobachteten Domain-Controller-Zeilen; mehrere unterschiedliche DC-Systeme bleiben sichtbar, fehlende Evidenz wird als unbekannt gezeigt. Der bereitgestellte PingCastle-Bericht belegt im Dummy `Windows 2019`; die Browseransicht zeigt diesen Wert und den vergroesserten Ring in Light und Dark ohne Ueberlauf. 35 fokussierte Dashboard- und Produktversionstests, Design-/Sicherheitspruefung sowie beide Produktionsbuilds bestehen. Entscheidung: rueckwaertskompatible Patchversion 2.6.10; keine Schema- oder Persistenzaenderung. Risiko: Die kompakte DC-OS-Zeile kann bei vielen verschiedenen DC-Versionen mehrzeilig werden; Originalwerte bleiben in Environment Detail vollstaendig erhalten. Phase 7 bleibt in Arbeit. PingCastle-Umweltdetails 2026-09-24 (Phase 7/13A, Nutzerpraezisierung, umgesetzt und verifiziert): Die vollstaendige native HTML-Struktur belegt drei verschiedene Interaktionen. Grundtabellen stehen beim Oeffnen der Kategorie direkt im Abschnitt; interne Links in Tabellenzellen zeigen die exakt adressierte Modaltabelle mit ihrem nativen Titel; Links ausserhalb einer Tabelle klappen ihre adressierten Tabellen oder Informationen unter den Grundtabellen auf. Dies gilt auch fuer denselben Collapse-Zielabschnitt mit einem Zahlenlink innerhalb und einem beschreibenden Link ausserhalb der Tabelle: Popup beziehungsweise verschachtelter Inline-Abschnitt folgen dem jeweiligen Ausloeser. Der PingCastle-Extractor speichert dafuer Ziel-ID, Darstellungsart und Zellkoordinaten als strukturelle Provenienz im vorhandenen Reportabschnitts-JSON. Reine Graph-Popups ohne Quelltabelle zeigen ihre statische Information und kennzeichnen den nur im Originalbericht verfuegbaren interaktiven Graphen. Andere Scanner und aeltere importierte Berichte behalten ihren bisherigen Tabellenzugriff. Die vorangegangene pauschale Popup-Entscheidung von 2.6.4 ist fuer neu importierte PingCastle-Berichte durch diese ausdrueckliche Nutzerpraezisierung ersetzt. Der bereitgestellte native Bericht wurde read-only geprueft: Admin Groups enthaelt eine Grundtabelle mit vier belegten Zellverweisen, vier Modaltabellen und vier ausserhalb liegende Collapse-Verweise; Control Paths enthaelt 26 adressierte Graph-Popups. Der bytegleiche Bericht wurde nach verifizierten kanonischen PostgreSQL-Dumps sicher im freigegebenen Dummy reimportiert (letzter Scanlauf ersetzt, Reviewtransfer 0/0); im finalen API-Snapshot sind alle Zellziele aufloesbar. Live-Klickpfade zeigen Grundtabelle, richtig benanntes Enterprise-Administrators-Popup, nachgeladene All-users-Tabelle und das Graph-Informationspopup. 27 fokussierte Tests, Local-only-/Designpruefung und beide Produktionsbuilds bestanden. Gesamtsuite vor der letzten Unterabschnitt-Ergaenzung: 1.472 bestanden, 13 optionale Skips und dieselben fuenf bekannten fachfremden Fehler. Entscheidung: Rueckwaertskompatible Patchversion 2.6.9 ohne Schemaaenderung; andere vorhandene gespeicherte Inhalte werden nicht still umgedeutet. Risiko: Nicht referenzierte native Modaltabellen bleiben verborgen; sie besitzen in der Quelle keinen belegten Oeffner. Sidebar-Pfeil zurueckgesetzt 2026-09-24 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die juengste Nutzerentscheidung ersetzt die Header-Position aus 2.6.5/2.6.7. Der Einklapppfeil steht wieder unten in der Sidebar links neben den Theme-Schaltern; im eingeklappten Zustand erscheint der Ausklapppfeil wieder am linken Rand der Arbeitsflaeche. Beide Pfeile bleiben ohne sichtbaren Einzelrahmen oder eigene Flaeche, entsprechend der anschliessenden 2.6.7-Stilkorrektur; Tastaturfokus bleibt blau. Der synthetische Work-Klickpfad prueft beide Positionen, beide Richtungen und das Fehlen eines Header-Pfeils. Data Hub wurde in Light und Dark sowie mit beiden Klapprichtungen live geprueft; Light und ausgeklappte Sidebar wurden wiederhergestellt. 12 fokussierte Tests einschliesslich UI-/API-Versionsvertrag, Designcheck und beide Produktionsbuilds bestanden. Entscheidung: Rueckwaertskompatible Positionskorrektur als Patchversion 2.6.8, ohne Daten- oder Persistenzaenderung. Phase 7 bleibt in Arbeit. Header-Pfeil ohne Umrandung 2026-09-24 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): Der globale Sidebar-Umschalter im Header zeigt nur noch das Dreieck; sichtbarer Rahmen, Buttonflaeche und Hoverflaeche entfallen. Die blaue Fokusmarkierung bei Tastaturbedienung, Beschriftung und Ein-/Ausklappfunktion bleiben erhalten. Data Hub wurde in Light und Dark sowie mit beiden Klapprichtungen im freigegebenen Dummy geprueft; Light und der ausgeklappte Zustand wurden wiederhergestellt. 12 fokussierte Tests einschliesslich Sidebar-Interaktion und UI-/API-Versionsvertrag, Designcheck und beide Produktionsbuilds bestanden. Entscheidung: Rueckwaertskompatible visuelle Korrektur als Patchversion 2.6.7. Keine Daten- oder Persistenzaenderung; Phase 7 bleibt in Arbeit. Work-Purple-Knight-Ergebnisverweis 2026-09-24 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): Ein technischer `Security_Assessment_Report_..._(SI...)`-Verweis aus einem `Result`-Feld erschien als Outcome in der Record-Liste und im Finding-Kopf. Die gemeinsame Statusauswahl ueberspringt diesen eindeutig geformten Verweis jetzt und verwendet einen vorhandenen tatsaechlichen Status wie `IOE Found`; der Originalwert bleibt fuer Results-Verknuepfung und Provenienz erhalten. Die Korrektur gilt auch bei gemischten Projektblaettern, deren Werkzeugkontext generisch ist. Ein synthetischer Karten-/Reader-Test mit beiden `Result`-Werten sichert die zwei Nutzerstellen und den erhaltenen Result-Verweis ab. Im freigegebenen Dummy zeigen Liste und Reader fuer SI000055 `IOE Found` statt des langen Verweises. 41 fokussierte Tests einschliesslich UI-/API-Versionsvertrag, Designcheck und beide Produktionsbuilds bestanden. Entscheidung: Rueckwaertskompatible Anzeigekorrektur als Patchversion 2.6.6; keine Import-, Daten- oder Persistenzaenderung. Risiko: Andere bisher unbekannte technische Verweisformen benoetigen eine eigene belegte Regel, falls sie auftreten. Phase 7 bleibt in Arbeit. Sidebar-Umschalter im Header 2026-09-24 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): Der globale Pfeil zum Ein- und Ausklappen der Navigation steht in Work unmittelbar links von `Shown` und in den anderen Ansichten vor dem Seitentitel. Der bisherige Pfeil beim Theme-Schalter und der separate, links am Fensterrand eingeblendete Ausklapppfeil entfallen. Ein einziger beschrifteter Schalter bleibt in beiden Zustaenden an derselben Header-Position; Filter und Navigation bleiben unveraendert. Ein synthetischer Work-Klicktest prueft Reihenfolge, beide Richtungen und das Fehlen der alten Position. Im freigegebenen Dummy wurden Ein-/Ausklappen und die Darstellung in Light und Dark geprueft; Light wurde wiederhergestellt. 12 fokussierte Tests, Designcheck und beide Produktionsbuilds bestanden; Backend-Health und UI zeigen 2.6.5. Entscheidung: Rueckwaertskompatible UI-Korrektur als Patchversion 2.6.5. Keine Daten- oder Persistenzaenderung. Restrisiko: Bei sehr schmaler Bildschirmbreite bleibt die Work-Werkzeugleiste wie zuvor horizontal scrollbar. Phase 7 bleibt in Arbeit. Environment-Detail-Originaltabellen 2026-09-24 (Phase 7, Nutzerreferenz fuer Tabellenfenster, umgesetzt und verifiziert): Jede im Results-Fenster aufgefuehrte Originaltabelle hat nun einen eigenen `Open table`-Eintrag statt einer sofort eingebetteten breiten Tabelle. Ein fokussiertes, ASSESSOR-gestaltetes Tabellenfenster zeigt die vollstaendigen nativen Spalten und Zeilen mit horizontalem Scrollen, Suche, 10/25/100 Zeilen pro Seite, Seitennavigation und den exakt dieser Quelltabelle zugeordneten Beobachtungen. Berichtsabschnitt und native Teilueberschrift stehen unmittelbar am Eintrag und im Fenstertitel; bei gleichnamigen Tabellen desselben Abschnitts unterscheidet eine Position wie `Table 4 of 5` die Quelle ohne unbelegte fachliche Zuordnung. `Escape` schliesst nur das Tabellenfenster, laesst das uebergeordnete Results-Fenster offen und stellt den Fokus auf den Oeffner zurueck. Entscheidung: Die vom Nutzer gezeigte PingCastle-Interaktion wird als Muster uebernommen, Farben und Geometrie folgen den freigegebenen ASSESSOR-Ansichten. 24 fokussierte Tests einschliesslich echter Results-Klickpfade und UI-/API-Versionsvertrag, Local-only-/Designcheck sowie beide Produktionsbuilds bestanden. Im freigegebenen Dummy wurden Inventory/Admin Groups, die breite 13-Spalten-Tabelle, Suche/Nulltreffer, Escape und Light/Dark visuell geprueft; Light wurde wiederhergestellt. Rueckwaertskompatible UI-Korrektur als Patchversion 2.6.4; keine Import-, Persistenz- oder Bestandsdatenaenderung. Risiko: Die vorhandene Quelle belegt fuer wiederholte `Admin groups detail`-Tabellen keinen individuellen Gruppennamen wie `Enterprise Administrators`; ein solcher Titel wird nicht aus Tabellenreihenfolge oder Mitgliederzahl geraten. Die Nummerierung unterscheidet sie nur innerhalb ihres Abschnitts, ohne eine Gruppenbeziehung zu behaupten. Phase 7 bleibt in Arbeit. Work-Sidebar-Sicherheitsdomaenen 2026-09-24 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): Die Domaenenliste wirkte durch eigene kleine Kachelflaechen, kompakte Informationsschrift und einen bis zum Sidebar-Ende gestreckten Rack wie ein fremdes Menue. Sie verwendet jetzt die vorhandene Sidebar-Navigationssprache: transparente, direkt unter der Navigation gruppierte Zeilen mit ruhigem Hover, einer dezenten Trennlinie und der gemeinsamen gelben Auswahlmarkierung. Domaenennamen und Trefferzahlen nutzen die vereinbarte 14px-Informationsrolle, lange Namen brechen nur an Wortgrenzen um; die Liste streckt sich nicht mehr ueber leeren Raum. Filterkatalog, Reihenfolge, Trefferzaehlung und Auswahlpfad bleiben erhalten. Im freigegebenen Dummy wurde Work mit 58 CIS-CAT-Abweichungen unter `System Hardening` in Light und Dark visuell geprueft; der Wechsel zu `Identity & Account Hygiene` zeigte 120 Treffer und die Rueckkehr 58. Light und der Ausgangsfilter wurden wiederhergestellt. 26 fokussierte Tests einschliesslich UI-/API-Versionsvertrag, Designcheck und beide Produktionsbuilds bestanden. Entscheidung: Rueckwaertskompatible reine UI-Korrektur als Patchversion 2.6.3. Kein Import-, Persistenz-, Klassifikations- oder Bestandsdateneingriff; Phase 7 bleibt in Arbeit. Restrisiko: Bei sehr niedriger Fensterhoehe scrollt die Liste innerhalb der Sidebar. Security-Domain-Zuordnung im Dummy 2026-09-24 (Phase 7, Nutzerkorrektur, umgesetzt und verifiziert): 13 fehlgeschlagene CIS-CAT-Pro-Windows-Pruefungen zu Sperrbildschirm, SMB v1, IP-Quellrouting, ICMP-Redirects, KeepAlive, NetBIOS-Namensfreigabe, Router Discovery, TCP-Wiederholungen und Kernel-DMA-Schutz erschienen unter `Unclassified`, weil die gemeinsame Client-Info-/Work-Domaenenregel ihre konkreten Prueftitel nicht erkannte. Der gemeinsame Katalog ordnet diese eindeutig benannten Themen jetzt `System Hardening` zu; Status, Originalwerte und Provenienz bleiben unveraendert. Ein synthetischer Work-Facetten-/Filtertest reproduzierte die 13 falschen Zuordnungen vor der Korrektur und prueft ihre Zuordnung sowie einen weiterhin unklassifizierten Gegenfall; ein Komponenten-Klickpfad prueft die tatsaechliche Umschaltung von `Unclassified` nach `System Hardening` bei erhaltenem Status- und Quellfilter. 42 fokussierte Tests einschliesslich UI-/API-Versionsvertrag, Local-only- und Designcheck sowie beide Produktionsbuilds bestanden. Im freigegebenen Dummy zeigt Work bei `Deviation` nun `Unclassified · 0`; mit `Source: Scan = CIS-CAT Pro` stehen 58 fehlgeschlagene Pruefungen unter `System Hardening`, einschliesslich der betroffenen Titel. Entscheidung: Rueckwaertskompatible Klassifikationskorrektur als Patchversion 2.6.2. Restrisiko: Andere fachlich unbekannte Prueftitel bleiben zu Recht `Unclassified`, bis eindeutige Evidenz fuer eine Zuordnung vorliegt. Keine Import-, Persistenz-, Score- oder Bestandsdatenaenderung; Phase 7 bleibt in Arbeit. Environment-Detail-Results-Werkzeugangaben 2026-09-24 (Phase 7, Nutzerpraezisierung zur laufenden 2.6.1-Korrektur, umgesetzt und verifiziert): Die sichtbare Herkunftskette der Originaltabellen nennt nur Berichtsabschnitt und native Teilueberschrift; Abschnittstitel und Einzelbeobachtungstabellen wiederholen den Werkzeugnamen nicht mehr. Die Quellwerkzeugidentitaet mit Version bleibt ausschliesslich im aufklappbaren `Show source details` als Provenienz erhalten, nicht als Tabellenzelle. Native Quellprosa bleibt unveraendert. Der fachliche Tabelleninhalt und die exakte Zuordnung von Beobachtungen bleiben unveraendert. 10 fokussierte Environment-Tests, beide Produktionsbuilds und Designcheck bestanden; die Inventory-Results-Ansicht im freigegebenen Dummy zeigt im Light Mode Abschnitt und Teilueberschrift ohne Werkzeugangabe, auch die geoeffnete Beobachtungstabelle besitzt keine Werkzeugspalte. Die Darstellung verwendet unveraenderte Theme-Tokens; Dark wurde in der zugehoerigen 2.6.1-Abnahme geprueft. Dieselbe noch uncommittete 2.6.1-UI-Korrektur wurde damit nach Nutzerfeedback verfeinert; kein weiterer Versionssprung oder Phasenabschluss. Keine Import-, Persistenz- oder Bestandsdatenaenderung. Environment-Detail-Results-Herkunftskette 2026-09-24 (Phase 7 mit erhaltener Phase-13C-Quellprovenienz, Nutzerkorrektur, umgesetzt und verifiziert): Jede Originaltabelle zeigt jetzt unmittelbar Werkzeug, Berichtsabschnitt und, soweit eindeutig belegt, ihre native Teilueberschrift. Der Titel kennzeichnet sie ausdruecklich als Originaltabelle. Beobachtungen werden nur bei exakter Uebereinstimmung von Scanlauf, Importdatei, Abschnitt und eindeutigem Quelltabellenindex bei dieser Tabelle angezeigt. Die technische Beobachtungstabelle bleibt fuer Lesbarkeit zunaechst eingeklappt; abschnittsbezogene oder in der aktuellen Ansicht nicht eindeutig zuordenbare Beobachtungen bleiben separat und mit erklaerter Zuordnungsgrenze erreichbar. Keine Beobachtung wird verworfen oder mehrfach zugeordnet. Technische Abschnittsmetadaten sind ueber `Show source details` erreichbar. Entscheidung: Die Leseprojektion nutzt ausschliesslich erhaltene Provenienz und erfindet keine fachliche Zuordnung. 20 fokussierte Klickpfad-, Provenienz- und Produktversionstests, beide Produktionsbuilds, Local-only- und Designcheck bestanden; App HTTP 200 und PostgreSQL-Backend melden 2.6.1. Die geoeffnete Inventory-Results-Ansicht im freigegebenen Dummy wurde in Light und Dark auf Herkunftskette, eigenstaendige Originaltabellen, geschlossene Detailbeobachtungen und Lesbarkeit geprueft; Light wurde wiederhergestellt. Risiko: Generische oder maschinelle Quellbezeichnungen bleiben als solche sichtbar, wenn der Import keinen eindeutig belegten nativen Titel liefert. Phase 7 bleibt in Arbeit. Rueckwaertskompatible UI-Korrektur als Patchversion 2.6.1; keine Import-, Persistenz-, Score-, Disclosure- oder Bestandsdatenaenderung. Client-Info-HTML-Reports 2026-09-23 (Phase 7 UI-Anbindung, neuer querschnittlicher A/B-Deliverable; in Arbeit): Zwei flache Buttons erzeugen aus dem gewaehlten Timeslot getrennte, statische HTML-Dateien fuer Management und Technik. Die Report-Projektion 1.1.0 entsteht erst beim Export aus allen aktuellen Scanner- und Policy-Ergebnissen; der sichtbare Source-Filter veraendert sie nicht. Der bestehende Management-Renderer enthaelt keine technischen Einzelwerte oder Asset-IDs; der neue Technical-Renderer zeigt Result-Inventar, Findings, Originalfelder, Ist/Soll, GPO-Register samt retained Backup-Anweisungen, Diagnostics und vollstaendigen Result-Index. Unbelegte Angaben bleiben ausdruecklich unbekannt, GPO-Backups beweisen keinen effektiven Endpunktzustand, Review-Schritte sind unverifizierte Selbstauskunft. Kein Import-, Schema-, Persistenz- oder Result-DB-Disclosure-Eingriff. Synthetische Klickpfad- und Renderertests sowie beide Produktionsbuilds bestanden; weitere Vollstaendigkeitspruefung fuer Diagnostics, Reimport-Metadaten und alle Quellformate sowie visuelle Light-/Dark-Abnahme im Dummy bleiben offen. Rueckwaertskompatible Capability als Minorversion 2.6.0; Phase 7/13C und der A/B-Deliverable werden dadurch nicht als abgeschlossen markiert. Environment-Results-Tabellenueberschriften 2026-09-23 (Phase 7 mit erhaltener Phase-13C-Quellprovenienz, Nutzerkorrektur): Das 2.5.14-Fenster setzte eine aus dem ersten Unterabschnitt stammende Abschnittsueberschrift wie `Honey Pot` ueber weitere, fachlich andere Tabellen. Die reine Leseprojektion verbindet nun jede native Tabelle innerhalb exakt desselben Scanlaufs, derselben Importdatei und desselben Abschnitts ueber den bereits erhaltenen internen Tabellenindex mit der zugehoerigen Quell-Unterabschnittsueberschrift. Mehrdeutige Labels bleiben beim nativen Tabellennamen; ein generischer Zaehlname wie `Tabelle 40` wird bei eindeutigem Unterabschnitt nicht als Ueberschrift ausgegeben. Wenn ein breiter Abschnitt faelschlich den Namen seines ersten Unterabschnitts traegt, wird der technische Abschnittsschluessel lesbar als uebergeordneter Titel dargestellt. Abschnitts- und Snapshotmetadaten besitzen je Zeile nur noch ein Label-Wert-Paar; native Spaltenkoepfe bleiben mit ihren Daten in derselben horizontal scrollbaren Tabelle. Die sichtbare Zeile `Source table index` entfaellt, die technische Zuordnung bleibt intern erhalten. 32 fokussierte synthetische Import-, Klickpfad-, Konflikt- und Versionsvertragstests, beide Produktionsbuilds, Local-only- und Designcheck bestanden. Keine Kundendateninspektion, Bestandsmutation, Import-, Persistenz- oder Result-DB-Aenderung. Phase 7/13C bleiben in Arbeit; reale Theme-Abnahme nur im freigegebenen Dummy noch offen. Patchversion 2.5.15. Environment-Detail-Results Korrektur 2026-09-23 (Phase 7, mit read-only Scanner Context aus Phase 13C): Die vorherige 2.5.13-Umsetzung duplizierte im Results-Fenster nur die Kachelzusammenfassung und erfuellte damit die aktuelle Nutzeranforderung nicht. Die acht Buttons behalten Kachel, Fensterbedienung und Fokusvertrag, zeigen im Fenster aber jetzt die tatsaechlich gespeicherten Originalabschnitte mit allen Quelltabellenzeilen, Prosa, Zustand und Herkunft sowie die zugeordneten Einzelbeobachtungen mit getrenntem Original-/Normalwert. Source Overview enthaelt zusaetzlich die Quell- und Scan-Score-Beitraege, die vollstaendigen Quell-Findingfelder sowie alle behaltenen Abschnitte/Beobachtungen, auch nicht zuordenbare. Betriebssysteme behalten ihre gruppierte Tabelle und ergaenzen die nativen Tabellen. Umfangreiche Tabellen, Beobachtungen, Abschnitte und Findings werden in nachladbaren Bloecken vollstaendig zugaenglich; fehlender Kontext bleibt ausdruecklich leer statt erfunden. Reine bestehende Snapshot-/Record-Leseprojektion ohne Import-, Persistenz-, Result-DB-Disclosure-, Scoring- oder Reimportaenderung. Ausschliesslich synthetische Verhaltensdaten, kein Zugriff auf Kundendaten; fokussierte Interaktions-/Quelltests, Versionsvertrag, beide Produktionsbuilds, Local-only- und Designcheck bestanden. Reale Light-/Dark-Ansicht ist wegen der Dummy-Zugriffsgrenze nicht abgenommen. Phase 7/13C bleiben in Arbeit. Patchversion 2.5.14. Environment-Detail-Results 2026-09-23 (Phase 7, Nutzerwunsch, umgesetzt und synthetisch verifiziert): Alle acht bestehenden Environment-Detail-Kacheln (Source Overview, Directory, Resilience, Inventory, Password policy, Certificates & PKI, Source metrics und Operating systems) verwenden denselben `Results`-Button und dasselbe verschiebbare/maximierbare Floating Window wie zuvor Operating systems. Das Fenster wiederholt jeweils ausschliesslich die bereits sichtbaren Quelldaten der Kachel; unbekannte Fakten bleiben `—`, die Source-Overview-Drilldowns und die Scoring-Methodology-Aktion bleiben erhalten. Jeder Button hat den kachelspezifischen Dialognamen, den sichtbaren Open-Zustand und die Fokus-Rueckgabe nach dem Schliessen. Source Overview darf bei schmaler Kachelbreite umbrechen. 42 fokussierte Tests, darunter ein synthetischer Durchlauf aller acht normalen Buttons, sowie Client-/Server-Produktionsbuild, Local-only- und Designsprachenpruefung bestanden. Gesamtsuite: 1.453 bestanden, 13 optionale Skips und dieselben fuenf bekannten fachfremden Vertragsfehler. Laufende App auf 5173 und PostgreSQL-Backend auf 4173 erreichbar; Backend meldet Produktversion 2.5.13. Keine Kundendateninspektion, Import-, Persistenz-, Score- oder Reimportaenderung. Light/Dark wurde nicht an einem realen Mandanten visuell abgenommen; Token- und Strukturvertrag sind geprueft. Patchversion 2.5.13. Verifikation 2.5.12: 69 fokussierte Tests und beide Produktionsbuilds bestanden; die Gesamtsuite vor dem zusaetzlichen Routentest meldete 1.451 bestanden, 13 optionale Skips und dieselben fuenf bereits vorbestehenden fachfremden Vertragsfehler. Local-only-Sicherheitspruefung und Designsprachenpruefung bestanden. Laufendes lokales Backend auf Port 4173 meldet 2.5.12 mit PostgreSQL, App auf Port 5173 antwortet mit HTTP 200. Kein Zugriff auf den gemeldeten Kundenscope; dessen tatsaechliche Ansicht bleibt vom Nutzer zu pruefen. PingCastle-Titel-/ID-Korrektur 2026-09-23 (Phase 7/13C mit Disclosure-Grenze aus Phase 12/13B, Nutzerregression): Die vorherige 2.5.11-Abnahme erfasste nur unterschiedliche Titel innerhalb desselben kanonischen Occurrence; der gemeldete HTML-/XML-Zweiberichtsfall blieb dadurch falsch. Work gleicht nun ausschliesslich PingCastle-Vorkommnisse mit derselben Projekt-, Berichtsdatum-, Dateistamm- und nativen Regel-ID ab und bevorzugt den eindeutigen fachlichen Titel des zugehoerigen XML-/HTML-Berichts. Bei widerspruechlichen gleichwertigen Titeln wird nicht geraten; der native HTML-Checktitel bleibt als `Native source heading` erhalten. Die Result DB gibt oeffentlich dokumentierte PingCastle-Regel-IDs anhand des erweiterten offiziellen Katalogs frei und bewahrt deren native Schreibweise (`S-oldNtlm`); unbekannte IDs bleiben gesperrt. Disclosure Policy 2.5.0, Patchversion 2.5.12. Keine Kunden-/Bestandsdaten, Migration oder Reimporte veraendert; Verifikation ausschliesslich synthetisch; auch Dummy wurde in diesem Schritt nicht gelesen. Gemeinsame Result-DB-/Work-Ueberschrift 2026-09-23 (Phase 7/13C, Nutzerwunsch, umgesetzt und verifiziert): Work verwendet fuer Scannerfindings nun denselben kanonischen Definitionstitel wie die Result DB, statt die Ueberschrift erneut aus dem vorkommnisspezifischen nativen `Title`-Feld aufzubauen. Dadurch erscheint insbesondere bei verschiedenen PingCastle-Berichtsrepraesentationen die fachlich besser zuordenbare Result-DB-Ueberschrift einheitlich in Work-Aggregat, Quellansicht, Kartenliste und Finding Reader. Ein abweichender nativer Quelltitel bleibt in der reinen Leseprojektion als `Native source heading` sichtbar; Originalfelder, Provenienz, Identitaet und Persistenz bleiben unveraendert. Der konkrete Unterschied zwischen einem regelorientierten Checktitel und einem anzahlbezogenen kanonischen Titel ist mit ausschliesslich synthetischen Daten als Verhaltensregression abgesichert. 42 fokussierte Tests, Client-/Server-Produktionsbuild, Local-only- und Designpruefung bestanden. Gesamtsuite: 1.448 bestanden, 13 optionale Skips und die fuenf bekannten fachfremden Vertragsfehler. Keine Bestandsdaten-, Import-, Persistenz- oder Reimportaenderung. Patchversion 2.5.11. LLM-Result-DB-GPO-Quellenentkopplung 2026-09-23 (Phase 12/13B, Nutzerpraezisierung, umgesetzt und verifiziert): Disclosure Policy 2.4.0 behaelt die vollstaendige technische GPO-Abweichung mit Titel, kontrollierter Source Rule ID, Policy-Pfad/Value Name, Operation, Typ, Ist-/Sollwert, Vergleich, Status, oeffentlicher Baseline, technischer Beschreibung/Empfehlung, belegten Diagnosen, Aussagegrenze und Verarbeitungsversionen. Gleichzeitig entfallen `policyIdentityKey`, interne Baseline-IDs, automatisch erzeugte `gpo-policy-identity-*`-Hashes sowie jede Projekt-, Domain-, GPO-, Backup-, Datei-, Locator-, Zeit- und Reviewidentitaet. Wohlbekannte oeffentliche Principals bleiben lesbar; Domain-SIDs werden zu `S-1-5-21-[DOMAIN]-`, bekannte Domainrollen zu `[DOMAIN]\\` und sonstige konkrete Principals zu stabilen resultlokalen `[DOMAIN_PRINCIPAL_n]`. Dieselbe Reduktion gilt rekursiv fuer Baselinevarianten. Work und GPO Analysis behalten unveraendert alle Originale. Die konkrete Dummy-GPO-Struktur ist als synthetischer Disclosure-, Result-Row- und JSONL-Leckagetest abgebildet. 70 fokussierte Tests, Produktversionsvertrag, Client-/Server-Produktionsbuild, Local-only- und Designpruefung bestanden; App und PostgreSQL-Backend liefern 2.5.10. Keine Bestandsdaten-, Persistenz-, Import- oder Reimportaenderung. Patchversion 2.5.10. Generische Security-Domain-Abdeckung und robuste Work-Suche 2026-09-23 (Phase 7/13C, Nutzerkorrekturen, umgesetzt und verifiziert): `Unclassified` ist ausschliesslich der letzte ehrliche Restfall, wenn keine belastbare Evidenz existiert oder eine Zuordnung mehrere Domains gleich plausibel machen und damit erfunden werden muesste. Die gemeinsame Klassifikation wertet zuerst Titel, beschreibende Kernfelder, Kategorien und `Source Rule ID` aus. Wenn diese keine Domain liefern, dienen technische Erklaerung, Rationale, Empfehlung, Remediation, Loesung, Impact und Details als zweite Evidenzstufe; diese darf nur bei genau einer passenden Domain zuordnen. `Print Spooler` beziehungsweise der eindeutige Token `Spooler` wird dabei werkzeugunabhaengig `System Hardening` zugeordnet. Die Implementierung kennt keine Sonderverzweigung fuer PingCastle oder `A-DC-Spooler`; der konkrete PingCastle-Fund, eine anders benannte Scannerregel, ein rein narrativer Fund und ein absichtlich mehrdeutiger Restfall sichern die Grenze. Die zentrale Work-Suche normalisiert den Suchbegriff selbst trim- und gross-/kleinschreibungsunabhaengig und durchsucht den sichtbaren Datensatztitel sowie alle erhaltenen Felder einschliesslich `Source Rule ID`. Aktive Status-, Facetten- und Scopefilter bleiben bewusst wirksam. 44 fokussierte Tests, Produktversionsvertrag, Client-/Server-Produktionsbuild, Local-only- und Designpruefung bestanden. Keine Kunden-, Import-, Persistenz-, Score- oder Reimportaenderung. Patchversion 2.5.9. Source-Rule-ID in Result DB und Work 2026-09-23 (Phase 7/13C mit Datenschutzgrenze aus Phase 12/13B, Nutzerwunsch, umgesetzt und verifiziert): Native Scanner-Regelkennungen erhalten in der Work-Projektion die werkzeugunabhaengige Bezeichnung `Source Rule ID` und erscheinen als eigenes technisches Feld im Finding Reader; Work-Exporte und die oeffentliche regelspezifische Suche erkennen dieselbe Bezeichnung. Die Result DB zeigt die nach Disclosure Policy 2.3.0 freigegebene Source Rule ID als feste Tabellenspalte und weiterhin im Detail. Die Korrektur umfasst auch explizit gescopte Purple-Knight-AD-/Entra-/Kombinationslaeufe, deren gueltige `SI...`-ID bisher durch die Scope-Bezeichnung verloren ging. Originalfelder und Provenienz bleiben unveraendert; fehlende IDs werden nicht erzeugt, unbekannte oder nicht oeffentlich validierte IDs bleiben in der Result DB fail-closed. GPOs behalten ihre getrennt bezeichnete technische Setting-ID, da sie keine native Scanner-Rule-ID liefern. 133 fokussierte Tests, Client-/Server-Produktionsbuild, Local-only- und Designpruefung bestanden. Gesamtsuite: 1.444 bestanden, 13 optionale Skips und die fuenf bekannten fachfremden Vertragsfehler. Live-Abnahme ausschliesslich im Mandanten `Dummy`: Result-DB-Spalte und Work-Reader-Feld in Light und Dark lesbar. Keine Schema-, Import-, Persistenz-, Reimport- oder Bestandsdatenmutation. Patchversion 2.5.8. Result-DB-GPO-Nutzbarkeit und Purple-Knight-Entra-Scope 2026-09-23 (Phase 7/13C mit Datenschutzgrenze aus Phase 12/13B, Nutzerkorrektur, umgesetzt und verifiziert): Disclosure Policy 2.2.0 ersetzt fuer GPO-Vergleiche die unbrauchbaren generischen Titel und die vollstaendige Wertunterdrueckung. Result DB und ihr JSONL zeigen jetzt den konkreten Richtliniennamen beziehungsweise technischen Pfad, konfigurierte Kundenwerte, erwartete Baselinewerte, Baselinevarianten und eine nicht-hashartige technische Setting-ID; automatisch erzeugte `gpo-policy-identity-*`-Hashes werden nicht als vermeintlich hilfreiche Identitaet ausgegeben. Die bestehende Aussagegrenze bleibt sichtbar: Backupvergleich, kein Nachweis effektiver Endpunktkonfiguration. Scannerredaktion und Scope-Handle-Entfernung bleiben unveraendert. Purple-Knight-Findings tragen zusaetzlich einen kontrollierten Scope aus dem kanonischen ScanRun-Namen. `Purple Knight for Active Directory`, `Purple Knight for Entra ID` und ein explizit kombinierter Lauf erscheinen damit als getrennte Result-DB-Quellen und Filterwerte, waehrend Profil-ID und Scannerfamilie `purple-knight` bleiben. Historische unspezifische Purple-Knight-Laeufe werden nicht aus Titeln oder Regelnummern geraten und bleiben bis zum auditierten Reimport unter dem bisherigen Sammelwert. Verifikation ausschliesslich mit synthetischen Daten und im freigegebenen Mandanten `Dummy`: 50 fokussierte Tests, Client-/Server-Produktionsbuild, Local-only- und Designpruefung erfolgreich; Gesamtlauf 1.443 bestanden, 13 optionale Skips und fuenf vorbestehende fachfremde Vertragsfehler. Keine Schema-, Import-, Persistenz- oder Bestandsdatenmutation. Patchversion 2.5.7. Maester-Finding-Reader 2026-09-22 (Phase 7/13C, Nutzerkorrektur, umgesetzt und verifiziert): Work bildet Maester-Findings nun aus den erhaltenen Originalfeldern in der fachlichen Berichtsreihenfolge `ID`, `Test result`, `Test details`, `Category`, `Tags`, `Source` ab. Die eigentliche Ueberschrift verwendet ausschliesslich Maesters `Title` und wiederholt die native Regel-ID nicht aus dem ID-praefigierten `Name`; die ID bleibt darunter als eigenes technisches Feld sichtbar. Ausfuehrungsfehler bleiben als eingeklappte technische Detailinformation erhalten; Dauer, Index und doppelte Rohfelder fuellen weder Lesespalte noch Additional Information. Ein statusartiger Maester-`Result`-Wert wie `Failed` erzeugt keinen falschen Hinweis auf eine fehlende Results-Datei. Die oeffentliche AI-Suche erkennt `CISA.MS.EXO.17.3` als exakte Maester-Regel zur Microsoft-Purview-Auditaufbewahrung und nicht mehr als generische Windows-Audit-Policy. Der reale LSW-Bestand bestaetigte read-only die vollstaendige Quellbasis (Title, Result, Severity, Tag, Block, ErrorRecord, ScriptBlockFile und ScriptBlock); keine Bestandsmutation und kein Reimport. 83 fokussierte Reader-, Such-, Linker-, Import-, Titel-, Facetten- und Viewer-Tests sowie Client-/Server-Produktionsbuild bestanden. PingCastle-Security-Domain-Vokabular 2026-09-22 (Phase 7/13C, Nutzerfehlerbericht, umgesetzt und verifiziert): `Unclassified` ist ausschliesslich eine fehlende Zuordnung zum gemeinsamen Security-Domain-Katalog und keine Aussage ueber Wichtigkeit, Severity, Ergebnis oder Scannererkennung. Der bisherige Katalog kannte mehrere eindeutige PingCastle-Begriffe nicht. `Obsolete OS`, `Hardened Paths`, Script Engines und CVE-Mitigation werden nun `System Hardening` zugeordnet; LDAPS, Channel/Anonymous Binding, rootDSE und veraltete LDAP-TLS-Versionen `Authentication & Access`; OU-Loeschschutz sowie NTFRS/SYSVOL `AD Infrastructure & PKI`. Ein synthetischer Work-Verhaltenstest bildet alle neun im Nutzerbeispiel sichtbaren Titel ab und verlangt null `Unclassified`. 28 fokussierte Domain-, Sidebar- und Filtertests sowie Client-/Server-Produktionsbuild bestanden. Reine gemeinsame Leseprojektion ohne Quellwert-, Severity-, Status-, Score-, Persistenz- oder Reimportaenderung. Data-Hub-Reimporthinweis-am-Tool 2026-09-22 (Phase 7/13B, ausdruecklicher Nutzerwunsch, umgesetzt und verifiziert): Processing-, Review- und Reimporthinweise stehen nicht mehr als timeslotweiter Sammelblock nach allen Quellen. Jeder betroffene Scan zeigt unmittelbar unter seiner eigenen Tabellenzeile eine flache Hinweiszeile mit konkreter Erklaerung und ausschliesslich seiner Reimport- beziehungsweise sicheren Uebernahmeaktion. Kurzstatus, Scan-Auswahl, Delete-Aktion, Preservation Contract und atomarer Ersatzpfad bleiben unveraendert. Die Darstellung verwendet bestehende Data-Hub-Flaechen, Statusrollen, Typografie und Buttongeometrie; bei schmaler Breite fliesst die Aktion unter den Text. 61 fokussierte Tests sowie Client-/Server-Produktionsbuild bestanden. Die Live-Pruefung am Liftket-Timeslot bestaetigt die beiden jeweils direkt unter ihrem PurpleKnight-Scan stehenden Hinweise, einen unbeeinflussten bereiten PingCastle-Eintrag und die sichtbare Produktversion 2.5.6. Maester-Unclassified-Suitefallback 2026-09-22 (Phase 7/13C, Nutzerfehlerbericht, umgesetzt): `Unclassified` bezeichnet in Work die fehlende Zuordnung zu einer der acht gemeinsamen Security Domains, nicht eine unbekannte Scannerherkunft. Maester-Felder `BLOCK`, `ID` und `TAG` waren bislang keine Domain-Evidenz; deshalb fielen insbesondere ORCA-/EXO-Findings trotz eindeutigem Exchange-Online-Suitecode in den Rest. Die gemeinsame Leseprojektion verwendet nun die stabilen Suitekennungen `ORCA`/`EXO`, `EIDSCA`, `CISA.MS.EXO`/`CISA.MS.AAD` und die entsprechenden Maester-Suiten ausschliesslich als Fallback fuer `Cloud & Applications`. Aussagekraeftige Titel-/Beschreibungsregeln behalten Vorrang, sodass etwa Conditional Access weiter `Authentication & Access` zugeordnet wird. Originalfelder, Scanneridentitaet, Ergebnisstatus, Score und Persistenz bleiben unveraendert; kein Reimport. ASSESSOR-Produktversion 2.5.6 am 2026-09-22 (querschnittlich, Nutzerhinweis, umgesetzt): Die seit 2.5.5 hinzugekommenen rueckwaertskompatiblen Korrekturen werden als Patch-Release 2.5.6 ausgewiesen. `package.json` bleibt die einzige Produktversionsquelle; Header, About-Dialog und Health-API lesen denselben Wert. Paket-Lock und die UI-/HTTP-Vertragstests erwarten ebenfalls 2.5.6. Historische Pruefberichte behalten ihren dokumentierten damaligen Stand 2.5.5. Purple-Knight-AD-ist-kein-Maester 2026-09-22 (Phase 13A/13B, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): `Purple Knight for Active Directory` ist ein eigenstaendiger Purple-Knight-Assessment-Scope und niemals Maester oder Entra ID. Sein kanonischer Tool-ID bleibt ausschliesslich `purple-knight`; AD-Zusammenfassungen erzeugen weder `maester.*`- noch `entra.*`-Kontext. Der historisch benannte Dashboard-Hilfsexport `dashboardMaesterTenantCount` wurde entfernt; die werkzeuguebergreifende Entra-Tenant-Zaehlung heisst ausschliesslich `dashboardEntraTenantCount`. Ein synthetischer Verhaltensregressionstest prueft den vollstaendigen AD-Import bis ScanRun, Tool-ID, Anzeigename und Umgebungsbeobachtungen. Purple-Knight-AD-/Entra-Trennung 2026-09-22 (Phase 13A/13B, Nutzerwunsch, umgesetzt und verifiziert): Profil 1.4.0 und Summary-Extractor 1.2.0 erkennen sowohl die native AD- als auch die Entra-ID-Zusammenfassung. Scanlaeufe werden bei gemeinsamer Profil-ID eindeutig als `Purple Knight for Active Directory` beziehungsweise `Purple Knight for Entra ID` bezeichnet. Entra-Tenant, nativer Entra-Posture-Score, IOE-/Evaluated-Zaehler und Entra-Kategoriescores werden kanonisch mit eigener Zielidentitaet gespeichert; AD-Werte bleiben Forest-gebunden und werden nicht vermischt. Client Info zaehlt Entra-Tenants werkzeuguebergreifend und zeigt den Tenant im internen Directory-Kontext. Der reale Liftket-Bestand bestaetigte die Ursache read-only: AD-XLSX mit 119 Findings und 22 AD-Beobachtungen; separater Entra-CSV-Lauf mit 56 Findings, aber wegen generisch importierter Summary bisher 0 Beobachtungen. Der bestehende Lauf bleibt unveraendert und benoetigt den ausdruecklichen Reimport derselben acht Originaldateien, die ASSESSOR nicht aufbewahrt. 109 fokussierte Tests sowie Client-/Server-Produktionsbuild bestanden; keine Migration, Reimporte oder Bestandsmutation. Result-DB-LLM-Datenschutzgrenze 2026-09-22 (Phase 12/13B, Nutzerkorrektur, umgesetzt und verifiziert): `result-db-disclosure` 2.1.0 behaelt bei bekannten Scannerprofilen die fuer ein LLM erforderlichen Finding-Titel, Beschreibungen, Empfehlungen und sicher validierten Regel-IDs. Personen-, Firmen-, Tenant-, Domain-, Host-, Konto-, Asset-, Pfad-, SID-, E-Mail- und interne Scope-/Provenienzwerte werden weiterhin entfernt oder in der Regelprosa durch typisierte Platzhalter ersetzt; HTML-Regelprosa wird zu lesbarem Klartext. Unbekannte Quellen, Zusatzbeobachtungen und kundenbezogene GPO-Werte bleiben fail-closed. Der explizite `internal-analysis`-Pfad behaelt Originale fuer Work und GPO Analysis; JSONL 2.0.0 wendet dieselbe Projektion erneut an und entfernt zusaetzlich Scope-/Result-/Run-/Artefakt-IDs, Zeitpunkte, Suchtext und konkrete Filterwerte. 45 fokussierte Domain-, Persistenz-, UI-, GPO- und Exporttests bestanden. Im laufenden PostgreSQL-Pfad besitzen alle 530 Purple-Knight-Zeilen wieder aussagekraeftige Titel/Beschreibungen und native SI-Regel-IDs, 501 eine Empfehlung; es wurden keine Asset-Wiederholungen, E-Mail-/UPN-, Domain-SID- oder Firmensuffixmuster ausgegeben. Keine Migration, Reimporte oder Bestandsdatenmutation; Phase 13B bleibt in Arbeit. Maester-Unicode-Null-Import 2026-09-20 (Phase 13A/13C, Nutzerfehlerbericht, umgesetzt und verifiziert): Ein nativer Maester-Fehlertext enthielt `U+0000`. Vorschau und Mapping waren erfolgreich, der atomare PostgreSQL-Abschluss scheiterte jedoch, weil `jsonb` dieses Zeichen nicht repraesentieren kann; die bisherige Auto-Import-Fehlerbehandlung ersetzte danach die erfolgreiche Vorschau irrefuehrend durch `0 of 0 files selected`. Die gemeinsame kanonische Importgrenze stellt jedes solche Zeichen nun explizit als lesbares `\\u0000` dar, behaelt den gesamten umgebenden Quellwert, Hash und Locator und erzeugt die Diagnose `unicode-null-escaped`. Andere Steuerzeichen, Parsing, Profilwahl, Normalisierung und Bewertung bleiben unveraendert. Nach einem Abschlussfehler bleibt die vorbereitete Dateizeile samt Wiederholungsmoeglichkeit sichtbar. Ein synthetischer Maester-XLSX-Test und der vollstaendige HTTP-Pfad Vorschau -> bestaetigte Zuordnung -> Import in vorhandenen Timeslot sichern genau die Regression; 26 fokussierte Tests, Client-/Server-Produktionsbuild, Local-only- und Designpruefung bestehen. Der optionale PostgreSQL-Testlauf wurde gemaess kanonischer-Datastore-Regel nicht gegen die bestehende Kundendatenbank ausgefuehrt. Keine Migration, Schema- oder Bestandsdatenaenderung; Phase 13A bleibt abgeschlossen, Phase 13C in Arbeit. Client-Info-Security-Domain-Mengenbalken 2026-09-20 (Phase 7, ausdrueckliche Nutzerentscheidung und nachfolgende Ausrichtungs-/Farbkorrekturen, umgesetzt und verifiziert): Jede angezeigte Security-Domain-Zeile traegt einen dezenten Mengenbalken in einer eigenen gemeinsamen Rasterspalte zwischen dem laengsten gerenderten Domainnamen und der breitesten gerenderten Mengenspalte. Dadurch liegen beidseitig 12 px Abstand; kein Balken kann in Schrift oder hinter eine Zahl wachsen. Alle Balken enden an derselben Kante und wachsen von dort nach links. Seine Breite entspricht dem sichtbaren Abweichungs- beziehungsweise Review-only-Wert der Zeile geteilt durch die Summe aller angezeigten Domainwerte; die exakte rechtsbuendige Zahl bleibt die autoritative sichtbare Angabe. Die spaetere Nutzerkorrektur ersetzt die kurzzeitig gewaehlte kategoriale `--viz-*`-Folge: Jeder Balken liest nun exakt denselben aktuellen semantischen Farbwert wie der Overall-Score-Donut und wechselt gemeinsam mit dessen Critical-, Medium-, Passed- oder Unknown-Tone. Die Balken sind rein dekorativ und fuer assistive Technik verborgen. Vier fokussierte Suites mit 23 Tests, die Designsprachpruefung sowie Client-/Server-Produktionsbuild bestehen. Die Live-Pruefung am freigegebenen Dummy bestaetigt fuer alle neun Zeilen getrennte Text-/Balken-/Zahlenspalten, beide 12-px-Abstaende, identische Donut-/Balkenfarbe `rgb(232, 33, 79)` und keinen horizontalen Ueberlauf in Light und Dark; Light wurde wiederhergestellt. Keine Daten-, Klassifikations-, Score-, Drilldown-, API- oder Persistenzaenderung. Client-Info-Lesetypografie 2026-09-20 (Phase 7, ausdrueckliche Nutzerentscheidung, umgesetzt und verifiziert): Informationstragende Beschriftungen und strukturierte Tabellen-/Kachelinhalte verwenden mindestens die 14-px-Datenrolle; eigentliche Lesewerte und Fliesstext verwenden die 16-px-Leserolle. Kompakte Controls, technische Metadaten und Badges bleiben getrennte Ausnahmen. Environment Detail setzt den Vertrag fuer Fakten, Source Overview und Operating systems um; `Domain` rendert mit 14 px/700 und `sevenkingdoms.local` mit 16 px/400. Drei fokussierte Suites mit 23 Tests, Designsprachpruefung und Client-/Server-Build bestehen. Die Live-Pruefung bestaetigt dieselben Groessen in Light und Dark ohne horizontalen Kachelueberlauf; Light wurde wiederhergestellt. Client-Info-PingCastle-OS-Zustaende 2026-09-20 (Phase 7, ausdrueckliche Nutzererweiterung, umgesetzt und verifiziert): Die Operating-systems-Tabelle zeigt neben `Devices` nun die von PingCastle je Betriebssystemzeile gelieferten Werte `Active`, `Inactive`, `Enabled` und `Disabled`. Die Projektion verbindet diese Werte ausschliesslich ueber identischen Scanlauf, Importdatei, Abschnitt, Quelltabelle und Quellzeile; sie berechnet keinen Zustand aus einem anderen und addiert weiterhin keine ueberlappenden Inventare. Fehlende Werte aus aelteren oder anderen Quellen bleiben `—`. Die read-only-Pruefung am freigegebenen Dummy bestaetigt fuer `Windows Server 2019 1809` die Quellwerte `1 / 1 / 0 / 1 / 0`; die zweite unquantifizierte Quelle bleibt in allen fuenf Spalten unbekannt. Drei fokussierte Suites mit 28 Tests, Client-/Server-Build, Designsprachen- und Local-only-Sicherheitspruefung bestehen. Light und Dark wurden live geprueft; alle Spalten passen bei 568 px Kachelbreite ohne horizontalen Ueberlauf, Light wurde wiederhergestellt. Data-Hub-/Client-Info-Deviation-Abgleich 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Data Hub berechnet seine Ergebnisdonuts nicht mehr nur aus scannergebundenen Run-IDs, sondern aus demselben ausgewaehlten gemischten Timeslot-Projektblatt wie Client Info. Assessmentgebundene GPO-/Policy-Ergebnisse bleiben dadurch enthalten; der freigegebene Dummy zeigt in beiden Ansichten `477` Deviations bei `1.833` Gesamtdatensaetzen beziehungsweise `26 %`. Beide Ansichten verwenden dieselbe zentrale autoritative Ergebniszustandsklassifikation. Der Client-Info-Donut uebernimmt zudem exakt die Data-Hub-Referenzvariante samt Kachelflaeche, Groesse, Padding, Titeltypografie, Ringgeometrie, Farben und Hover. Beim Mandantenwechsel wird die vorige Kennzahl sofort geleert, damit waehrend der asynchronen Projektion keine Zahl eines anderen Mandanten sichtbar bleibt. Vier fokussierte Suites mit 32 Tests, Client-/Server-Build, Designsprachen- und Local-only-Sicherheitspruefung bestehen. Die laufende Dummy-Ansicht bestaetigt `477 / 1.833 / 26 %` in beiden Bereichen; berechnete Light- und Dark-Styles sind identisch und Light wurde wiederhergestellt. Data-Hub-Mandantenauswahlkontur 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die persistente gelbe Kontur der ausgewaehlten Mandantenkachel ist gezielt von 2 px auf 3 px verstaerkt. Die Breite wird aus den bestehenden Linienrollen `--bw-emphasis` und `--bw-hairline` zusammengesetzt; Farbe, Innenversatz, Kachelgroesse und Layout bleiben stabil. Diese Ausnahme gilt nur fuer die ausgewaehlte Data-Hub-Mandantenkachel. Der getrennte blaue 2-px-Tastaturfokus, Hover, nicht ausgewaehlte Kacheln und alle anderen Auswahlkonturen bleiben unveraendert. Zwei fokussierte Suites mit 10 Tests, Client-/Server-Build, Designsprachen- und Local-only-Sicherheitspruefung bestehen. Die laufende Data-Hub-Ansicht bestaetigt die staerkere gelbe Kontur und `aria-pressed=true` in Light und Dark; Light wurde anschliessend wiederhergestellt. Light-Mode-Kachelflaeche-Nachschaerfung 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die gemeinsame Light-Mode-Kachelflaeche wird von dem weiterhin zu hellen `#FAFAFC` auf das dezentere Neutralgrau `#F5F5F7` abgesenkt. Die Aenderung bleibt auf `--tile-surface` begrenzt und gilt damit konsistent fuer Data Hub, Work, Client Info, DB Structure und Pathfinder. Die Kacheln bleiben heller als der App-Hintergrund `#F1F1F4`; Hover-, Auswahl-, Fokus-, Status- und Dark-Mode-Rollen bleiben unveraendert. Vier fokussierte Suites mit 24 Tests, Client-/Server-Build, Designsprachen- und Local-only-Sicherheitspruefung bestehen. Die laufende Client-Info-Ansicht bestaetigt `rgb(245, 245, 247)` im Light Mode und den unveraenderten Dark-Mode-Wert `rgb(50, 50, 56)`; Light wurde anschliessend wiederhergestellt. Client-Info-Deviations-Donut 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die Gesamtzahl `Deviations` in der Kachel `Data` wird nun mit der bestehenden gemeinsamen `DonutMetricCard` als vollstaendiger 360-Grad-Ring dargestellt. Die absolute Anzahl steht fett und zentriert, darunter der Anteil an allen Datensaetzen des aktuellen Client-Info-Projekts; beim freigegebenen Dummy sind das `477` und `26 %` aus `477 / 1.833`. Der Donut liegt transparent in der vorhandenen Kachel, erzeugt keine verschachtelte Kachelflaeche und bleibt vollstaendig per Maus und Tastatur als Drilldown nach Work mit `Deviation` bedienbar. Vier fokussierte Suites mit 27 Tests, Client-Build, Designsprachen- und Local-only-Sicherheitspruefung bestehen. Die laufende Browseransicht wurde in Light und Dark geprueft; Ring, Innenabstand, Ausrichtung, Beschriftung und zugaenglicher Name `Deviations: 477, 26%` sind korrekt, der urspruengliche Light Mode wurde wiederhergestellt. Client-Info-Environment-Detail-Icons-and-Spacing 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Alle acht Kachelueberschriften in Environment Detail, einschliesslich `Source Overview` und `Operating systems`, tragen nun genau ein bestehendes dezentes ASSESSOR-Liniensymbol in der abgesetzten Textfarbe. Die Faktengruppen uebernehmen den Listenabstand und das Zeilenpolster von Source Overview (`12px 0 16px` beziehungsweise `12px 8px`) und wirken dadurch luftiger und einheitlich. Vierer-Raster, feste Kachelhoehen und internes Scrollen bleiben erhalten. Verifiziert wurden 28 fokussierte Vitest-Faelle, Client- und Server-Build, Designsprachen- und Local-only-Sicherheitspruefung sowie die laufende Browseransicht in Dark und Light mit acht Ueberschriften und acht Symbolen. Client-Info-Environment-Facts-in-Data 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die separate obere Environment-Facts-Kachelreihe wurde entfernt. AD Domains, Entra Tenant, User Accounts, Computer Objects, Domain Controllers und GPOs stehen nun samt ihrer bestehenden Symbole innerhalb der `Data`-Kachel unter den zusaetzlichen Ergebniszustaenden. Dort bilden sie ein flaches 3-mal-2-Raster mit transparenten Zellen und dezenten Trennlinien statt verschachtelter Kacheln. Werte, unbekannt-Semantik und Datenherkunft bleiben unveraendert. Ein synthetischer Interaktionstest sichert alle sechs Fakten, Symbole und die Abwesenheit der frueheren oberen Reihe dauerhaft ab. Verifiziert wurden 29 fokussierte Vitest-Faelle, Client- und Server-Build, Designsprachen- und Local-only-Sicherheitspruefung sowie die laufende Browseransicht mit exakt sechs Fakten und Symbolen, drei gleich breiten Spalten, entfernter alter Faktenleiste und ausgerichteten Unterkanten von `Data` und `Domain Information`. Client-Info-Environment-Detail-Kachelraster 2026-09-20 (Phase 7, ausdrueckliche Nutzererweiterung, umgesetzt und verifiziert): Der gesamte aufgeklappte Environment-Detail-Inhalt ist als achtteiliges Raster organisiert: Source Overview, sechs fachliche Faktengruppen und Operating systems. Das Raster behaelt immer vier gleich breite Kacheln pro Reihe. Ein `ResizeObserver` leitet die einheitliche Kachelhoehe aus 75 Prozent der tatsaechlich gerenderten Overall-Score-Kachel ab; ueberlange Inhalte scrollen innerhalb ihrer Kachel. Auf schmalen Ansichten bleiben Spaltenzahl und Kachelbreite durch horizontalen Raster-Scroll stabil. Die Source-Overview-Kachel behaelt innen die vereinbarte schlichte Quellenliste und alle Drilldowns. Die Live-Pruefung bestaetigt acht Kacheln, vier gleich breite Spalten zu rund 578 px und 504,4 px Kachelhoehe bei 672,6 px Overall-Score-Hoehe; Source Overview und Source metrics scrollen intern. 29 fokussierte Dashboard-/Environment-/Interaktionstests, Designsprachpruefung, Client-/Server-Produktionsbuild und Local-only-Sicherheitspruefung bestehen. Client-Info-dominante-Abweichungszahl 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die klickbare Gesamtzahl `Deviations` in der Kachel `Data` verwendet nun die vorhandene 56-px-H1-Rolle mit kompakter Zeilenhoehe und groesserem vertikalem Abstand. Die Beschriftung bleibt direkt darunter und ist als semibold Feldlabel klar lesbar; die vier zusaetzlichen Ergebniszustaende bleiben bewusst kleiner. Farbe, Datenwert, Kachelgeometrie und der bestehende Work-Drilldown bleiben unveraendert. Die Live-Pruefung bestaetigt `477` mit 56 px/600 sowie `Deviations` mit 12 px/600 ohne Hintergrund oder Schatten. 18 fokussierte Dashboard-/Interaktionstests, Designsprachpruefung, Client-/Server-Produktionsbuild und Local-only-Sicherheitspruefung bestehen. Client-Info-Quellenliste-im-Environment-Detail 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Der separate Bereich `Source Overview` wurde aus der Hauptansicht entfernt. Dieselben Quelleninformationen stehen nun im aufgeklappten `Environment Detail` als kompakte Aufzaehlung mit Trennlinien und transparenten Zeilen statt Kacheln. ASSESSOR-Score, Bewertungsmethode, native Kontextwerte, Provisional-Hinweis, Scoring-Methodology-Dialog und die bestehenden Work-Drilldowns bleiben erhalten. Die sechs fachlichen Environment-Gruppen und der initial eingeklappte Zustand bleiben unveraendert. Die Live-Pruefung bestaetigt fuenf Quellenzeilen innerhalb von `Environment Detail`, keinen eigenstaendigen Source-Overview-Bereich sowie transparente, schattenfreie Darstellung in Light und Dark. 29 fokussierte Dashboard-, Environment- und Interaktionstests, Designpruefung, Client-/Server-Build und Local-only-Sicherheitspruefung bestehen. Client-Info-Data-Kachel 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die ehemalige Kachel `Priority Findings` heisst nun `Data` und tauscht mit `Domain Information` die Position, sodass `Data` links und die Domaininformationen rechts stehen. Die doppelten Kennzahlen `Critical` und `High` sind entfernt; Gesamtzahl `Deviations` und die getrennte Zeile der zusaetzlichen Ergebniszustaende bleiben erhalten. Der Kopf verwendet eine einzige volle Rasterspalte ohne Versatz. Die Abweichungszahl ist eine tastaturbedienbare Schaltflaeche und oeffnet Work mit dem Standardfilter `Deviation`. Der nicht mehr benoetigte Severity-Zaehler wurde entfernt; ein synthetischer Interaktionstest sichert Beschriftung, Reihenfolge, reduzierte Kennzahlen und den Drilldown ab. Die Live-Pruefung bestaetigt `Data`, `477 Deviations`, die Reihenfolge Data/Domain Information/Assessment Gaps sowie die gemeinsame 4-px-Buttongeometrie; Light und Dark bleiben lesbar. 18 fokussierte Dashboardtests, Designpruefung, Client-/Server-Build und Local-only-Sicherheitspruefung bestehen. CIS-CAT-Result-Belegfarbe 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Ausgewertete Quellzeilen in verknuepften CIS-CAT-Results werden nicht mehr pauschal rot dargestellt. Das tatsaechliche Finding-Outcome wird in das Results-Fenster weitergereicht: `Pass` verwendet die eigene gruene Match-Rolle, `Fail` die rote Violation-Rolle; fuer unbekannte oder neutrale Outcomes wird keine Aussage erfunden. Erwartungskriterium und bestaetigter Ist-Wert bleiben semantisch getrennte Rollen. Ein synthetischer Interaktionstest sichert den Pass-Fall mit `Type = reg_dword` und `Value = 0` sowie den unveraenderten Fail-Fall ab. Die 22 fokussierten Results-/Layout-Tests, Designpruefung, Client-/Server-Build und Local-only-Sicherheitspruefung bestehen; die Theme-Pruefung bestaetigt die Match-Rollen im Light Mode (`#CBEFD9` / `#10261A`) und Dark Mode (`#176B46` / `#FFFFFF`). Light-Mode-Kachelflaeche 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt und verifiziert): Die gemeinsame Kachelflaeche verwendet im hellen Theme statt Reinweiss nun das sehr dezente Neutralgrau `#FAFAFC`. Die Aenderung erfolgt ausschliesslich ueber `--tile-surface` und wirkt damit konsistent in Data Hub, Work, Client Info, DB Structure und Pathfinder; App-Hintergrund, Eingabeflaechen, Hover, Auswahl, Statusfarben und Dark Mode bleiben unveraendert. Die Live-Pruefung bestaetigt `rgb(250, 250, 252)` in Data Hub, Work und Client Info sowie den unveraenderten Dark-Mode-Wert `rgb(50, 50, 56)`; fokussierte Tile-/Layout-Tests, Design-Token-Pruefung, Client-/Server-Build und Local-only-Sicherheitspruefung bestehen. Client-Info-Environment-Feldueberschriften 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Die Feldueberschriften in den aufgeklappten Environment-Detail-Gruppen, einschliesslich `Directory`, verwenden nun dieselbe Bold-Stufe 700 wie die kompakte Kachel `Domain Information`. Werte bleiben regulaer; Daten, Reihenfolge, Abstaende und Kachelgeometrie sind unveraendert. Accepted-Risk-Draft-Markierung 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Die Kopfaktion `Accepted Risk` verwendet ausschliesslich im vorhandenen Zustand `Draft` eine blaue Flaeche mit weisser Schrift. Dafuer besitzt der Entscheidungsentwurf eine eigene semantische Farbrolle, getrennt von Auswahl, Severity und Tastaturfokus; der sichtbare Text `Draft` bleibt als zweites Zustandssignal erhalten. Leerer Zustand, angenommene, faellige, abgelaufene und widerrufene Entscheidungen bleiben unveraendert. Client-Info-Kachelflucht 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): In der breiten 1:1-Hauptzeile fuellt die rechte Aktionsspalte wieder exakt die Hoehe der Posture-Kachel. `Domain Information` und `Priority Findings` bleiben als gleich hohe obere Zeile erhalten; `Assessment Gaps` nimmt den verbleibenden Platz ein, sodass beide Hauptkacheln dieselbe Unterkante besitzen. Im gestapelten schmalen Layout bleiben alle Bereiche auf ihrer natuerlichen Inhaltshoehe. Inhalte, Daten und Aktionen sind unveraendert. Accepted-Risk-Leerzustand 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Solange fuer ein Finding keine Risikoakzeptanz erfasst ist, zeigt die bestehende Kopfaktion `Accepted Risk ?`. Sobald ein Eintrag vorhanden ist, ersetzt weiterhin dessen bestehender Entscheidungsstatus das Fragezeichen. Dialog, Risikoentscheidung, Persistenz und Findingdaten bleiben unveraendert. Client-Info-Domain-Information-Typografie 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): In der Kachel `Domain Information` sind der Kacheltitel und alle Feldueberschriften fett gesetzt. Die Werte behalten ihre regulaere Datenrolle, damit Ueberschrift und Inhalt eindeutig unterscheidbar bleiben; Daten, Reihenfolge und Kachelgeometrie sind unveraendert. Work-Sidebar-Security-Domains 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Die bisherige Severity-Donut-Leiste in Work entfaellt vollstaendig. An ihrer Stelle stehen die acht gemeinsamen Client-Info-Security-Domains in Katalogreihenfolge untereinander; `Unclassified` erscheint nur, wenn es im geladenen Scope vorkommt. Jeder Eintrag zeigt die gegen alle anderen aktiven Work-Filter selbst-ausschliessend nachgezaehlten Treffer und setzt exakt dieselbe sichtbare `Security Domain`-Facette wie die Toolbar. Ein erneuter Klick auf die aktive Domain hebt die Auswahl auf, ein Klick auf eine andere Domain ersetzt sie; Nulltreffer bleiben gemaess Work-Vertrag anklickbar. Auswahl verwendet ausschliesslich die gemeinsame gelbe Markierung, Tastaturfokus bleibt blau. Quelldaten, Domainzuordnung und andere Filter bleiben unveraendert. Abnahme der Work-Sidebar-Security-Domains: 26 fokussierte Domain-, Interaktions-, Navigations-, Donut- und Designvertragstests sowie Client-/Server-Produktionsbuild und Designsprachpruefung bestanden. Die Live-Pruefung am freigegebenen Dummy bestaetigt in Light und Dark die vollstaendige Entfernung der Severity-Donuts, die gemeinsame Domainreihenfolge mit aktuellen Trefferzahlen, die gelbe aktive Auswahl und die bidirektionale Synchronisierung mit der sichtbaren Toolbar-Facette. `Identity & Account Hygiene` reduziert den Scope reproduzierbar von 477 auf 221 Treffer; erneuter Klick stellt `Security Domain: All` und 477 Treffer wieder her. Light und der ungefilterte Domainzustand wurden wiederhergestellt. Der bestehende Bundlegroessenhinweis bleibt unveraendert; Phase 7 bleibt in Arbeit. Client-Info-Posture-Reduktion 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Der wiederholte Hinweis `Pass rates · … total deviations` entfaellt aus dem Security-Domains-Kopf. Die Domainzeilen behalten ihre klickbaren Scoreknoten und den numerischen Deviation-/Review-Zaehler, zeigen darunter jedoch keine wiederholte Bezeichnung mehr; die Bedeutung bleibt als Tooltip erhalten. Die komplette dreizeilige Finding-Vorschau und die Aktion `View findings` in Priority Findings entfallen. Die autoritativen Summen und klickbaren zusaetzlichen Ergebniszustaende bleiben erhalten; Findingdaten und die verbleibenden fachlichen Drilldowns bleiben unveraendert. Abnahme der Client-Info-Posture-Reduktion: Ein synthetischer Dashboard-Vertrag prueft dauerhaft die Abwesenheit des Gesamthinweises, aller sichtbaren Domain-Zaehler-Unterzeilen, der Finding-Vorschauliste und der Aktion `View findings`. 20 fokussierte Dashboard-/Posture-/Domainfiltertests, Client-/Server-Produktionsbuild sowie Designsprach- und Local-only-Pruefung bestanden. Die Live-Pruefung am freigegebenen Dummy bestaetigt in Light und Dark die reduzierte Darstellung, unveraenderte Kennzahlen und die gemeinsame Unterkante von Domain Information und Priority Findings; Light wurde als Ausgangsthema wiederhergestellt. Der bestehende Bundlegroessenhinweis bleibt unveraendert; Phase 7 bleibt in Arbeit. Globale Button-Abrundung 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Alle rechteckigen klickbaren Bedienelemente verwenden jetzt den gemeinsamen leichten `--btn-radius` von 4 px. Das umfasst Work-Aktionen wie `Snapshot` und `Reset`, View-Tabs, Sidebar-, Theme-, Icon-, Disclosure-, Segment-, Dialog- und Pathfinder-Schaltflaechen; eingebettete Randaktionen runden ihre sichtbaren Aussenkanten mit demselben Token. Echte Kreis-/Donut-Interaktionen und quadratische Inhaltskacheln behalten ihre fachliche Geometrie. Farben, Aktionen, Navigation und Datenlogik bleiben unveraendert. Abnahme der globalen Button-Abrundung: Der Designsprachtest sichert den gemeinsamen Basisvertrag, die zuvor abweichenden spaet geladenen View-Regeln sowie die beiden semantischen Ausnahmen dauerhaft ab. Client-/Server-Produktionsbuild, Designsprach- und Local-only-Pruefung bestanden. Die visuelle Live-Pruefung am freigegebenen Dummy bestaetigt Snapshot, Reset, View-Tabs, Export-, Icon- und Sidebar-Aktionen in Light und Dark; Light wurde als Ausgangsthema wiederhergestellt. Gesamtsuite: 1.419 bestanden, 13 optionale PostgreSQL-Tests uebersprungen; zwei fachfremde bestehende Quelltextannahmen zu einem erlaubten `code`-Element und der inzwischen erweiterten `openProject`-Signatur bleiben fehlgeschlagen. Der bestehende Bundlegroessenhinweis bleibt unveraendert; Phase 7 bleibt in Arbeit. Client-Info-Domainzeilen-und-Score-Einstieg 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Die Security-Domain-Zeilen zeigen den Domaenennamen jetzt in der 20-px-Detailtitelrolle und entfernen die bisherige Meta-Unterzeile mit Passed/Not configured/Duplicates/Conflicts/Review. Scoreknoten sowie rechter Deviation-/Review-Zaehler bleiben erhalten. Der Overall-Score-Ring ist nun eine per Maus und Tastatur bedienbare Aktion: Er oeffnet Work mit dem sauberen Remediation-Standard `Deviation`, entfernt vorherige Source-, Domain-, Severity-, Such-, Workspace- und Record-ID-Filter und zeigt die regulaere Work-Uebersicht. Score-, Domaenen- und Findingdaten bleiben unveraendert. Abnahme der Domainzeilen und des Score-Einstiegs: 26 fokussierte Dashboard-/Posture-/Domainfilter-/Navigationstests, Designsprach- und Local-only-Pruefung sowie Client-/Server-Produktionsbuild bestanden. Die Live-Pruefung am freigegebenen Dummy bestaetigt die vergroesserten Domaenennamen ohne Meta-Unterzeilen in Light und Dark; der Score-Klick oeffnet Work mit `Deviation · 477` und allen Source-, Domain- und Severity-Filtern auf `All`. Der bestehende Bundlegroessenhinweis bleibt unveraendert; Phase 7 bleibt in Arbeit. Client-Ladehinweis 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Der generische Text `Loading saved client …` ist durch `Loading Client: [Clientname]` ersetzt. Der Name wird beim Oeffnen direkt aus der ausgewaehlten Data-Hub-Projektidentitaet uebergeben und fuer nachfolgende Timeslot-/Refresh-Ladevorgaenge desselben Clients stabil wiederverwendet; der deaktivierte Sheet-Selector zeigt denselben dynamischen Status. Keine Lade-, Scope-, Daten- oder Persistenzlogik wurde geaendert. Abnahme des Client-Ladehinweises: Fuenf fokussierte Ladezustands-/Data-Hub-/Timeslot-Tests und Client-/Server-Produktionsbuild bestanden. Die Live-Pruefung beim Oeffnen des freigegebenen Dummy bestaetigt sichtbar `Loading Client: Dummy`; der bestehende Bundlegroessenhinweis bleibt unveraendert. Phase 7 bleibt in Arbeit. Donut-Innenhierarchie 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Alle Anzahl-/Prozent-Donuts zeigen jetzt die absolute Anzahl fett in der ersten Zeile und den Prozentwert mit regulaerem Gewicht darunter. Ein gemeinsamer tokenbasierter Sicherheitsabstand haelt den vollstaendigen Readout bei grossen Data-Hub-, kompakten Sidebar-, Dashboard-Status-, Risk-Severity- und Client-Info-Verteilungsringen vom inneren Ringrand fern. Der Overall Score behaelt als Score-Ring seine fachlich abweichende `/100`-Semantik. Werte, Prozente, Filteraktionen und Scorelogik bleiben unveraendert. Abnahme der Donut-Innenhierarchie: 16 fokussierte Donut-/Data-Hub-/Sidebar-/Disclosure-/Tile-Vertragstests, Designsprach- und Local-only-Pruefung sowie Client-/Server-Produktionsbuild bestanden. Die Live-Pruefung mit dem freigegebenen Dummy bestaetigt Anzahl oben, Prozent darunter sowie sichtbaren Innenabstand bei realen Werten in Light und Dark. Der bestehende Bundlegroessenhinweis bleibt unveraendert; Phase 7 bleibt in Arbeit. Client-Info-vollstaendiger-Directory-Kontext 2026-09-20 (Phase 7, ausdrueckliche Nutzererweiterung, umgesetzt): `Domain Information` zeigt jetzt alle neun Fakten der Environment-Detail-Gruppe `Directory`: Domain, NetBIOS Name, Forest, Domains, Domain Functional Level, Forest Functional Level, Schema Version, Domain Created und Entra ID. Die zuvor gewuenschte Domain-Controller-Zahl bleibt als zusaetzlicher zehnter Fakt erhalten. Werte und Unbekanntbehandlung stammen unveraendert aus dem normalisierten Environment Snapshot; die 50/50-Geometrie und gleiche Kachelhoehe zu Priority Findings bleiben bestehen. Abnahme des vollstaendigen Directory-Kontexts: 22 fokussierte Dashboard-/Environment-/Quellenauswahltests, Designsprach- und Local-only-Pruefung sowie Client-/Server-Produktionsbuild bestanden. Die Live-Pruefung am freigegebenen Dummy bestaetigt alle zehn Fakten ohne Abschneiden oder Ueberhang und die gemeinsame Unterkante mit Priority Findings in Light und Dark. Der bestehende Bundlegroessenhinweis bleibt unveraendert; Phase 7 bleibt in Arbeit. Data-Hub-Kachelflucht 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Ergebnis-Donuts und Mandanten-/Add-Kacheln verwenden auf breiten Flaechen jetzt dasselbe Sechs-Spalten-Raster. Spaltenstart, Spaltenbreite und Gap sind identisch; dadurch entfaellt der zuvor mit jeder Mandantenkachel anwachsende horizontale Versatz, waehrend alle sechs Donuts in einer Zeile bleiben. Unterhalb des Wide-Breakpoints gilt fuer beide Reihen wieder derselbe kompakte responsive Tile-Vertrag. Inhalte, Auswahl, Status und Navigation bleiben unveraendert. Abnahme der Data-Hub-Kachelflucht: 14 fokussierte Donut-/Data-Hub-/Tile-Vertragstests, Designsprach- und Local-only-Pruefung sowie Client- und Server-Produktionsbuild bestanden. Die Live-Pruefung in Light und Dark bestaetigt durchgehend fluchtende Kanten fuer alle sechs Donuts sowie Dummy, Maester Test, LSW und die Add-Kachel. Der bestehende Bundlegroessenhinweis bleibt unveraendert; Phase 7 bleibt in Arbeit. Client-Info-Domainkontext 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Die obere Aktionsrail ist jetzt eine exakte 50/50-Zeile mit `Domain Information` links und `Priority Findings` rechts. Beide Kacheln besitzen dieselbe Hoehe und Unterkante; `Assessment Gaps` nutzt darunter wieder die komplette Railbreite. Domain, Domain Functional Level, Domain Controllers, Forest, Forest Functional Level und Schema Version stammen aus denselben normalisierten Environment-Snapshot-Beobachtungen wie Environment Detail. Fehlende Werte bleiben `—`; Score-, Finding-, Filter-, Drilldown- und Persistenzlogik sind unveraendert. Abnahme des Client-Info-Domainkontexts: 17 fokussierte Dashboard-/Quellenauswahltests, Designsprach- und Local-only-Pruefung sowie Client-/Server-Produktionsbuild bestanden. Die Live-Pruefung mit dem ausdruecklich freigegebenen Dummy bestaetigt die gleich breite und gleich hohe obere Kachelzeile, die vollbreiten Assessment Gaps, quellengestuetzte Werte fuer DFL, DC, Forest, FFL und Schema sowie lesbare Umbrueche in Light und Dark. Der bestehende Bundlegroessenhinweis bleibt unveraendert; Phase 7 bleibt in Arbeit. Client-Info-Posture-/Risikoregister-Korrektur 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Die breite Client-Info-Hauptzeile teilt die verfuegbare Breite jetzt exakt zur Haelfte zwischen Posture und Aktionsrail; diese spaetere Korrektur ersetzt die kurzzeitig verwendete 2:1-Aufteilung. Kacheln derselben Zeile besitzen ausnahmslos dieselbe Hoehe und Unterkante. Accepted Risks uebernimmt die bestehende Data-Hub-Clientgeometrie mit fester linker Auswahl `clamp(420px, 27vw, 520px)`, rechter Informationsflaeche und gestapeltem schmalem Fallback. Risiko-, Score-, Quellen-, Filter-, Drilldown- und Persistenzdaten bleiben unveraendert. Overall-Score-Verdichtung 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Die wiederholte Statuszeile unter dem Donut und der dort doppelt gezeigte Critical-Findings-Zaehler entfallen vollstaendig; Priority Findings bleibt der autoritative sichtbare Ort fuer diesen Zaehler. Assessment Coverage ist auf hoechstens 70 Prozent der Overall-Zone und zusaetzlich auf die gemeinsame kompakte Inhaltsbreite begrenzt, damit Label, Balken und Zaehler nicht von den gebogenen Domaenenverbindungen ueberlagert werden. Daten, Score, Statusableitung, Filter und Drilldowns bleiben unveraendert. Abnahme der Overall-Score-Verdichtung: 19 fokussierte Dashboard-Tests, Designsprachpruefung sowie Client-/Server-Produktionsbuild bestanden. Die Live-Messung am Dummy ergibt 354,15 px Coverage-Breite innerhalb einer 537,92-px-Overall-Zone und null Schnittpunkte mit allen neun Verbindungskurven. Posture und Aktionsrail bleiben mit jeweils 1.324,02 px exakt gleich breit und besitzen dieselbe Unterkante. Source-Overview-Korrektur 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Die generische Quelle `Tabular Data` wird nicht mehr als Source-Overview-Kachel dargestellt. Ihre importierten Daten und unterstuetzten Filterpfade bleiben erhalten; sie ist jedoch keine eigenstaendige Security-Scoring-Quelle. Ein synthetischer Render-Test sichert die Abwesenheit der Kachel bei gleichzeitig sichtbarer erkannter Scannerquelle. Abnahme der Source-Overview-Korrektur: 16 fokussierte Dashboard-/Quellenauswahltests, Designsprachpruefung sowie Client-/Server-Produktionsbuild bestanden. Die Live-Pruefung am Dummy bestaetigt in Light und Dark null `Tabular Data`-Kacheln und weiterhin fuenf erkannte Security-Scoring-Quellen; Dark wurde als Ausgangsthema wiederhergestellt. Accepted-Risks-Manage-Client-Uebernahme 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): Accepted Risks verwendet nun die Data-Hub-Manage-Client-Logik als feste Master-/Detail-Flaeche. Links liegen Ueberschrift, Zaehler, eigenstaendig scrollende Risikoauswahl, gelbe persistente Auswahlmarkierung sowie getrennte Status-/Reviewangaben; rechts liegen `Risk Information`, der vollstaendige ausgewaehlte Datensatz, die einzeln aufklappbaren Detailgruppen und die Aktion `Open finding`. Pfeil hoch/runter sowie Home/End wechseln Auswahl und Fokus gemeinsam; schmale Breiten stapeln beide Bereiche ohne horizontalen Ueberhang. Risikodaten, Historie und Governance-Zustaende bleiben unveraendert. Abnahme der Accepted-Risks-Uebernahme: 18 fokussierte Dashboard-/Risk-Register-/Quellenauswahltests, Designsprachpruefung sowie Client-/Server-Produktionsbuild bestanden. Am Dummy messen Navigation und Information dieselbe 557,50-px-Hoehe; die Navigation verwendet die freigegebene 520-px-Obergrenze. `Open finding` wurde live gegen den richtigen Work-Datensatz geprueft. Light und Dark sind visuell geprueft; Client Info und Dark wurden danach wiederhergestellt. Overall-Score-Sekundaerwerte 2026-09-20 (Phase 7, ausdrueckliche Nutzerkorrektur, umgesetzt): `Unassessed` und `Lowest domain pass rate` sowie ihr kompletter Trenn-/Layoutblock entfallen aus Overall Score. Die autoritativen Darstellungen bleiben unveraendert in Assessment Gaps beziehungsweise an den einzelnen Security-Domain-Knoten; Daten, Scoreberechnung und Drilldowns werden nicht geaendert. Abnahme der Sekundaerwert-Entfernung: 19 fokussierte Dashboardtests, Designsprachpruefung sowie Client-/Server-Produktionsbuild bestanden. Die Live-Pruefung am Dummy bestaetigt in Light und Dark null Sekundaercontainer und keine beiden Labels im Overall-Bereich; `Unassessed controls` bleibt in Assessment Gaps sichtbar. Dark wurde als Ausgangsthema wiederhergestellt. Abnahme dieser Korrektur: 12 fokussierte synthetische Dashboard-/Risikoregistertests, Client-/Server-Produktionsbuild sowie Local-only-/Designpruefung bestanden. Gesamtsuite: 1.416 bestanden, 13 optionale PostgreSQL-Tests uebersprungen; der bekannte fachfremde XML-Reader-Test mit seiner zu breiten `code`-Element-Annahme bleibt unveraendert fehlgeschlagen. Die abschliessende Breitenmessung am ausdruecklich freigegebenen Dummy bestaetigt fuer Posture und Aktionsrail exakt 1324,02 px bei 2660,02 px Gesamtbreite sowie dieselbe 744,80-px-Hoehe und Unterkante. Accepted Risks verwendet 520 px fuer die Auswahl und die restliche Breite fuer die Informationsflaeche. Light und Dark sind visuell geprueft; bei 700 px stapelt das Register ohne horizontalen Ueberhang. Bestehender Bundlegroessenhinweis und Phasenstatus bleiben unveraendert. Client-Info-Designangleichung 2026-09-18 (Phase 7, ausdruecklicher Nutzerauftrag, umgesetzt): Die Oberflaeche verwendet nun gemeinsame Theme-/Statusrollen, eckige flache Tiles, kompakte Controls und lesbare Inter-Rollen entsprechend Data Hub, Work und Pathfinder. Die ausdruecklich gewuenschten dynamischen Kurven vom Overall Score zu den Security Domains bleiben als verbindliches Merkmal erhalten. Source Overview nutzt nicht gestreckte Kachelbreiten; seine Methodik-Schaltflaeche erbt nicht mehr versehentlich die Geometrie einer Quellenkachel. Environment Detail startet als aufklappbare Evidenzzeile; das Accepted-Risks-Register behaelt seine sichtbare Auswahl/Zusammenfassung und bietet einzeln aufklappbare vollstaendige Details. Wiederholte Null-Kontextangaben an Domaenen entfallen, positive Diagnose-/Reviewzahlen bleiben sichtbar. Daten, Scoreberechnung, Provenienz, Filter-/Drilldownidentitaeten und Risikoentscheidungen bleiben unveraendert. Abnahme dieser Designangleichung: 47 fokussierte synthetische Dashboard-, Risk-Register-, Inventar- und Domain-Interaktionstests bestanden. Client-/Server-Typechecks, isolierter Client-Produktionsbuild und Design-/Local-only-Pruefung bestanden. Zusaetzlicher synthetischer Edge-Browsercheck in Light/Dark bei 1600, 1100, 860 und 390 px: kein horizontaler Ueberhang, eckige Tiles, exakt zentrierte Scorezahl, 28px Methodik-Control, acht Kurven mit weniger als 1px Zielabweichung in der nebeneinanderstehenden Darstellung sowie Auf-/Zuklappen per Tastatur und Reset beim Risikowechsel. Schmale Ansichten behalten den bisherigen gestapelten Fallback ohne waagerechte Kurven. Screenshots sind ausschliesslich synthetisch. Keine Kundendaten, laufenden Dienste oder regulaeren Build-Verzeichnisse veraendert; keine gesamte Projektsuite behauptet. Bestehender Bundlegroessenhinweis und Phasenstatus bleiben unveraendert. Work-Ansichtsexport 2026-09-18 (Phase 7, ausdruecklicher Nutzerauftrag, verifiziert): Die bestehenden CSV-/MD-/HTML-Buttons exportieren jetzt alle aktuell gefilterten/sortierten Work-Treffer einschliesslich verknuepfter und eingebetteter Results statt aller markierten Eintraege ueber mehrere Blaetter. Eine gemeinsame klickzeitgebundene Projektion liefert genau zwei Inhaltsspalten, Soll-Zustand und Abweichungen, mit nativen Anleitungen, Pruefnachweisen, Originalwerten, Baselinevarianten, GPO-Quellbelegen und offen ausgewiesenen Evidenzluecken. Aktives My Workspace, Timeslot, Suche, Facetten und Drilldown bleiben wirksam. HTML ist skriptfrei, offline mit eingebettetem lokalem Inter; lange CSV-Zellen erhalten verlustfreie Fortsetzungszeilen derselben Finding-ID. Dies ist ein Ansichtssnapshot, kein Ersatz fuer die kuratierte Arbeitsgrundlage oder die vier Artefakte der Reportstrategie. Keine Daten-/Schema-/Scoring-/Importaenderung. Abnahme und Risiko Work-Ansichtsexport: 53 fokussierte Export-/Results-Tests bestanden; nach finaler Inter-Einbettung nochmals alle 16 neuen Export-/Interaktionstests bestanden. Gesamtsuite: 1.412 bestanden, 13 optionale PostgreSQL-Tests uebersprungen, ein bekannter fachfremder XML-Reader-Test unveraendert fehlgeschlagen; keine vollstaendig gruene Gesamtabnahme behauptet. Client-/Server-Produktionsbuild sowie Local-only-/Designpruefung bestanden; App HTTP 200, Backend ok. Nur der ausdruecklich freigegebene Dummy wurde lesend geprueft, einschliesslich seiner referenzierten oeffentlichen Baseline-Anleitungen: All 1.833 Work-Treffer / 9.917 Results-Zeilen / 27.059 gepruefte Zellen / 708 Textabschnitte; Deviation 477 Treffer / 7.599 Results-Zeilen. CSV-Roundtrip vollstaendig, keine Zelle ueber Excel-Limit und keine fehlenden Result-Referenzen im Dummy. Synthetischer Browsercheck bei normaler Breite und 390 px ohne horizontalen Ueberhang. Bestehender Bundlegroessenhinweis bleibt; sehr grosse Ansichten erzeugen entsprechend grosse statische Dokumente. Phasenstatus unveraendert. Designverankerung 2026-09-18 (Phase 7, ausdrueckliche Nutzerkorrektur): Die aktuell freigegebenen Ansichten Data Hub, Work und Pathfinder sind die verbindlichen Referenzen der Ableton-inspirierten ASSESSOR-Designsprache, ausdruecklich auch fuer Client Info, Bildentwuerfe und Prototypen. Die bisherige visuelle Client-Info-Ausnahme ist aufgehoben; fachliche Inhalte, Scoresemantik, Provenienz und Drilldowns bleiben bindend. AGENTS.md, lokaler assessor-ui-Skill, Referenzvorrang und veraltete Asset-Kopieranleitung wurden auf diesen Vertrag ausgerichtet. Status: Designvertrag verankert; die drei verworfenen generischen Mockups sind nicht freigegeben, eine entsprechende Client-Info-UI-Neugestaltung ist damit noch nicht umgesetzt oder visuell abgenommen. Bestehende Phasenstatus unveraendert; keine App-, Daten-, API- oder Persistenzaenderung in diesem Dokumentationsschritt. Security-Domain-Korrektur 2026-09-18 (Phase 7, ausdruecklicher Nutzerauftrag): Work bietet alle acht unveraenderten Client-Info-Security-Domains in Katalogreihenfolge dauerhaft an, einschliesslich null Treffern in gemischtem Scope und beiden GPO-Einstiegen. Vorhandenes Unclassified bleibt zusaetzlich erhalten. Die Zaehler beachten andere aktive Filter; ausgewaehlte Nulltreffer bleiben sichtbar, ohne Status oder weitere gueltige Filter automatisch zu entfernen. Ein Client-Info-Domain-Deviation-Klick setzt den sichtbaren Domainfilter statt einer festen Record-ID-Auswahl, sodass nach dem Wechsel weitere Domains gewaehlt werden koennen. Vier neue synthetische UI-Interaktionstests sichern den Ein-Domain-Fall, beide GPO-Einstiege, Nulltrefferauswahl, Status-/Severity-Erhalt und Client-Info-Wechsel mit Quellfilter. 40 fokussierte Tests bestanden; abschliessende Build-/Gesamtabnahme folgt unten. Keine Klassifikations-, Score-, API-, Import- oder Persistenzaenderung; keine Mandantendaten gelesen. Phasenstatus unveraendert. Abnahme Security-Domain-Korrektur 2026-09-18: 40 fokussierte Tests, Client-/Server-Produktionsbuild, Local-only-/Designpruefung und technische App-/Backend-Erreichbarkeit bestanden. Gesamtsuite: 1.381 bestanden, 13 optionale PostgreSQL-Tests uebersprungen; zwei Fehler (bekannte fachfremde XML-Reader-Testannahme und Timeout des allgemeinen Node-Importtests). Der isolierte Wiederholungslauf des Node-Importtests bestand mit allen fuenf Tests; Timeouts wurden nicht angehoben. Der unveraenderte XML-Test bleibt offen. Keine Kunden-/Dummy-Dateninspektion; kein Reimport, keine Neuauswertung, kein Schema-/Datenbankeingriff. Phasenstatus unveraendert. Abschliessender Gesamtlauf zum GPO-Zaehlerfix 2026-09-18: 1.358 Tests bestanden, 13 optionale PostgreSQL-Tests uebersprungen, ein unveraenderter fachfremder XML-Reader-Test fehlgeschlagen; keine Timeout-/RPC-Fehler im Wiederholungslauf. Die fuenf neuen optionalen PostgreSQL-Paritaetstests wurden separat tatsaechlich ausgefuehrt und bestanden. Local-only-/Designpruefung separat gruen. Keine vollstaendig gruene Gesamtsuite behauptet. Verifiziert 2026-09-18 (Phase 7/13B, Result-DB-/Work-Zaehlerabgleich): PostgreSQL waehlt aktuelle Policy-Evaluationen jetzt nach der Anzahl verschiedener tatsaechlich verglichener Baseline-Pakete, mit Analyseverweisen nur als Fallback bei fehlenden Baseline-IDs und danach Zeit/ID als Tie-Breaker, entsprechend dem bestehenden Work-Selektor. Wiederholte Analysegenerationen desselben Pakets verdraengen damit keinen neueren gleich breit abdeckenden Lauf. Work-Deviation folgt dem autoritativen Fail-Urteil, auch bei explizit erforderlicher, aber fehlender Registry-Praesenz; gewoehnliche fehlende Empfehlungen bleiben Not configured. 50 fokussierte Tests inklusive fuenf direkt in PostgreSQL ausgefuehrter rein synthetischer SELECT/CTE-Paritaetsfaelle bestanden; Client-/Server-Produktionsbuild sowie Local-only-/Designpruefung erfolgreich. Ausdruecklich freigegebener Dummy lesend geprueft: 127 aktuelle Fail-Vergleiche, exakt dieselben 25 technischen Identitaeten in Work, Deviation 25, keine ausgeblendeten Fail-Urteile und keine zusaetzlichen Vergleichspaare. Keine Bestandsmutation, Migration, Reimport oder Neuauswertung; Fremdkunden nicht gelesen. Die Gesamtsuite ist wegen einer unabhaengigen bestehenden XML-Reader-Testannahme nicht vollstaendig gruen; Details im Abnahmebericht. Phasenstatus unveraendert. Verifiziert 2026-09-18 (Phase 7/13B, konsistente Result-DB-Statusfilter): Result DB und Work verwenden denselben Bezeichnungskatalog; Match wird Passed, Misconfigured wird Deviation, Conflict/Duplicate werden Conflicts/Duplicates und die Result-DB-Gruppe heisst Result Status. Auch Resultdetails verwenden diese Labels. Die Statuszaehler beachten Deviation und alle anderen aktiven Filter; nur die eigene Auswahl wird fuer erreichbare Alternativen ausgenommen. Statusauswahl und Abwahl setzen Deviation nicht mehr automatisch zurueck. Ausgewaehlte Status- und boolesche Nulltrefferfilter bleiben sichtbar und abwaehlbar. Zwei neue synthetische Result-DB-Interaktionstests sichern reine GPO- und gemischte Timeslots, Yes/No/All, Mehrfachauswahl, Nulltreffer, Detailbezeichnung und Scope; 45 fokussierte Tests, Local-only-/Designpruefung und Client-/Server-Produktionsbuild bestanden. Gespeicherte Klassen, Einzelvergleichszaehlung und Datenschutzgrenze bleiben erhalten; keine Kunden-/Dummy-Dateninspektion. Phasenstatus unveraendert. Verifiziert 2026-09-18 (Phase 7/13B, langer Security-Template-Registrytitel): Der vorherige Ueberhangfix erfasste nur Titel mit `registry ·`, waehrend Security-Template-Findings den Vertrag `Registry Values · MACHINE\\...` verwenden. `PathText` erkennt nun auch diesen exakten Titelvertrag und behandelt `MACHINE\\`/`USER\\` nur in diesem Registry-Values-Kontext als technischen Pfad. Dadurch umbrechen Reader-Heading und Summary innerhalb ihrer Minmax-Spalte und bleiben vor `Accepted Risk`; allgemeine AppLocker-/User-group-Texte werden nicht als Pfad umklassifiziert. Zwei synthetische Regressionen sichern den konkreten langen Titel, Suchmarkierung, beide Readerpositionen und den bewusst unveraenderten allgemeinen `MACHINE\\`-Fall. Gesamtsuite: 1.351 bestanden, acht optionale PostgreSQL-Tests uebersprungen; Produktionsbuild erfolgreich. Keine Kunden-/Dummy-Daten gelesen oder geaendert, keine API-, SQL-, Persistenz- oder Fachlogikaenderung. Phasenstatus bleibt in Arbeit. Verifiziert 2026-09-18 (Phase 7/13B, eine Work-Zeile je GPO-Einstellung): Mehrere Baseline-Paketvergleiche derselben technischen Identitaet werden innerhalb desselben Projekts, Aggregationslaufs und Scopes zu einer Work-Zeile zusammengefuehrt. Der bestehende Policy-Zaehler und die Zeile teilen dieselbe Urteilprioritaet. Individuelle Baselinefilter, alle Empfehlungen/Settingreferenzen, Quellprovenienz, historische Readiness sowie echte Conflict-/Duplicate-Merkmale bleiben erhalten. Wertmarkierungen pruefen alle beteiligten aktuellen Varianten; unbekannte/historische Varianten werden nicht aus dem Beweis entfernt. Alte lokale Baseline-Notizen bleiben lesbar; nur uebereinstimmende Notizen werden uebernommen, keine Risikoakzeptanz wird umgehaengt. Zehn neue synthetische Tests sichern den Neun-Pakete-Fall in beiden Work-Einstiegen, Filter, unterschiedliche Sollwerte, Historie, Scopegrenzen und Review-Erhalt. Gesamtsuite: 1.349 bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Keine Kunden-/Dummy-Daten gelesen oder geaendert, keine API-/SQL-/Persistenz-/Evaluatoraenderung. Phasenstatus bleibt in Arbeit. GPO-Quellwiederherstellung 2026-09-17 (Phase 13B, Nutzerauftrag, verifiziert): Fehlende GPO-Artefaktdateien ergeben jetzt bereits beim Statuslesen Upload required mit gezieltem ZIP-/Ordnerupload; Zugriffsprobleme bleiben separat Storage unavailable. Reconciler, Retry und Reprocess pruefen vor dem Einreihen, nachtraeglich fehlende Quellen beenden einen bereits gestarteten Job nach einem Versuch. Der Originalupload prueft Projekt/Artefakt/Timeslot, Groesse und SHA-256, repariert auch den normalen Dublettenpfad und stellt nur fehlende Bytes atomar unter derselben Speicher-ID wieder her. Aktuelle Analysen, Originalzeitpunkte und Historie bleiben erhalten; reine Re-evaluation ueber erhaltene Eingaben bleibt erreichbar. 16 neue synthetische Regressionen sichern Service, HTTP, API-Client, beide Oberflaechen mit ZIP/Ordner, automatische Reparatur, ersten Fehler, Zugriffsfehler, falsche Quelle, fremde Scopes, Wiederherstellung ohne Revisionswechsel sowie Local-/PostgreSQL-Jobverhalten und konkurrierende Dateiwiederherstellung. npm test: 1.336 bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; Local-only-/Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Kein Parser-/Analyzer-/Manifestbump, keine SQL-Migration, kein Zugriff auf Kundeninhalte, keine Live-Datenmutation und kein Backendneustart. Bestehender Bundlegroessenhinweis bleibt; Phase 13B bleibt in Arbeit. Principal-Abweichungen mitgliedsgenau markiert 2026-09-17 (Phase 7/13B, Nutzerfehlerbericht, zielgerichtet verifiziert): Die Ursache der falschen roten Flaeche war der zuvor eingefuehrte Ganzwert-Fallback fuer nicht-Registry-GPO-Werte. Ein Principal-Set wurde dadurch trotz eines mit der Baseline uebereinstimmenden Mitglieds vollstaendig rot dargestellt. Principal-Sets werden jetzt auf Mitgliedsebene verglichen: Nur konfigurierte Principals, die in keiner aktuellen Baselinevariante erwartet werden, erhalten die rote Wertmarkierung; gemeinsame Principals bleiben neutral. Besteht die Abweichung ausschliesslich in einem fehlenden Soll-Principal, wird kein vorhandener korrekter Principal ersatzweise rot markiert. Synthetische Regressionen sichern zwei zusaetzliche, einen gemeinsamen und einen ausschliesslich fehlenden Principal sowie Suche, Filter und Navigation. 26 fokussierte GPO-Quellen-/Conflict-/Duplicate-Tests und beide Produktionsbuilds erfolgreich. Der parallele Gesamtlauf war nicht vollstaendig gruen: 1.312 Tests bestanden, acht optionale PostgreSQL-Tests wurden uebersprungen und fuenf fachlich unabhaengige Servertests trafen waehrend gleichzeitiger Security-Template-Aenderungen auf geaenderte Section-Casing-/Parser-/Analyzer-Versionen; ein aktueller fokussierter Wiederholungslauf bestaetigte den Principal-Fix und zeigte noch drei fremde Versionsannahmen (`1.1.0`/`2.2.3` gegen `1.2.0`/`2.2.4`). Reine Read-/Praesentationskorrektur ohne Reimport, Neuauswertung, API-, Persistenz-, Schema- oder Kundendatenzugriff; Phasenstatus unveraendert. Alle belegten GPO-Wertabweichungen rot markiert 2026-09-17 (Phase 7/13B, ausdrueckliche Nutzererweiterung, verifiziert): Die rote wertgenaue Markierung ist nicht mehr auf einzelne Data-Faelle beschraenkt. Registry.pol-Quellen markieren jetzt jede belegte abweichende Operation, Data und jeden abweichenden Type code, auch mehrere Felder gleichzeitig. Vergleichbare andere GPO-Wertarten erhalten dieselbe rote Wertmarkierung. Wenn jede aktuelle Baselinevariante eine Abweichung belegt, aber keine einzelne Feldursache allen Varianten gemeinsam ist, wird sicher der dargestellte Wert als Ganzes markiert, ohne eine spezifische Ursache zu erfinden. Review-required, unbewertete und passende Werte sowie Quellenabschnitt, Heading, Evidence-Pfad und Diagnose-Badges bleiben neutral. Synthetische Regressionen sichern Operation, Data, Type code, kombinierte Feldabweichungen, skalare GPO-Werte, Suche, Filter und Navigation. 1.317 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; beide TypeScript-Ziele, Local-only-, Design- sowie Client-/Server-Produktionsbuild erfolgreich. Reine aktuelle Read-/Praesentationsprojektion ohne Reimport, Neuauswertung, API-, Persistenz-, Schema- oder Kundendatenzugriff; Phasenstatus unveraendert. Bestehender Bundlegroessenhinweis bleibt. Backend-Verbindungsstatus als ASSESSOR-Popup 2026-09-17 (Phase 7, ausdrueckliche Nutzerkorrektur, verifiziert): Die bisherige eingebettete Warnflaeche fuer `Backend is unreachable` ist in Data Hub, Result DB und DB Structure durch einen gemeinsamen ASSESSOR-Standarddialog ersetzt. Titel, Warnmarker, bereichsspezifische Auswirkung und der Hinweis auf die automatische Verbindungspruefung bleiben sichtbar; der Dialog ist schliessbar, waehrend die zugrunde liegende Ansicht erhalten bleibt. Die bestehende Health-Pruefung laeuft unveraendert weiter und entfernt den Offline-Zweig nach erfolgreicher Verbindung automatisch. Permanente synthetische Regressionen pruefen Portal-/Dialogstil, Meldung, Schliessen und alle drei Einstiegspfade. 1.313 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; beide TypeScript-Ziele, Local-only-, Design- sowie Client-/Server-Produktionsbuild erfolgreich. Reine Praesentationsaenderung ohne API-, Import-, Persistenz-, Schema-, Reimport- oder Kundendatenzugriff; Phasenstatus unveraendert. Bestehender Bundlegroessenhinweis bleibt. Client-Info-Security-Domains als Work-Filter 2026-09-17 (Phase 7, ausdrueckliche Nutzererweiterung, verifiziert): Work besitzt jetzt direkt nach `Category` die eigene Facette `Security Domain`. Sie verwendet denselben extrahierten Katalog und dieselbe gecachte Datensatzzuordnung wie die acht Security Domains in Client Info; es existiert keine zweite Filterklassifikation. Damit filtern unter anderem `Identity & Account Hygiene`, `System Hardening`, `GPO & Baseline` und `Monitoring & Recovery` exakt die von Client Info derselben Domain zugeordneten Datensaetze. Die Facette ist im gemischten Work-Kontext sowie in beiden GPO-Einstiegen sichtbar; ein reiner GPO-Scope zeigt `GPO & Baseline`. `Source: Scan` bleibt der letzte Filter und bestehende aktive Work-Filter gelten weiter. Permanente synthetische Regressionen sichern gemeinsamen Katalog, identische Record-Identitaeten, Filterwirkung, GPO-Einwertscope, Reihenfolge, Zaehler und Kontextwechsel. 1.307 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; beide TypeScript-Ziele, Local-only-, Design- sowie Client-/Server-Produktionsbuild erfolgreich. Reine gemeinsame Ableitungs-/Facettenkorrektur ohne Import-, Persistenz-, Schema-, Reimport- oder Kundendatenzugriff; Phasenstatus unveraendert. Bestehender Bundlegroessenhinweis bleibt. GPO-Category-Filter wiederhergestellt 2026-09-17 (Phase 7/13B, Nutzerfehlerbericht und ausdrueckliche Korrektur, verifiziert): Die Ursache war die fruehere GPO-Kontext-Sonderregel, die `Category` sowohl bei `Source: Scan = GPOs` als auch auf dem dedizierten GPO-Blatt aktiv ausblendete. `Category` ist jetzt in beiden unterstuetzten GPO-Einstiegen wieder der permanente zweite Filter direkt hinter `Result Status`; er bleibt auch sichtbar, wenn `GPOs` der einzige aktuelle Kategorienwert ist. Im gemischten Work-Kontext bleibt die bisherige Category-Facette unveraendert. Andere im reinen GPO-Kontext ausgeschlossene Scannerfacetten bleiben ausgeschlossen und `Source: Scan` bleibt der letzte Filter. Permanente synthetische Regressionen sichern beide GPO-Einstiege, die exakte Reihenfolge, GPO-exklusive Zaehler, die Einwertkategorie, Kontextwechsel und Filterwirkung. 1.306 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; TypeScript-, Local-only-, Design- sowie Client-/Server-Produktionsbuild erfolgreich. Reine Facetten-/Praesentationskorrektur ohne Import-, Bewertungs-, Persistenz-, Schema-, Reimport- oder Kundendatenzugriff; Phasenstatus unveraendert. Bestehender Bundlegroessenhinweis bleibt. GPO-Abweichung nur am Wert 2026-09-17 (Phase 7/13B, ausdrueckliche Nutzerkorrektur, verifiziert): Die rote Flaeche und Akzentlinie am gesamten GPO-Quellenabschnitt sind entfernt. Jeder Quellenabschnitt bleibt neutral; rot hinterlegt wird ausschliesslich die konkrete dargestellte Zeile, deren Feld gegen jede gespeicherte aktuelle Baselinevariante eindeutig abweicht: `Operation` bei einer Operationsabweichung, `Data` bei einer Datenabweichung und `Type code` bei einer Typabweichung. Mehrere Felder werden nur markiert, wenn jedes unabhaengig belegt ist; bei uneinheitlicher Variantenursache wird kein Feld geraten. Conflict-Badge, Heading, Evidence, Key und Value name erhalten keine rote Hinterlegung. Synthetische Regressionen pruefen `Operation: delete-value`, `Data: 0`, einen reinen Typfehler, exakt eine Markierung im Finding sowie Suche, Filter und Navigation. 1.305 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; TypeScript-, Local-only-, Design- sowie Client-/Server-Produktionsbuild erfolgreich. Reine aktuelle Read-/Praesentationsprojektion ohne Reimport, automatische Neuauswertung, Migration oder Kundendateninspektion; Phasenstatus unveraendert. Bestehender Bundlegroessenhinweis bleibt. GPO-Quellenabschnitte mit roter Abweichung 2026-09-17 (Phase 7/13B, ausdrueckliche Nutzerkorrektur, verifiziert): Die unmittelbar zuvor gewaehlte flache Tabelle ist ausdruecklich wieder durch vollstaendige, untereinanderliegende GPO-Quellenabschnitte ersetzt. Evidence, quelllokale Sequenz sowie Operation, Key, Value name, Data und Type code sind ohne Aufklappen sichtbar; Operation und Data bleiben fett. Nur ein durch die gespeicherten aktuellen Baselinevarianten fuer diesen einzelnen Quellwert eindeutig belegter abweichender Abschnitt erhaelt eine dezente rote Flaeche, eine rote linke Akzentlinie und `Conflicting contribution`. Passende, historische, mehrdeutige oder innerhalb eines Backups aus mehreren Anweisungen bestehende Quellen bleiben neutral; GPO-Praezedenz und effektiver Endgeraetewert werden nicht erfunden. Permanente synthetische Regressionen sichern Darstellung, rote Quellenklasse, vollstaendige Fakten, beide Work-Einstiege, Deviation/Conflicts, Suche, Navigation und unveraenderte Originale. 1.305 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; TypeScript-, Local-only-, Design- sowie Client-/Server-Produktionsbuild erfolgreich. Reine aktuelle Read-/Praesentationsprojektion ohne Reimport, automatische Neuauswertung, Migration oder Kundendateninspektion; Phasenstatus unveraendert. Bestehender Bundlegroessenhinweis bleibt. GPO-Quellenzuordnung als Tabelle 2026-09-17 (Phase 7/13B, ausdrueckliche Nutzerentscheidung, verifiziert): Die zuvor gestapelten Quellenabschnitte sind im Finding Reader durch die gewaehlte flache Tabelle mit exakt `GPO source`, `Operation`, `Data`, `Type` und `Evidence` ersetzt. Jede exakte Backupidentitaet belegt eine Zeile; Operation und Data bleiben fett, Data und Typ stehen in kompakten Feldern, und der sichere Evidence-Pfad bleibt unmittelbar sichtbar. `Show source details` erhaelt vollstaendige native GPO-/Backupidentitaet, quelllokale Sequenz, Evidence, Key, Value name und jede Originalanweisung. Ein roter Marker und `Conflicting contribution` erscheinen nur, wenn die gespeicherten aktuellen Baselinevarianten den einzelnen Quellwert unabhaengig als abweichend belegen; Gruen nur bei Uebereinstimmung mit allen Varianten. Historische Auswertungen, mehrere Anweisungen innerhalb desselben Backups, GPO-Praezedenz und effektiver Endgeraetewert werden nicht als Einzelquellenurteil erfunden. Permanenter synthetischer Interaktionstest sichert beide Work-Einstiege, Deviation/Conflicts, Suche, Navigation, die fuenf Spalten, Details und unveraenderte Originale. 1.305 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; TypeScript-, Local-only-, Design- sowie Client-/Server-Produktionsbuild erfolgreich. Reine aktuelle Read-/Praesentationsprojektion ueber erhaltene Fakten, ohne Reimport, automatische Neuauswertung, Migration oder Kundendateninspektion; Phasenstatus unveraendert. Bestehender Bundlegroessenhinweis bleibt. GPO-Quellenzuordnung 2026-09-17 (Phase 7/13B, ausdruecklicher Nutzerauftrag, verifiziert): Der Finding Reader zeigt Originalanweisungen sofort getrennt nach exakter Projekt-/Assessment-/Backupinstanzidentitaet, mit Quellenzahl, erhaltenen nativen GPO-/Backup-IDs, internem Quellpfad und quelllokaler Sequenz. Operation und Data bleiben fett; Loeschung, leerer String, Leerzeichen und 0 bleiben unterscheidbar. Mehrere GPOs werden nicht als Ausfuehrungskette oder wirksamer Endgeraetewert dargestellt. Die unmittelbare Quellenzuordnung ersetzt die bisherige Results-only-Verbergung; Results bleibt fuer Varianten erhalten. Die gemeinsame Local-/PostgreSQL-Readprojektion reicht nur bereits gespeicherte Identitaeten/Sequenzen additiv weiter; lesbare GPO-Namen sind nicht gespeichert und werden nicht erfunden. Fehlerursache der fehlenden Conflict-Kennzeichnung: Die alte Ableitung beruecksichtigte nur set-value-Beobachtungen. Versionierte Vergleiche verwenden jetzt den erhaltenen autoritativen customerState; fruehere Anweisungen derselben GPO erzeugen keine zusaetzliche Konfliktzeile und reduzierte identische Beitraege mehrerer Backups bleiben Duplicate. Bei indeterminate bleiben nur durch verschiedene eindeutige Backups und erhaltene Vergleichswerte belegte Unterschiede als Conflict sichtbar; unsichere Backups liefern dafuer keine Einzelwertbeweise. Urteil, Score und historische Re-evaluation-Grenze bleiben erhalten. 20 neue synthetische Regressionen sichern beide Work-Einstiege, Deviation/Conflicts, Suche, Quellenzuordnung, Datensatzwechsel, Identitaeten, Sequenz 0, partielle Konfliktbeweise und unveraenderte Originale. 1.304 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. App und Backend inhaltsfrei gesund geprueft. Kein Reimport, keine automatische Neuauswertung, Datenmigration oder Kundendateninspektion; Projekt zum erneuten Laden der Readprojektion neu oeffnen. Restrisiko: GPO-Namen fehlen weiterhin, Geltungsbereich/Praezedenz und effektiver Endgeraetewert bleiben unbelegt; bestehender Bundlegroessenhinweis. Phasenstatus unveraendert. GPO-Wertdarstellung 2026-09-17 (Phase 7, Nutzerwunsch, verifiziert): Operation und Data samt Werten werden im Policy-Vergleich des Finding Readers mit dem gemeinsamen Bold-Token 700 hervorgehoben. Pfadtextboxen, Suchmarkierung, Originaltext und Bewertungslogik bleiben erhalten. Bestehende synthetische Readerregression erweitert; 1.284 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und beide Produktionsbuilds erfolgreich. Reine Darstellung ohne Reimport oder Neuauswertung; kein neuer fachlicher Risikoeingriff und Phasenstatus unveraendert. Die Reihenfolge dargestellter Quellen ist weiterhin kein Nachweis einer GPO-uebergreifenden Ausfuehrungsreihenfolge. GPO-Quellenfilter 2026-09-17 (Phase 7/13B, ausdruecklicher Nutzerauftrag, verifiziert): Work ergaenzt im GPO-Blatt und bei Source: Scan = GPOs den Filter `GPO backups with failing settings`, mit Gesamtauswahl und einzelnen GPO-Backupinstanzen. Entscheidung: Filter und Processing-Kachel verwenden denselben exakten Projekt-/Assessment-/Backupinstanzschluessel und dieselben Quellen der Fail-Vergleiche; es werden keine Einzel-GPO-Urteile erfunden. Die Auswahl setzt Result Status explizit auf All, damit historische Fail-Vergleiche trotz ihres erhaltenen Review-required-Status sichtbar bleiben; weitere Filter gelten weiter. Source: Scan bleibt zuletzt, inkompatible Filter verschwinden beim Kontextwechsel, native Optionen werden erst vor Pointer-/Tastaturzugriff vollstaendig montiert. Vier neue synthetische Tests sichern 26 Quellen jenseits des allgemeinen Kategorienlimits, Einzel-/Gesamtauswahl, den passenden Mitgliedswert eines gemeinsamen Fail, beide Work-Einstiege, Historie, Statuskombination, Reset, Kontextwechsel, exakte Identitaeten und Cacheinvalidierung. 1.284 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Restrisiko/Lesart: Quellenbeteiligung ist kein eigener Fail jeder GPO; Work ist auf den geladenen Scope begrenzt, die Processing-Kachel bleibt projektweit. Reine Darstellung ueber erhaltene Fakten, kein Reimport, keine Neuauswertung, Migration oder Kundendateninspektion. Phasenstatus bleibt unveraendert; bestehender Bundlegroessenhinweis bleibt. GPO-Registry-Zustandsvergleich 2026-09-16 (Phase 7/13B, ausdrueckliche Nutzerentscheidung): Evaluator 1.9.0 behandelt `delete-value`, `delete-all-values`, `create-key` und typisierte leere Zeichenfolgen als ausdrueckliche Sollzustaende statt als `Baselinewert nicht verfuegbar`. Delete-Anforderungen bestehen bei Abwesenheit beziehungsweise passender Delete-Instruktion und schlagen bei einem gesetzten Ziel fehl; Delete-all beruecksichtigt konfigurierte Kindwerte desselben Schluessels. Create-key besteht bei expliziter Anlage oder durch konfigurierte Kindwerte belegter Schluesselanwesenheit und schlaegt bei Abwesenheit fehl. Leere REG_SZ/REG_EXPAND_SZ bleiben vorhandene, typisierte Werte. Schluesselvergleiche speichern alle beitragenden Aggregationszustands- und Beobachtungsreferenzen. Die Regeln gelten nur fuer die analysierte Backup-Konfiguration, nicht fuer effektiven Geraetezustand. Historische Laeufe bis 1.8.0 bleiben unveraendert und benoetigen eine ausdrueckliche Re-evaluation; kein Quelldatei-Reimport, Processing-Manifest- oder SQL-Schemawechsel. 32 fokussierte Comparator-/Evaluatorregressionen sowie exakte Work-Statuspruefungen bestanden; Gesamtlauf mit 1.280 bestandenen Tests und acht uebersprungenen optionalen PostgreSQL-Integrationstests, Local-only-/Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Phasenstatus bleibt in Arbeit. GPO-Not-configured im analysierten Backup-Scope 2026-09-16 (Phase 7/13B, Nutzerfehlerbericht): Der Result-Status-Filter war vorhanden, erhielt jedoch fuer einen ausgewaehlten beziehungsweise technisch partiellen GPO-Backupsatz keine Treffer, weil Evaluator 1.7.0 jede dort nicht beobachtete anwendbare Empfehlung pauschal als `Review required` sperrte. Evaluator 1.8.0 klassifiziert diese Abwesenheit jetzt als score-neutrales `Not configured` innerhalb genau des analysierten Backupsatzes und erhaelt `policy-evaluation-customer-absence-scope-limited` als sichtbare Diagnose. Das ist weder eine Aussage ueber die gesamte Domaene noch ueber den effektiven Geraetezustand. Work projiziert das Urteil in den autoritativen Status; die direkte Nutzerinteraktion `Result Status = Not configured` liefert die Zeile und `Deviation` nicht. Historische Evaluationen bis 1.7.0 werden nicht still umgedeutet: Data Hub bietet dafuer die bestehende ausdrueckliche Re-evaluation der erhaltenen Eingaben an; kein Quelldatei-Reimport, Processing-Manifest- oder Schemawechsel. 56 fokussierte GPO-Bewertungs-, Projektions-, Filter- und Panelregressionen sowie die exakte Work-Interaktion bestanden. Vollstaendiger Lauf mit 1.277 bestandenen Tests und acht uebersprungenen optionalen PostgreSQL-Integrationstests, Local-only-/Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Phasenstatus bleibt in Arbeit. GPO-Analyse-Zaehlebenen bereinigt 2026-09-16 (Phase 7/13B, Nutzerfehlerbericht): Die Data-Hub-GPO-Analyse mischt keine Analyse-Laeufe, Baseline-Vergleichszeilen, technischen Einstellungen, Backups und Diagnoseereignisse mehr in einer scheinbar addierbaren Ergebnisgruppe. `Policy verdicts` zaehlt je Aggregation/Timeslot und technischer Policy-Identitaet genau ein Urteil mit der Prioritaet Fail vor Review required vor Pass vor Not configured; damit koennen mehrere Baseline-Vergleiche derselben Einstellung die fachliche Zahl nicht mehr vervielfachen. Conflict und Duplicate stehen separat als ueberlappende, score-neutrale `Diagnostic flags`. `Analysis gaps` trennt Unresolved identity, Comparison not supported und Baseline mapping unavailable. Die irrefuehrende Bezeichnung `GPO sources` fuer einen Analyse-Lauf sowie der zusammengeworfene Wert `Unsupported settings` wurden entfernt; GPO-Backups mit fehlgeschlagenen Einstellungen stehen als eigene Provenienzkennzahl. Technische Einzelereignisse bleiben in Review Queue und Evaluation History nachvollziehbar, ohne als Findings ausgegeben zu werden. 28 fokussierte GPO-Panel-, Rollup-, Overview- und Statusregressionen, vollstaendiger Lauf mit 1.275 bestandenen Tests und acht uebersprungenen optionalen PostgreSQL-Integrationstests, Local-only-/Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Reine Read-/Praesentationsableitung ueber erhaltene Fakten; kein Reimport, keine Bestandsmutation, Schema- oder Manifestaenderung. Phasenstatus bleibt in Arbeit. GPO-Verdict mit Diagnose-Badge 2026-09-16 (Phase 7/13B, Nutzerpraezisierung): Work zeigt das fachliche Policy-Urteil weiterhin als primaeren Status und ergaenzt Conflict/Duplicate additiv. Ein fehlgeschlagener Eintrag bleibt deshalb in Status, Filter und Score `Fail`/`Deviation`; in der linken Trefferliste und im geoeffneten Finding steht daneben das sichtbare Badge `CONFLICT` beziehungsweise `DUPLICATE`. Die Diagnose ersetzt das Urteil nicht und erzeugt keinen zweiten Scorebeitrag. Explizit negative Diagnosefelder wie `No`, `None`, `false` oder `0` erzeugen kein Badge. 61 fokussierte Finding-, Reader-, Badge- und GPO-Work-Regressionen sowie Client-/Server-Produktionsbuild erfolgreich; reine Darstellung ueber bereits projizierte Felder, daher kein Reimport, keine Neuauswertung, Schema- oder Manifestaenderung. Phasenstatus bleibt in Arbeit. GPO-Policy-Rollup bei Conflicts/Duplicates 2026-09-16 (Phase 7/13B, ausdrueckliche Nutzerpraezisierung, umgesetzt): Mit `Endpunkt` ist die zusammengefasste technische Policy-Einstellung gemeint, nicht ein Server oder Client. Evaluator 1.7.0 vergleicht die erhaltenen konfigurierten Mitgliedswerte eines Kundenkonflikts einzeln. Mindestens ein unabhaengig vergleichbarer In-Scope-Mitgliedswert mit belastbarem Fail macht die gesamte Policy-Einstellung einmalig zu Fail; ein ungeklaertes Mitglied blockiert nur, wenn kein belastbarer Fail vorliegt. Work fuehrt Verdict und Conflict-/Duplicate-Flags getrennt, projiziert keine zweite Diagnosezeile fuer dieselbe ausgewertete Einstellung und laesst dieselbe Zeile zugleich auf Deviation und Conflict/Duplicate filtern. Dashboard-Score und Policy-Impact zaehlen nur das Verdict; Diagnosezaehler werden je technischer Identitaet dedupliziert. `Not configured` bleibt score-neutral. Historische Laeufe bis 1.6.0 bleiben unveraendert und werden ueber den bestehenden Data-Hub-Pfad zur ausdruecklichen Re-evaluation angeboten; kein Scanner-Reimport, Schema- oder Processing-Manifestwechsel. 51 fokussierte Bewertungs-, Work-, Filter- und Duplicate-Regressionen sowie Client-/Server-Produktionsbuild, Local-only- und Designpruefung erfolgreich. Im Gesamtlauf bestanden 1.270 Tests unmittelbar; die eine geaenderte Duplicate-Regression und der bekannte lastabhaengige Node-Import-Timeout bestanden danach isoliert (14/14), acht optionale PostgreSQL-Integrationstests blieben uebersprungen. App und Backend wurden anschliessend gegen den gesunden kanonischen PostgreSQL-Datastore gestartet und antworten auf 5173/4173 mit HTTP 200. Phasenstatus bleibt in Arbeit. GPO-Misconfiguration-Scope und score-neutrale Kontextkategorien 2026-09-16 (Phase 7/13B, ausdrueckliche Nutzerentscheidung): Die normale GPO-Analyse bewertet ausschliesslich tatsaechlich konfigurierte, technisch vergleichbare Kundeneinstellungen im ausdruecklich anwendbaren Microsoft-Baseline-Scope. Eine empfohlene, aber fehlende Einstellung bleibt als `Not configured` sichtbar, erzeugt jedoch weder operatives Finding, Standard-Remediation noch Scoreabzug; eine vollstaendige Baseline-Einfuehrung ist ein separat beauftragter Hardening-Track. `Not configured`, `Duplicates` und `Conflicts` bleiben eigenstaendige score-neutrale Kategorien ausserhalb von Pass und Fail. Ausnahme: Ein konfigurierter Einzelwert innerhalb eines Duplicate-/Conflict-Containers, der bei eindeutiger Identitaet und Baseline fuer sich belastbar fehlschlaegt, zaehlt genau einmal als Fail; Quellmultiplikation und Containerstatus erzeugen oder vervielfachen keinen Fail. Der GPO-Score ist als Konformitaet der konfigurierten, vergleichbaren In-Scope-Einstellungen zu bezeichnen, niemals als vollstaendige Microsoft-Baseline-Compliance. Diese Festlegung ist in AGENTS.md, SCORING_MODEL.md und GPO_BASELINE_EVALUATION.md bindend dokumentiert. Dokumentations-/Vertragsentscheidung ohne Laufzeit-, Daten-, Persistenz-, Schema- oder Bestandsneuauswertung; die Einzel-Fail-Ausnahme muss vor Implementierungsabnahme durch deduplizierte Ergebnisidentitaet, synthetische Conflict-/Duplicate-Fixtures und gegebenenfalls neue Evaluator-/Scoringversion verifiziert werden. Phasenstatus bleibt in Arbeit. Work-Filter bei Source All 2026-09-16 (Phase 7, Nutzerfehlerbericht): `Source: Scan = All` zeigt wieder den gemischten Scannerkontext. GPO-exklusive Facetten wie Baseline, Comparison, Conflict, Description source, Diagnostics, Duplicates, Imported, Policy section und Policy type werden dort nicht mehr in die allgemeine Zehnerauswahl aufgenommen und koennen deshalb die Scannerfacetten nicht mehr verdraengen. Der vollstaendige GPO-Filtersatz bleibt unveraendert auf dem GPO-Blatt und bei einer eindeutigen GPO-Quellenauswahl verfuegbar. Beim Wechsel von GPOs zurueck zu All werden nicht mehr sichtbare kontextspezifische Auswahlen entfernt, sodass kein GPO-Filter unsichtbar weiterwirkt. Ein permanenter synthetischer Interaktionstest sichert den exakten Nutzerpfad `Source: Scan = GPOs` -> `Source: Scan = All`; 22 fokussierte Filter-/Interaktionstests, 1.272 Gesamttests, acht uebersprungene optionale PostgreSQL-Integrationstests, Local-only-/Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Reine Praesentations-/Filterzustandskorrektur ohne Daten-, Import-, Bewertungs-, API-, Persistenz-, Schema-, Manifest- oder Reimportaenderung; Phasenstatus unveraendert. Work-Ansichtssnapshots 2026-09-16 (Phase 7, Nutzerfehlerbericht): Ein Work-Snapshot speichert wieder die vollstaendig wirksame, gerade angezeigte Ansicht. Neben Blatt, Darstellungsmodus, Suche, Sortierung, Result Status, Facetten, My Workspace und aktueller Auswahl gehoert nun auch der durch Client-Info-/Pathfinder-Drilldowns gesetzte Finding-Scope zum gespeicherten Ansichtsstand; beim Oeffnen wird eine unabhaengige Kopie dieses Scopes atomar wiederhergestellt. Vorhandene Snapshots ohne Scopefeld bleiben lesbar und bedeuten wie bisher keine zusaetzliche Finding-Einschraenkung. Ein permanenter synthetischer Interaktionstest sichert den exakten Nutzerpfad Snapshot -> Name -> Save -> gespeicherten Snapshot oeffnen. Acht fokussierte Tests und Client-/Server-Produktionsbuild erfolgreich. Im Gesamtlauf bestanden 1.270 Tests, acht optionale PostgreSQL-Integrationstests wurden uebersprungen; der bekannte kombinierte Node-Importtest ueberschritt unter Gesamtlast einmal sein unveraendertes Fuenf-Sekunden-Limit und bestand isoliert mit 5/5 Tests in 4.709 ms. Local-only-/Designpruefung erfolgreich. Reine lokale Ansichtsstatuskorrektur ohne Daten-, Import-, Bewertungs-, Backend-, Persistenzschema-, Processing-Manifest- oder Reimportaenderung; Phasenstatus unveraendert. Work-Standardfilter 2026-09-15 (Phase 7, ausdrueckliche Nutzerentscheidung): `Result Status` startet beim normalen Einstieg in Work, beim Projekt-/Timeslot-/Blattwechsel, nach Importabschluss und nach Reset immer mit `Deviation`. Der bisherige GPO-Sonderfall mit automatischem `All` ist damit ausdruecklich ersetzt. Kommt der Einstieg dagegen aus Client Info, Pathfinder oder einem anderen Drilldown mit bereits gesetztem Such-, Facetten-, Pfad- oder Action-Filter, bleibt dieser Kontext einschliesslich eines dort bewusst gesetzten Status erhalten. Die normale Work-Navigation unterscheidet diese beiden Pfade jetzt explizit; eine GPO-Quellenauswahl setzt den Status nicht mehr eigenmaechtig auf `All`. Permanente synthetische Interaktionstests sichern normalen Einstieg, Client-Info-Filteruebergabe, GPO-Quelle, GPO-Blatt und expliziten GPO-Drilldown. Verifiziert mit 1.270 bestandenen Tests und acht uebersprungenen optionalen PostgreSQL-Integrationstests, Local-only-/Designpruefung sowie erfolgreichem Client-/Server-Produktionsbuild. Reine Zustands-/Navigationskorrektur ohne Daten-, Import-, Bewertungs-, Persistenz-, Schema-, Manifest- oder Reimportaenderung. GPO-Importstatus ohne manuelle Review-Aufforderung 2026-09-15 (Phase 7/13B, ausdrueckliche Nutzerkorrektur): Ein technisch partieller GPO-Verarbeitungslauf wird im Timeslot wieder als `Limited analysis` dargestellt. Er fordert weder zur manuellen Einzelpruefung hunderter GPOs auf noch erzeugt er daraus eine automatische Arbeitsaufgabe. Damit gilt die bereits am 2026-09-06 festgelegte Trennung zwischen gelber technischer Analysegrenze und echtem Handlungsbedarf erneut; die zwischenzeitliche Beschriftung `Partial · review required` war eine irrefuehrende UI-Regression und ist durch diese Entscheidung ersetzt. Die fail-closed Fachgrenze bleibt unveraendert: Nicht vollstaendig automatisch auswertbare Bereiche werden nicht als vollstaendig bewertet, aber auch nicht als manuelle Pflicht dargestellt. Exakte synthetische Renderregression prueft `Limited analysis` sowie die Abwesenheit von `review required` und `Imported`; 17 fokussierte Status-/Readiness-Tests, Gesamtlauf mit 1.268 bestandenen und acht uebersprungenen optionalen PostgreSQL-Tests, Local-only-/Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Keine Daten-, Import-, Bewertungs-, Persistenz-, Schema-, Manifest- oder Reimportaenderung. GPO-Analysezaehler 2026-09-15 (Phase 7/13B, Nutzerfehlerbericht): Die Ergebniszusammenfassung in Data Hub bindet ihre Vergleichsprojektion nun wie der Timeslot-Workspace an die vom Backend als aktuell ausgewiesenen Aggregationslaeufe. Ein historisch aufbewahrter Evaluationslauf aus einer ueberholten Aggregation kann dadurch nicht mehr gleichzeitig mit dem aktuellen Lauf in Misconfigured, Pass oder Not configured eingehen; die Historie bleibt ausschliesslich unter den technischen Evaluationsdetails sichtbar. `Review required` wird in der Baseline-Zusammenfassung explizit ausgewiesen, damit ein partieller GPO-Backupsatz und nicht belegte Abwesenheit nicht als bestaetigtes Not configured erscheinen. Permanente synthetische Komponentenregression bildet exakt einen Timeslot mit aktueller und historischer Aggregation ab. 26 fokussierte GPO-/Workspace-Tests und Client-/Server-Produktionsbuild erfolgreich. Gesamtlauf: 1.267 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; der bekannte kombinierte Node-Importtest ueberschritt unter Gesamtlast einmal sein unveraendertes Fuenf-Sekunden-Limit und bestand isoliert mit 5/5 Tests in 3.885 ms. Bestehender Bundlegroessenhinweis. Reine Read-/Praesentationskorrektur ohne Persistenz-, Bewertungs-, Import-, Schema-, Manifest- oder Reimportaenderung; keine Kundendatenmutation. Timeslot-Importlast 2026-09-15 (Phase 13 sowie Persistenz aus Phase 9-11): Ein gemeldeter Scannerimport wurde ausschliesslich ueber technische Audit-, Laufzeit- und Prozesssignale untersucht. Die Vorschau war nach 4,4 Sekunden abgeschlossen, waehrend der atomare Abschluss 200,3 Sekunden benoetigte. Gleichzeitig erzeugten dauerhaft montierte Data-Hub-Steuerelemente in fuenf Minuten 270 vollstaendige Result-Facettenabfragen und 326 GPO-Statusabfragen; auch reine Timeslot-Importknopfe mit `showStatus=false` pollten alle zwei Sekunden, und der globale Fuenf-Sekunden-Poll berechnete die Oeffnungsbereitschaft fuer alle Timeslots ohne Zustandsaenderung neu. Inaktive Importsteuerelemente fragen nun keinen Status ab, sichtbare Statusbereiche pollen nur bei queued/running, der Data Hub pollt nur Projekte mit laufenden GPO-Jobs und behaelt unveraenderte Status-/Readiness-Objekte. Teure Facetten werden erst nach einer wirklichen GPO-Statusrevision neu berechnet. Der PostgreSQL-Commit verwendet zusaetzlich einmalig aufgebaute Datei-/Definitionsindizes statt wiederholter linearer Suchen je Finding; Transaktion, Originalwerte, Klassifikation und Schema bleiben unveraendert. Permanente synthetische Interaktionstests sichern null Statusabfragen eines inaktiven Timeslot-Importknopfs und genau einen Abruf eines sichtbaren abgeschlossenen Status. 30 fokussierte Import-/Persistenz-/UI-Tests und beide TypeScript-Pruefungen erfolgreich. Gesamtlauf: 1.266 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; der bekannte kombinierte Node-Importtest ueberschritt unter Gesamtlast einmal sein unveraendertes Fuenf-Sekunden-Limit und bestand isoliert in 3.887 ms. Local-only-/Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Keine Kundendateninspektion, Datenmutation, Migration, Processing-Manifest- oder Reimportaenderung. Restrisiko: Die relationale Persistenz sendet Datensaetze weiterhin einzeln an PostgreSQL; falls ein ruhiger synthetischer Lasttest nach dieser Lastkorrektur noch einen relevanten Commitanteil zeigt, ist gebuendeltes Schreiben ein eigener vertragserhaltender Folgeschritt. Verifikation GPO-Verarbeitungskorrektur 2026-09-15: 1.265 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; Local-only-Sicherheitspruefung, Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Die fokussierten Tests sichern 65 Bewertungs-, Versions-, Work- und Statusfaelle. Das laufende Backend meldet fuer den betroffenen 184-GPO-Lauf technisch `partial` und bietet nach dem Enginewechsel genau ein Update von 1.5.0 auf 1.6.0. Read-only-Browserpruefung zeigt im betroffenen Timeslot `Re-evaluation required` mit dem vorhandenen `Re-evaluate`-Bedienelement. Es wurde nicht ausgeloest; keine Kundendatenmutation. GPO-Verarbeitung statt globalem Review 2026-09-15 (Phase 7/13B): Der gemeldete Clientzustand wurde ausschliesslich ueber technische Status-, Zaehler- und Diagnosecodes untersucht. Der GPO-Import enthielt 184 Backupinstanzen und stand serverseitig auf partial, waehrend Data Hub irrefuehrend nur Imported anzeigte. Evaluator 1.5.0 versah alle aktuellen Vergleiche mit `policy-evaluation-baseline-incomplete`, weil globale Baselineparser-Diagnosen aus Security Templates auch separat aufgeloeste Registry-Policy-Kandidaten blockierten. Evaluator 1.6.0 begrenzt partielle Parserdiagnosen auf den betroffenen Bereitstellungsmechanismus: korrekt gelesene Registry-Werte bleiben vergleichbar, Security-Template-Lesefehler blockieren weiterhin Security-Template-Kandidaten, und unbekannte Diagnosen bleiben fail-closed. Fehlende Kundenwerte bleiben ohne nachgewiesenen vollstaendigen Backupsatz Review required; es werden keine Abwesenheit oder Abweichung erfunden. Data Hub bezeichnet einen partiellen GPO-Lauf jetzt sichtbar als `Partial · review required` statt `Imported`. Permanente synthetische Regressionen sichern Pass und Deviation fuer den unabhaengigen Registry-Pfad, die bestehenden Sicherheitsgrenzen und den gerenderten partiellen Status. Historische 1.5.0-Laeufe bleiben unveraendert und werden durch den bestehenden Data-Hub-Versionspfad zur ausdruecklichen Re-evaluation angeboten. Keine automatische Bestandsneuauswertung, Datenmutation, Quelldateiinspektion, SQL-Migration oder Scanner-Reimportaenderung; Phasenstatus unveraendert. Verifikation Dummy-Anzeigekorrektur 2026-09-14: Abschliessend `npm test` mit 1.263 bestandenen und acht optional uebersprungenen PostgreSQL-Tests; Local-only-/Designpruefung sowie `npm run build` fuer Client und Server erfolgreich. Zwei zuvor fehlgeschlagene Quelltext-Strukturpruefungen wurden an die durch Verhaltenstests gesicherte neue GPO-Navigation angepasst; ein Import-Test-Timeout im ersten Gesamtlauf bestand isoliert und im unveraenderten abschliessenden Gesamtlauf. App, Entwicklungsserver und Backend antworten mit HTTP 200; die App liefert das neu gebaute Frontend aus. Live-Browserkontrolle ausschliesslich am freigegebenen Dummy, keine anderen Clientinhalte gelesen; temporaerer Prueftab geschlossen. GPO-Anzeige am freigegebenen Dummy 2026-09-14 (erneute Nachkorrektur, Phase 7/13B): Die vorherige Anzeige-Nachkorrektur erfasste nur die GPO-Quellkachel, nicht den normalen Source-Dropdown. Der ausdruecklich freigegebene Dummy bestaetigte den verbleibenden Fehler: Client Source GPOs -> Work behielt Deviation und zeigte null Treffer. Die gemeinsame App-Zustandsgrenze initialisiert eine neue eindeutige GPO-Source-Auswahl sowie ein GPO-Blatt jetzt mit All; spaetere ausdrueckliche Statusauswahlen bleiben auch bei null Treffern erhalten. Eine Domain mit ausschliesslichem Pruefbedarf zeigt dessen Anzahl und oeffnet genau diese gespeicherten Ergebnisse; vorhandene Deviation-Drilldowns bleiben unveraendert. Live am Dummy verifiziert: beide Source-Auswahlwege zeigen 3.873 GPO-Datensaetze; der Domain-Link oeffnet 3.872 Review-Ergebnisse; Passed bleibt gezielt mit null Treffern waehlbar. Die gespeicherte aktuelle Evaluation 1.5.0 enthaelt selbst Review-required-Urteile mit unvollstaendiger Baseline-Evidenz, nicht nur historische Urteile. Daher werden weder aktuelle Pass-/Fail-Urteile noch ein Score aus alten Laeufen rekonstruiert. Vier permanente synthetische Interaktionstests mit echtem AppProvider sichern Client-Dropdown, Work-Dropdown, GPO-Blatt und Domain-Link einschliesslich expliziter Nulltreffer-Auswahl. Nur Praesentation/Navigation; keine Neuauswertung, Datenmutation, Import-/Reimport- oder Bewertungsregel-Aenderung. Die bisherigen Verifikationsaussagen waren fuer den normalen Dropdown-Pfad unzureichend; Phasenstatus unveraendert. GPO-Anzeige nach Evaluatorwechsel 2026-09-14 (Nachkorrektur, Phase 7/13B): Der anschliessende Nutzer-Screenshot widerlegte die vorherige Aussage, die Timeslotkorrektur habe den gemeldeten Anzeigeausfall vollstaendig behoben. Geladene historische GPO-Vergleiche wurden als Review required zurueckgehalten, im Dashboard aber als fehlende Evidenz gezaehlt; der Source-Drilldown setzte Deviation und fuehrte damit in eine leere Work-Ansicht. Client Info unterscheidet jetzt ausstehende Neuauswertung, aktuellen manuellen Pruefbedarf und fehlende Evidenz. Die GPO-Quellkachel oeffnet All; explizite Statusaktionen behalten ihre Filter. Work zeigt bei null Filtertreffern den vorhandenen Datenbestand und bietet eine Aktion zum Anzeigen aller Ergebnisse unter Beibehaltung der gewaehlten Quelle. Die verbindlichen sechs GPO-Statusoptionen bleiben erhalten. Sieben synthetische Interaktionstests sichern die historischen Versionen 1.3.3/1.4.0, den aktuellen Pruefzustand und den Auswahl-/Wiederherstellungspfad in allen vier Work-Ansichten. Explizite Nutzerentscheidung dieses Schritts: nur Anzeige korrigieren, keine reale Neuauswertung. Historische Werte werden nicht als aktuelle Pass-/Fail-Urteile oder Scores ausgegeben; keine Persistenz-, Import- oder Reimportaenderung. Phasenstatus unveraendert. Verifikation der Anzeige-Nachkorrektur: 1.258 Tests im Gesamtlauf bestanden, acht optionale PostgreSQL-Tests uebersprungen. Ein bestehender Blattauswahl-Performance-Test ueberschritt unter Gesamtlast sein unveraendertes Fuenf-Sekunden-Limit und bestand isoliert in 2.409 ms. Alle sieben neuen Interaktionstests, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Der laufende Entwicklungsserver liefert beide korrigierten UI-Module mit HTTP 200; ihre Auslieferung wurde anhand von Code-Markern ohne Domaininhalte bestaetigt. Keine reale Neuauswertung oder Datenmutation. GPO-Anzeige im gemischten Timeslot 2026-09-14 (Phase 7/13B, Nutzerfehlerbericht): Beim Oeffnen eines Timeslots mit Scannerlaeufen und separat assessmentgebundenen GPO-Ergebnissen bleibt der vollstaendige Assessment-Scope jetzt neben dem eingeschraenkten Scanner-Run-Scope erhalten. Data Hub und die automatische Work-Timeslotauswahl reichen beide Identitaeten weiter; der gemeinsame Workspace-Loader verwendet die ausdruecklich gewaehlten Assessments fuer Policy-Beobachtungen. Dadurch erscheinen dieselben GPO-Ergebnisse wieder in Client Info und Work, ohne fremde Scannerlaeufe einzubeziehen. Synthetische Interaktions- und Loaderregression fuer den zuvor defekten Mischpfad sowie 27 fokussierte GPO-/Navigationstests und Client-/Serverbuild erfolgreich; Gesamtlauf mit 1.252 bestandenen und acht uebersprungenen Tests sowie Local-only-/Designpruefung erfolgreich. Reine Lade-/Praesentationskorrektur ohne Import-, Persistenz-, Score-, Schema- oder Reimportaenderung; Phasenstatus unveraendert. GPO-Baselinevarianten 2026-09-14 (Phase 7/13B, ausdruecklicher Nutzerauftrag): Evaluator 1.5.0 ersetzt die pauschale Sperre bei unterschiedlichen Sollwerten durch unabhaengige, typisierte Einzelvergleiche. Alle Varianten bestanden ergibt Pass; konfiguriertes IST gegen alle Varianten abweichend ergibt Fail; gemischte, unlesbare oder unvollstaendige Evidenz bleibt Review required. Fehlende Einstellungen ergeben nur bei belegter Satzvollstaendigkeit Not configured. Kein PingCastle erforderlich; OS-/DFL-Inventar waehlt keine GPO-Zielrolle. Widerspruechliche Werte derselben Baseline-GPO sind keine Rollenalternativen. Versionierte Originalwerte, Einzelurteile und Settingreferenzen bleiben in Ergebnis-JSON/JSONB erhalten; Work, Result DB und Export zeigen keine erfundene Baselinevereinigung. Die bestehenden fuenf GPO-Statusfilter bleiben unveraendert; Review required ist unter All sichtbar. Historische Runs 1.3.3/1.4.0 bleiben lesbar und verlangen die vorhandene explizite Data-Hub-Neuauswertung. Keine SQL-Migration, Scanner-Manifestversion, Kundendateninspektion oder reale Neuauswertung. Vertrag und Grenzen: [GPO_BASELINE_EVALUATION.md](GPO_BASELINE_EVALUATION.md). Verifikation siehe datierter Protokolleintrag; Phase 13B bleibt in Arbeit. GPO-Work-Filterkontext 2026-09-14 (Phase 7/13B, Nutzerkorrektur und verbindliche Vorgaben): Eine eindeutige Auswahl `Source: Scan = GPOs` gilt nun auch auf dem projektweiten All-Records-Blatt als reiner GPO-Werkzeugkontext. Facetten werden vor allgemeiner Priorisierung und Zehnerlimit auf den GPO-Vertrag reduziert: Result Status, die verfuegbaren neun GPO-Fachfacetten und der dauerhaft letzte workspaceweite Source-Filter. Das Statusmenue wird aus dem festen GPO-Vertrag erzeugt und enthaelt auch dann ausschliesslich All, Deviation, Passed, Not configured, Conflicts und Duplicates, wenn kein separates GPO-Blatt geladen ist; die fuenf fachlichen Werte bleiben bei null Treffern waehlbar. GPO-Statusfilter lesen ausschliesslich das aktuelle Feld `Status`; ein `Pass` in Comparison, Historical result, Baseline, Guidance oder Evidence darf niemals einen aktuell als Not configured, Conflict, Duplicate oder Deviation klassifizierten Datensatz unter Passed aufnehmen. Scanner-, CIS-, Severity-, Category-, MITRE-, Target-, Result-message- und Reviewfacetten sowie deren Statusvokabular erscheinen nicht. Bereits gesetzte, im GPO-Kontext ungueltige Facetten werden entfernt, damit kein unsichtbarer Fremdfilter weiterwirkt; nach Aufhebung der Quelle kehrt der Mischkontext zurueck. Die synthetischen Regressionen pruefen den zuvor defekten Auswahlweg ohne separates GPO-Blatt, die Wirksamkeit eines zuvor vom Mischlimit verdraengten GPO-Filters, einen Not-configured-Datensatz mit fremdem Pass-Vergleichswert und die Rueckkehr; 51 fokussierte Filter-/Profil-/GPO-Pruefungen sowie der Gesamtlauf mit 1.243 bestandenen und acht uebersprungenen Tests, Local-only-/Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Reine Praesentations- und Filterkontextkorrektur ohne Import-, Persistenz-, API-, Score- oder Reimportaenderung. Die Projektvorgaben behandeln dokumentierte Nutzerentscheidungen jetzt ausdruecklich als bindende Abnahmekriterien: spaetere Arbeiten duerfen sie nicht still abschwaechen; Konflikte mit Regeln sind vor einer Umsetzung transparent zu melden und Regelanpassungen benoetigen Nutzerzustimmung. Phasenstatus unveraendert. GPO-Neuauswertung und OS-Inventar 2026-09-11 (Phase 7/13B/13C, Nutzerauftrag): Data Hub erhaelt einen vom Scanner-Reimport getrennten Hinweis und eine explizite Re-evaluate-Aktion fuer gespeicherte GPO-Vergleiche mit alter Engine. Die Zuordnung folgt ausschliesslich aktiven Profil-/Snapshot-/Identity-/Artefaktreferenzen; ueberholte Verarbeitungsketten erzeugen keinen falschen Hinweis. Der bestehende API-Aufruf wertet gespeicherte Eingaben aus und behaelt historische Runs. Die abgeleitete Bereitschaft ist je Repository revisionsgebunden und auf 128 Projekte begrenzt gecacht; unveraenderte Statusabrufe lesen keine Evaluationen erneut. Work zeigt alte Ergebnisse als Review required mit separatem Historical result, prominentem Versionshinweis und neutralen gespeicherten Ist-/Sollwerten. Fehlende Beschreibung und Ladefehler sind getrennt. Client Info ersetzt die kommagetrennte OS-Zeile durch Servers, Clients und Other / unclassified mit OS-Anzahlen und nur bei eindeutiger Datenbasis einer Gruppensumme. PingCastle-Name und Nb OS werden ueber exakten Lauf, Datei, Sektion, gespeicherten Quelltabellenindex und Zeile verbunden; ueberlappende Inventare werden nicht addiert, unbekannte Anzahlen bleiben ein Gedankenstrich. Originalwerte, Importprofile, Scores und Persistenzschema bleiben unveraendert; kein neuer Processing-Vertrag oder Reimport fuer diese Darstellung erforderlich. Verifiziert: 1.238 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Zusaetzlich synthetischer Import-bis-OS-Anzahl-Test und Browserpruefung bei 640/320 Pixeln ohne Inventarueberlauf sowie Statusaktionswechsel/historische Neutraldarstellung; temporaere Vorschau entfernt. Zwischenzeitliche Buildfehler im parallel bearbeiteten Timeslot-Vertrag waren beim abschliessenden Build behoben, ohne diese fremden Aenderungen zu bearbeiten. Keine Realdateninspektion, Neuauswertung oder Datenmutation; laufendes Backend nur technisch auf HTTP 200 geprueft und nicht neu gestartet. Fuer den neuen Backend-Statusvertrag ist dessen Neustart erforderlich. Phasenstatus unveraendert. Timeslot-Vergleich P0-P2 2026-09-11 (Phase 8, Nutzerauftrag): P0 ist abgeschlossen. Der additive Vertrag `timeslot-comparison` 1.0.0 trennt Regeldefinition, scope-/objektbezogene Vergleichsidentitaet, Reportzeit, Gegenpruefung und Verpflichtung. Jedes registrierte Profil deklariert nun Scope, Zeitquelle, Ergebnisart und Negativnachweis; die aktuellen Scanner bleiben scopeweit, Generic ist nicht automatisch vergleichbar und Abwesenheit beweist nirgends automatisch Behebung. P2 ist mit einer sicheren Scannerpaarung begonnen: echte Tool-/Run-/File-Provenienz, Processingvertrag, eindeutiger Scope, neue Reportzeit und Diagnosen werden vor Fail-to-Pass geprüft; fehlende Quelle, bloße Abwesenheit und Reimportzeit bleiben ungeklärt oder nicht vergleichbar. 23 fokussierte synthetische Tests sowie Client-/Serverbuild erfolgreich. Der ausdrücklich freigegebene Mandant Dummy wurde ergänzend nur lesend geprüft und bestätigt die konservativen Grenzen; keine Datenmutation. P1 bleibt wegen Persistenz/API/Übergang offen, P2 wegen GPO/Historie/Integration offen, P3-P6 offen. Kein Processing-Manifest oder Reimport, da keine importierten Fakten geändert werden; bisherige Produktengine und UI sind noch nicht umgestellt. Verifikation dieses Schnitts: Projektweiter Lauf mit 1.240 bestandenen Tests und acht übersprungenen optionalen PostgreSQL-Tests. Der bekannte fachfremde kombinierte Node-Importtest überschritt unter Gesamtlast einmal sein unverändertes Fünf-Sekunden-Limit und bestand isoliert mit 5/5 Tests in 3.661 ms. Local-only-, Designsprache-, Client- und Serverprüfung sind erfolgreich; kein Testlimit wurde erhöht. Client-Info-Risikoregister 2026-09-11 (Phase 7, Nutzerauftrag): Client Info zeigt unter den bestehenden Informationsbereichen eine eigene Accepted-Risks-Kachel. Das Register dedupliziert dieselbe kanonische Finding-Vorkommnis ueber mehrere Blattprojektionen, listet links alle gespeicherten Risikentscheidungen mit Quelle, abgeleitetem Zustand und Wiedervorlage und zeigt nach Auswahl rechts den vollstaendigen aktuellen Entscheidungsinhalt sowie die unveraenderte Versionshistorie. Accepted, Scheduled, Review due, Review required, Draft, Expired und Revoked bleiben unterscheidbar; lange Inhalte werden nicht gekuerzt. Breite Ansichten verwenden die verlangte Liste-/Detailteilung, schmale Ansichten stapeln beide Bereiche. Die Darstellung liest ausschliesslich bereits geladene Reviewdaten; keine API-, Persistenz-, Scanner-, Score- oder Reimportaenderung. Zwei neue synthetische Registertests, 18 fokussierte Dashboard-/Accepted-Risk-Tests, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Gesamtlauf: 1.218 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; ein kombinierter Node-Importtest ueberschritt unter paralleler Last einmal sein unveraendertes Fuenf-Sekunden-Limit und bestand isoliert in 4.971 ms. Synthetische Browserpruefung bestaetigt Auswahlwechsel, vollstaendige Detailanzeige, Umbruch und schmale Stapelung; temporaere Vorschau entfernt. Keine Realdateninspektion oder Datenmutation; Phasenstatus unveraendert. Mehrdatei-Reimportstatus 2026-09-11 (Phase 7, Nutzerfehlerbericht): Die Bereitschaftsanzeige bewertet gespeicherte Verarbeitungskontrakte gemeinsam je exaktem Scanlauf. Generische Begleitdateien neben genau einem erkannten Scannerprofil erzeugen bei gueltigen Vertraegen keinen falschen Pruefstatus mehr; andere Laeufe, echte Versions-/Kompatibilitaetsfehler und nicht eindeutig uebertragene Kundenreviews bleiben getrennt beruecksichtigt. Reine Pruefhinweise bieten keinen wirkungslosen erneuten Reimport an. Keine Umklassifizierung, Extraktions-/Mappingaenderung oder Datenmutation; kein neuer Processing-Vertrag und kein Reimport erforderlich. Synthetischer 22-CSV-Import samt erneutem Import und serialisierten Dateirecords sowie Schutzfaelle bestehen in 13 fokussierten Tests. Gesamtpruefung: 1.216 bestanden, acht optionale DB-Tests uebersprungen, ein fachfremder Auswahllisten-Test am Zeitlimit gescheitert; isolierte Wiederholung besteht in 1.838 ms ohne Limitaenderung. Local-only-/Designchecks und Client-/Serverbuild erfolgreich. Laufende App liefert das korrigierte Statusmodul mit HTTP 200; keine Live-Inhaltsinspektion. Phasenstatus unveraendert. CSV-Workerstart 2026-09-11 (Phase 13, Nutzerfehlerbericht): Der isolierte Importworker initialisierte fuer jede CSV auch die vollstaendige jsdom-Abhaengigkeit innerhalb seines 30-Sekunden-Budgets. Der Node-Markupadapter laedt die fest benannte lokale Bibliothek jetzt erst beim tatsaechlichen DOM-Bedarf; CSV/JSON/Excel und begrenzte lexikalische HTML-Verarbeitung vermeiden diese Startlast. Parsergrammatik, Extraktion, Mapping und gespeicherte Fakten bleiben identisch; deshalb kein neuer Processing-Vertrag oder pauschaler Reimportbedarf. Der konkrete gemeldete Timeout wurde ohne Realdatenzugriff nicht reproduziert; die unnoetige DOM-Initialisierung wurde im gebauten Worker vor dem Fix durch einen fehlschlagenden Kostentest nachgewiesen. Nach dem Fix verarbeitet `node tests/server/import-worker-startup-check.mjs` 22 synthetische Domain-CSVs mit vollstaendigem Originalwertabgleich in beobachteten 14.170 ms ohne DOM-Laden, bei unveraenderten Zeit-/Speicherlimits. Laufendes Backend: synthetischer Parse-only-Aufruf HTTP 200 in 515 ms, Repositoryrevision unveraendert. 1.214 Tests bestanden, acht optionale DB-Tests uebersprungen; Local-only-/Designchecks und beide Builds erfolgreich. Kein Backendneustart, keine Realdatenmutation; Phasenstatus unveraendert. Accepted-Risk-Speicherpruefung 2026-09-11 (Phase 7 mit bestehender Persistenz aus Phase 9-11, Nutzerpraezisierung): `Save draft`, `Record acceptance` und `Revoke acceptance` speichern nicht mehr unmittelbar nach der Formularvalidierung, sondern zeigen zuerst einen kompakten ASSESSOR-Pruefbericht der tatsaechlich ausgefuellten Angaben. `Change` kehrt ohne Eingabeverlust in die Maske zurueck; `OK` fuehrt erst dann die bestehende geschuetzte Speicheroperation aus. Fehler erhalten alle Eingaben, erfolgreiche Speicherung wird im Formular ausdruecklich bestaetigt. Keine Aenderung an Review-JSONB, API, Validierung, Reimportvertrag oder Datenbankschema. Verifikation: sechs fokussierte Domain-/Dialogtests, 1.214 Gesamttests, acht optionale PostgreSQL-Integrationstests uebersprungen; Local-only-/Designpruefung sowie Client-/Serverbuild erfolgreich. Phasenstatus unveraendert. Accepted Risk 2026-09-10 (Phase 7 mit Persistenz/API aus Phase 9-11 und Sicherheit aus Phase 13, Nutzerauftrag): Button im Findingheader und strukturierter Dialog fuer Scope, Risikoszenario, Begruendung/Alternativen, initiales und verbleibendes Risiko, kompensierende Kontrollen, Verantwortliche, getrennte externe Freigabedokumentation, Nachweise, Befristung, Wiedervorlage und Ausstieg implementiert. Entwurf, Annahme und Widerruf erzeugen vollstaendige Versionen im bestehenden Review-JSONB; Same-Origin-API mit Projektpruefung, serverseitiger Validierung und atomarer Revisionspruefung. Native Befunde und Scores bleiben erhalten. Reimport erhaelt die Historie, fordert fuer einen anderen Zielbefund aber erneute Pruefung. Ablagevertrag und geplanter Ausbau in `docs/RISK_ACCEPTANCE.md`; keine SQL-Migration oder Realdatenmutation. Verifikation: 1.214 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Synthetische Browserpruefung bestaetigt Dialog, Pflichtfeldsperre und fehlerfreie Breite; temporaere Vorschau entfernt. Frontend und Backend-Health antworten HTTP 200. Keine reale Datenbank-Schreibprobe. Phasenstatus unveraendert. Reimport-Schutz 2026-09-10 (Phase 6/8/9/13C mit Phase-7-Hinweis, ausdruecklicher Nutzerauftrag): Verarbeitungsrelevante Aenderungen an Formaterkennung, Parser/Extractor, Scannerprofil, stabiler Identitaet, Mapping, Normalisierung, Status-/Evidenzvertrag oder nativer Scoregewinnung muessen ueber append-only Processing-Manifeste versioniert und fuer bestehende Importe als Reimportbedarf sichtbar werden; reine Darstellungsaenderungen auf bereits gespeicherten Daten benoetigen keinen Reimport. Generische/tabellarische Importe ohne belastbares Profil erscheinen vorsorglich als gelber Pruefstatus. Direkter Reimport und die Uebernahme eines bereits importierten Ersatzlaufs uebertragen kundenbezogene Finding-Reviews atomar in lokaler und PostgreSQL-Persistenz. Die Zuordnung verwendet ausschliesslich die eindeutige stabile Identitaet aus Scannerwerkzeug, nativer Regel-ID und betroffenem Asset; bei fehlender oder mehrdeutiger Zuordnung wird nicht nach Titel oder Position geraten. Der vollstaendige Reviewvertrag wird kopiert und erhaelt dadurch Status, Prioritaet, Action-Plan-Zuordnung, Owner, Termin, Kommentar, Voraussetzungen, Zugriffe, naechsten Schritt, Akzeptanzevidenz, Marker/Accepted Risk sowie spaetere additive JSON-Felder. Bereits vorhandene Angaben am Ersatzlauf haben Vorrang. Nicht eindeutig uebertragbare Angaben bleiben am auditierbar erhaltenen Ursprungslauf gespeichert; Anzahl und dauerhafter `Review required`-Hinweis werden am Ersatzimport persistiert. Original-SHA, Vorgaengerbezug und Uebertragungsherkunft bleiben nachvollziehbar. Regeln und Szenarien stehen in `docs/REIMPORT_POLICY.md`. Verifikation: 1.205 Tests bestanden, acht optionale Tests uebersprungen; Local-only- und Designpruefung erfolgreich. Keine SQL-Migration, Realdateninspektion oder kanonische Datenmutation; Phasenstatus unveraendert. Purple-Knight-Scorezuordnung 2026-09-10 (Phase 7/13C, Nutzerkorrektur): Eine native score-only Assessment Summary und die eindeutige Findings-Datei desselben Scanlaufs werden nun ueber Assessment, Werkzeug, Scanlauf und Verarbeitungskontrakt verbunden. Der native Wert bleibt der Scorebeitrag; Passed-/Deviation-Zahlen stammen aus der Findings-Datei. Die Zuordnung scheitert geschlossen bei mehreren nativen Traegern oder mehrdeutigen Ergebnispopulationen. Die synthetische Regression mit nativ 65, 96 Passed und 19 Deviations liefert in der Dashboardprojektion 65 Native score statt Pass rate 83 und behaelt 19 Deviations. 1.199 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designchecks sowie Client-/Serverbuild erfolgreich. Keine Datenmutation, Migration, Realdateninspektion oder Backendneustart; Phasenstatus unveraendert. Native Scores fuer weitere Scanner 2026-09-10 (Phase 6/13C mit Phase 7, Nutzerpraezisierung): Jedes deklarative Scannerprofil enthaelt jetzt verpflichtend eine versionierte Scoredefinition mit nativen Gesamtwertfeldern, Skala, Richtung und Fallbackpopulation oder einer begruendeten Nichtverfuegbarkeit. Die gemeinsame Berechnung liest den Profilkatalog statt einer separaten Scannerliste; neue Profile erhalten automatisch den nativen Vorrang. Zehn neue synthetische Regressionen sichern den Profilvertrag und einen zusaetzlichen Scanner einschliesslich Dashboardprojektion, Nullwert, Risikoinversion, fehlerhaften/fremden Werten und Findings-only-Fallback. 1.198 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designchecks und Client-/Serverbuild erfolgreich. Vorhandene Scoremethoden, Importversionen und Daten bleiben unveraendert; Phasenstatus unveraendert. Hybridscore 2026-09-10 (Phase 7/13C mit Phase-8-Vergleichsschutz, ausdruecklich freigegeben): Regel 1.0.0 verwendet den exakt datei-/laufgebundenen nativen Purple-Knight-/CIS-CAT-Score beziehungsweise `100 - PingCastle-Risiko`, sonst eine belastbare Bestehensquote. Feste Quellgewichte, verifizierte Lauf-/Hash-Deduplikation, ungerundete Berechnung und gekennzeichnete Datenluecken verhindern doppelte oder still falsch zugeordnete Beitraege. Security Domains heissen Pass rates; Source Overview und der neue Methodikdialog zeigen Beitrag, Verfahren, Gewicht, Pruefbasis und Quellzeit. Neue Assessments speichern die Regel im bestehenden JSON/JSONB-Vertrag; fehlende historische Angaben bedeuten dauerhaft Version 1.0.0. Historische offene Scannerverpflichtungen werden fuer den Scorevergleich read-only mit Herkunft fortgefuehrt, Fortschritt nur bei unveraendertem Scope/Verfahren und aktueller Evidenz berechnet. Das weitergehende persistierte Phase-8-Backlog-/Retirement-Arbeitspaket bleibt offen. Entscheidungsregeln, Herstellerbelege und Grenzen stehen in `docs/SCORING_MODEL.md`. Verifikation: 1.188 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen, Local-only-/Designchecks und Client-/Serverbuild erfolgreich; die vorbestehende TS7016-Blockade wurde durch die fehlende Typdeklaration der synthetischen HTML-Fixture behoben. Keine SQL-Migration, Realdateninspektion, Datenmutation oder Backendneustart; Phasenstatus unveraendert. Source-Wechsel ohne Ansichtswechsel 2026-09-10 (Phase 7, Nutzerkorrektur): Der Client-Info-Source-Selektor verwendete den Findings-Drilldown und oeffnete dadurch Work. Die kontrollierte Auswahl setzt jetzt ausschliesslich den gemeinsamen Source-Filter, wechselt bei Bedarf auf das Timeslot-Aggregatblatt und behaelt Bereich sowie Work-Unteransicht. Scan All entfernt den Source-Filter. Score, Domain-/Prioritaetszahlen, Statuszaehler und Source Overview werden innerhalb Client Info aus der gefilterten Ergebnismenge abgeleitet; alle Quelloptionen bleiben erreichbar. Der blattgebundene Cache beruecksichtigt die unveraenderliche Quellenauswahl, damit Wechsel frische Werte liefern und unveraenderte Wiederbesuche keine Quellfelder erneut lesen. Explizite Finding-Drilldowns bleiben Navigation und uebernehmen den gewaehlten Source-Kontext. Fuenf synthetische Interaktionstests decken Client Info, die vier Work-Unteransichten, Scan All, Wiederbesuch und Austausch des Timeslot-Datensatzes ab. Verifikation: 1.157 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Clientbundle erfolgreich. Gesamtbuild weiterhin am vorbestehenden TS7016 fuer html-timeout-fixture.mjs blockiert. Keine API-/Persistenz-/Schemaaenderung, kein Reimport oder Backendneustart; Phasenstatus unveraendert. PurpleKnight-Statusabgleich 2026-09-10 (Phase 7, Diagnose mit Bezug zu 13A/13C): Der ausdruecklich auf Statusfelder und Zaehler freigegebene read-only Abgleich zeigt zwei unterschiedliche native Ergebnisstaende in HTML und CSV; die gespeicherten HTML-Originalstatusfelder und Summenzaehler stimmen mit der ASSESSOR-Zaehlung ueberein. Keine Importkorrektur oder Angleichung an fremde Summarywerte. Bestaetigter separater Darstellungsfehler behoben: Client Info erkennt die deklarierten PurpleKnight-Filter Not Relevant als not-applicable sowie Not selected/Canceled als not-run. Nicht anwendbare Kontrollen zaehlen damit nicht als Assessment Gaps oder zum Coverage-Nenner; Passed/Deviation und Originaldaten bleiben unveraendert. Vier neue synthetische Regressionen pruefen Profil-/Mischansicht, echte Luecken, Coverage und unveraenderte Quelldaten; elf fokussierte Dashboardtests und 49 Import-/Status-/Facettentests erfolgreich. Gesamtlauf: 1.152 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only- und Designpruefung erfolgreich. Clientbundle erfolgreich; Gesamtbuild bleibt am vorbestehenden TS7016 fuer tests/importers/html-timeout-fixture.mjs blockiert. Keine Persistenzmutation, Migration, Importversionierung, Reimport oder Backendneustart; temporaeres Diagnoseskript entfernt. Phasenstatus unveraendert. Work-GPO-Statusfilter wiederhergestellt 2026-09-09 (Phase 7/13B, Nutzerkorrektur): Der Versionssprung auf Evaluator 1.4.0 hatte gespeicherte 1.3.3-Vergleiche im Work-Ladepfad ausgeblendet. Work darf diese lesekompatiblen Ergebnisse jetzt ausschliesslich als Anzeigeersatz verwenden, solange fuer dieselbe aktive Aggregation keine aktuelle Evaluation vorliegt. Die Backendfreigabe des Aggregationskontexts und die vollstaendige Beobachtungs-/Timeslotabgrenzung bleiben erhalten; historische Profile/Snapshots werden nicht wieder aktiviert. Aktuelle Engineversion hat Vorrang, innerhalb derselben Version gilt weiterhin vollstaendigste Baselineabdeckung und danach Aktualitaet. Beschreibung und Evaluation-readiness-Feld kennzeichnen Altwerte ausdruecklich als neu auszuwerten. Der Standardselektor fuer aktuelle Result-DB-Projektion und fachliche Verarbeitung bleibt strikt, alte Laeufe gelten nicht als abgeschlossene Neuauswertung. GPO-Statusoptionen bleiben in GPO-/gemischten Workspaces auch bei null Treffern auswaehlbar; andere Facetten behalten ihre bisherige Trefferbegrenzung. Synthetische End-to-End-Regression bestaetigt Laden von Altwerten, Conflicts/Not configured/Duplicates/Passed mit je einem filterbaren Treffer, sichtbare Nulloptionen, Kennzeichnung und unveraenderte Originaldaten. 34 gezielte Tests und Gesamtlauf mit 1.148 Tests erfolgreich, acht optionale Datenbanktests uebersprungen; Local-only-/Designpruefung und Serverbuild erfolgreich. Clientbuild bleibt an der unabhaengigen fehlenden Typdeklaration fuer html-timeout-fixture.mjs blockiert. Keine Datenmutation, Neuauswertung, SQL-/API-Aenderung oder Backendneustart. Fuer die Filterkorrektur genuegt erneutes Oeffnen des Kunden mit aktualisiertem Frontend; die fachliche Neuauswertung bleibt getrennt erforderlich. Phasenstatus unveraendert. GPO-Vorlagenkontext 2026-09-09 (Phase 13B, expliziter Nutzerauftrag): Baselineanalyzer 1.3.0 erhaelt Namen jeder enthaltenen GPO-Vorlage aus begrenzten Backup.xml-/bkupInfo.xml-/GPReport.xml-Feldern mitsamt Quellpfad und SHA-256. Der bestehende SAX-Parser liest diese Namen nur per Opt-in; Kundenidentitaeten bleiben unveraendert. Eine enge Namensgrammatik erkennt Windows-Client, Member Server und Domain Controller samt Version; RS1 wird fuer den Vergleich zu 1607 normalisiert, der Originalname bleibt erhalten. Fehlende, unbekannte oder widerspruechliche Namen erzeugen keine geratene Rolle. Evaluator 1.4.0 waehlt Vorlagen nur bei genau einem expliziten, passenden Vergleichskontext ohne Inventarherkunft; unbekannte Vorlagen werden nicht ausgeschlossen. Gleiche Empfehlungen bleiben auch ohne Rollenwahl vergleichbar. Bei unterschiedlichen Empfehlungen ohne Zuordnung bleibt die bisherige Konflikt-/Reviewdarstellung bestehen, jetzt mit ausdruecklicher Erklaerung, dass kein Kunden-GPO-Konflikt bewiesen ist. Kein passender Kontext erzeugt keinen Pass/Fail. Alle Kandidaten und Auswahlreferenzen bleiben als Evidenz erhalten. Die Detailanzeige unterscheidet Paket und Vorlagenname, markiert ausgewaehlte Empfehlungen und fuehrt gleiche Werte verschiedener Vorlagen nicht mehr zusammen. 50 abschliessende synthetische Tests erfolgreich; Gesamtdurchlauf 1.146 Tests erfolgreich, acht optionale Datenbanktests uebersprungen. Local-only-Pruefung semantisch auf Opt-in und unveraenderte technische Identitaet praezisiert; Local-only/Design separat erfolgreich. Serverbuild erfolgreich. Client-Gesamtbuild durch unabhaengige fehlende Typdeklaration in html-attribute-performance.test.ts fuer html-timeout-fixture.mjs blockiert; direkter Bundleversuch durch Sandbox spawn EPERM blockiert. Keine SQL-Migration, Datenmutation, Live-Inhaltspruefung oder Backendneustart. Aktivierung fuer bestehende Daten erfordert Neuanalyse der Original-Baselinepakete und anschliessende neue Evaluation; alte Analysen/Laeufe werden nicht ueberschrieben. Die automatischen Inventarkontexte bleiben bewusst kein Beweis der Kunden-GPO-Anwendbarkeit. Phase 13B bleibt in Arbeit. HTML-Timeout-Nachhaertung 2026-09-09 (Phase 13/13A): Der Screenshot meldet einen Parserabbruch nach 30 Sekunden; der betreffende Report wurde nicht gelesen. Ein unabhaengiger synthetischer 3.159.338-Byte-Fall reproduziert denselben Fehler im bisherigen Produktionsworker nach 30.011 ms. Gemeinsamer linearer Attributleser ersetzt unbeschraenkte name=value-Suchwiederholungen; importlokaler Elementindex ersetzt wiederholte Volltextsuchen nach PingCastle-Verweiszielen. Formatadapter HTML 1.1.1, PingCastle-Extractor 2.2.1 und CIS-CAT-Extractor 1.3.1; unveraenderte Profile, Mappingvertraege, Zeit-/Speicherlimits und Persistenz. Neun neue synthetische Regressionen erfolgreich; der gebaute Worker erhaelt alle 40 Regeln und 40 verknuepften Tabellen in beobachteten 1.590 ms. 1.131 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Client-/Serverbuild und separate Designpruefung erfolgreich. npm test endet anschliessend an einem fachfremden GPO-Sicherheitscheck (tests/local-only-check.mjs:211: displayName-Verbot gegen unabhaengig geaenderten gpo-metadata-parser); diese Dateien wurden nicht veraendert. Kanonischer PostgreSQL-Container samt bestehendem Volume und Portbindung geprueft, Backend neu gestartet. Synthetischer Parse-only-HTTP-Abgleich bestaetigt 40 Regeln/Tabellen und unveraenderte Repositoryrevision; App/Backend/Proxy HTTP 200. Temporaere Diagnosepruefungen entfernt, dauerhafter isolierter Lasttest bleibt wiederholbar. Keine Phase wird hierdurch neu abgeschlossen. PurpleKnight-Vollstaendigkeit 2026-09-09 (Phase 13A/13C, freigegebener Fix des Audits): Profil 1.3.0, HTML-Extractor 1.2.0 und Summary-Extractor 1.1.0 verarbeiten Workbook-Summary und Findingtabellen gemeinsam ueber die generische Pipeline. HTML liefert getrennten Berichtskontext, exakte Originalwerte/Quellpfade und vollstaendige Detailzeitstempel. Lexikalisch erkannte statische Zuweisungen bleiben inert; defekte Payloads, fehlende IDs und konkurrierende Bindings scheitern explizit, doppelte IDs und deklarierte Zaehlerabweichungen erzeugen Warnungen ohne Datenverlust. Native Null-Details und deklarierte leere Berichte bleiben gueltig. CSV-Indikatorerkennung kombiniert Name und Schema; Dateiname allein reicht nicht. 25 neue synthetische Regressionen, insgesamt 1.122 Tests bestanden und acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung sowie Client-/Serverbuild erfolgreich. Dummy: XLSX/HTML je 119 Vorkommen und 20 verknuepfte Detailtabellen mit 46 Zeilen, XLSX 22 und HTML 45 Kontextbeobachtungen; CSV 119 Vorkommen und alle 19 Details mit 45 Zeilen. 4.743 HTML-Originalfeldwerte samt Pfaden und alle 213 Detailzellen unabhaengig exakt geprueft. Alle 24 Dateien ueber Parse-only-HTTP abgeglichen; abschliessender Drei-Format-Check am finalen Backend bestaetigt die Zahlen und unveraenderte Repositoryrevision. Kanonischer PostgreSQL-Datastore unveraendert, Backend aktualisiert. Keine Schemaaenderung, Migration, Speicherung oder Reimport; alte Importe benoetigen expliziten Reimport. Vorgaben und historischer Pruefbericht aktualisiert, temporaere Auditdateien entfernt. Phase 13A bleibt abgeschlossen, Phase 13C bleibt in Arbeit. GPO-Empfehlungsanzeige vereinfacht 2026-09-09 (Phase 7/13B, Nutzerpraezisierung): Die Beschreibung zeigt nur noch Baselinebezeichnung und Sollwert. Gleiche Anzeigeempfehlungen innerhalb desselben Ergebnisses werden zusammengefasst; Source und Backupkennung bleiben in der gespeicherten Evidenz, entfallen aber hier. Die Vollstaendigkeitspruefung zaehlt geladene Referenzen unabhaengig von der Anzeigeverdichtung, damit zusammengefasste Werte nicht faelschlich als fehlend gelten. Keine Aenderung der Konfliktregel oder Zuordnung, keine Migration. 16 gezielte Tests, 1.122 Gesamttests erfolgreich, acht optionale Datenbanktests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Die beim vorherigen Durchlauf beobachteten Gesamtpruefblocker bestehen in diesem Durchlauf nicht mehr. Kein Phasenabschluss. GPO-Baselineempfehlungen 2026-09-09 (Phase 7 mit Bezug zu 13B, begrenzter Nutzerauftrag): Bei mehrdeutigen Baselineempfehlungen zeigt die Detailbeschreibung die referenzierten Empfehlungen mit Baselinebezeichnung, Sollwert, Quellpfad und Backupkennung. Die Zuordnung bleibt an die gespeicherte Analyse, Baseline und Einstellungsidentitaet gebunden; unbekannte Zielrollen werden nicht geraten. Explizit leere Kontenlisten und nicht ladbare Referenzen erhalten eigene Erklaerungen. Vorhandene Beschreibungen bleiben erhalten. Bewertung, Zaehler, Persistenz und Importdaten bleiben unveraendert; kein Reimport erforderlich. 16 gezielte synthetische Guidance-/Darstellungstests und Client-/Serverbuild erfolgreich, Designpruefung erfolgreich. Der parallel veraenderte Gesamtstand ist nicht vollstaendig gruen: beobachteter Purple-Knight-Profilversionstest (1.2.0/1.3.0) und Local-only-Pruefung in static-report-literal.ts ausserhalb dieser Aenderung. Kein Phasenabschluss und keine Live-Inhaltspruefung. PingCastle-Strukturtreue 2026-09-09 (Phase 13A/13C, freigegebene Auditpunkte 1-3): Profil 1.5.0 / Extractor 2.2.0 erhaelt XML-Attribute und explizite Leere, liest HTML-Tooltipattribute ohne Zelltextverunreinigung und diagnostiziert fehlende/doppelte Rule IDs sowie abweichende Kategorie-Trefferzahlen. HTML/XML-Formatadapter 1.1.0, unveraenderte Mapping-/Normalisierungsvertraege und Finding-Kompatibilitaet. Dummy-Abgleich: je 37 Regeln, XML 1.137 Beobachtungen mit allen 403 Attributwerten und 70 leeren Blaettern; HTML alle 125 Tabellen, 1.513 Beobachtungen, 17 bisherige Abschnitte plus separate Regelbilanz. Keine Attributreste in Kontext, Details oder verknuepften Detailtabellen. 21 neue synthetische Regressionen; 1.096 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Laufendes Backend nach kanonischer Datastorepruefung neu gestartet; Parse-only-HTTP-Abgleich bestaetigt Zahlen und unveraenderte Repositoryrevision, App/Backend/Proxy HTTP 200. Kein Reimport, keine Importpersistenz oder Schemaaenderung. Vorgaben und Sicherheitsdokumentation ergaenzt, temporaere Dummy-Pruefdatei entfernt. Auditpunkte 4-5 (semantischer XML-Kontextvertrag, Control-Path-JSON) bleiben offen; Phase 13A abgeschlossen und Phase 13C in Arbeit bleiben unveraendert. Maester-Vollstaendigkeit 2026-09-09 (Phase 13A/13C, ausdruecklicher Nutzerauftrag einschliesslich HTML): Der native HTML-Extractor 1.1.0 liest eingebettete statische JavaScript-Objektliterale ueber eine begrenzte Datengrammatik ohne Codeausfuehrung. Nicht unterstuetzte dynamische Ausdruecke, defekte Testeintraege und konkurrierende Berichtswurzeln scheitern mit einer Importdiagnose statt still null Befunde zu erzeugen. Native Strukturerkennung funktioniert auch hinter dem begrenzten Rohtext-Erkennungsausschnitt. Das Maester-Profil 1.1.0 trennt Excel-Result-Evidenz von einer vorhandenen Statusspalte; natives CSV/HTML-Result bleibt ohne separate Statusspalte der Ergebnisstatus. Berichtskontext, Originalfelder und Herkunft bleiben erhalten; Scanner-Rechner und PowerShell sind explizit Laufzeitkontext, keine bewerteten Assets. Deklarierte Zaehler und aus Einzeltests berechnete Werte bleiben getrennt, Widersprueche erzeugen Warnungen. Am freigegebenen Dummy liefern Excel und HTML jeweils 318 Kandidaten/Vorkommen und 297 Evidenzen; HTML liefert zusaetzlich 39 Umgebungsbeobachtungen und einen Berichtsabschnitt. IDs, Status und Severity stimmen fuer alle 318 Tests zwischen den Formaten ueberein; 6.235 extrahierte HTML-Originalfelder wurden unabhaengig gegen ihre Quellpfade geprueft. Zwei Quellwidersprueche sind belegt: TotalCount 315 statt 318 und FailedCount 67 statt 70. 1.075 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Damit sind auch die oben historisch dokumentierten temporaeren Maester-Test-/Buildblocker aufgeloest; temporaere Pruefdateien entfernt. Das neu gestartete Backend verwendet den verifizierten kanonischen PostgreSQL-Datastore; App, Backend und Proxy antworten mit HTTP 200. Parse-only-HTTP-Pruefung beider Dummy-Dateien bestaetigt Profil 1.1.0, dieselben Zahlen und unveraenderte Repositoryrevision. Keine Schemaaenderung, Migration oder Speicherung von Importdaten; bestehende Maester-Importe benoetigen einen expliziten Reimport. AGENTS.md, SECURITY.md und docs/IMPORT_SECURITY_LIMITS.md halten die Schutz- und Abnahmeregeln fest. Phase 13A bleibt abgeschlossen, Phase 13C bleibt in Arbeit. Client-Info Findinggrundlage 2026-09-09 (Phase 7 mit Bezug zu 13B, Nutzerkorrektur): Security Domains und Priority Findings verwenden jetzt dieselbe autoritative, disjunkte Deviation-Grundmenge. Ursache der ueberhoehten Domainzahlen war eine zweite Statusableitung: Abfragen nach in einem Profil nicht definierten Statuswerten wurden vom Profilfallback als Treffer behandelt; dadurch konnten insbesondere GPO-Kontextzeilen als Deviations gelten. Zusaetzlich durfte derselbe Datensatz mehreren Domains angehoeren. Kontextstatus werden nun vor Deviations getrennt, nur deklarierte Statusfilter abgefragt und jeder Datensatz genau einer primaeren Domain zugeordnet; nicht eindeutig klassifizierbare Deviations erscheinen transparent als `Unclassified`, sodass die Domaenenverteilung mit der Gesamtzahl reconciliert. Passed, Not configured, Duplicates und Conflicts stehen je Domain sowie global als separate, anklickbare Kontextzahlen bereit und fliessen nicht in Findings, Critical oder High ein. 38 fokussierte Dashboard-/GPO-Regressionen, Client-Typpruefung, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Im Gesamtlauf bestanden 1.070 Tests, acht optionale PostgreSQL-Tests wurden uebersprungen; zwei gleichzeitig bestehende Maester-Result-Message-Tests scheitern ausserhalb dieser Aenderung. Ausschliesslich synthetische Inhaltspruefung, keine Daten-, API-, Persistenz- oder Schemaaenderung. Phase 7 bleibt abgeschlossen; Risiko einer erzwungenen falschen Domainzuordnung wird durch den sichtbaren Unclassified-Rest vermieden. Work-Standardeinstieg 2026-09-09 (Phase 7, Nutzerpraezisierung): Jeder explizite Wechsel in den Bereich Work setzt die Ansicht jetzt auf Reports. Sidebar, Client-Info-Weiterleitung und Pathfinder-Fundsprung verwenden dafuer denselben Einstieg; gespeicherte Daten, Auswahlwerte und die anderen Work-Ansichten bleiben unveraendert. Die fokussierte Regression mit drei Tests sowie der Gesamtlauf mit 1.026 bestandenen Tests, acht uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung waren erfolgreich. Der Server-Produktionsbuild war erfolgreich. Der vollstaendige Build bleibt unabhaengig von dieser Aenderung an der bereits vorhandenen temporaeren Datei `tests/maester-audit.temporary.test.ts` blockiert (`DatasetSheet.headers` existiert im Typ nicht); der direkte Client-Bundle-Ersatzlauf war in der Sandbox wegen `spawn EPERM` nicht ausfuehrbar. Keine Daten-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Bereichswechsel-Performance 2026-09-09 (Phase 7, Nutzerauftrag): Bremsen waren mehrfach ausgefuehrte Filter-/Facetten- und Statuspruefungen, quadratische Neulesung abgelehnter nummerierter Spaltengruppen, Normalisierung im Sortiervergleich, unsichtbare Raw-Data-/Exportaufbereitung, ein uebergrosses erstes Virtualisierungsfenster und 2.537 sofort gemountete Blattoptionen. Gemeinsame begrenzte blattgebundene Selektoren, profilgebundene Statusantworten, einmalige Gruppen-/Sortierschluessel sowie bedarfsgeladene Rohtexte, Exporte und native Optionen beseitigen diese Wiederholungen. Pathfinder startet erst bei Aktivierung, pausiert versteckte Kontext-/Geometriearbeit und verwirft alten Zustand bei Workspacewechsel; Textkollisionen laufen nur bei sichtbarem Text, MITRE-Header werden einmal klassifiziert. Unveraenderte Health-/Geometriewerte ersetzen keinen Zustand. Am ausdruecklich freigegebenen Dummy (1280 x 720) sank Work von anfangs 5.324 ms auf 121-211 ms bei unveraenderten Wiederbesuchen; nach Filterreset/Graphneubau ein Rueckwechsel 406 ms. Synthetisch mit 8.257 Records: wiederholte Ableitung 398 -> rund 1 ms, null erneute Quellfeldzugriffe. 1.024 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. App, Backend und Proxy HTTP 200; Messcode fehlt im Produktionsbundle. AGENTS.md und docs/architecture/navigation-performance.md enthalten Ursachen, Messverfahren und Regressionen. Keine Migration, kein Reimport oder gezielte Datenmutation; Prueftab geschlossen. Phase 7 bleibt abgeschlossen, andere Phasenstatus unveraendert. Client-Info Verbindungskurven 2026-09-08 (Phase 7, Nutzermeldung): Die Kurven zwischen Overall Score und Security Domains endeten sichtbar neben ihren Knoten. Ursache waren feste Zielkoordinaten in einem ungleichmaessig gestreckten Koordinatensystem (`viewBox="0 0 1000 640"` mit `preserveAspectRatio="none"`): sie trafen nur bei genau einer Fenstergroesse. Die Geometrie entsteht jetzt aus der tatsaechlichen Lage von Ring und Domainknoten, das Koordinatensystem entspricht der gemessenen Flaeche, und neu gemessen wird sowohl bei Groessenaenderungen der beteiligten Flaechen als auch beim Fensterereignis. Gemessen am freigegebenen Dummy bei 1.000, 820 und 805 Pixel Breite: Abweichung zwischen Kurvenende und Knotenmitte jeweils 0 Pixel, zuvor bis zu 80 Pixel. Unterhalb des Umbruchs bleiben die Kurven wie bisher ausgeblendet. Keine Aenderung an Werten, Farben oder Kachelgeometrie. 1.011 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. GPO-Quellenanzeige 2026-09-08 (Phase 7/13B, Nutzerkorrektur): Work verwendet die vom bestehenden Backend-Readmodell ausgewiesenen aktuellen Evaluationen und gruppiert Laeufe nach Aggregation statt nach der ergebnisabhaengigen Teilmenge referenzierter Backups. Reprocessing-Historie und abgeloeste Profil-/Snapshotkontexte erscheinen damit nicht als zusaetzliche Scans. Vergleichs-, Not-configured- und Konsistenzzeilen tragen den urspruenglichen Importzeitpunkt; der Auswertungszeitpunkt bleibt separat als `Evaluated` erhalten. `Source: Scan` steht auch auf einem reinen GPO-Blatt bereit. 48 fokussierte Tests und der Gesamtlauf mit 1.014 bestandenen Tests, acht uebersprungenen optionalen PostgreSQL-Tests, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Read-only am ausdruecklich freigegebenen Dummy ueber den korrigierten Workspace-Lesepfad bestaetigt: genau eine GPO-Quellenoption mit 3.805 Zeilen, ein urspruenglicher Importzeitpunkt, ein aktueller Auswertungszeitpunkt und insgesamt fuenf Quellenoptionen; die elf historischen Evaluationen sind vor und nach der Pruefung unveraendert vorhanden. Liveausgabe ausschliesslich technische Zaehler, App und Backend HTTP 200. Keine Migration, Datenmutation, Neuanalyse oder Backendneustart; Phasenstatus unveraendert. Client-Info Antwortzeit 2026-09-08 (Phase 7, Nutzermeldung): Die Ansicht blockierte beim Aufbau messbar mehrere Sekunden. Ursache war nicht die Facettenableitung (5 ms), sondern die Ableitung je Datensatz: Ergebniszustand, Schweregrad, Domainzuordnung, Quellenzuordnung und vierzehn Punkteberechnungen liefen fuer alle Datensaetze des Mandantenblattes - im Dummy 8.257 - bei jedem Rendern erneut, also auch bei jeder Zustandsaenderung der Anwendung. Gemessen 3.123 ms je Aufbau. Die Ableitung entsteht jetzt einmal je Blatt: ein Durchlauf statt vierzehn, die Domainzuordnung baut den Klassifikationstext einmal statt achtmal, Zustand, Schweregrad und Klassifikationstext haengen als schwache Verweise am Datensatz, und Facetten samt Auswertung ueberdauern den Ansichtswechsel. Zusaetzlich bleiben die Umgebungsdetails und die Ersatzzaehlung der GPOs memoisiert, und die workspaceweiten Herkunftswerte werden je Datensatzliste einmal gezaehlt. Gemessen nach der Aenderung: Ableitung 0 ms je Aufbau, laengste blockierende Aufgabe beim Ansichtswechsel unter 100 ms statt ueber 4.000 ms. Fachliche Werte, Zaehlungen und Darstellung sind unveraendert; die geteilte Statuslogik der Profile wurde bewusst nicht angetastet, damit Client Info und Work weiterhin dieselben Zahlen zeigen. Der bekannt hohe Aufbau der Work-Ansicht bleibt davon unberuehrt und ist nicht Teil dieser Aenderung. 1.007 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Abschluss Dummy-Reimport 2026-09-08 (Phase 7/13C): Der zuvor offene Punkt des vorherigen Eintrags ist erledigt. Nach dem Neustart des lokalen Backends wurde der Purple-Knight-Scan ueber den Importdialog erneut ersetzt (`run-batch-1788870808672-141`); die bestaetigungspflichtige Indicators-Datei traegt jetzt Profilversion 1.2.0 bei unveraenderter Mappingversion 1.1.0, die Zusammenfassungsdatei wird ohne Rueckfrage mit hoher Sicherheit als Purple-Knight-Quelle erkannt. Alle aktiven Scans des Dummy fuehren damit den aktuellen Verarbeitungsstand: Purple Knight 1.2.0 (20 generische Begleitdateien unveraendert 1.0.0), CIS-CAT 1.4.0, PingCastle 1.4.0, Maester 1.0.0. Datahub meldet fuer alle fuenf Eintraege `Ready`, die Reimportempfehlung ist verschwunden. Befundzahlen und Umgebungskontext unveraendert gegenueber der vorherigen Pruefung (119 Vorkommen, 22 Beobachtungen im Purple-Knight-Lauf), Client Info zeigt weiterhin 49 Faktenzeilen ohne unbekannte Werte. Keine Code-, Schema- oder Persistenzaenderung. Dummy-Reimport und CIS-CAT-Titelseite 2026-09-08 (Phase 7/13C, ausdrueckliche Nutzerfreigabe): Der freigegebene Dummy wurde ueber den regulaeren Reimportweg (`/import-batches/preview` und `/import-batches/complete` mit `replacesScanRunId`) mit exakt denselben Originaldateien neu importiert; die SHA-256-Identitaet aller 26 Dateien wurde vorab und serverseitig geprueft. Vor dem Schreiben entstand ein Custom-Format-Backup, dessen Archivinhalt (345 Eintraege) und Kopie per SHA-256 verifiziert wurden. Befundzahlen bleiben unveraendert (Purple Knight 119, Maester 318, CIS-CAT 411, PingCastle 37), abgeloeste Laeufe bleiben als Historie erhalten. Der bereits am 2026-08-25 abgeloeste PingCastle-Lauf wurde bewusst nicht angefasst. Die zuvor benutzerbestaetigte Werkzeugentscheidung der Indicators-Datei wurde unveraendert reproduziert. Am echten Bericht zeigte sich, dass CIS-CAT Pro System- und Benchmarkangaben nicht als beschriftete Wertepaare fuehrt, sondern auf der Titelseite: bewertetes System als `for `, Netzadresse als `Target IP Address`, Benchmark samt Version als Ueberschrift und Profil, Zeitpunkt sowie Dauer als unbeschriftete Listenpunkte. Die Auswertung liest jetzt vorrangig diesen Block, faellt auf beschriftete Wertepaare zurueck und leitet aus einer reinen XCCDF-Ergebniskennung im Titel einen lesbaren Benchmarknamen ab; die synthetische Fixture bildet diesen Aufbau nach. Ein Betriebssystemname entsteht weiterhin nicht, weil der Bericht keinen nennt. Purple-Knight-Profil 1.2.0 und CIS-CAT-Profil 1.4.0 sind als `compatible` mit `environment-context` und Reimportbedarf im Verarbeitungsmanifest registriert; Kompatibilitaetsschluessel, Feldabbildung und Normalisierung bleiben unveraendert. Client Info zeigt fuer den Dummy jetzt 49 Faktenzeilen ohne einen einzigen Gedankenstrich. 1.004 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Offen: Der lokale Backendprozess laeuft noch mit dem Stand vor dieser Aenderung, deshalb traegt die bestaetigungspflichtige Indicators-Datei weiterhin Profilversion 1.1.0 und der Purple-Knight-Scan bleibt als `Reimport recommended` markiert; nach einem Neustart des Backends genuegt ein erneuter Reimport dieses einen Scans. Werkzeugkontext ausserhalb der Findings 2026-09-08 (Phase 7/13C, ausdruecklicher Nutzerentscheid Variante b): Purple Knight und CIS-CAT liefern jetzt Umgebungskontext statt nur Befunde. Ein eigener Purple-Knight-Zusammenfassungsextractor liest die zweispaltige Kennzahlendatei als reine Umgebungsbeobachtungen ohne Findingkandidaten: Posture Score, sechs Kategoriewerte, Auswertungsbilanz (evaluated, IOEs found, passed, not selected, not relevant), Tooledition, Scandauer und Anforderer. Werkzeugneutrale Angaben werden auf die gemeinsamen Eigenschaften `forest.name`, `domain.count` und `report.generated_at` abgebildet, alles uebrige bleibt unter `purple_knight.*`. Zwei zusaetzliche Inhaltssignale fuehren die Datei als Purple-Knight-Quelle statt als generische Tabelle. Der CIS-CAT-Extractor 1.3.0 ergaenzt Systemangaben aus beschrifteten Wertepaaren (Host, Betriebssystem, IP, Profil, Zeitpunkt), Benchmarkname, Gesamtscore, die deklarierten Ergebniszahlen je Zustand sowie den Punktwert je oberster Benchmarkgliederung; die vollstaendige Abschnittsuebersicht bleibt als Berichtsabschnitt erhalten. Fehlt eine Beschriftung, entsteht keine Beobachtung statt eines geratenen Wertes. Client Info zeigt die neuen Werte in der zusaetzlichen Zone `Environment Detail` mit Verzeichnis, Bestand, Passwortrichtlinie, Zertifikaten/PKI, Wiederanlauf und beschrifteten Werkzeugkennzahlen; unbekannte Fakten bleiben `—`, lizenzbeschraenkte Abschnitte werden ausdruecklich als `Restricted` benannt und nie als Null gezaehlt. Die Security-Domain-Knoten tragen jetzt den vergleichbaren ASSESSOR-Domainscore, jede Quellkachel nennt zuerst diesen Score und die native Toolzahl nur beschriftet daneben. Die GPO-Anzahl stammt aus der Verarbeitungsliste der Sicherungen statt aus einer GUID-Schaetzung in Findingtexten. Keine Schema-, Migrations- oder Persistenzaenderung; bestehende Importe tragen die neuen Beobachtungen erst nach einem erneuten Import derselben Dateien. 1.003 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; Local-only-/Designpruefung mit 328 Tokens und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Ausschliesslich synthetische Inhaltspruefung; die Datenlage wurde am ausdruecklich freigegebenen Dummy nur strukturell erhoben. Offen bleibt die Textbereinigung der PingCastle-Zellattribute in der Quellextraktion, heute nur praesentativ abgefangen. Phase 7/13C bleiben in ihrem bisherigen Status. Security-Template-Parserkorrektur 2026-09-08 (Phase 13B): Parser 1.1.0 ueberspringt Metadaten und nicht unterstuetzte INF-Sektionen vor der Key/Value-Pruefung. CSV-artige Service-Eintraege lassen gueltige System-Access-, Kerberos-, Privilege-Rights- und Registry-Values-Instruktionen erhalten. Einzelne defekte unterstuetzte Eintraege degradieren das Dokument mit Diagnose auf `partial`; unsichere Abschnittsgrenzen und Ressourcenverletzungen bleiben blockiert. Baseline-Analyzer 1.2.0 und GPO-Processing/Analyzer 2.2.3 trennen Neuanalysen von unveraenderter Historie; alte Baseline-Analyserversionen bleiben lesbar. Analysegebundene ADMX-Katalog-IDs beheben den bei der Bestandsneuanalyse belegten PostgreSQL-Konflikt fuer unveraenderte Kataloginhalte. 990 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Custom-Format-Backup vor Live-Neuanalyse vollstaendig auf Archivlesbarkeit sowie die lokale Kopie per SHA-256 geprueft; kein Restore behauptet. Alle elf Baselinepakete neu analysiert: 5.031 statt 4.419 Einstellungen, darunter 1.039 statt 427 Security-Template- und 400 statt 146 Privilege-Rights-Eintraege. Alle elf alten Analysen bleiben erhalten, aktiv sind nur die elf Nachfolger. Dummy neu ausgewertet: konfigurierte Kundenwerte ergeben 113 Matches, 98 Abweichungen und 15 Reviews; 28 zuvor fehlende Privilege-Rights-Abweichungen kommen hinzu, 13 bisherige Abweichungen werden aufgrund der wiederhergestellten Baselinevarianten zu Review, zwei alte Reviews bleiben bestehen. Alle 15 Reviews enthalten den Baseline-Consensus-Konfliktcode. Zusaetzlich bestehen 3.575 Vergleiche mit fehlendem Kundenwert sowie 71 entsprechende Review-Faelle; diese sind keine konfigurierten Abweichungen. Die Erwartung 107 Abweichungen plus 2 Review wurde dadurch korrigiert. Unabhaengiger Abgleich gegen den Excel-Policy-Analyzer-Export des Dummy-Datensatzes bestaetigt die Korrektur: alle 109 dort sichtbaren Abweichungen sind je Baseline vollstaendig abgedeckt (Abweichung plus Review), zuvor waren es 83; Matches stimmen je Baseline ebenfalls ueberein. Vier zusaetzliche ASSESSOR-Abweichungen betreffen `SeEnableDelegationPrivilege` in 22H2, 23H2, 24H2 und 25H2, wo die Baseline das Recht ausdruecklich leer setzt; Policy Analyzer stellt diese explizit leere Empfehlung nicht von fehlender Abdeckung unterscheidbar dar. Der Vergleich erfolgte ausschliesslich auf dem Dummy-Datensatz. Betriebsnebeneffekt der automatischen Job-Reparatur siehe Risikoabschnitt; App, Backend und Proxy-Health HTTP 200. Phase 13B bleibt in Arbeit. GPO-Klassifikation in der Result DB 2026-09-07 (Phase 7/13B, ausdruecklicher Nutzerwunsch): Die Result DB behaelt Outcome als werkzeuguebergreifende Achse und ergaenzt die unabhaengige Facette `GPO Classification` mit Misconfigured, Not configured, Match, Conflict, Duplicate und Review required. Deterministische Kundenkonflikte und Dubletten werden aus den aktuellen Policy-Beobachtungen ueber dieselbe Gruppierungslogik wie Work als eigene reine Leseprojektionen erzeugt; beide bleiben `warning`, `Deviation: No` und veraendern weder Originale noch Evaluationen. Die Auswahl einer GPO-Klasse loest den standardmaessigen Deviation-Filter, damit nicht abweichungsartige Klassen erreichbar bleiben. Lokales und PostgreSQL-Repository verwenden denselben Domainvertrag; API-Query und Detailansicht fuehren die Klassifikation und bei Konsistenzgruppen die Quellenanzahl. Keine Migration, kein Reimport und keine Datenmutation. 976 Tests bestanden, 8 optionale PostgreSQL-Integrationstests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Ausschliesslich synthetische Inhaltspruefung; Phasenstatus unveraendert. Client-Info Domain-Findinganzahl 2026-09-07 (Phase 7, Nutzerpraezisierung): Security Domains zeigt als primaere Zahl ausschliesslich die Anzahl der Deviations mit der Beschriftung Findings. Passzahlen, prozentuale Domainscores und Prozentbalken entfallen aus den Domainzeilen; der bestehende Deviation-Drilldown bleibt erhalten. Die neutralen Domain-Icons stellen keinen aus der Anzahl abgeleiteten Schweregrad dar. Client-Info Deviation-Drilldown 2026-09-07 (Phase 7, Nutzerpraezisierung): Fachliche Spruenge aus Client Info nach Work aktivieren standardmaessig `Deviation`, einschliesslich Security Domains, Prioritaeten und Quellen. Die bisherige ausdrueckliche All-Auswahl bei Domain-/Finding-Klicks entfaellt. Assessment Gaps behaelt seine separate Statusauswahl. Domain-Scoreberechnung bleibt unveraendert; der Work-Drilldown zeigt nur Abweichungen innerhalb der zugeordneten Record-IDs. Synthetische Regression deckt Failed, Passed und Skipped innerhalb einer Domain plus fachfremdes Failed ab. Verifikation Domain-Drilldown 2026-09-07: 974 Tests bestanden, acht optionale PostgreSQL-Integrationstests uebersprungen; Client-/Serverbuild sowie Local-only- und Designpruefung erfolgreich. Ausschliesslich synthetische Inhaltspruefung; keine erneute Live-Dateninspektion. Client-Info Domain-Drilldown 2026-09-07 (Phase 7): Die praesentative Domainzuordnung beruecksichtigt Titel und fachliche Beschreibungs-/Kategoriewerte statt saemtlicher Feldnamen und Evidence-Inhalte. Gemeinsame Aggregatspalten wie User/Baseline fuehrten zuvor dazu, dass einzelne Domains praktisch alle Records enthielten. Work erhaelt weiterhin die exakten Record-IDs der angeklickten Domain; der Wechsel deaktiviert eine vorherige My-Workspace-Einschraenkung. Fuenf synthetische Regressionen pruefen vier getrennte Domains durch den produktiven Work-Filter sowie fehlende Domainzuordnung; 17 fokussierte Tests erfolgreich. Domain-Scores koennen durch die korrigierte Zuordnung abweichen; Overall-Score und Persistenz bleiben unveraendert. Client-Info Work-Kachelfarbe 2026-09-07 (Phase 7, ausdrueckliche Nutzerpraezisierung): Alle Client-Info-Kacheln beziehen Oberflaeche, Hover, Text und Trennlinien jetzt aus denselben Theme-Rollen wie die Work-Kacheln (`--tile-surface`, `--tile-surface-hover` und zugehoerige semantische Rollen). Die Command-Center-Komposition und ihre fachlichen Akzentfarben bleiben gekapselt erhalten; damit bleibt der Kontrast auch bei einem Themewechsel valide. Client-Info Standardhintergrund 2026-09-07 (Phase 7, ausdrueckliche Nutzerpraezisierung): Die aeussere Client-Info-Seite verwendet wieder den gemeinsamen Theme-Hintergrund `--surface-app`. Struktur, Inhalte, Bewertung und Navigation bleiben unveraendert. Die gekapselte Client-Info-Designregel wurde entsprechend praezisiert und durch die folgende Work-Kachelfarbentscheidung weiter konkretisiert. Client-Info Security Command Center 2026-09-07 (Phase 7/13C, ausdruecklicher Nutzerentscheid): Die geladene Client Info verwendet jetzt die verbindliche dunkle Referenzkomposition statt der bisherigen allgemeinen Kacheloptik. Die Ansicht zeigt eine kompakte Icon-Faktenzeile fuer AD-Domains, Entra-Tenants, Benutzer, Computer, Domain Controller und eindeutig aus Provenienz ermittelte GPOs; darunter stehen Overall Score und acht per SVG-Kurven verbundene Security Domains, eine separate Priority-/Gap-Aktionsspalte und die werkzeugspezifische Source Overview fuer PingCastle, Purple Knight, Maester, CIS-CAT und GPO Analysis. Alle Werte entstehen aus dem aktiven Timeslot, normalisierten Findings und der vorhandenen Environment-Snapshot-Grenze; unbekannte Fakten bleiben `—`. Der Overall Score bleibt der gleichgewichtete Mittelwert verfuegbarer ASSESSOR-Quellenscores, Coverage und Critical Findings bleiben getrennte Guardrails. Native Toolmetriken werden nur eindeutig beschriftet in der Source Overview gezeigt. Die neue `.client-command-center`-Regel ist die einzige Ausnahme von der allgemeinen Kachelkomposition und kann nicht in andere Ansichten auslaufen. Keine Parser-, Import-, API-, Persistenz- oder Schemaaenderung. 969 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung mit 328 Tokens und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Live-Sichtpruefung ausschliesslich am ausdruecklich freigegebenen Dummy bestaetigte Fakten, Ring, Verbindungskurven, Domains, Prioritaeten, Gaps und Source-Metriken. Phase 7/13C bleiben in ihrem bisherigen Status. Workspaceweite Source-Scan-Navigation 2026-09-07 (Phase 7, ausdrueckliche Nutzerpraezisierung): `Source: Scan` wird in jeder Fachansicht aus dem gemeinsamen projektweiten All-Records-Blatt aufgebaut und bietet deshalb auch aus der reinen GPO-Ansicht jederzeit alle geoeffneten Scannerlaeufe an. Die Optionen werden weder durch das aktive Blatt noch durch andere Filter reduziert. Die Auswahl eines Scans aus einem dedizierten Fachblatt wechselt auf das gemeinsame Aggregat und setzt dort im selben Bedienvorgang den stabilen Provenienzfilter; `All` bleibt die ungefilterte Auswahl. Der Facettenvertrag verwendet dafuer unabhaengig von der Quellspaltenposition die feste ID `provenance:source-scan`. Daten, Scannerzuordnung und Persistenz bleiben unveraendert. 33 fokussierte Filter-/GPO-Regressionen gruen; 971 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung sowie Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Ausschliesslich synthetische Inhaltspruefung, keine Realdateninspektion; Phasenstatus unveraendert. GPO-Filteranordnung 2026-09-07 (Phase 7, ausdruecklicher Nutzerwunsch): Die reine GPO-Ansicht zeigt ihre fachlichen Filter ohne kuenstlichen Zwischenraum von links nach rechts. Der Provenienzfilter `Source: Scan` ist in jeder Ansicht dauerhaft vorhanden und wird unabhaengig von Einwertigkeit oder GPO-Facettenlimit als letzter Filter ganz rechts angeordnet; fehlt eine gleichnamige Quellspalte, entsteht ein rein praesentativer Fallback aus der vorhandenen Scan-/Profilbezeichnung. Die GPO-Ansicht darf dafuer elf sichtbare Facetten fuehren, sodass Status, die neun GPO-Fachfacetten und `Source: Scan` gleichzeitig sichtbar bleiben. Filterwerte und Datensatzprojektion bleiben unveraendert. 32 fokussierte Filter-/GPO-Regressionen gruen; 970 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung sowie Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Ausschliesslich synthetische Inhaltspruefung, keine Realdateninspektion; Phasenstatus unveraendert. Kundenreduzierte GPO-Quellenanzeige 2026-09-07 (Phase 7/13B, ausdruecklicher Nutzerwunsch): Sichtbare GPO-Sources bestehen nur noch aus der GPO-internen Referenz ab `{GPO-GUID}/DomainSysvol/GPO/...` beziehungsweise ersatzweise ab dem eindeutig erkannten `DomainSysvol/GPO/...`-Segment. Lokale Laufwerks-, Ordner-, Backup- und Artefaktpraefixe werden niemals gerendert; ohne sicher erkennbaren internen Anker erscheint fail-closed `GPO source reference unavailable`. Normale GPO-Sources sowie Conflict-/Duplicate-Evidence verwenden denselben reinen Presenter. In Results stehen die Referenzen sofort unter Evidence als einzelne technische Pfadzeilen, ohne `Show source` und ohne wiederholte fette Backup-/GUID-Ueberschrift. Vollstaendige Provenienz bleibt unveraendert gespeichert; Backup-/Record-IDs bleiben nur in der bestehenden eingeklappten technischen Detailstufe. Vier Source-, elf Conflict- und neun Duplicate-Regressionen sowie 36 fokussierte Tests gruen; 967 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Ausschliesslich synthetische Inhaltspruefung, keine Realdateninspektion oder visuelle Live-Abnahme; Phasenstatus unveraendert. GPO-Duplicate-Lesepipeline 2026-09-07 (Phase 7/13B): Duplicate-Results verwenden jetzt dieselbe erklaerende Reihenfolge wie Conflicts: `Duplicate detected` (warum) -> `Setting details` (was betroffen ist) -> `Observed value` (identischer Wert/Typ und Evidence) -> eingeklappte technische Quelldetails. Der Hinweis stellt klar, dass ein Duplicate allein keine Baselineabweichung ist und beabsichtigt sein kann. Der gemeinsame Wert erscheint in einer responsiven Tabelle; alle Quellen sind direkt am Evidence-Feld aufklappbar, vollstaendige Pfade und interne IDs bleiben in der letzten Detailstufe. Exakte Leer-/Whitespacewerte, 2.300-Quellen-Skalierung, sichere Envelopevalidierung und Tabellenfallback bleiben erhalten. Duplicate- und Conflictprojektionen teilen die neutrale strukturierte Darstellung, Bewertung/Persistenz/Originaldaten bleiben unveraendert. Neun Duplicate- und elf Conflictregressionen, 36 fokussierte Resulttests gruen; 967 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Ausschliesslich synthetische Inhaltspruefung, keine Realdateninspektion oder visuelle Live-Abnahme; Phasenstatus unveraendert. GPO-Conflict-Lesepipeline 2026-09-07 (Phase 7/13B, ausdrueckliche Nutzerkorrektur): Die Conflicts-Ansicht folgt jetzt `Conflict detected` (warum) -> `Setting details` (was betroffen ist) -> `Observed variants` (was beobachtet wurde) -> eingeklappte technische Quelldetails. Die unmittelbar zuvor eingefuehrten einzelnen Variantenkarten sind durch eine gemeinsame Tabelle mit Variant, Value, Type und Evidence ersetzt. Quellen bleiben je Variante direkt aufklappbar; lange Werte umbrechen vollstaendig und nur die Tabelle erhaelt an schmalen Viewports eine eigene horizontale Rollflaeche. Keine Gewinner-/Praezedenzbehauptung, Normalisierung oder Datenmutation. Elf Konfliktregressionen und 34 fokussierte Resulttests gruen; 965 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Ausschliesslich synthetische Inhaltspruefung, keine Realdateninspektion oder visuelle Live-Abnahme; Phasenstatus unveraendert. GPO-Conflict-Results-Erklaeransicht 2026-09-07 (Phase 7/13B): Die bisherige doppelte generische Tabellenansicht fuer GPO-Konflikte ist durch eine strukturierte, neutrale Variantenansicht ersetzt. Ein Warnhinweis erklaert Konflikt und unbekannte Wirksamkeit, Variantenkarten stellen exakte Werte, lesbare Registrytypen und zugeordnete Quellen gegenueber; leere und reine Whitespace-Werte werden ausdruecklich bezeichnet. Settingkontext folgt separat, interne Backup-/Record-IDs bleiben vollstaendig unter eingeklappten technischen Details erhalten. Die Darstellung entsteht erst nach vollstaendiger Validierung des begrenzten Evidence-Envelopes; ungueltige/alte Projektionen fallen auf die bestehende inerte Tabellenansicht zurueck. Duplicate-Results, Vergleich, Persistenz und Originaldaten bleiben unveraendert. Zehn Konfliktregressionen und 33 fokussierte Resulttests gruen; 964 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Ausschliesslich synthetische Inhaltspruefung, keine Realdateninspektion oder visuelle Live-Abnahme; Phasenstatus unveraendert. GPO-Kachelbadges 2026-09-06 (Phase 7): TileCard verwendet jetzt dieselbe GPO-Kategorieableitung wie der FindingReader und ergaenzt Scope. Gilt auch fuer gemischte Workspaces; doppelte Kategorien/Scopes werden vermieden, andere Scanner bleiben unveraendert. Bestehende Badge-Matrix und unbegrenzte normale Kacheldarstellung werden weiterverwendet. Vier neue synthetische Regressionen; 962 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Keine Daten-/Bewertungsaenderung, kein Reimport, keine Realdateninspektion oder visuelle Live-Abnahme; Phasenstatus unveraendert. GPO-Duplicate-Results 2026-09-06 (Phase 7): Duplicates nutzen analog zu Conflicts den bestehenden Results-Button und dieselbe skalierbare Tabellenansicht. Eine Tabelle zeigt den gemeinsamen Originalwert, Typ und Quellenanzahl; eine zweite jede Quelle mit Source path, Backup und Record. Einstellung, Scope, Registry-Pfad und Value name stehen im Kontext. Keine Konflikt-/Gewinnermarkierung bei gleichen Werten. Der Reader zeigt eine kurze Duplicate-Zusammenfassung statt wiederholter Werte/Sources. Gemeinsame begrenzte, inerte Leseprojektion mit eindeutig getrennten Envelopes und Whitespace-Erhaltung; bei unvollstaendiger/mehrdeutiger Evidenz bleibt die bisherige Darstellung erhalten. Bewertung, Persistenz und Originaldaten unveraendert; kein Reimport erforderlich, bestehende Workspaces neu oeffnen. Sieben neue synthetische Regressionen inklusive 2.300 Quellen, Buttonaktivierung, Escaping, Fallback und unveraenderten Konflikten. 958 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Keine Realdateninspektion oder visuelle Live-Abnahme; Phasenstatus unveraendert. Tooluebergreifende AI search und GPO-Badges 2026-09-06 (Phase 7): FindingReader bietet die geschuetzte Google-AI-Suche fuer alle Scan-Tools und gemischte Workspaces an. Quellenbelegter lokaler Public-Identifier-Snapshot (67 Registryziele, 45 Rechte, 19 ASR-, 161 Maester- und 51 PingCastle-Kennungen) plus native System-Access-Einstellungen und feste Fachbegriffe liefern konkrete Identitaet, Konfigurationsort/Referenz, sicheren Benchmarkkontext und begrenzte numerische/boolesche Sollziele. Keine freie Weitergabe von Berichtstexten, Kundenwerten, Namen, Identitaeten oder Quellpfaden. Fehlende Katalogtreffer bleiben ausdruecklich Topic-Suche; keine Vollstaendigkeits-, Wirksamkeits- oder Datenschutzpauschalzusage. Vorhandene GPO-Sektionen erzeugen zusaetzliche System-Access-/Privilege-Rights-/Registry-Values- und Detailbadges; Registry/Software/System sind strukturelle Fallbacks hinter konkreten Produktfamilien. Keine Bewertungs-/Persistenzaenderung oder Reimporte. Sicherheitsmodell und Public-AI-Search-Vertrag mit Quellenpflege/Grenzen ergaenzt; historische Entscheidungen bleiben erhalten. 951 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Nur synthetische Inhaltspruefungen, keine Kundendateninspektion oder Google-Abfrage mit Findingdaten. Phasenstatus unveraendert. GPO-Kachelumbruch 2026-09-06 (Phase 7): Lange Registry- und Policy-Pfade in GPO-Work-Kacheln umbrechen innerhalb der verfuegbaren Titelspalte und koennen dadurch weder die Bookmark-Aktion noch benachbarte Kacheln ueberdecken. Die Regel ist ueber die bestehende Toolidentitaet gezielt auf `group-policy` begrenzt; normale Findingtitel behalten ihren wortbasierten Umbruch. 42 fokussierte synthetische Tests, Designpruefung und Client-Produktionsbuild erfolgreich. Keine Daten-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Pfaddarstellung 2026-09-06 (Phase 7): Gemeinsame inerte PathText-Darstellung fuer Finding-/Reporttexte, GPO-Werte/Sources/Remediation und Results-Tabellen samt Kontext. Pfade erhalten einen dezenten Rahmen mit themegebundener Inset-Flaeche, vollstaendigem Umbruch und lokaler System-Monospace-Schrift. Ausdrueckliche Nutzerkorrektur zur bisherigen reinen Inter-Vorgabe: nur Pfade nutzen --font-path, Labels und sonstige Inhalte bleiben Inter; AGENTS.md entsprechend praezisiert. Keine Links, Dateizugriffe, Fontdownloads oder Aenderungen an Originalwerten/Vergleichen. Zwoelf synthetische Regressionen pruefen Pfadtypen, Labels, Escaping, Suchmarkierung, lange Pfade und Stilkontrakt. 923 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung sowie Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Keine Realdateninspektion oder visuelle Live-Abnahme; Phasenstatus unveraendert. GPO-Conflict-Results 2026-09-06 (Phase 7): Kundenkonflikte mit mehreren belegten Wertvarianten nutzen den vorhandenen Results-Button samt verschiebbarem/skalierbarem Ergebnisfenster und gemeinsamer Tabelle. Gleiche typisierte Werte werden zu Varianten gruppiert, unterschiedliche Value-/Type-Spalten mit dem gemeinsamen Warning-Akzent markiert; keine Variante wird als Gewinner oder Baseline-Sollwert behauptet. Gemeinsame Einstellung/Scope/Pfad stehen einmal im Results-Kontext, eine zweite Tabelle bindet jede Source an Variante, Originalpfad, Backup und Record. Der Reader zeigt eine kurze Konfliktzusammenfassung statt wiederholter Kundenwerte/Sources; ohne gueltige strukturierte Details bleibt die bisherige Evidenzdarstellung erhalten. Inerte, begrenzte JSON-Leseprojektion mit Whitespace-Erhaltung, keine Migration/Neubewertung oder Originaldatenmutation. Acht synthetische Regressionen inklusive Typkonflikten, HTML-Inertheit, aktivem Results-Button, Fallback und 2.300 Quellen; 911 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Keine Realdateninspektion oder visuelle Live-Abnahme; Phasenstatus unveraendert. GPO-Misconfiguration-Fokus 2026-09-06 (Phase 7/13B, ausdrueckliche Nutzerkorrektur): Deviation enthaelt fuer GPOs nur gesetzte Kundenwerte mit expliziter vorhandener Baseline und deterministischer Abweichung. Fehlende Einstellungen werden als Not configured/informational separat angezeigt, nicht als Fail/Deviation; Conflicts und Duplicates bleiben eigene Filter ohne Deviation-Zaehlung. Der neue reine Lesekontrakt gilt fuer Work, Dashboardfilter, Result-DB-Vergleichsprojektion und bereits materialisierte Factory-Ergebnisse (Rueckbindung an deren gespeicherten Vergleich, ohne fehlende Evidenz Fail zu behaupten). Gemischte Scanner/GPO-Profile behalten die separaten Filter; Scanner-Semantik unveraendert. GPO Analysis trennt Misconfigured/Not configured und zaehlt betroffene Settings sowie GPO-Backupinstanzen dedupliziert; alte Historienzaehler sind ausdruecklich als gespeicherte Mismatches einschliesslich fehlender Werte bezeichnet. Work-Projektion 1.2.0, Result-DB-Praesentation 1.1.0; keine Migration, Reimporte oder Mutation gespeicherter Evaluationen/Originale. Ersetzt die bisherige fehlende-Werte-als-Fail-Entscheidung; Vergleichs-/Resultvertrag angepasst. 903 Tests bestanden, 8 optionale PostgreSQL-Integrationstests uebersprungen, Local-only-/Designpruefung sowie Client-/Serverbuild erfolgreich. Laufendes Entwicklungsbackend per inhaltsfreiem Health-/Buildhash-Abgleich aktuell; keine Kundendateninspektion oder Live-Inhaltsabnahme. Phasenstatus unveraendert. AI-Suchkontext 2026-09-06 (Phase 7): Auf Nutzerwunsch ergaenzt der Suchlink Scope, exakt freigegebene Baselinebezeichnungen und feste Vergleichsszenarien. Bekannte Audit-Abhilfe fuer System Integrity/Logoff wird aus eindeutigen booleschen Sollflags, Expected/Must include und passendem Titel/Scope aufgebaut; keine freie Textweitergabe. Description-Platzhalter und unverifizierte importierte Beschreibungen/Abhilfetexte bleiben ausgeschlossen. Sicherheitsmodell dokumentiert die eng begrenzte Freigabe und verbleibende Google-IP-/Kontodatenverarbeitung ohne DSGVO-Pauschalzusage. Sechs neue synthetische Datenschutz-/Kontexttests; 898 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich (bestehender Bundle-Hinweis). Keine Kundendateninspektion, Suchausfuehrung mit Findingdaten oder Datenmutation. Phasenstatus unveraendert. AppLocker-Wertdarstellung 2026-09-06 (Phase 7): AppLocker-XML erscheint als lesbare Regelfelder statt Roh-XML/Codeblock in Kundenwert, Baselinewert, abgeleiteter Remediation und Sources. Bedingungen, Ausnahmen, Versionsgrenzen, IDs und unbekannte Erweiterungen bleiben erhalten. Begrenzter SAX-Formatter in der Praesentationsschicht; fehlerhafte/unsupported Werte bleiben escapeter Originaltext ohne aktive Links oder HTML. Vergleich, Persistenz und Originaldaten unveraendert. Sieben neue synthetische Regressionen, bestehende Reader-Pruefung angepasst; 892 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Bestehender Bundle-Groessenhinweis; keine Realdateninspektion oder visuelle Live-Abnahme. Phasenstatus unveraendert. Remediation-Hervorhebung 2026-09-06 (Phase 7): Remediation-Abschnitte im FindingReader sind auf Nutzerwunsch mit derselben dezenten Gruenflaeche und Akzentlinie wie Expected baseline value hinterlegt. Gemeinsamer Success-Token fuer beide Themes; Beschreibung, Sources, Inhalte und Bewertung bleiben unveraendert. Synthetische Renderingregression; 885 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Keine Datenmutation; Phasenstatus unveraendert. Praezise Google-AI-Suche 2026-09-06 (Phase 7): Der bisherige Web-search-Button heisst AI search und verwendet einen Google-AI-Mode-Deep-Link. Die oeffentliche Begriffsliste erkennt jetzt zwoelf konkrete Firewall-Einstellungen und deren Domain-/Private-/Public-Profil sowie feste Microsoft-Produktversionen; doppelte Oberbegriffe wie Windows Windows Firewall entfallen. Der Prompt fragt nach Sicherheitszweck, Konfigurationsort und versionsabhaengiger Microsoft-Baselineempfehlung mit offiziellen Quellen. Keine rohe Titel-/Pfad-/Wertweitergabe; unbekannte Einstellungsnamen bleiben bei einem allgemeinen Thema. Referrer-/Opener-Schutz und expliziter Klick bleiben unveraendert, Sicherheitsmodell fortgeschrieben. Google-Dokumentation bestaetigt den allgemein verfuegbaren AI Mode, waehrend Zusatzfunktionen/Limits/Kontoverfuegbarkeit anbieterabhaengig sind; keine Garantie fuer externe Antworten. 884 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Nur synthetische Datenschutz-/URL-/UI-Tests; ein oeffentlicher Deep-Link-Abruf war ueber das Recherchewerkzeug nicht verfuegbar, keine Live-Abnahme im Google-Konto. Keine Kundendaten oder Bewertungsaenderungen; Phasenstatus unveraendert. GPO-Sources-Darstellung 2026-09-06 (Phase 7): Sources wird aus den vorhandenen strukturierten Beobachtungen als getrennte, nummerierte Quellbloecke mit Source path, Scope, Registry path, Value name, Value, lesbarem Registrytyp und Operation projiziert. Backup-/Recordreferenzen und optionale Targets/Secure-Angaben bleiben erhalten; keine kompakte JSON-Kette fuer Registrywerte. Native Policywerte werden lesbar formatiert. Der Reader rendert Sources als escapeten Text mit Zeilenumbruechen und Pfadumbruch, nicht als HTML oder externe Links. Originaldaten und Vergleich bleiben unveraendert. Vier synthetische Regressionen einschliesslich Nullwert, mehreren/2.300 Quellen, Auditflags und inerten Pfaden; 880 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Keine Realdateninspektion; Phasenstatus unveraendert. GPO-Beschreibung, Abhilfe und sichere Websuche 2026-09-06 (Phase 7/13B): Work laedt zu den ausgewaehlten Evaluationen einmal je referenzierter Baseline die vorhandenen Analysen ueber die bestehende API. Originale ADML-Erklaertexte werden ausschliesslich ueber die exakte Analysis-/Baseline-/Catalog-/Policy-/Sprachdateizuordnung aufgeloest (Englisch bevorzugt); fehlende oder widerspruechliche Texte werden nicht erfunden. Description source bleibt unter Additional Information. Remediation wird als Einstellungsziel und vorhandener Baseline-Sollwert mit Vergleichsoperator abgeleitet, nicht als behauptete Microsoft-Schrittanleitung; keine Abhilfe gegen leere oder widerspruechliche Vorgaben. Reine Leseprojektion fuer vorhandene Evaluationen, keine Reimporte, Neuauswertungen, Persistenz- oder Schemaaenderungen. Dokumentationsfehler blockieren Work nicht. Der Button Web search oeffnet erst bei Klick eine Google-Suche auf Microsoft Learn; Queries bestehen ausschliesslich aus fest freigegebenen oeffentlichen Begriffen (bekannte Einstellungen oder allgemeines Fachthema), niemals aus importierten Titeln, Kundendaten, Pfaden oder Werten. Referrer/Opener sind gesperrt, Beschreibung und Abhilfe bleiben inerte Textdarstellung. Die explizit freigegebene externe Navigation samt Grenzen ist im GPO-Bedrohungsmodell dokumentiert; Sentinal diente nur als UI-Referenz, dessen direkte Titelweitergabe wurde nicht uebernommen. 876 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Ausschliesslich synthetische Tests, keine Realdateninspektion und kein Test-Suchaufruf. Phase 7 bleibt abgeschlossen, Phase 13B in Arbeit. Pass-Farbe 2026-09-06 (Phase 7, ausdrueckliche Nutzerkorrektur): Der gemeinsame Outcome-Token fuer Pass/Passed ist in beiden Themes gruen statt grau. Dies ersetzt die bisherige bewusste Gruen-Ausnahme fuer bestandene Ergebnisse; Severityfarben und fachliche Statusnormalisierung bleiben unveraendert. Liste, FindingReader und andere gemeinsame Outcome-Anzeigen nutzen denselben Token. Synthetische Regression prueft mindestens 4,5:1 Textkontrast auf Panel-, erhoehten, aktiven und ausgewaehlten Listenflaechen beider Themes. 866 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Keine Datenmutation, keine Live-Inhaltsinspektion; Phasenstatus unveraendert. GPO-Scope-Badge 2026-09-06 (Phase 7): Der vorhandene Scope erscheint zusaetzlich als kompaktes Badge im FindingReader; das Scope-Feld in der Reportansicht bleibt unveraendert erhalten. Fehlende/leere Werte erzeugen kein Badge. Drei synthetische Regressionen fuer computer, user und fehlenden Scope; 864 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen, Local-only-/Designpruefung und Client-/Serverbuild erfolgreich. Keine Daten- oder Bewertungsaenderung; Phasenstatus unveraendert. GPO-Kategorie-Badges 2026-09-06 (Phase 7): Der FindingReader zeigt neben GPOs kurze abgeleitete Produkt-/Bereichsbadges: Windows, Office, Edge sowie Audit, Defender, Firewall, BitLocker, LAPS oder allgemein Security. Die reine Praesentationszuordnung verwendet Baselinebezeichnung, expliziten Registry-Pfad und Policytyp/-sektion; unbekannte Einstellungen erhalten keine erratene Spezialkategorie. Baseline-only-Auditvergleiche bleiben auch ohne Kundenwert als Audit erkennbar. Produktbadges beschreiben den Benchmark, nicht die nachgewiesene Zielanwendbarkeit; die Bereichstaxonomie ist eine ASSESSOR-Anzeige, keine neue Microsoft-Bewertung. Keine Aenderung an Outcomes, Persistenz, API oder Quelldaten. 861 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Client-/Serverbuild erfolgreich (bestehender Bundle-Groessenhinweis). Nur synthetische Tests; keine Realdateninspektion oder visuelle Live-Abnahme. Phase 7 bleibt abgeschlossen. GPO-Finding-Ueberschrift 2026-09-06 (Phase 7, Produktversion 2.5.4): Der normalisierte `Value Name` einer GPO-Registry-Einstellung bildet jetzt die Ueberschrift des Finding-Abschnitts. Derselbe Wert wird im Block `Configured customer value` nicht wiederholt; konfigurierte und erwartete Werte bleiben direkt vergleichbar. Persistierte Quellwerte und Vergleichslogik bleiben unveraendert. 843 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Client-/Serverbuild erfolgreich. Ausschliesslich synthetische Tests, keine Daten-, API-, Persistenz- oder Schemaaenderung. Phase 7 bleibt abgeschlossen. GPO-Analyse-UX-Korrektur 2026-09-06 (Phase 7/13B, Produktversion 2.5.3): Der nicht abgestimmte Sammelstatus `Limited analysis` ist wieder entfernt. Ein technisch partiell abgeschlossener GPO-Import wird im Timeslot als `Imported` und im Importdetail als `Imported with review items` ausgewiesen; ohne konkrete Nutzeraktion bleibt der Client bereit und erhaelt kein automatisches Manage. Die Standardansicht der GPO Analysis zeigt jetzt ausschliesslich Importumfang, Baselineergebnisse und konkret benannte Importprobleme; Abweichungen werden als einzelne Einstellungsvergleiche erklaert. Workflow, Historie, Review-Codes und Processing-Aktionen bleiben fuer Diagnosezwecke unter `Technical details` beziehungsweise `Processing controls` aufklappbar. Im Work-Finding stehen der konfigurierte Kundenwert und der erwartete Baselinewert direkt untereinander, werden fuer lesbare Anzeige formatiert und bei Abweichungen rot/gruen markiert; persistierte Quellwerte bleiben unveraendert. 843 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Client-/Serverbuild erfolgreich. Ausschliesslich synthetische Tests, keine Daten-, API-, Persistenz- oder Schemaaenderung. Phase 7 bleibt abgeschlossen, Phase 13B in Arbeit. Diese Nutzerkorrektur ersetzt die unmittelbar vorherige Statusentscheidung fuer `Limited analysis`. GPO-only-Timeslot-Scope 2026-09-06 (Phase 7/13B): Alle Clientansichten erkennen einen ausgewaehlten Timeslot nun zentral sowohl ueber Scanner-Run-IDs als auch ueber Assessment-IDs. Damit funktionieren reine GPO-Timeslots in Client Info, Work, Result DB und Pathfinder, ohne faelschlich `No timeslot selected` anzuzeigen oder einen Scannerlauf aus einem anderen Stand einzumischen; Datahub und DB Structure bleiben wie bisher unabhaengig vom geladenen Scannertyp. Result-DB-Laden und -Export verwenden denselben projekt- und assessmentgebundenen Scope. 25 fokussierte synthetische Tests, Designpruefung und Client-Produktionsbuild erfolgreich. Keine Daten-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen und Phase 13B in Arbeit. Status und Aenderungsprotokoll 2026-09-06 (Phase 7, Produktversion 2.5.2): `Partial import` beziehungsweise `Partially processed` heisst jetzt `Limited analysis`. Abgeschlossene eingeschraenkte Analysen und laufende GPO-Jobs sind eigene gelbe Informationszustaende; sie loesen weder automatisches Manage noch eine automatische Expansion als Handlungsaufforderung aus. Fehler/Recovery und notwendige Scanner-Reimporte behalten Vorrang und automatisches Manage; die manuelle Verwaltung ausgewaehlter Clients bleibt verfuegbar. Diese Nutzerkorrektur ersetzt die bisherige Gleichsetzung aller nicht erfolgreichen GPO-Zustaende mit Handlungsbedarf. Analysegrenzen bleiben sichtbar und werden nicht als vollstaendige Auswertung bezeichnet. 839 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Client-/Serverbuild erfolgreich. Ausschliesslich synthetische Tests; keine fachliche Pipeline-, Daten- oder Schemaaenderung. Phase 7 bleibt abgeschlossen, Phase 13B in Arbeit. UI-Sprache 2026-09-06 (Phase 7, verbindliche Produktvorgabe): Saemtliche nutzerseitig sichtbaren Texte in ASSESSOR werden auf Englisch formuliert. Das gilt insbesondere fuer Navigation, Titel, Labels, Buttons, Status-, Lade-, Leer-, Fehler-, Bestaetigungs- und Dialogtexte sowie neu hinzukommende Funktionen. Deutsche Texte duerfen nur in interner Dokumentation, Kommentaren oder ausdruecklich angeforderten Exportinhalten vorkommen. Der verbliebene Ladehinweis der Data-Hub-Historie lautet nun `Loading clients …`. Keine Daten-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Panel-Ladezustand 2026-09-06 (Phase 7): Inhaltsbereiche mit initialem, asynchronem Laden verwenden nun einen gemeinsamen, markenfreien Ladezustand: Der jeweils konkrete Ladetext steht mit der aus den Processing-Pop-ups bekannten quadratischen Ladeanimation unmittelbar daneben mittig im verfuegbaren Panelbereich. Client Info, DB Structure, Result DB, Data-Hub-Historie, Timeslot-Liste und Policy Analysis sind angebunden; kleinere eingebettete Bereiche verwenden dieselbe Darstellung kompakter. Fehler-, Leer- und laufende Operationsdialoge bleiben fachlich getrennt. 835 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Client-Produktionsbuild erfolgreich. Keine Daten-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. GPO-Importkorrektur 2026-09-06 (Phase 13B): Byte-identische Policydateien an unterschiedlichen Pfaden erhalten nun unterschiedliche, weiterhin deterministische Observation-IDs, weil der exakte Quellartefaktbezug Bestandteil der ID ist. Damit wird ein gueltiges Kundenbackup nicht mehr als `duplicate-observation` atomar abgelehnt. Der automatische Pfad verlangt bei einem reinen GPO-Backup keinen zusaetzlichen Betriebssystemkontext mehr, sondern wertet alle importierten, als `eligible` klassifizierten Microsoft-Baselines als getrennte Benchmarks aus; erkannte DC-Kontexte bleiben als Evidenz erhalten. Ein gemeinsam hochgeladener `selected-gpos`-Satz bleibt auch bei fehlenden oder gemischten Domainmetadaten ein einzelner, bewusst partieller Snapshot statt in nicht auswertbare Einzelsnapshots zu zerfallen. Parser-/Analyzervertrag 2.2.2, Snapshotaggregation 1.1.0 und Produktversion 2.5.1 markieren die kompatible Fehlerkorrektur. Synthetische Regressionen fuer zwei identische Security-Template-Dateien an verschiedenen Pfaden, kontextfreien Auto-Vergleich, Baseline-Auswahl, gemischte Uploadmetadaten und den 2.300-GPO-Lastfall sind gruen. Inhaltsfreie technische Kontrolle am betroffenen Import: Status-API HTTP 200, kein fehlgeschlagener Job, 184 erkannte GPOs sowie 3.638 Work-Ergebnisse mit 162 Uebereinstimmungen und 3.358 Abweichungen; Quellinhalte wurden weder ausgegeben noch manuell inspiziert. Gesamtlauf: 835 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Keine SQL-Migration; Phase 13B bleibt in Arbeit. GPO-Statuspraezisierung 2026-09-06 (Phase 7/13B): Ein vollstaendig erfolgreich verarbeiteter GPO-Backup-Eintrag zeigt im Timeslot `Ready` statt des rein uploadbezogenen `Imported`. Queued, Processing, Partial import, Failed und Recovery pending bleiben unveraendert, damit technische Zwischen-, Teil- und Fehlerzustaende weiterhin sichtbar sind. Zehn fokussierte synthetische Tests und Client-Produktionsbuild erfolgreich; keine Daten-, API-, Persistenz- oder Schemaaenderung. Branding-Korrektur 2026-09-06 (Phase 7): Die ASSESSOR-Marke verwendet in Sidebar, leerem Arbeitsbereich, Favicon und About-Dialog ein gemeinsames PNG mit echter Transparenz; weisser Hintergrund, weisses A-Innenfeld und weisser Haken sind entfernt, nur die rote Marke bleibt. Der klickbare Brand-Trigger behaelt Position und zugaengliche About-Beschriftung, zeigt beim Hover jedoch keine Buttonflaeche. Der bestehende About-Dialog stellt die Marke mit 160 px dominant ueber den Produkt- und Processingdaten dar. Fuenf fokussierte Tests und Client-/Serverbuild erfolgreich; keine Daten-, API-, Persistenz- oder Schemaaenderung, Phase 7 bleibt abgeschlossen. Review-Persistenz und Vergleichsplanung 2026-09-06 (Phase 8/9/10): Die FindingReader-Felder Bookmark, Status, Prioritaet, Owner/Team, Due Date, Prerequisites, Required Access/Roles, Next Step, Evidence/Acceptance Criteria, Comment und alle fuenf Marker sind ueber die bestehende Same-Origin-Review-API an das kanonische Finding-Vorkommen gebunden und werden in der ASSESSOR-Datenbank gespeichert. Aggregate und Werkzeugblatt teilen dadurch denselben Reviewstand; vorhandene Browserwerte bleiben als Rueckfallkopie erhalten und werden bei noch fehlendem Datenbankreview uebernommen. Additive JSONB-Vertragserweiterung, keine SQL-Migration und keine Realdateninspektion. Das unten in Phase 8 ausformulierte Quellen-Fortschreibungsmodell ist als spaeteres Arbeitspaket beschlossen, aber noch nicht implementiert. GPO-Loeschkorrektur 2026-09-06 (Phase 7/13B): Jeder beendete GPO-Eintrag im Timeslot besitzt neben Evaluate beziehungsweise Retry eine eigene Delete-Aktion mit Warnungsdialog. Die bestaetigte projekt-/artefaktgebundene Mutation entfernt das ausgewaehlte GPO-Original, Processing-/Identity-Historie und alle davon abhaengigen Snapshot-, Evaluation- und Finding-Derivate; Timeslot, Environment Profile, Scannerimporte und andere GPO-Eintraege bleiben erhalten. Queue-/Running-Zustaende sind gegen paralleles Loeschen gesperrt. 829 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Ausschliesslich synthetische Loeschtests; der GPO-Pfad benoetigt keine neue Migration und hat keine kanonischen Fachdaten mutiert. Beim anschliessenden Neustart wurde die bereits im Workspace anstehende Migration 020 nach Korrektur einer kollidierenden automatisch vergebenen Constraint-Bezeichnung auf dem kanonischen 2.0-Bestand angewandt; App und PostgreSQL-Backend melden HTTP 200. Phase 7 bleibt abgeschlossen und Phase 13B in Arbeit. UI-Textstandard 2026-09-06 (Phase 7, verbindlicher Nutzerwunsch): Funktionen mit kurzen, praegnanten Namen benennen, moeglichst ein Wort oder eine kurze Aktion. Name und Bedienelemente genuegen; keine ungefragten Erklaerabschnitte oder begleitenden Funktionsbeschreibungen. Gilt auch fuer GPO Analysis. Zusaetzliche Erlaeuterungen nur auf Nutzerwunsch; notwendige Fehler-/Sicherheitsmeldungen knapp und konkret halten. Der Timeslot-Importbereich heisst jetzt "Add Entry" ohne Beschreibung. Ersetzt die vorherige Entscheidung fuer den langen Hinzufuegen-/Erhaltungshinweis; keine Funktionsaenderung. UI-Korrektur 2026-09-06 (Phase 7): Timeslot-Gridzeilen behalten ihre Inhaltshoehe statt lange Details am unteren Rand abzuschneiden. Die Quellenliste ist auf maximal 40vh/384px begrenzt und separat scrollbar; Importaktionen liegen ausserhalb und sind bei jedem aufgeklappten Slot unabhaengig von der Checkbox verfuegbar. 809 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Client-/Serverbuild, Local-only und Designpruefung erfolgreich. Keine Datenmutation oder visuelle Browserabnahme; Phasenstatus unveraendert. UI-Praezisierung 2026-09-06 (Phase 7): Eintragsaktionen bleiben auch in schmalen Timeslot-Listen rechts neben dem zugehoerigen Scan/GPO-Eintrag. Importaktionen sind als "Add entry to this timeslot" mit Erhaltungshinweis gekennzeichnet; "Entire timeslot / Delete timeslot" steht separat darunter. Der bestehende Importpfad fuegt ohne replacesScanRunId einen neuen Scan hinzu; keine Persistenzaenderung. 808 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Client-/Serverbuild, Local-only und Designpruefung erfolgreich. Keine visuelle Browserabnahme; Phasenstatus unveraendert. Praezisierung 2026-09-06 (Phase 7, Nutzerkorrektur zur Open-Freigabe): Open bleibt auf Client-Kachel und einzelnem Time-Slot deaktiviert, bis gespeicherte Scanner-Findings oder Policy-Observations fuer den Assessment-Scope nachgewiesen sind. Upload-/Jobstatus allein reicht nicht. Die vorhandene Facetten-API liefert die Ergebniszaehler; ungeklaerte/fehlgeschlagene Abfragen sperren Open. Manage/View behalten ihre Diagnosefunktion. 807 Standardtests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only/Design erfolgreich. Keine neue API oder Datenmutation; Phase 7 bleibt abgeschlossen. Diese Freigaberegel ersetzt die vorherige Oeffnung leerer GPO-Workspaces. Korrektur 2026-09-06 (Phase 7 / 13B, ersetzt die vorherige GPO-Open-Sonderroute): Auf ausdruecklichen Nutzerwunsch oeffnet Open den Client in Client Info; ausschliesslich View fuehrt zur GPO-Analyse. GPO-only-Kacheln sind oeffenbar, der gewaehlte Assessment-Scope wird durch Workspace-Laden und Auffrischen weitergereicht und gegen automatische Scanner-Timeslot-Auswahl geschuetzt. Ohne Ergebnisse erscheint ein Client-Hinweis, alte Clientdaten werden beim Wechsel entfernt. Gemeinsame Hover-Regel fuer normale Quellenzeilenbuttons umfasst jetzt auch View in beiden Themes. Client-/Serverbuild, 14 fokussierte Tests sowie Local-only/Design erfolgreich. Gesamtlauf zuletzt 804 bestanden, 8 uebersprungen, ein anschliessend korrigierter synthetischer Test ohne Assessment-Zuordnung; betroffene Suite im fokussierten Nachlauf gruen. Fruehere Client-Open-Quelltextpruefung an neue Signatur und Whitespace angepasst. Keine Persistenz-/Backend-Aenderung oder visuelle Realdatenabnahme; Phasenstatus unveraendert. Nachpruefung 2026-09-06 (Phase 7 / GPO-Oberflaeche Phase 13B): Client-Verarbeitungsstatus umfasst jetzt Scanner und GPOs ueber alle Timeslots. Dead-letter und Recovery markieren den Client rot mit auswahlunabhaengigem Manage; ausstehende oder partielle GPO-Verarbeitung bleibt gelb, vollstaendig erfolgreiche gruen. GPO-Status wird alle fuenf Sekunden nachgeladen; Manage expandiert auch betroffene GPO-Timeslots. 13 fokussierte synthetische Tests inklusive unselektierter Fehlerkachel, Client-/Serverbuild sowie Local-only-/Designpruefung erfolgreich. Bekannter unabhaengiger Client-Open-Quelltexttest weiterhin rot. Keine Datenmutation oder visuelle Realdatenpruefung; Phasenstatus unveraendert. Nachpruefung 2026-09-06 (Phase 7): Retry in der GPO-Time-Slot-Zeile behaelt beim Hover die eigene Buttonflaeche und nutzt den gemeinsamen staerkeren Rand, damit es nicht mit dem Zeilenhover verschmilzt. Destruktiver Delete-Hover bleibt unveraendert. Client-/Serverbuild, Local-only und Designpruefung erfolgreich; der bekannte unabhaengige Client-Open-Quelltexttest bleibt rot. Rein lesende technische Jobpruefung: Ein GPO-Job steht nach 3/3 Versuchen wegen `gpo-metadata-size-limit` auf dead-letter; der Parser begrenzt einzelne Metadaten-XML-Dateien auf 2 MiB. Das Importlimit wurde nicht geaendert, kein Retry ausgeloest. Phase 7 bleibt abgeschlossen; keine visuelle Browserabnahme. Nachpruefung 2026-09-06 (Phase 7 / GPO-Oberflaeche Phase 13B): Schmale Time-Slot-Quellenlisten wechseln unter 620 px Containerbreite auf mehrzeilige Eintraege; Quellenzellen koennen schrumpfen und lange Dateinamen umbrechen. Open fuehrt bei einem einzelnen GPO-Time-Slot ohne anzeigbaren Scanner zur bestehenden projektweiten GPO-Analyse, auch waehrend der Verarbeitung. Mehrfachauswahl bleibt auf vergleichbare Scanner begrenzt. Vier fokussierte Tests und Client-/Serverbuild erfolgreich; Gesamtlauf: 798 bestanden, 8 uebersprungen, ein unabhaengiger Fehler im whitespace-abhaengigen Client-Open-Quelltexttest. Kein Nachweis fuer einen erfolgreich verarbeiteten realen GPO-Job und keine visuelle Browserabnahme; Phasenstatus unveraendert. Bestehende Datenbankkonfiguration bleibt unberuehrt. Erstellt: 2026-07-17 Zuletzt aktualisiert: 2026-08-25 Aktuelle Entwicklungsstufe: lokale React-/Tauri-Anwendung Zielzustand: interne Mehrbenutzer-Webanwendung mit Backend und PostgreSQL ## 1. Zweck Dieses Dokument ist die verbindliche technische Orientierung für die schrittweise Weiterentwicklung von ASSESSOR. Es hält Zielbild, Reihenfolge, Abnahmekriterien, Entscheidungen, Risiken und Fortschritt fest. Der Plan ist kein unveränderlicher Vertrag. Neue Erkenntnisse dürfen ihn verändern, müssen aber nachvollziehbar dokumentiert werden. Eine Phase gilt erst als abgeschlossen, wenn ihre Abnahmekriterien verifiziert sind. ## 2. Produktziel ASSESSOR soll Dateien unterschiedlicher Security- und Assessment-Werkzeuge importieren, lokal beziehungsweise innerhalb der Unternehmensinfrastruktur verarbeiten, normalisieren, dauerhaft speichern, einheitlich darstellen und über mehrere Assessment-Läufe vergleichen können. Vorrangige Quellformate: - CSV und strukturierte Textdateien - JSON - XML - HTML - XLS und XLSX Vorrangige Pilotquellen: - Purple Knight - PingCastle - CIS-CAT - Maester - unbekannte tabellarische Quellen über ein generisches Profil ## 3. Leitprinzipien 1. Kein Informationsverlust: Originalwerte, Quelldatei und Quellposition bleiben nachvollziehbar. 2. Kanonischer Kern, flexible Erweiterungen: gemeinsame Finding-Felder werden normalisiert; werkzeugspezifische Daten bleiben erhalten. 3. Konfidenz statt Scheinsicherheit: automatische Erkennung und Zuordnung erhalten nachvollziehbare Konfidenzwerte. 4. Generischer Fallback: unbekannte Quellen müssen importierbar bleiben, auch wenn nicht alles automatisch zugeordnet werden kann. 5. Profile statt Sonderfälle: bekannte Werkzeuge erweitern dieselbe Pipeline über deklarative Profile. 6. Deterministische Kernverarbeitung: die Importengine benötigt kein externes KI-Modell. 7. Sichere Eingabegrenze: alle importierten Dateien gelten als nicht vertrauenswürdig. 8. Serverfähigkeit ohne vorschnellen Bruch: die lokale Anwendung bleibt nutzbar, während Plattformabhängigkeiten gekapselt werden. 9. Backend als Vertrauensgrenze: im Zielzustand greift der Browser nie direkt auf die Datenbank zu. 10. Verifizierbarer Fortschritt: Statusänderungen erfolgen nur nach Tests und dokumentierter Abnahme. ## 4. Zielarchitektur ```text Browser der Mitarbeitenden ↓ HTTPS ASSESSOR-Backend im Unternehmensnetz ├─ Authentifizierung und Autorisierung ├─ Dateiannahme und Importsteuerung ├─ Parsing und Strukturanalyse ├─ Toolerkennung und semantisches Mapping ├─ Normalisierung und Vergleich ├─ Review- und Workflowlogik └─ Export und Audit ↓ PostgreSQL ↓ optionaler geschützter Originaldateispeicher ``` Die heutige Tauri-Anwendung bleibt zunächst eine lokale Laufzeitumgebung. Das React-Frontend und die Fachlogik sollen so getrennt werden, dass dieselbe Oberfläche später über ein Backend im normalen Browser betrieben werden kann. **Zielbild fuer autonome Client-Datenbanken (Nutzerentscheidung 2026-09-26; geplant, nicht umgesetzt):** Im spaeteren Mehrclientbetrieb erhaelt jeder Client eine eigene fachliche PostgreSQL-Datenbank. Das Backend loest den autorisierten Client auf und verwendet ausschliesslich dessen Datenbank und privaten Artefaktspeicher fuer Stammdaten, Timeslots, Scan- und GPO-Quellen, Analysen, Bewertungen, Reviews und Historie. Die Browsergrenze bleibt die Backend-API. Ein zentraler, versionierter Referenzkatalog verwaltet unveraenderliche offizielle MITRE-ATT&CK-Staende und Microsoft Security Baselines; er enthaelt keine Client-Ergebnisse. Die clientgebundene Auswahl und gegebenenfalls clientindividuelle Baselinepakete gehoeren zum Client. Jede Auswertung dokumentiert die exakt verwendeten Referenzversionen und ihren Hash; ein zentrales Update veraendert weder die Auswahl noch historische Ergebnisse stillschweigend. Fuer eine wirklich autarke Sicherung/Wiederherstellung enthaelt das Client-Backup auch die exakten verwendeten Referenzbytes oder unveraenderliche, mitgesicherte Artefakte und alle clientgebundenen Originale. Ein Restore muss ohne Zugriff auf den zentralen Katalog lesbare Historie und reproduzierbare Auswertungsgrundlagen liefern. Allgemeine Update-/Downloadaktionen bleiben in der Referenzverwaltung; der Client-Bereich zeigt und verwaltet seine verwendeten Versionen. Das ist eine Zielentscheidung fuer die spaetere Mandanten-/Betriebsarchitektur (Phase 14 mit Vorarbeiten an Repository-, Referenz- und Artefaktgrenzen aus Phasen 9-11/13B), keine Aussage ueber den aktuellen lokalen Speicher. Die kanonische lokale PostgreSQL-Datenbank und alle bestehenden Daten bleiben bis zu einer gesondert geplanten, gesicherten Migration unveraendert. ## 5. Statusdefinitionen - `offen`: noch nicht begonnen - `in Arbeit`: begonnen, Abnahmekriterien noch nicht vollständig erfüllt - `blockiert`: ohne Entscheidung oder externe Voraussetzung nicht sinnvoll fortsetzbar - `abgeschlossen`: Abnahmekriterien verifiziert ## 6. Phasenübersicht | Phase | Inhalt | Status | |---|---|---| | 0 | Plan und Arbeitsregeln etablieren | abgeschlossen | | 1 | Bestehenden Funktionsumfang und Testkorpus absichern | abgeschlossen | | 2 | Kanonisches Finding- und Assessment-Modell definieren | abgeschlossen | | 3 | Universelles Import-Zwischenmodell stabilisieren | abgeschlossen | | 4 | Importengine vollständig von UI und Plattform trennen | abgeschlossen | | 5 | Erkennungs- und Mapping-Engine mit Konfidenzen | abgeschlossen | | 6 | Deklarative Toolprofile und generischer Fallback | abgeschlossen | | 7 | Automatische Filter- und Darstellungslogik | abgeschlossen | | 8 | Vergleichsengine für Assessment-Läufe | abgeschlossen | | 8 (Erweiterung 2026-09-11) | Belastbarer A/B-Timeslotvergleich und offene Verpflichtungen; P0 abgeschlossen, P1/P2 in Arbeit, P3-P6 offen | in Arbeit | | 9 | Fachliche Persistenzschnittstelle | abgeschlossen | | 10 | Lokales Backend über `localhost` | abgeschlossen | | 11 | PostgreSQL und Datenbankmigrationen | abgeschlossen | | 12 | Mehrdatei-Importworkflow und Importdiagnostik | abgeschlossen | | 13 | Sicherheits- und Belastbarkeitshärtung | abgeschlossen | | 13A | Ingestion 2.0: Formatadapter, Source Extractors und Mappingprofile konsolidieren | abgeschlossen | | 13B | Deterministische GPO-Backup- und Microsoft-Baseline-Analyse | in Arbeit | | 13C | Scanner Context und Environment Inventory | in Arbeit | | 13D | Referenzerkennung und katalogbasierte Einordnung (ATT&CK/D3FEND erster Umfang) | in Arbeit | | 13E | Kontext-Engine und abschaltbarer Kontext-Layer (GPO-Pilot, Ausgabe auch ueber Phase-7-Reports); Engine und API umgesetzt, UI-Layer offen | in Arbeit | | 13F | Regulatorische Kontrollsuche und RAG-Grundlage mit Qdrant | in Arbeit | | 14 | Mehrbenutzer- und Firmenbetrieb | offen | ## 7. Phasen im Detail ### Phase 0 – Plan und Arbeitsregeln etablieren Status: abgeschlossen Ergebnis: - Dieser Umsetzungsplan ist versionierbar im Projekt vorhanden. - `AGENTS.md` verweist auf den Plan und definiert den Abgleich bei größeren Arbeiten. Abnahmekriterien: - Plan und Projektanweisung sind im Repository vorhanden. - Zielzustand und Übergangsstrategie sind dokumentiert. ### Phase 1 – Bestehenden Funktionsumfang absichern Status: abgeschlossen Ziele: - Den aktuellen lokalen Funktionsumfang als belastbare Ausgangsbasis festhalten. - Regressionen während der Architekturarbeiten früh erkennen. Arbeitspakete: - Bestehende Tests und aktuelle Funktionen inventarisieren. - Repräsentative, rechtlich unbedenkliche oder synthetische Testdateien bereitstellen. - Testkorpus für Purple Knight, PingCastle, CIS-CAT, Maester und generische Tabellen aufbauen. - Fehlerfälle abdecken: leere Dateien, fehlerhafte Kodierung, ungewöhnliche Kopfzeilen, mehrere Tabellen, große Dateien und beschädigte Inhalte. - Aktuelle Import-, Filter-, Review-, Vergleichs- und Exportfunktionen dokumentieren. - Baseline für `npm test` und `npm run build` festhalten. Verifizierter Abschlussstand vom 2026-07-17: - Positive und negative beziehungsweise sicherheitsrelevante Importtests für CSV, JSON, XML, HTML und Excel sind automatisiert. - 21 Testdateien mit 51 Tests, Local-only-Sicherheitsprüfung und Produktionsbuild laufen erfolgreich. - Die englische semantische Titelrolle `title` wird in generischen Datensätzen erkannt. - Die detaillierte Abdeckung und die Abschlussnachweise stehen in `docs/TEST_BASELINE.md`. - Ein automatisierter Gesamtworkflow deckt Mehrdateiimport, Projektzusammenführung, Suche, Review, Dashboard und Snapshot ab. - 5.000 CSV-Findings sowie ein beschädigter XLSX-Container sind als Importbaseline geprüft. - Browser-End-to-End-Tests sind für die Zeit nach Phase 4 und zwingend vor Phase 10 festgelegt. - Der synthetische Quellenkorpus umfasst Purple Knight, PingCastle, CIS-CAT, Maester und eine generische Tabellenquelle. Herkunft, Grenzen und offizielle Strukturquellen sind in `fixtures/README.md` dokumentiert. Abnahmekriterien: - Alle unterstützten Formate besitzen mindestens einen positiven und einen negativen Testfall. - Die wichtigsten aktuellen Benutzerabläufe sind automatisiert oder als reproduzierbare manuelle Prüffälle dokumentiert. - Test und Build laufen reproduzierbar erfolgreich. ### Phase 2 – Kanonisches Finding- und Assessment-Modell Status: abgeschlossen Ziele: - Findings verschiedener Werkzeuge in einem gemeinsamen Modell darstellen. - Mehrere Scanstände und Vergleiche von Anfang an berücksichtigen. Vorgesehene Kernobjekte: - Projekt - Assessment - Assessment-Lauf beziehungsweise Scan-Lauf - Importdatei - Quelltabelle beziehungsweise Sheet - Finding-Definition - Finding-Vorkommen in einem Scan - Evidenz - Review - Toolprofil und Mappingversion - Importdiagnose Vorgesehene Finding-Felder: - interne ID - Quelltool und Toolversion - Quelldatei, Sheet und Quellposition - ursprüngliche und kanonische Regel-ID - Titel, Beschreibung und Kategorie - ursprünglicher und normalisierter Schweregrad - ursprünglicher und normalisierter Status - Score - betroffenes Asset oder Objekt - Evidenz und Empfehlung - Framework- und Control-Referenzen - Scan- und Importzeitpunkt - vollständige Originalfelder - Mapping-Konfidenz - Profil- und Parser-Version Verifizierter Abschlussstand vom 2026-07-17: - Das verbindliche Schema steht in src/domain/canonical-model.ts und ist in docs/CANONICAL_MODEL.md erläutert. - Projekt, Assessment, Scan-Lauf, Importdatei, Quelltabelle, Finding-Definition, Finding-Vorkommen, Evidenz, Review und Importdiagnose sind getrennte Fachobjekte. - Originalfelder, normalisierte Werte, Mappingkonfidenz, Quellposition sowie Parser-, Profil- und Mappingversion bleiben getrennt nachvollziehbar. - Eine Finding-Definition wird im Test über mehrere PingCastle-Scan-Läufe wiederverwendet; Reviews verändern keine importierten Vorkommen. - Purple Knight, PingCastle, CIS-CAT und Maester werden gemeinsam ohne verlorene Zusatzfelder im Modelltest abgebildet. - Der plattformneutrale Validator prüft IDs, Referenzen, Quellbeziehungen, Originalfelder, Konfidenzen und Zahlenbereiche. - 22 Testdateien mit 55 Tests, Local-only-Sicherheitsprüfung und Produktionsbuild laufen erfolgreich. Abnahmekriterien: - Alle Pilotquellen können ohne Informationsverlust abgebildet werden. - Originalwert und normalisierter Wert sind getrennt. - Ein Finding kann in mehreren Scan-Läufen auftreten, ohne duplizierte Definitionen zu erzwingen. - Reviewdaten sind von importierten Quelldaten getrennt. ### Phase 3 – Universelles Import-Zwischenmodell Status: abgeschlossen Ziele: - Alle Formatparser liefern dieselbe strukturelle Ausgabe. - Fachliche Erkennung wird von der reinen Dateidekodierung getrennt. Vorgesehene Inhalte: - Datei- und Formatmetadaten - Tabellen und Sheets - Zeilen, Spalten und Zellen - Rohwerte und dekodierte Werte - erkannte Datentypen - Kopfzeilenkandidaten - Quellpositionen - Parserwarnungen und verworfene Inhalte Verifizierter Abschlussstand vom 2026-07-17: - CSV, HTML, Excel, JSON und XML liefern ein versioniertes `ImportDocument` mit derselben Tabellen-, Zeilen-, Spalten- und Zellstruktur. - Rohwerte, dekodierte Werte, erkannte Datentypen, Kopfzeilenkandidaten und formatspezifische Quellpositionen bleiben getrennt erhalten. - Ein gemeinsamer Adapter erzeugt die bisherige `ImportedDataset`-Sicht, sodass Oberfläche, Profile und Analysen ohne Parser-Sonderlogik weiterlaufen. - CSV-Teilimporte, entfernte aktive HTML-Inhalte, leere Excel-Sheets sowie XML- und allgemeine Parserfehler werden maschinenlesbar diagnostiziert. - Die Struktur und Abgrenzung sind in `docs/IMPORT_INTERMEDIATE_MODEL.md` dokumentiert. - 24 Testdateien mit 60 Tests, Local-only-Sicherheitsprüfung und Produktionsbuild laufen erfolgreich. Abnahmekriterien: - Dieselbe nachgelagerte Analyse verarbeitet CSV-, HTML- und Excel-Tabellen. - Formatparser enthalten keine React- oder Toolprofil-Logik. - Fehler und Teilimporte werden strukturiert zurückgegeben. ### Phase 4 – Plattformneutrale Importengine Status: abgeschlossen Ziele: - Import, Analyse und Normalisierung unabhängig von React und Tauri ausführbar machen. - Browserabhängigkeiten über Adapter kapseln. Zu kapselnde Bereiche: - Dateiobjekte und Binärdaten - HTML- und XML-Dokumentparser - Persistenz - Zeit, IDs und Hashing - Download und Export Verifizierter Abschlussstand vom 2026-07-17: - `ImportSource` beschreibt Dateien nur noch als Metadaten und `Uint8Array`; Browser-`File` wird ausschließlich am Browserrand adaptiert. - `importSource` ist der plattformneutrale Engine-Einstieg und verarbeitet reine Bytequellen ohne React, Tauri oder Browser-Dateiobjekte. - Textdekodierung sowie HTML-/XML-Strukturextraktion sind injizierbare Laufzeitadapter; `DOMParser` liegt ausschließlich unter `src/platform/browser`. - CSV-, JSON-, Excel-, HTML- und XML-Parser greifen nicht direkt auf Browser- oder UI-APIs zu. - Persistenz, Textdownloads und Systemzeit sind über `StorageAdapter`, `DownloadAdapter` und `Clock` gekapselt. - Eine automatisierte Architekturprüfung verhindert Browser-, React- und Tauri-Abhängigkeiten in Kernmodulen. - Die Schichten und der spätere Backend-Einstieg sind in `docs/PLATFORM_NEUTRAL_ENGINE.md` dokumentiert. - 26 Testdateien mit 63 Tests, Local-only- und Architekturprüfung sowie Produktionsbuild laufen erfolgreich. Abnahmekriterien: - Die Engine kann ohne React-Komponenten getestet werden. - Fachmodule greifen nicht direkt auf `window`, DOM oder `localStorage` zu. - Die aktuelle lokale Oberfläche funktioniert weiterhin. ### Phase 5 – Erkennungs- und Mapping-Engine Status: abgeschlossen Ziele: - Quelle, relevante Tabellen und semantische Spaltenrollen automatisch erkennen. - Entscheidungen nachvollziehbar und korrigierbar machen. Erkennungssignale: - Dateiname und Erweiterung - Tool- und Versionsmarker - Tabellen- und Sheetnamen - Kopfzeilen und Feldsynonyme - typische IDs, Status- und Severity-Werte - Werteverteilungen und Datentypen - Kombinationen mehrerer Signale Konfidenzklassen: - hoch: automatische Übernahme - mittel: Übernahme mit sichtbarem Hinweis - niedrig: Benutzerbestätigung erforderlich - unbekannt: unverändert als Zusatzfeld erhalten Verifizierter Abschlussstand vom 2026-07-17: - `ImportRecognitionResult` beschreibt Quellwerkzeug, Tabellenrelevanz und Feldrollen mit Score, Konfidenz, Evidenz und Entscheidungsquelle. - Die Quellerkennung kombiniert Dateiname, Inhalt, Tabellenname, Kopfzeilen und typische Werte statt einzelne Marker isoliert zu verwenden. - Purple Knight, PingCastle, CIS-CAT und Maester werden im synthetischen Quellenkorpus mit hoher Konfidenz erkannt. - Regel-ID, Titel, Beschreibung, Kategorie, Severity, Status, Score, Asset, Evidenz, Empfehlung und Frameworkreferenz werden aus Kopfzeilen und Wertesignalen abgeleitet. - Niedrige Vorschläge bleiben bis zur Bestätigung als `additional` erhalten; unbekannte Felder und nicht ausgewählte Tabellen werden nicht verworfen. - `applyRecognitionOverrides` bestätigt oder korrigiert Quelle, Tabellenauswahl und Feldrollen ohne Änderungen an Rohwerten oder importierten Zeilen. - Das Ergebnis wird vom plattformneutralen Importablauf im `ImportedDataset` gespeichert; erkannte Werkzeuge können unabhängig vom bisherigen UI-Profil angezeigt werden. - Modell, Schwellenwerte und Korrekturverhalten sind in `docs/RECOGNITION_ENGINE.md` dokumentiert. - 28 Testdateien mit 68 Tests, Local-only- und Architekturprüfung sowie Produktionsbuild laufen erfolgreich. Abnahmekriterien: - Jede automatische Zuordnung enthält Begründung und Konfidenz. - Unsichere Zuordnungen können bestätigt oder korrigiert werden. - Keine Zeile wird allein wegen unbekannter Semantik verworfen. ### Phase 6 – Deklarative Toolprofile Status: abgeschlossen Ziele: - Purple Knight vom Sonderfall zum ersten Profil der allgemeinen Engine machen. - Weitere Werkzeuge ohne Änderungen an der Kernpipeline ergänzen. Reihenfolge: 1. generisches Tabellenprofil 2. Purple Knight 3. PingCastle 4. CIS-CAT 5. Maester Ein Profil beschreibt: - Erkennungsmerkmale - relevante Tabellen - Feldsynonyme und semantische Rollen - Status- und Severity-Mappings - stabile Regelkennungen - Darstellungshinweise - Vergleichsschlüssel Verifizierter Abschlussstand vom 2026-07-17: - `ToolProfileDefinition` beschreibt Profil-ID, Version, Erkennungssignale, Tabellenregeln, Feldrollen, Normalisierung, Präsentation und Vergleichsschlüssel. - `createImportProfile` erzeugt aus jeder Definition dieselbe Laufzeitschnittstelle für Erkennung, Sheetpriorisierung, Standardansicht und Statusfilter. - Generic, Purple Knight, PingCastle, CIS-CAT Pro und Maester besitzen versionierte Definitionen und werden über gemeinsame Kataloge registriert. - Purple-Knight-Erkennung, Sheetpriorisierung, Standardfelder und Statusfilter laufen über dieselbe Profil-Fabrik wie die neuen Werkzeuge. - Die Erkennungsengine bezieht Quellenmarker, Feldsynonyme und Tabellenprioritäten aus dem Definitionskatalog statt aus fest codierten Werkzeugzweigen. - Die React-Anwendung nutzt den Laufzeitkatalog; Formatparser und Komponenten benötigen für neue Profile keine Änderungen. - Die verwendete Profilversion wird im `ImportedDataset` gespeichert. - Der generische Fallback bleibt bei unbekannten Tabellen aktiv und bewahrt alle Zeilen und Felder. - Profilschema, Versionierung und Erweiterungsablauf sind in `docs/TOOL_PROFILES.md` dokumentiert. - 29 Testdateien mit 74 Tests, Local-only- und Architekturprüfung sowie Produktionsbuild laufen erfolgreich. Abnahmekriterien: - Neue Profile benötigen keine Änderungen an React-Komponenten oder Formatparsern. - Generischer Import bleibt bei nicht erkannten Quellen funktionsfähig. - Profilversionen werden im Importergebnis festgehalten. ### Phase 7 – Automatische Filter und Darstellung Status: abgeschlossen Verifizierte Produktversionsanzeige vom 2026-09-06: Der Markenblock zeigt die zentrale npm-Produktversion, aktuell `ASSESSOR 2.5.1`, statt des davon unabhaengigen Processingvertrags. Der gesamte Markenblock oeffnet ein kompaktes About-Popup mit Produkt-, Build-, Backend-, Import- und GPO-Komponentenversionen sowie den dezenten Credits Michael Lukas und Binh Karl. Die Health-API meldet die Backend-Produktversion, sodass Frontend- und Backendstand erkennbar sind. Version 2.5.1 ist der erste kompatible Patch nach Einfuehrung von 2.5.0 und korrigiert den GPO-Import byte-identischer Dateien an verschiedenen Pfaden. 835 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Phase 7 bleibt abgeschlossen. Verifizierte Result-DB-Filter-/Exportnachschaerfung vom 2026-09-03: Die Result DB startet und resettiert mit `Deviation = Yes`. Ein neuer `Export JSONL`-Button exportiert nicht nur die geladene Seite, sondern die vollstaendige aktuelle Filter- und Timeslot-Ergebnismenge ueber stabile Seitenabfragen. Zeile eins dokumentiert Format-/Schemaversion, Zeitpunkt, Scope, angewandte Filter und Ergebnisanzahl; danach folgt je Result genau ein vollstaendiges JSON-Objekt. Aendert sich die Ergebnismenge waehrend des Exports, wird der Download fail-closed abgebrochen. Drei fokussierte Export-/Scope-Tests und der Gesamtlauf mit 767 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Client-Info-Balkenformatierung vom 2026-09-03: Die wiederverwendeten Kennzahlzeilen besitzen nun identische Label-, Balken- und Wertspalten sowie eine in jeder Zeile reservierte Statuszeile. Optionale `Restricted`-Hinweise verschieben dadurch keine Nachbarzeilen mehr; Zahlen, Einheiten und Balken bleiben ueber alle gleich breiten Karten ausgerichtet. Die kompakte Infrastructure-&-Resilience-Ausnahme behaelt ihre eigenstaendige Einspaltengeometrie. 13 fokussierte Dashboard-/Kacheltests, der Gesamtlauf mit 767 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine Fachlogik-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierter Work-Kachelvertrag vom 2026-09-03: Regulaere Finding-Kacheln verwenden die Nutzerreferenz als verbindliches Mindestformat mit 358 px Breite und 223 px Hoehe. Das Raster streckt unvollstaendige Reihen nicht mehr auf Restbreite; Hexagon, Titel und rechte Aktionsspalte bleiben im Kopf. Die Metadaten folgen einer festen semantischen Matrix aus Status, Kategorie, Severity plus Weight und Score. Die Hoehe darf bei laengerem Inhalt weiter wachsen; Pathfinder-Micro-Cards bleiben von der Work-spezifischen Anordnung ausgenommen. 16 fokussierte Kachel-/Typografie-/Pathfinder-Tests, der Gesamtlauf mit 768 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine Fachlogik-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Infrastructure-&-Resilience-Korrektur vom 2026-09-03: Die inhaltsreiche Dashboardkachel reserviert drei statt zwei Rasterzeilen und ist als gezielte Ausnahme nicht mehr an ein starres Quadratverhaeltnis gebunden. Lange, vollstaendige OS-Aufzaehlungen bleiben dadurch innerhalb der Kartenflaeche; Faktenraster, Werte und die uebrigen quadratischen Dashboardkacheln bleiben unveraendert. 14 fokussierte Dashboard-/Inset-Tests, der Gesamtlauf mit 769 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine Fachlogik-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Unmittelbare responsive Nutzerkorrektur vom 2026-09-03: Die feste Drei-Zeilen-Ausnahme wird durch inhaltsbasierte Rasterhoehen ersetzt. Jede Client-Info-Inhaltskarte behaelt ihre quadratische Mindestgeometrie, darf aber anhand ihres vollstaendigen Inhalts wachsen; `Infrastructure & Resilience` verwendet eine automatische Inhaltshoehe. Die breakpointabhaengige Rastereinheit bleibt als Mindesthoehe erhalten, waehrend `minmax(..., auto)` zusaetzlichen Platz ohne Ueberlauf bereitstellt. 14 fokussierte Dashboard-/Inset-Tests, der Gesamtlauf mit 770 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine Fachlogik-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Client-Info-Progressive-Disclosure-Nachschaerfung vom 2026-09-03: Die sechs reinen Zahlenkacheln bleiben unveraendert quadratisch. Alle neun vorhandenen Detailbereiche starten dagegen als kompakte Telemetriekarten mit Titel, bestehender Metainformation, fachlicher Primaermenge und proportionalem Mengenbalken. Ein zugaenglicher Plus-/Minus-Schalter blendet die vollstaendigen bisherigen Donut-, Balken- und Fakteninhalte je Karte unabhaengig ein beziehungsweise aus. Erfundene Mockup-Bereiche wurden nicht uebernommen. Inhaltsbasierte Rasterhoehen verhindern Ueberlauf auch im expandierten Zustand. 15 fokussierte Dashboard-, Interaktions- und Inset-Tests, der Gesamtlauf mit 774 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine Daten-, Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Client-Info-Panelstil-Korrektur vom 2026-09-03: Die neun Infopanels folgen nun der ausdruecklichen Nutzerreferenz. Im minimierten Zustand ist ausschliesslich die luftige Kopfzeile `Titel — Primaermenge` mit Plus sichtbar; es gibt dort keinen Balken. Erst die aufgeklappte Ansicht zeigt hohe, grosszuegig getrennte Datenzeilen mit Label, Wert und einem 72 px dicken, breiten Mengenbalken. Assessment Status und Severity Distribution verwenden ebenfalls Mengenbalken statt Donuts, behalten aber ihre vorhandenen Filteraktionen. Faktenzeilen folgen derselben luftigen Vertikalgeometrie; die fruehere kompakte Resilience-Sonderdarstellung entfaellt. Die sechs reinen Zahlenkacheln bleiben unveraendert. 12 fokussierte Layout-/Interaktionstests, alle 774 Standardtests, Local-only- und Designpruefung sowie der Client-/Server-Produktionsbuild sind erfolgreich; 8 optionale PostgreSQL-Tests wurden erwartungsgemaess uebersprungen. Keine Daten-, Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Unmittelbare Breitenkorrektur der Client-Info-Infopanels vom 2026-09-03: Die aufgeklappte Karte belegt im regulaeren Raster sechs statt weiterhin nur zwei Spalten. Unterhalb von 800 px verwendet sie alle vier, unterhalb von 560 px alle zwei verfuegbaren Spalten. Damit bleibt die bestaetigte linke Label-/Wertzone neben dem breiten rechten Balkenbereich innerhalb derselben Kartenflaeche; die minimierte Zwei-Spalten-Kopfzeile bleibt unveraendert. Der in der Kopfzeile bereits dargestellte Primaerwert wird expandiert nicht als erste Zeile dupliziert. Neutrale Analysepanels uebernehmen fuer ihre restlichen Mengen die rote, orange, gelbe, violette und bei Bedarf neutrale Reihenfolge der Referenz; fachlich bereits festgelegte Status-, Coverage-, PKI- und GPO-Farben bleiben erhalten. 12 fokussierte Layout-/Interaktionstests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine Fachlogik-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Abschliessende bildbezogene Client-Info-Layoutkorrektur vom 2026-09-03: Die sechs quadratischen Zahlenkacheln bilden wieder eine eigene obere Sechserspur. Darunter stehen die sechs real vorhandenen Mengenpanels dauerhaft sichtbar in einem dreispaltigen Telemetrieraster; Plus/Minus steuert nur zusaetzliche Angaben und entfernt die Mengenzeilen nicht. Assessment Status und Severity Distribution sind wieder als echte Donut-Kacheln hergestellt und bilden gemeinsam mit Directory Overview die rechte Nebenspalte. Mengenzeilen verwenden die kompakte Referenzgeometrie mit 64 px Zeilenhoehe und 30 px dicken Balken; die bisherige uebergrosse 120-/72-px-Ausfuehrung und die expandierte Sechs-Spalten-Sonderbreite sind damit supersediert. Bei kleineren Viewports reduzieren sich Mengenraster und Donutspalte kontrolliert beziehungsweise stapeln sich. 12 fokussierte Layout-/Interaktionstests, die Gesamtsuite mit 774 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine Daten-, Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Client-Info-Erstreihenkorrektur vom 2026-09-03: Die obere Zone teilt sich jetzt im selben 3:1-Verhaeltnis wie der Inhaltsbereich. Die sechs weiterhin quadratischen Zahlenkacheln belegen verkleinert das linke Dreiviertel; `Assessment Status` steht als Donut-Kachel direkt rechts daneben in Reihe 1. Dadurch ruecken `Severity Distribution` und anschliessend `Directory Overview` in der rechten Rail jeweils nach oben. Unterhalb von 1100 px stapelt sich die Kopfzone und die Zahlenkacheln wechseln kontrolliert auf drei, unterhalb von 800 px auf zwei Spalten. 12 fokussierte Layout-/Interaktionstests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine Fachlogik-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Client-Open-Standardansicht vom 2026-09-03: Das direkte Oeffnen eines Clients beziehungsweise seiner ausgewaehlten Timeslots aus Data Hub fuehrt ab jetzt in `Client Info` statt `Work`. Projektname, Projekt-ID und die konkrete ScanRun-Auswahl werden unveraendert uebernommen; nur das initial aktive Hauptgebiet aendert sich. Bewusste spaetere Navigation zu Work, Result DB oder Pathfinder bleibt unveraendert. Neun fokussierte Data-Hub-/Header-/Clientdetailtests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine Daten-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Client-Info-Minimierkorrektur vom 2026-09-03: Alle neun Informationskacheln starten vollstaendig geoeffnet mit Minus und lassen sich nun ueber denselben zugaenglichen Schalter auf ihre reine Kopfzeile mit Plus minimieren. Das gilt einheitlich fuer die sechs Mengen-/Faktenkarten sowie Assessment Status, Severity Distribution und Directory Overview; beim erneuten Oeffnen wird der vollstaendige Inhalt wiederhergestellt. Minimierte Karten werden auch in Rasterzeilen mit hoeheren Nachbarkarten nicht mehr leer auf deren Hoehe gestreckt. Die sechs reinen Zahlenkacheln bleiben unveraendert. Die beiden gemeinsamen Kartenvertraege und alle neun konkreten Titel/Instanzen sind synthetisch beziehungsweise statisch regressionsgeprueft. 13 fokussierte Dashboard-/Interaktionstests, die Gesamtsuite mit 776 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine Daten-, Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Maester-Fehlerdarstellung vom 2026-09-03: Eindeutig erkannte `Invoke-MgGraphRequest`-Ausfuehrungsfehler werden im Results-Fenster nicht mehr als unstrukturierter Inline-Rohtext dargestellt. Die eigentliche Graph-Fehlermeldung steht als lesbare Primaeraussage oben; Fehlercode, HTTP-Status, Methode und Endpunkt, Skriptquelle, Zeit sowie vorhandene Request-IDs folgen als beschriftete strukturierte Felder. Der vollstaendige unveraenderte Quelltext bleibt unter `Technical details` einklappbar. Normale Maester-Ergebnisse und andere Werkzeuge verwenden weiterhin die generische Rich-Text-Darstellung. 48 fokussierte Result-/Reader-Tests und Client-/Server-Produktionsbuild, Local-only- sowie Designpruefung sind erfolgreich. Der parallele Gesamtlauf bestaetigt 777 Tests; genau eine fachlich unabhaengige statische Result-DB-Scope-Pruefung erwartet noch die alte Quelltextform vor der bereits parallel vorhandenen `assessmentIds`-Ergaenzung, 8 optionale PostgreSQL-Tests wurden uebersprungen. Keine Daten-, Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Client-Info-Infrastrukturtrennung vom 2026-09-03: Der Faktenblock mit `Marked findings`, AD Recycle Bin, Backupzeit, krbtgt-Aenderung, Legacy/Windows LAPS, WEF und vollstaendiger OS-Angabe ist aus `Infrastructure & Resilience` herausgeloest und steht als eigene minimierbare Kachel `Infrastructure Details` im dreispaltigen Inhaltsraster. Die Ursprungskachel enthaelt nur noch ihre Risiko-/Mengenwerte. Alle bestehenden Werte stammen unveraendert aus demselben normalisierten Environment Snapshot. Die Client-Info-Ansicht umfasst damit zehn statt neun Informationskacheln. 13 fokussierte Dashboard-/Interaktionstests, Local-only- und Designpruefung sind erfolgreich. Der Baseline-Build ist derzeit unabhaengig von dieser Aenderung durch eine parallel hinzugekommene GPO-Testfixture mit fehlendem Pflichtfeld `ImportProcessorReference.kind` blockiert; ein separater direkter Vite-Lauf war in der Sandbox wegen `spawn EPERM` nicht zulaessig. Keine Daten-, Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Client-Info-Masonry-/Dreieckskorrektur vom 2026-09-03: Das Inhaltsraster misst jede der zehn Informationskacheln individuell und weist ihr eine eigene feingranulare Rasterspanne zu. Bei Collapse sinkt die Kartenhoehe auf die Kopfzeile; nachfolgende Karten belegen per dichtem Auto-Flow unmittelbar den frei gewordenen Platz, statt bis zum Ende einer hoeheren Nachbarkarte zu warten. Ohne `ResizeObserver` bleibt das regulaere nicht ueberlappende Raster als Fallback aktiv. Die Plus-/Minus-Zeichen sind durch die gemeinsamen SVG-Dreiecke ersetzt: unten fuer geoeffnet, rechts fuer geschlossen. 16 fokussierte Dashboard-, Interaktions-, Masonry- und Dreieckstests sowie Client-/Server-Produktionsbuild, Local-only- und Designpruefung sind erfolgreich. Der Gesamtlauf bestaetigt 781 Tests; genau eine unabhaengige statische Data-Hub-Open-Regression erwartet noch die alte einzeilige Quelltextformatierung, obwohl dieselbe `dashboard`-Navigation weiterhin mehrzeilig vorhanden ist; 8 optionale PostgreSQL-Tests wurden uebersprungen. Keine Daten-, Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Client-Info-Spalten-/KPI-Korrektur vom 2026-09-03: Die freie Masonry-Neuanordnung ist zugunsten drei dauerhafter Inhalts-Spalten mit der Kartenverteilung 3/2/2 ersetzt. Karten wachsen und schrumpfen nur innerhalb ihrer zugewiesenen Spalte; beim Minimieren rueckt ausschliesslich der darunterliegende Inhalt derselben Spalte nach oben. Die sechs KPI-Kacheln strecken sich in der Desktop-Kopfzone auf die Hoehe des danebenstehenden `Assessment Status`, sodass zwischen Kopf- und Inhaltszone keine uebergrosse Leerstelle verbleibt. Die Reihenfolge lautet Compliance Score, Deviation, High Severity, Passed, Typed Observations, Directory Sections; nur Deviation und High Severity sind interaktiv. Alle KPI-Werte sind groesser, der Compliance Score verwendet die staerkste gemeinsame H1-Hierarchie. 15 fokussierte Dashboard-/Interaktions-/Dreieckstests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Im Gesamtlauf bestanden 780 Tests; eine unabhaengige statische Data-Hub-Open-Pruefung erwartet weiterhin eine einzeilige Quelltextformatierung der funktional vorhandenen mehrzeiligen `dashboard`-Navigation, 8 optionale PostgreSQL-Tests wurden uebersprungen. Keine Daten-, Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Client-Info-Detailkorrektur vom 2026-09-03: Minimierte Informationskarten behalten nun mit `width: 100%` dieselbe volle Spaltenbreite wie ihre maximierte Form; nur die Kartenhoehe wird reduziert. Der werkzeugspezifische Hinweis `PingCastle` beziehungsweise dessen Engine-Version ist aus `Directory Overview` entfernt, waehrend die normalisierten Quelldaten unveraendert erhalten bleiben. 13 fokussierte Dashboard-/Interaktionstests und der Client-/Server-Produktionsbuild sind erfolgreich. Keine Daten-, Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Client-Info-Standardansicht vom 2026-09-03: Beim Oeffnen ist ausschliesslich `Assessment Status` expandiert. Die acht uebrigen Mengen-/Faktenkarten sowie `Severity Distribution` starten als vollbreite minimierte Kopfzeilen mit rechtem Dreieck und koennen weiterhin individuell geoeffnet werden. 15 fokussierte Dashboard-/Interaktions-/Dreieckstests und der Client-/Server-Produktionsbuild sind erfolgreich. Keine Daten-, Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Client-Info-Titelleisteninteraktion vom 2026-09-04: Bei allen Mengen-, Fakten- und Donutkarten minimiert beziehungsweise maximiert ein Klick auf eine beliebige Stelle der gesamten Titelleiste den Karteninhalt. Der bestehende zugaengliche Pfeil-Button bleibt fuer Tastaturbedienung und `aria-expanded` erhalten; die gemeinsame Hoverflaeche macht die vergroesserte Klickzone sichtbar. 13 fokussierte Dashboard-/Interaktionstests, Local-only- und Designpruefung sowie der Client-/Server-Produktionsbuild sind erfolgreich. Der Gesamtlauf bestaetigt 780 bestandene Tests; genau eine unabhaengige statische Data-Hub-Open-Regression erwartet weiterhin die alte einzeilige Quelltextformatierung der funktional vorhandenen mehrzeiligen `dashboard`-Navigation, 8 optionale PostgreSQL-Tests wurden uebersprungen. Keine Daten-, Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Verifizierte DB-Structure-Neugestaltung vom 2026-09-04: Die Datenbankansicht besitzt nun eine klare Informationshierarchie aus Einordnung und Schemaaktionen, vier kompakten Kennzahlen, fachlich beschriebenen Verarbeitungslayern und progressiv aufklappbaren Tabellendetails. Tabellen zeigen Spalten, Typen, Constraints und Beziehungen in strukturierten Inter-Zeilen; `Expand all` beziehungsweise `Collapse all` steuert die gesamte Ansicht. Segmente und Kacheln verwenden die gemeinsame transparente beziehungsweise flache, eckige Designsprache ohne Legacy-Akzentkontur, Schatten oder Monospace-Sondertypografie. Responsive Regeln erhalten die vollstaendige Lesbarkeit auf schmalen Viewports. Zwölf fokussierte Layout-, Interaktions-, Inset-, Typografie- und Kachelvertragstests, Local-only- und Designpruefung sowie der Client-Produktionsbuild sind erfolgreich. Der Gesamtlauf bestaetigt 783 bestandene Tests; zwei unabhaengige Regressionen betreffen weiterhin die einzeilige Data-Hub-Quelltextformatierung und eine parallel geaenderte GPO-Evaluationserwartung, 8 optionale PostgreSQL-Tests wurden uebersprungen. Der Server-Produktionsbuild ist durch eine fachfremde parallele Syntaxaenderung in `gpo-policy-evaluation-service.ts` blockiert. Keine Daten-, Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Ziele: - Filter aus normalisierten Rollen und tatsächlichen Datenwerten erzeugen. - Werkzeugübergreifende und quellenspezifische Filter kombinieren. Universelle Filter: - Projekt, Assessment und Scan-Lauf - Quelltool - Schweregrad und Status - Kategorie und betroffenes Asset - Review-Status, Priorität und Owner - neu, vorhanden, behoben oder wieder aufgetreten Dynamische Filter: - Facetten für Felder mit wenigen wiederkehrenden Werten - Bereichsfilter für Zahlen und Daten - Volltextsuche für Freitext - zusätzliche werkzeugspezifische Attribute Verifizierter Abschlussstand vom 2026-07-17: - Eine plattformneutrale Facettenengine erzeugt Kategorie-, Zahlen- und Datumsfilter aus Spaltentypen, Wertverteilungen und erkannten kanonischen Rollen. - Felder mit langen Freitexten, hoher Kardinalität, leeren oder nahezu eindeutigen Werten erzeugen keine ungeeigneten Auswahllisten und bleiben über die Volltextsuche verfügbar. - Herkunft, Review-Status, Priorität und Owner werden als allgemeine Facetten ergänzt, sobald mehrere sinnvolle Werte vorliegen. - Purple-Knight-, CIS-CAT- und Maester-Statusgruppen werden über dasselbe profilunabhängige Facettenmodell gerendert; die React-Oberfläche enthält keine Purple-Knight-Filterverzweigung mehr. - Mehrere Facetten, Zahlen- beziehungsweise Datumsbereiche, Volltext, Actionlist und Sortierung lassen sich gemeinsam anwenden. - Die Statuszeile zeigt Quellerkennungskonfidenz, ausstehende Mappingbestätigungen und Importwarnungen mit Detailbegründungen. - Die Vergleichsengine und der Repository-Vertrag liefern die benötigten Lebenszyklus- und Mehrlaufdaten; die Facetten werden befüllt, sobald der Backend- und Mehrdateiworkflow aus den Phasen 10 und 12 diese Daten an die Oberfläche anbindet. - Funktionsweise und Grenzen sind in docs/DYNAMIC_FILTERS.md dokumentiert. - 31 Testdateien mit 79 Tests, Local-only-Prüfung und Produktionsbuild laufen erfolgreich. Verifizierte Darstellungsnachschärfung vom 2026-08-02: - Das bisher als `Filter text` bezeichnete Volltextfeld heisst sichtbar `Search` und steht in der unteren Work-Kopfzeile unabhaengig von der Bookmark-Breite horizontal zentriert. Unterhalb von 1200 px faellt es auf die bestehende fliessende Anordnung zurueck; Filtersemantik und angedockte Results bleiben unveraendert. - Result-Fenster besitzen die getrennten UI-Zustände minimiert, im Cluster maximiert und frei herausgezogen maximiert. - Result-Fenster zeigen Ergebniszähler und Finding-Titel in der Kopfzeile sowie zusätzlich als Überschrift im Ergebnisinhalt. Das frühere Würfelsymbol ist durch das farbige, funktionale Zustandsdreieck ersetzt: minimiert zeigt es nach rechts, maximiert nach unten; Klick und Kopfzeilen-Doppelklick verwenden denselben Umschaltpfad. Redundante Blatt- und Quellüberschriften bleiben entfernt. - CIS-CAT-Result-Fenster zeigen die fachliche Tabellenhierarchie: `Assessment` steht über den Evidence-Tabellen. Bei Control Mappings bildet jede Framework-Version die einmalige Hauptüberschrift ihrer Tabellengruppe; jeder Control-Listenpunkt wird zur Überschrift seiner folgenden Tabelle. Der Assessment-Hinweis `No matching system items were found.` verwendet die blaue Evidence-Hervorhebung. Alle Ergebnisabschnitte sind global rahmenlos und ohne eigenen Innenabstand; nur die Zelllinien der Tabellen bleiben bestehen. - Purple-Knight-Findings zeigen in Reader, Datensatzkarte und Kachel wieder `Passed` oder `Failed` statt einer im kanonischen `Result`-Feld wiederholten SI-Kurzkennung. Die Auswahl folgt einer geordneten Profilpräferenz; rein visuelle Profilregeln beschriften `Pass` als `Passed` und `IOE Found` als `Failed`, ohne den Quellwert zu verändern. Rohberichte, die den Status ausschließlich als `Result` liefern, bleiben kompatibel. - Minimierte Results parken bei jedem Minimieren rechts oben in der Arbeitsfläche (80 px vom rechten Viewportrand und 46 px unterhalb der Arbeitsflächen-Oberkante), bleiben als Cluster aber über die Kopfzeile verschiebbar und können nicht in Filter- oder Statusband gezogen werden. Der geöffnete Results-Button im Reader trägt denselben individuellen Fensterton wie die Result-Kachel. - Ein aus dem Cluster gezogenes maximiertes Result bleibt bei weiteren Öffnungs-, Wiederherstellungs-, Auswahl- und Ansichtswechseln unangetastet; erst Minimieren koppelt es wieder ein. - Hinter dem aktiven Cluster-Fenster bleiben nur 14 px breite, vertikal gestapelte Farbreiter sichtbar. Cluster, freie Fenster und ihre gespeicherten Größen werden an rechter und unterer Viewport-Kante begrenzt; der Inhalt scrollt innerhalb des Fensters. - Ein maximiertes, weiterhin angedocktes Clusterfenster besitzt mindestens die Höhe des gesamten dahinterliegenden Stapels minimierter Kopfzeilen. Kurzer Ergebnisinhalt legt dadurch keine unteren minimierten Results frei; die Mindesthöhe ist an den noch sichtbaren Viewportbereich begrenzt. Frei herausgezogene Fenster bleiben inhalts- beziehungsweise nutzergrößenabhängig. - Die ausdrueckliche Nutzerkorrektur vom 2026-08-21 trennt den Kopfzeilen-Doppelklick vom Zustandsdreieck: Ein minimiertes Result wird per Doppelklick normal wiederhergestellt; ein bereits geoeffnetes Result wird per Doppelklick auf die groesstmoegliche Arbeitsflaeche unterhalb des statischen Headers maximiert. Ein einfacher Klick auf die freie maximierte Titelleiste stellt seine unveraenderte Normalgeometrie und Clusterposition wieder her. Kopfzeilenaktionen loesen den Wechsel nicht aus und maximierte Fenster besitzen keine Resize-Kanten. - Die Darstellungsnachschärfung und die nachfolgende Build-/Startkonfigurationshärtung sind mit 105 bestandenen Testdateien und 501 bestandenen Standardtests, 7 erwartungsgemäß übersprungenen optionalen PostgreSQL-Tests, Local-only- und Designprüfung sowie getrennten Client-/Server-Produktionsbuilds verifiziert. Verifizierte Graph-Darstellungsnachschaerfung vom 2026-08-22: - Die Graphansicht verwendet ein ruhiges dreispaltiges Arbeitslayout: links die gemeinsamen fachlichen Filter, mittig den kompakter geclusterten Netzwerkgraphen und rechts einen dauerhaft vorhandenen Detailinspektor. Flache Flaechen, reduzierte Kanten und kleinere Knoten-/Kartenabstaende vermeiden die bisherige Ueberladung. - Work und Graph lesen und veraendern dieselben Filterzustaende im AppProvider. Suche, Quellblatt, Status, alle dynamisch verfuegbaren Facetten und `My Workspace only` werden links im Graph mit den bestehenden gemeinsamen Controls angeboten. Ein Wechsel der Ansicht bewahrt deshalb exakt dieselbe fachliche Ergebnismenge in beide Richtungen; nur `Labels`, Auswahl, Zoom und Position bleiben lokale Darstellungszustaende. - Die Graphprojektion wird unmittelbar aus `useFilteredRecords()` aufgebaut und besitzt keine zweite lokale Suche, Kategorie-, Severity- oder Mappingfilterung mehr. Damit bleiben werkzeug- und datenabhaengige Filterangebote unveraendert und es werden keine neuen Filter erfunden. - Zwei fokussierte synthetische Graph-Tests und der Gesamtlauf mit 647 bestandenen Tests sowie 8 uebersprungenen optionalen PostgreSQL-Tests sind erfolgreich. Local-only-Pruefung und separater Client-Bundlebuild sind gruen. Der vollstaendige Baseline-Build ist derzeit durch einen vorbestehenden, nicht zu dieser Aenderung gehoerenden TypeScript-Fehler in `server/assessor-http-server.ts` Zeile 196 blockiert; der bekannte Designcheck-Befund bleibt unveraendert auf `src/styles/datahub-redesign.css` Zeilen 39 und 42 begrenzt. Es wurden keine Realinhalte inspiziert. Reduzierte Graph-Filter vom 2026-08-22 (Phase-7-Praesentationskorrektur; ersetzt die zuvor dokumentierte vollstaendige Sichtbarkeit aller gemeinsamen Filter im Graph-Panel): - `Result message`, `SI version`, `Source: Scan` und `My Workspace only` werden im linken Graph-Panel nicht mehr angeboten. Suche, Quellblatt und die uebrigen fachlichen Facetten bleiben sichtbar. Bereits in Work gesetzte gemeinsame Filter bleiben auch dann fuer die Graphprojektion wirksam; die Korrektur veraendert weder Filterzustand noch Ergebnismengenlogik. - Der Graph-Test, der vollstaendige Client-/Server-Produktionsbuild, 650 Standardtests und Local-only sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der globale Designcheck bleibt ausschliesslich wegen der zwei unveraenderten Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Keine Import-, API-, Persistenz-, Schema- oder Datenanderung; Phase 7 bleibt abgeschlossen. Sidebar-unabhaengiges Graph-Panel vom 2026-08-22 (Phase-7-Praesentationskorrektur): - Das Einklappen der Hauptnavigation blendet nur noch deren direktes `aside` aus. Die verschachtelten Graph-Bereiche fuer Filter und Detailinspektor bleiben sichtbar; dieselbe Selektorgrenze gilt in der schmalen Ansicht. Damit veraendert der Navigationszustand weder Graph-Controls noch Graph-Layout. - Der fokussierte Graph-Test, 650 Standardtests, Local-only sowie der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der globale Designcheck bleibt ausschliesslich wegen der zwei unveraenderten Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Keine Fachlogik-, API-, Persistenz-, Schema- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Workspace und Ansichts-Snapshots im Graph vom 2026-08-22 (Phase-7-Praesentationskorrektur; ersetzt die Entfernung von `My Workspace only` aus dem Graph-Panel): - Unter den fachlichen Graph-Filtern steht wieder eine Checkbox `My Workspace`. Sie verwendet exakt den gemeinsamen `actionOnly`-/Reviewzustand aus Work und ist ohne markierte Findings wie die bestehende Work-Aktion deaktiviert; es gibt keine zweite Graph-Filterlogik. - Derselbe `ViewBookmarks`-Baustein wie in Work steht unmittelbar darunter zur Verfuegung. Anlegen, Benennen, Anwenden und Entfernen verwenden den bestehenden client- und timeslotgebundenen Speicherbereich; der Graph fuehrt keine eigene Snapshot-Persistenz ein. - Sieben fokussierte Graph-/Bookmarktests, 656 Standardtests, Local-only sowie der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Die Dummy-Browserpruefung bestaetigt Checkbox, Snapshot-Aktion und den ohne Speicherung wieder geschlossenen Benennungsdialog. Keine API-, Schema-, Persistenz- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Path Snapshots vom 2026-08-22 (Phase-7-Erweiterung; praezisiert die Graph-Snapshot-Semantik): - Die Graph-Aktion heisst `Path Snapshot` und ist nur mit mindestens einem gepinnten Knoten aktiv. Gespeichert werden alle gleichzeitig gepinnten Knoten sowie die eindeutige Menge ihrer direkt verbundenen Nachbarn; mehrere aktive Knoten heben alle ihre inzidenten Kanten gemeinsam rot hervor. - Normale Ansichts-Snapshots und Path Snapshots liegen im selben bestehenden client- und timeslotgebundenen Speicher und teilen sich dessen unveraenderte Obergrenze von sieben Eintraegen. Path Snapshots sind in der gemeinsamen Work-Liste rot umrandet. - Das Oeffnen eines Path Snapshots aus Work wendet zuerst den gespeicherten gemeinsamen View-Zustand an, wechselt in den Graphen und stellt alle noch vorhandenen aktiven Knoten wieder her. Fehlende Knoten werden konservativ ausgelassen; gespeicherte Nachbarschafts-IDs werden validiert und nicht als neue fachliche Beziehung interpretiert. - Elf fokussierte Tests und der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich. Der Gesamtlauf umfasst 658 bestandene Tests, 8 uebersprungene optionale PostgreSQL-Tests und eine erfolgreiche Local-only-Pruefung; der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Die Dummy-Browserpruefung bestaetigt deaktivierten Button ohne Auswahl, Aktivierung nach Pin, acht rote Direktpfade, Speicherung, rote Work-Umrandung und Wiederherstellung; der temporaere QA-Snapshot wurde anschliessend geloescht. Keine API-, Schema-, Backend- oder Datenmutation; Phase 7 bleibt abgeschlossen. CIS-CAT-Soll-/Verstossmarkierung vom 2026-08-22 (Phase-7-Praesentationskorrektur): - `Criterion` ist die vom CIS-CAT-Benchmark gelieferte konkrete Bestehens- beziehungsweise Sollbedingung der Regel, nicht bloss ein frei formulierter Verbesserungsvorschlag. Entsprechende Zeilen werden profilgesteuert gruen markiert. - Vom CIS-CAT-Quellbericht als tatsaechlich ausgewertet gekennzeichnete Istwertzeilen zeigen die gegen dieses Criterion gepruefte Abweichung und wechseln von der bisherigen blauen Evidenzfarbe auf Rot. Der besondere Informationshinweis `No matching system items were found.` bleibt entsprechend der frueheren Vorgabe blau. - Die Klassifikation liegt deklarativ im CIS-CAT-Profil und wird durch eine werkzeugneutrale Results-Zeilenrolle dargestellt; React enthaelt keine CIS-CAT-Parsinglogik. Originalwerte, Importmarker und Auswertungslogik bleiben unveraendert. - 47 fokussierte Results-/Profiltests, 660 Standardtests, Local-only und der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Die Dummy-Browserpruefung bestaetigt je eine Criterion- und Verstosszeile sowie getrennte Dark-/Light-Farben. Keine API-, Schema-, Persistenz- oder Datenmutation; Phase 7 bleibt abgeschlossen. Pathfinder-Bereichsname vom 2026-08-22 (Phase-7-Beschriftungskorrektur): - Der sichtbare Navigationsname `Graph` und die Bereichsueberschrift `MITRE Attack Paths` heissen einheitlich `Pathfinder`. Der interne stabile Bereichsschluessel `graph`, Komponenten-, CSS- und Persistenzbezeichner bleiben unveraendert. - Zwei fokussierte Beschriftungstests, 661 Standardtests, Local-only sowie der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Die Dummy-Browserpruefung bestaetigt Navigation, Ueberschrift und weiterhin sichtbaren Graphen. Keine Fachlogik-, API-, Schema-, Persistenz- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Gemeinsamer Source-Scan-Filter im Pathfinder vom 2026-08-22 (Phase-7-Filterkorrektur; ersetzt die Entfernung von `Source: Scan` aus dem Graph-Panel): - Der bisherige separate Quellblatt-Selector samt `Source`-Beschriftung ist aus dem Pathfinder entfernt. Stattdessen rendert das Panel wieder die bestehende dynamische Work-Facette `Source: Scan` mit Scanner, Scanzeitpunkt und Trefferzahl. - Work und Pathfinder verwenden damit denselben Facettenzustand und dieselbe Filterengine; es gibt keine lokale Source-Implementierung. Die fachlich notwendigen Scanner- und Timeslotgrenzen bleiben erhalten, waehrend technische Detailblaetter nicht mehr als primaere Quellenwahl angeboten werden. - Zwoelf fokussierte Graph-/Facettentests, 661 Standardtests, Local-only sowie der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Die Dummy-Browserpruefung bestaetigt genau eine Source-Scan-Facette mit fuenf Optionen, keinen separaten Quellselector und eine technische Knotenreduktion von 626 auf 466; anschliessend wurde auf `All` zurueckgesetzt. Keine API-, Schema-, Persistenz- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Getrennte Karten- und Textschalter im Pathfinder vom 2026-08-22 (Phase-7-Darstellungskorrektur): - `Labels On/Off` steuert ausschliesslich die Kacheln gepinnter Knoten; `Text On/Off` steuert unabhaengig davon die Beschriftungen neben den Punkten. Kacheln starten eingeschaltet, Punkttexte entsprechend der Nutzervorgabe ausgeschaltet. - Knotenauswahl, Kantenmarkierung, Filter, Zoom und Path Snapshots bleiben unveraendert. Die Dummy-Browserpruefung bestaetigt den Default `Labels On`/`Text Off`, eine Kachel nach Knotenklick, deren Entfernung durch `Labels Off` sowie 626 Punkttexte nach `Text On`; abschliessend wurden beide Schalter auf den Default zurueckgestellt. - Drei fokussierte Graph-Tests, 661 Standardtests, Local-only sowie der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Keine Fachlogik-, API-, Schema-, Persistenz- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Dynamische Filterspur im Pathfinder-Kopf vom 2026-08-22 (Phase-7-Darstellungskorrektur): - Rechts neben `Pathfinder` erscheint bei mindestens einem aktiven nutzergesteuerten Filter ein gelbes Rechtsdreieck und anschliessend die Bezeichnung des Filters samt Auswahl. Weitere Filter werden in Panelreihenfolge durch ein gelbes Plus getrennt. Ohne aktiven Filter wird die Spur vollstaendig ausgeblendet. - Die Spur leitet Suche, sichtbare dynamische Facetten, Mehrfachwerte, Wertebereiche und `My Workspace` aus dem bestehenden gemeinsamen AppProvider-Zustand ab. Der fuer den Graphen feste Deviation-Scope und im Pathfinder ausgeblendete technische Facetten werden nicht als Nutzerfilter ausgegeben. - Sieben fokussierte Pathfinder-/Kopfzeilentests, 663 Standardtests, Local-only sowie der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Die Dummy-Browserpruefung bestaetigt die leere Ausgangsspur, `Severity: Critical + Category: Account Security`, gelbe Marker mit `rgb(217, 150, 42)` und die direkte Platzierung rechts vom Titel; die Testfilter wurden zurueckgesetzt. Keine Fachlogik-, API-, Schema-, Persistenz- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Einheitliche Strukturknotenfarbe im Pathfinder vom 2026-08-22 (Phase-7-Farbkorrektur): - Alle bereits ringmarkierten Strukturrollen `Category`, `D3FEND`, `Target`, `Technique` und `Tactic` verwenden fuer Punkt, Ring und die optionale Rollenkachel den gemeinsamen Farbtoken `#9333EA`. Finding-Punkte bleiben davon getrennt und verwenden weiterhin ausschliesslich ihre Severity-Farbe. - Drei fokussierte Graph-Tests, 663 Standardtests, Local-only sowie der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Die Dummy-Browsermessung bestaetigt `rgb(147, 51, 234)` fuer 160 Kategorien, sechs D3FEND-Knoten, ein Target und sechs Taktiken sowie eine unveraenderte rote Critical-Severity am Finding; der konkrete Dummy-Stand enthielt keine Technik-Knoten. Keine Fachlogik-, API-, Schema-, Persistenz- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Proportionale Kachelskalierung und vollstaendige Kachelhoehe im Pathfinder vom 2026-08-22 (Phase-7-Darstellungskorrektur; ersetzt die zoomstabile Kachelentscheidung desselben Tages): - Finding- und Rollenkacheln verbleiben ohne inverse Zoomtransformation im Graph-Koordinatensystem und skalieren wieder proportional mit der Kamera. Bei der minimalen Zoomstufe `0.08` schrumpft die Finding-Kachel damit auf rund 19 mal 14 px und darf bewusst unlesbar werden; Punkttexte bleiben weiterhin getrennt zoomstabil. - Die logische Finding-Kachelhoehe steigt von 144 auf 176 px, damit Outcome, Kategorie, Severity, Weight und Score innerhalb der wiederverwendeten Matrixkachel vollstaendig Platz finden. Breite, Inhalt, Klickbedingung und Aktionen bleiben unveraendert. - Drei fokussierte Graph-Tests, 663 Standardtests, Local-only sowie der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Die Dummy-Browsermessung bestaetigt bei Fit 85,72 mal 62,86 px ohne vertikalen Overflow und bei maximalem Herauszoomen 19,20 mal 14,08 px; Auswahl und Zoom wurden anschliessend zurueckgesetzt. Keine Fachlogik-, API-, Schema-, Persistenz- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Path-Snapshot-Findingscope und Pathfinder-Zustandserhalt vom 2026-08-22 (Phase-7-Zustandskorrektur): - Die Auswahl eines Path Snapshots im Workbereich bleibt in Work und begrenzt die gemeinsame Finding-Pipeline temporaer auf die im Snapshot enthaltenen `finding:`-Knoten. Dieser Scope ist von Workspace-Markierungen und Reviews getrennt; Reset, ein regulaerer gespeicherter View sowie ein Daten- oder Timeslotwechsel entfernen ihn wieder. - Die Pathfinder-Ansicht bleibt beim Wechsel nach Work unsichtbar montiert. Kamera, angeheftete Positionen, aktive Punkte, Kacheln sowie Label- und Textschalter bleiben dadurch erhalten. Eine Rueckkehr fuehrt nur dann erneut ein Fit aus, wenn sich die Graphsignatur durch Daten oder Filter tatsaechlich geaendert hat. - 19 fokussierte Tests, 665 Standardtests und Local-only sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der vollstaendige Client-/Server-Produktionsbuild ist erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Die Dummy-Browserpruefung bestaetigt `Shown 1` im Workbereich fuer einen temporaeren Path Snapshot sowie eine exakt unveraenderte Kameratransformation, einen aktiven Punkt und eine sichtbare Kachel nach `Open in Work` und Rueckkehr. Der QA-Snapshot wurde geloescht und Work auf `Shown 453` zurueckgesetzt. Keine API-, Schema-, Persistenz- oder Fachdatenmutation; Phase 7 bleibt abgeschlossen. Wortstabile Rollenkacheln im Pathfinder vom 2026-08-22 (Phase-7-Darstellungskorrektur): - Die logische Breite ausgewaehlter Kategorie-, Taktik-, Technik-, D3FEND- und Zielkacheln steigt von 116 auf 148 px. Innerhalb einzelner Begriffe wird kein beliebiger Umbruch mehr erzwungen; mehrteilige lange Bezeichnungen koennen weiterhin an regulaeren Wortgrenzen auf bis zu zwei beziehungsweise drei Zeilen umbrechen. - Drei fokussierte Graph-Tests, 665 Standardtests und Local-only sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der vollstaendige Client-/Server-Produktionsbuild ist erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Keine API-, Schema-, Persistenz- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Einheitliche kompakte Pathfinder-Kacheln vom 2026-08-23 (Phase-7-Darstellungskorrektur; ersetzt die Pathfinder-Finding-Grundflaeche vom 2026-08-22): - Finding- und Rollenkacheln verwenden im Pathfinder dieselbe logische Grundflaeche von 148 mal 72 px. Die wiederverwendete Matrixkachel wird nur innerhalb des Pathfinder-Kontexts durch kleinere Innenabstaende, 18-px-Icon- und Aktionsspalten sowie eine einzeilig begrenzte Badgeleiste verdichtet; die regulaere Matrixdarstellung bleibt unveraendert. - Titel beider Pathfinder-Kacheltypen verwenden exakt 16 px und entsprechen damit der Schriftgroesse der Textbeschriftung neben den Graphpunkten. Proportionale Zoomskalierung, Klickbedingung und Finding-Aktionen bleiben erhalten. - Drei fokussierte Graph-Tests, 665 Standardtests und Local-only sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der vollstaendige Client-/Server-Produktionsbuild ist erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Keine API-, Schema-, Persistenz- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Clientname in allen Bereichs-Headern vom 2026-08-23 (Phase-7-Darstellungskorrektur): - Sobald ein aktiver Clientkontext besteht, zeigen Work, Pathfinder, Dashboard, Result DB, DB Structure und Data Hub den Clientnamen als reinen rechtsbuendigen 16-px-Text mit 16 px Abstand zum rechten Rand. Der Name besitzt weder Rahmen noch Hintergrund und wird bei Platzmangel einzeilig mit Ellipsis gekuerzt. - Der Data-Hub-Detailkopf erhaelt den Namen direkt aus dem dort geoeffneten Clientformular, auch wenn dieser Client noch nicht als Work-Kontext geladen wurde. Beim Verlassen des Details faellt der Kopf wieder auf den aktiven Work-Client zurueck; ohne Clientkontext bleibt die Stelle leer. - Drei fokussierte Header-Tests, 666 Standardtests und Local-only sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der vollstaendige Client-/Server-Produktionsbuild ist erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Keine API-, Schema-, Persistenz- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Sichtbar zoomstabile Pathfinder-Kacheltypografie vom 2026-08-23 (Phase-7-Darstellungskorrektur; praezisiert die 16-px-Regel desselben Tages): - Die 16-px-Vorgabe bezieht sich auf die tatsaechlich am Bildschirm sichtbare Titelgroesse der Punktbeschriftung, nicht nur auf den logischen CSS-Wert innerhalb der zoomenden SVG-Kamera. Der komplette Kachel-UI-Inhalt wird daher invers zur aktuellen Kamera skaliert. - Titel, Hexagon, Bookmark-/Result-Aktionen, Badges, Abstaende und Konturen bleiben beim Hineinzoomen visuell kompakt. Die 148-mal-72-px-Kachelflaeche selbst bleibt weiterhin proportional an den Graphzoom gebunden; ihre innere Layoutflaeche wird passend zur Kamera erweitert, sodass die kompensierte UI die Kachel korrekt ausnutzt. - Drei fokussierte Graph-Tests, 666 Standardtests und Local-only sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der vollstaendige Client-/Server-Produktionsbuild ist erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Keine API-, Schema-, Persistenz- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Verbindlicher 20-px-Panel-Inset vom 2026-08-23 (Phase-7-Designsystemkorrektur): - Work ist die verbindliche Referenz fuer den Abstand zwischen dem Aussenrand eines abgerundeten Hauptpanels und seinem Inhalt: 20 px auf allen vier Seiten. `--panel-content-inset: 20px` ist der kanonische Token; `--panel-inset` bleibt als Kompatibilitaetsalias bestehen. - Jede Ansicht wendet den Inset genau einmal auf ihrem Root-Inhaltscontainer an. Work-Kacheln, Treffer-/Leseransicht, Tabelle und Rohdaten, Datahub, Dashboard, DB Structure, Result DB, Client-Detail und Pathfinder verwenden denselben Wert. Split-Panes liegen innerhalb dieses Insets und erzeugen keinen zweiten Aussenabstand. - Responsive Breakpoints reduzieren den Aussenabstand nicht mehr. Die Regel ist zusaetzlich in `AGENTS.md` als verbindliche Vorgabe fuer alle kuenftigen Hauptpanels dokumentiert; lokale Ersatzwerte sind ohne ausdrueckliche Nutzerkorrektur unzulaessig. - Acht fokussierte Panel-/Graph-/Datahub-Tests, 669 Standardtests und Local-only sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Der vollstaendige Client-/Server-Produktionsbuild ist erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der zwei vorbestehenden Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot. Keine API-, Schema-, Persistenz- oder Datenaenderung; Phase 7 bleibt abgeschlossen. Verifizierte Datahub-Darstellungsnachschaerfung vom 2026-08-22: - Die regulaeren Bereichsbezeichnungen im gemeinsamen Anwendungskopf bewahren ihre normale Schreibweise und verwenden ansichtsuebergreifend exakt die Typografie des grossen Mandantentitels: 54 px, Semibold, Zeilenhoehe 1,15 und Laufweite -0,04 em. Die zentrale Regel umfasst Datahub, DB Structure, Dashboard, MITRE Attack Paths und Result DB; der funktionale Work-Kopf bleibt unveraendert. - Alle Mandantenkacheln einschliesslich der Plus-Kachel verwenden denselben Hover-/Tastaturfokuseffekt wie die Kacheln der Matrixansicht: staerkere Kontur, Hoverflaeche, angehobener Schatten und 2 px Hub mit derselben 120-ms-Transition. Bei angeforderter reduzierter Bewegung entfaellt der Hub; Auswahlumrandung und Klicksemantik bleiben erhalten. - Die sechs kanonisch gespeisten Statusdiagramme stehen vor der Mandantenauswahl. Darunter erscheinen ausschliesslich persistierte Mandanten als Karten im verbindlichen Donut-Kacheldesign, jedoch ohne Diagramm, sowie genau eine gleichartige dezente Plus-Kachel zum Anlegen eines Mandanten; kuenstliche `Empty`-Slots entfallen. - Ein Klick waehlt genau einen Mandanten. Nur seine Karte ist umrandet und zeigt rechts oben `Show`; die Aktion oeffnet die bestehende Mandantenansicht. Die Diagramme lesen den neuesten scannergebundenen Timeslot dieses Mandanten, waehrend Mandanten ohne Scanbestand ausgewaehlt werden koennen und Nullwerte zeigen. - Vier fokussierte Datahub-Suites mit 11 synthetischen Tests sowie der Gesamtlauf mit 620 bestandenen Tests und 8 uebersprungenen optionalen PostgreSQL-Tests sind erfolgreich. Local-only-, Designpruefung und Client-/Server-Produktionsbuild sind gruen. Die inhaltsarme Browserpruefung bestaetigt genau eine Auswahl, einen `Show`-Button, keine Platzhalter, eine Plus-Kachel, Diagrammwechsel und die Navigation zur Mandantenansicht. App und Backend wurden nach einem abgestuerzten Vite-Dateiwatcher kontrolliert neu gestartet. Verifizierter Bearbeitungsschutz fuer Mandantenstammdaten vom 2026-08-22: - Bestehende Mandanten oeffnen mit schreibgeschuetzten Feldern fuer Name, Consultant und Remarks. Ein als `Edit client data` beschrifteter, rahmenloser Stift steht unmittelbar hinter `Master Data · Client Data` und aktiviert den Bearbeitungsmodus; erst dann erscheint die Speicheraktion. Auch ein programmgesteuertes Formular-Submit wird vor der Aktivierung abgewiesen. - Neu angelegte Mandanten bleiben unmittelbar editierbar. Nach erfolgreichem Speichern, beim Loeschen des aktuell geoeffneten Mandanten und beim Zurueckkehren zur Uebersicht wird der Bearbeitungsmodus zurueckgesetzt. - `Import Data` und `GPO Backup Folder` stehen in jeder bestehenden Mandantenansicht zur Verfuegung, auch wenn noch kein Assessment beziehungsweise Timeslot existiert. Die bestehende optionale Assessment-Zuordnung bleibt erhalten: Ein normaler Dateiimport erzeugt ohne Ziel-ID den ersten Timeslot, ein GPO-Backup wird ohne Ziel-ID zunaechst dem Mandanten zugeordnet. - Der grosse Mandantentitel besitzt eine erhoehte Zeilenhoehe und zusaetzlichen unteren Innenabstand, damit Glyphen und Unterlaengen trotz der weiterhin einzeiligen Ellipsendarstellung nicht am unteren Rand abgeschnitten werden. - Die Trennlinie zwischen Mandantenkopf und Aktionszeile sowie die untere Abschlusslinie der Aktionszeile entfallen; der gesamte Kopf-/Aktionsbereich bleibt ohne horizontale Linien. - Der Ruecksprung aus der Mandantenansicht besteht aus einem vergroesserten 28-px-Dreieck und der sichtbaren Beschriftung `Back`. Symbol und Text liegen innerhalb derselben Schaltflaeche und sind gemeinsam per Maus und Tastatur bedienbar. - Die Datahub-Scrollflaeche reserviert ihren vertikalen Scrollbar-Gutter dauerhaft. Das Auf- und Zuklappen laengerer Bereiche wie `Imported Security Baselines` aendert dadurch nicht mehr die nutzbare Inhaltsbreite und verschiebt die zentrierte Anzeige nicht horizontal. - `Imported Security Baselines` startet standardmaessig eingeklappt; Zaehler und Upload-Aktion bleiben in der geschlossenen Kopfzeile sichtbar. - Zwei fokussierte Datahub-Suites mit vier synthetischen Tests sowie der Gesamtlauf mit 620 bestandenen Tests und 8 uebersprungenen optionalen PostgreSQL-Tests sind erfolgreich. Local-only-, Designpruefung und Client-/Server-Produktionsbuild sind gruen. Die inhaltsarme Browserpruefung bestaetigt drei schreibgeschuetzte Felder und keine Speicheraktion vor dem Stiftklick sowie drei editierbare Felder und genau eine Speicheraktion danach; die Pruefung kehrte ohne Speichern zur Uebersicht zurueck. Verifizierter Timeslot-Auswahlworkflow vom 2026-08-22 (Phase 7/8/12-Nachschaerfung): - Beim Oeffnen einer Mandantendetailansicht ist der chronologisch neueste vorhandene Timeslot vorausgewaehlt und zugleich aktiver Zielstand. Eine anschliessende bewusste Abwahl bleibt moeglich. - Ausgewaehlte Timeslots tragen ihre zielgebundenen Aktionen direkt in der Datumszeile: `Delete`, `Import Scan` und `Import GPO Backup Folder (Zip)`. Beide Importe uebergeben die Assessment-ID genau dieses Slots. Der bestehende Mandanten-Delete bleibt unveraendert in der Mandantenaktionsleiste. - Timeslot-Delete ist ein eigener bestaetigungspflichtiger Assessment-DELETE-Pfad durch UI, Same-Origin-API sowie Local- und PostgreSQL-Repository. Er entfernt den bestaetigten Assessment-Stand mit zugeordneten Scan-, GPO-, Finding-, Evidenz- und Mappingdaten, bewahrt aber Mandant und andere Timeslots. Keine SQL-Migration erforderlich. - Der Timeslot-Bereich der Mandantenansicht besitzt oberhalb der geschlossenen Datumszeilen die eindeutige sichtbare Ueberschrift `Timeslots` in der groessten regulaeren UI-Titelgroesse. Die Auswahlzusammenfassung darunter ist rahmenlos und verwendet die regulaere UI-Textgroesse; Auswahl-, Tabellen- und Plus-Workflow bleiben unveraendert. - Die bisherige `Scan History · Linked Scan Reports` der Mandantenansicht ist eine standardmaessig geschlossene Timeslot-Tabelle. Jede Zeile repraesentiert den fachlichen Assessment-Stichtag und fasst Quellen, Scanberichte, Dateien, Formate, Groesse und Importzeit zusammen; bestehende ScanRun-Loeschaktionen bleiben je Bericht erhalten. - Ein rahmenloses Plus in der Timeslot-Kopfzeile oeffnet einen kleinen Datumsdialog. Der bestaetigte Wert erzeugt ueber die vorhandene Assessment-API einen leeren `Assessment`-Timeslot mit `effectiveAt`, waehlt ihn als Importziel aus und veraendert weder Scanner- noch GPO-Importlogik. - Checkboxen erlauben eine oder mehrere Timeslot-Auswahlen. `Open` bleibt ohne verwertbaren Stand gesperrt. Bei genau einem Stand werden dessen Scannerlaeufe geoeffnet; ab zwei Staenden wird ausschliesslich die Schnittmenge sicher erkannter Scannerwerkzeuge ueber alle gewaehlten Timeslots projiziert. `generic`, `unknown` und `multiple` werden nicht automatisch gleichgesetzt. GPO wird als getrennte Assessment-Quelle in der Schnittmenge gefuehrt und bei fehlender Abdeckung ausgeschlossen, niemals als kuenstlicher ScanRun vermischt. - Die Auswahlzeile weist Anzahl gemeinsamer und ausgeschlossener Quellen aus. Ein synthetischer Kreuzfall bestaetigt, dass gemeinsames PingCastle erhalten bleibt, waehrend nur einseitiges CIS-CAT und GPO ausgeschlossen werden. Drei fokussierte Suites mit 12 Tests, die Gesamtsuite mit 621 bestandenen Tests und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only-/Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Die inhaltsarme Browserpruefung bestaetigt geschlossenen Default, Plus-/Datumsdialog, abbruchfreie Rueckkehr, Checkboxen und die zustandsabhaengige Open-Freigabe ohne Datenmutation. Umgesetzte Mandantendetail-Master-Detail-Ansicht vom 2026-08-22 (Phase 7/8/12-Nachschaerfung): - Die ausdruecklich ausgewaehlte Work-/Reports-Referenz ersetzt den zentrierten gestapelten 1180-px-Aufbau des Mandantendetails. Die Ansicht nutzt die gesamte Datahub-Arbeitsflaeche als 44/56-Master-Detail-Raster: links Mandantenkopf und eine unabhaengig scrollende Timeslotliste, rechts die read-first Mandanteninformation. - Jeder persistierte Timeslot bleibt eine auswählbare Assessment-Einheit und kann im linken Navigator aufgeklappt werden. Darunter erscheinen ausschliesslich seine persistierten ScanRuns mit Werkzeugname und vorhandener Importmetadaten-Zusammenfassung; Beispielnamen und kuenstliche Timeslots werden nicht erzeugt. Timeslot-Delete, zielgebundener Scan-/GPO-Import und ScanRun-Delete verwenden unveraendert ihre bestaetigten bestehenden Pfade. - ScanRuns eines ausgewaehlten Timeslots sind einzeln an- und abwaehlbar. Der lokale Ausschlusszustand veraendert keine Persistenz und wirkt nur auf `Open`; neue Importe bleiben standardmaessig eingeschlossen. Bei mehreren Timeslots wird die bestehende sichere Werkzeug-Schnittmenge weiterhin erst nach dieser Auswahl gebildet. - Name, Consultant und Remarks bleiben bis zum Stiftklick schreibgeschuetzt; Save erscheint nur im Bearbeitungsmodus. `Open` steht im Informationskopf, waehrend der bestaetigungspflichtige Mandanten-Delete getrennt am unteren Rand der Informationsseite liegt. Auf kleinen Viewports stapeln sich Navigator und Information ohne neue Fachfunktion. - Drei fokussierte Strukturregressionen und die Gesamtsuite mit 631 bestandenen Tests sowie 8 uebersprungenen optionalen PostgreSQL-Tests sind gruen; Local-only-Pruefung und Client-/Server-Produktionsbuild sind erfolgreich. Die inhaltsarme Browserpruefung bestaetigt 44/56-Spalten, buendige Gesamtbreite, unabhaengiges Scrollen, vorhandene Edit-/Timeslot-/Open-Controls und eine wirksame Scan-Abwahl ohne Laufzeitfehler. Der globale Designcheck bleibt ausschliesslich wegen der bereits dokumentierten, unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot; die neue Mandantendetail-CSS fuehrt keine zusaetzliche Verletzung ein. Nachgeschaerfte Mandantendetail-Geometrie vom 2026-08-22 (Phase 7-Praesentationskorrektur): - Die Nutzerkorrektur ersetzt das unmittelbar zuvor umgesetzte proportionale 44/56-Raster. Der Timeslot-/ScanRun-Navigator verwendet nun exakt die verbindliche Work-/Reports-Listenbreite `clamp(420px, 27vw, 520px)`; die rechte Arbeitsflaeche darf ungenutzt bleiben. - Die Mandanteninformation ist eine links ausgerichtete, transparente Reader-Dokumentflaeche mit maximal 794 px Breite und ohne Aussenrahmen, Kartenhintergrund oder Labelkaesten. Kopf, read-first Werte und Mandanten-Delete folgen dem Work-Finding-Muster aus Abschnittsueberschrift, Fliesstext und feinem horizontalem Trenner; erst der ausdrueckliche Editzustand zeigt notwendige Eingaberahmen. - Die Timeslotliste uebernimmt zusaetzlich die flache Work-Listenlogik: App-Hintergrund, rahmenlose Eintraege, eingerueckte Haarlinientrenner und bestehender Auswahlmarker statt umrandeter Karten. Drei fokussierte Strukturregressionen und die Gesamtsuite mit 631 bestandenen Tests sowie 8 uebersprungenen optionalen PostgreSQL-Tests sind gruen; Local-only-Pruefung und Client-/Server-Produktionsbuild sind erfolgreich. Die inhaltsarme Browserpruefung misst bei 2560 px Viewport 520 px Navigator und 794 px transparente, rahmenlose Dokumentflaeche; die Timeslotliste bleibt unabhaengig scrollbar. Der globale Designcheck bleibt ausschliesslich wegen der bereits dokumentierten, unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine API-, Persistenz-, Schema- oder Fachfunktionsaenderung; Phase 7/8/12-Status bleibt abgeschlossen. Finale visuelle Mandantendetail-Korrektur vom 2026-08-22 (Phase 7-Praesentationskorrektur): - Eine noch wirksame zweispaltige Altregel des Stammdatenformulars ist im Mandantendetail explizit auf eine Spalte zurueckgesetzt. Im Lesemodus werden Name, Consultant und Remarks nicht mehr als schreibgeschuetzte Inputs, sondern als echte vertikale Dokumentabschnitte mit neutraler Ueberschrift, 16-px-Werttext und Haarlinientrenner gerendert; Inputs erscheinen erst nach dem Stiftklick. - Das Violett ist aus den Auswahlrollen dieser Ansicht entfernt: Timeslot- und ScanRun-Checkboxen verwenden Bernstein, die ausgewaehlte Timeslotzeile eine neutrale Hoverflaeche und der linke Auswahlmarker den bernsteinfarbenen Aktivton. `Import Scan` und `Import GPO Backup Folder (Zip)` sind gleichrangige gelbe Primaeraktionen; Delete bleibt neutral. - Drei fokussierte Strukturregressionen und 631 Standardtests sind gruen, 8 optionale PostgreSQL-Tests uebersprungen; Local-only und Client-/Server-Produktionsbuild sind erfolgreich. Die inhaltsarme Browserpruefung bestaetigt drei vertikale 794-px-Dokumentabschnitte, neutrale Label, bernsteinfarbene Checkboxen, neutrale Auswahlflaeche und zwei identisch gelbe Importbuttons. Der globale Designcheck bleibt ausschliesslich an den unveraenderten dokumentierten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine API-, Persistenz-, Schema- oder Fachfunktionsaenderung. Umgesetzte ScanRun-Readiness-Tabelle vom 2026-08-22 (Phase 7/12-Nachschaerfung): - Die aufgeklappte Timeslot-Tabelle uebernimmt das Baseline-Muster als kompaktes Fuenfspaltenraster `Auswahl | Scan | Imported | Status | Actions`. Die Groesse entfaellt zugunsten des fachlich wichtigeren Status. Jede Zeile besitzt einen ausgeschriebenen `Delete`-Button; Papierkorb-Icons sind aus ScanRun- und Mandanten-Delete entfernt und durch eine Strukturregression ausgeschlossen. - Der Status beruht nicht auf dem blossen Uploadnachweis. `Recognized` verlangt einen persistierten ScanRun, kanonische Finding-Occurrences dieses Runs und ein spezifisch erkanntes Werkzeugprofil. `Generic` bezeichnet darstellbare kanonische Work-Daten ohne spezifisches Profil. `Not viewable` bedeutet, dass der Upload zwar gespeichert ist, aber keine Work-darstellbaren Records erzeugt hat; `Unavailable` bezeichnet ausschliesslich einen fehlgeschlagenen Readiness-Abruf. - Nur `Recognized` und `Generic` sind fuer `Open` auswaehlbar. Checking, Not viewable und Unavailable deaktivieren die Zeilencheckbox und werden bereits vor Einzel- oder Mehrfach-Timeslot-Projektion aus der Runmenge entfernt. Damit fuehrt ein gespeicherter, aber leer projizierter Excel-Import nicht mehr still in eine leere Work-Ansicht. - Zwei fokussierte Suites mit 5 Tests und die Gesamtsuite mit 633 bestandenen Tests sowie 8 uebersprungenen optionalen PostgreSQL-Tests sind gruen; Local-only und Client-/Server-Produktionsbuild sind erfolgreich. Die inhaltsarme Browserpruefung bestaetigt fuenf Spalten ohne horizontalen Ueberlauf, vier technisch als `recognized` bewertete Runs, vier Text-Delete-Buttons, keine Delete-SVGs und keinen Papierkorbpfad. Der globale Designcheck bleibt ausschliesslich an den unveraenderten dokumentierten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine API-, Persistenz- oder Schemaaenderung. Kontextabhaengiger Data-Hub-Kopf vom 2026-08-22 (Phase-7-Praesentationskorrektur): - Die grosse Bereichsueberschrift lautet in der Data-Hub-Hauptansicht `Data Hub`. Sobald Neuanlage oder bestehende Mandantendetails geoeffnet sind, meldet die Detailkomponente ihren vorhandenen Formzustand an die Shell und die Ueberschrift wechselt auf `Client`. `Back` sowie das Verlassen des Bereichs setzen den Shellzustand wieder auf `Data Hub`. - Ein fokussierter Regressionstest, 634 bestandene Standardtests und 8 uebersprungene optionale PostgreSQL-Tests sowie Local-only und Client-/Serverbuild sind erfolgreich. Die inhaltsarme Browserpruefung bestaetigt `Data Hub -> Client -> Data Hub` parallel zu `Uebersicht -> Detail -> Uebersicht`. Der globale Designcheck bleibt ausschliesslich an den zwei unveraenderten dokumentierten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine Daten-, API-, Persistenz- oder Schemaaenderung. Entdoppelter Mandantenname vom 2026-08-22 (Phase-7-Praesentationskorrektur): - Der Mandantenname erscheint im Lesemodus ausschliesslich links oberhalb der Timeslots und nicht erneut als Abschnitt der rechten Client-Information. Beim Stiftklick beziehungsweise bei einer Neuanlage wird exakt dieser linke Titel zum erforderlichen Namenseingabefeld; das Feld bleibt ueber `form="tenant-editor-form"` Teil des unveraenderten Save-Workflows. Rechts verbleiben Consultant und Remarks. - Zwei fokussierte Suites mit 4 Tests, 634 bestandene Standardtests und 8 uebersprungene optionale PostgreSQL-Tests sowie Local-only und Client-/Serverbuild sind erfolgreich. Die inhaltsarme Browserpruefung bestaetigt zwei rechte Abschnitte, kein rechtes Namenslabel, einen linken Lesetitel und nach Edit genau ein erforderliches linkes Namensfeld plus Save. Der bekannte Designcheck-Befund bleibt unveraendert auf `datahub-redesign.css` Zeilen 39 und 42 begrenzt. Keine Daten-, API-, Persistenz- oder Schemaaenderung. Vertikale Stammdatenhierarchie vom 2026-08-22 (Phase-7-Praesentationskorrektur; ersetzt die unmittelbar vorherige Entdoppelungsentscheidung): - Die neueste Nutzerkorrektur stellt `Name` in der rechten Client-Information wieder her. `Name`, `Consultant` und `Remarks` bilden dort jeweils eine vertikale Dokumentzeile: kompakte 14-px-Bezeichnung, direkt darunter der linksbuendige 16-px-Wert. Der linke Identitaetskopf bleibt eine reine Anzeige und wird im Editmodus nicht mehr zum Formularfeld. - Zwei fokussierte Suites mit 4 Tests sind erfolgreich. Die inhaltsarme Browsergeometrie bestaetigt drei Abschnitte, identische linke Kanten, Werte unterhalb der Labels, 14/16-px-Hierarchie sowie `justify-self: start` und `text-align: left`. Die Gesamtsuite umfasst 634 bestandene Tests und 8 uebersprungene optionale PostgreSQL-Tests; Local-only ist erfolgreich. Der globale Designcheck bleibt ausschliesslich an den unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Client-/Server-Produktionsbuild ist erfolgreich. Keine Daten-, API-, Persistenz- oder Schemaaenderung. Client-Delete als Textbutton vom 2026-08-22 (Phase-7-Praesentationskorrektur): - Die rechte Mandantenaktion ist ein normaler umrandeter `Delete client`-Button mit destruktivem Hoverzustand. Sie enthaelt weder Papierkorb-SVG noch Bild, Iconklasse oder Pseudoelement und folgt damit derselben verbindlichen Textbuttonregel wie Scan- und Baseline-Loeschaktionen. - Der fokussierte Strukturtest mit 3 Tests, 634 bestandene Standardtests und 8 uebersprungene optionale PostgreSQL-Tests sowie Local-only und Client-/Serverbuild sind erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine Daten-, API-, Persistenz- oder Schemaaenderung. Eingeklappte Timeslot-Standardansicht vom 2026-08-22 (Phase-7-Praesentationskorrektur): - Beim Oeffnen eines bestehenden Mandanten bleiben alle Timeslot-Details standardmaessig geschlossen. Die bisherige Vorauswahl des neuesten Timeslots bleibt bewusst erhalten und ist weiterhin am Checkboxzustand sichtbar; nur die ScanRun-Tabelle wird nicht automatisch eingeblendet. Manuelles Auf- und Einklappen sowie Auswahl-, Import-, Open- und Delete-Workflows bleiben unveraendert. - Der fokussierte Strukturtest mit 3 Tests, 634 bestandene Standardtests und 8 uebersprungene optionale PostgreSQL-Tests sowie Local-only und Client-/Serverbuild sind erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine Daten-, API-, Persistenz- oder Schemaaenderung. Nachgeschaerftes ScanRun-Spaltenraster vom 2026-08-22 (Phase-7-Praesentationskorrektur): - Der Scannername behaelt seine 16-px-Inhaltstypografie. Die rein beschreibende Datei-/Format-Metazeile darunter verwendet nun die kompaktere Labelgroesse. Zugleich wird die Scan-Spalte auf eine feste sinnvolle Mindestbreite begrenzt und die Imported-Spalte von 104 auf 136 px erweitert; damit beginnt der Importzeitpunkt weiter links und besitzt mehr Raum fuer Datum und Uhrzeit, ohne Status oder Delete zu veraendern. - Der fokussierte Strukturtest mit 3 Tests, 634 bestandene Standardtests und 8 uebersprungene optionale PostgreSQL-Tests sowie Local-only und Client-/Serverbuild sind erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine Daten-, API-, Persistenz- oder Schemaaenderung. Vollbreites Remarks-Langtextfeld vom 2026-08-22 (Phase-7-Praesentationskorrektur): - Im Bearbeitungsmodus nutzt das Remarks-Textarea die gesamte Breite der maximal 794 px breiten Client-Dokumentflaeche. Die deklarierte Zeilenzahl steigt von 5 auf 10 und die Mindesthoehe von vier auf acht zentrale 32-px-Rastereinheiten; vertikales manuelles Vergroessern bleibt moeglich. Name und Consultant behalten ihre kompakten einzeiligen Eingaben. - Der fokussierte Strukturtest mit 3 Tests, 634 bestandene Standardtests und 8 uebersprungene optionale PostgreSQL-Tests sowie Local-only und Client-/Serverbuild sind erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine Daten-, API-, Persistenz- oder Schemaaenderung. Excel-artige Result-Spaltenbreiten vom 2026-08-22 (Phase-7-Praesentationsfunktion): - Ausschliesslich im maximierten Result tragen alle gemeinsamen `rich-text-table`-Tabellen greifbare Spaltentrenner zwischen den Kopfzellen. Pointer-Ziehen veraendert die jeweils links liegende Spaltenbreite; Doppelklick misst den laengsten ungebrochenen Inhalt der Spalte und passt sie innerhalb sicherer 72-/720-px-Grenzen an. Nach einer manuellen Anpassung darf die Tabelle breiter als das Fenster werden und bleibt ueber ihren vorhandenen horizontalen Scrollcontainer erreichbar. - Derselbe wiederverwendbare React-Baustein versorgt verknuepfte Ergebnisblaetter und Markdown-Ergebnistabellen. Normal grosse Result-Fenster erhalten weder Griffe noch veraenderte Tabellenbreiten. Die Trenner sind als vertikale Separatoren fokussierbar; Pfeiltasten verschieben in 16-px-Schritten, Enter fuehrt Auto-Fit aus. Die Breiten sind reiner lokaler UI-Zustand und veraendern keine importierten oder persistierten Werte. - Drei fokussierte Suites mit 28 Tests und die Gesamtsuite mit 637 bestandenen Tests sowie 8 uebersprungenen optionalen PostgreSQL-Tests sind gruen; Local-only und Client-/Server-Produktionsbuild sind erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine Import-, API-, Persistenz- oder Schemaaenderung. Spaltenbreiten in allen frei stehenden Results vom 2026-08-22 (Phase-7-Praesentationskorrektur): - Die neuere Nutzervorgabe erweitert die Spaltengriffe vom ausschliesslich maximierten Zustand auf jede frei stehende Result-Variante. Herausgezogene, normal grosse, manuell skalierte und maximierte Fenster erlauben Pointer-Ziehen, Doppelklick-Auto-Fit und die vorhandene Tastaturbedienung. - Nur ein weiterhin im Findings-Cluster eingereihtes Result sowie dessen minimierte Slots bleiben ohne Spaltengriffe. Die Freigabe folgt damit nicht der Fenstergroesse, sondern der bestehenden Clusterzugehoerigkeit; das Herausziehen oder Fensterskalieren loest bereits ueber den vorhandenen `detached`-Zustand aus dem Cluster. - Drei fokussierte Suites mit 32 Tests und die Gesamtsuite mit 640 bestandenen Tests sowie 8 uebersprungenen optionalen PostgreSQL-Tests sind gruen; Local-only und Client-/Server-Produktionsbuild sind erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Kompakte Ausgangsbreite maximierter Result-Tabellen vom 2026-08-22 (Phase-7-Praesentationskorrektur): - Ein maximiertes Result vergroessert nur die Arbeitsflaeche, nicht mehr automatisch jede enthaltene Tabelle. Vor einer manuellen Spaltenanpassung folgt die Tabelle ihrer ungebrochenen intrinsischen Inhaltsbreite und bleibt links ausgerichtet; sie wird nicht auf die volle Fensterbreite gestreckt. - Tabellen, deren notwendige Breite den sichtbaren Bereich ueberschreitet, bleiben ueber den vorhandenen horizontalen Scrollcontainer erreichbar. Nach einer manuellen Breitenanpassung gilt weiterhin die explizite Nutzerbreite statt der kompakten Ausgangsregel. - Zwei fokussierte Suites mit 27 Tests und die Gesamtsuite mit 642 bestandenen Tests sowie 8 uebersprungenen optionalen PostgreSQL-Tests sind gruen; Local-only und Client-/Server-Produktionsbuild sind erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine Import-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Nicht abschneidbarer Work-Kopf vom 2026-08-22 (Phase-7-Praesentationskorrektur): - Die erste Work-Kopfzeile schuetzt Buttons und gruppierte Controls vor Flex-Schrumpfung: `My Workspace` besitzt eine einzeilige Mindestbreite, View-Tabs sowie Actionlist-Exportgruppe behalten ihre Inhaltsbreite und sichtbaren Aussenkanten. Wenn der Viewport ausnahmsweise schmaler als die vollstaendige Werkzeugleiste ist, bleibt die Zeile horizontal erreichbar, statt Controls innerhalb des statischen Kopfes unsichtbar abzuschneiden. - Die Profil- und Datenprojektion fuer dynamische Filter ist unveraendert; Maester zeigt weiterhin nur seine tatsaechlich angebotenen Facetten, umfangreichere Werkzeuge entsprechend mehr. Zwei fokussierte Layouttests sichern sowohl die Nicht-Schrumpfregeln als auch den unveraenderten `SearchFilterBar`-Pfad. - Die Gesamtsuite umfasst 639 bestandene Tests und 8 uebersprungene optionale PostgreSQL-Tests; Local-only und Client-/Server-Produktionsbuild sind erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine Filter-, Import-, API-, Persistenz- oder Schemaaenderung. Neu geordnete Client-Aktionen vom 2026-08-22 (Phase-7-Praesentationskorrektur): - `Open` steht nun im oberen rechten Bereich des linken Timeslot-Navigatorkopfs neben `Back` und damit unmittelbar bei der Auswahl, auf die die Aktion wirkt. Im Lesemodus stehen im rechten Client-Information-Kopf `Delete client` und rechts daneben der gelbe `Edit`-Button. Sobald die Bearbeitung aktiv ist, verschwinden beide und nur `Save` nimmt die bisherige Edit-Position ein; Edit, Save und Delete besitzen dieselbe Mindestbreite. - Der bisherige Bleistift neben `Client Information` und der separate Delete-Bereich am Dokumentende sind entfernt. Die bestaetigungspflichtige Loeschlogik, Open-Auswahlgrenzen und Stammdaten-Speicherlogik bleiben unveraendert. - Vier fokussierte UI-Tests sowie die Gesamtsuite mit 639 bestandenen Tests und 8 uebersprungenen optionalen PostgreSQL-Tests sind gruen; Local-only und Client-/Server-Produktionsbuild sind erfolgreich. Der globale Designcheck bleibt ausschliesslich wegen der unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine Fachlogik-, API-, Persistenz- oder Schemaaenderung; Phase 7 bleibt abgeschlossen. Direkte Work-Timeslot-Auswahl vom 2026-08-22 (Phase-7-Praesentationsfunktion): - Rechts neben der bestehenden Blatt-/Client-Auswahl im Work-Kopf steht nun ein eigener Timeslot-Selector. Er bietet ausschliesslich die im aktiven Mandanten persistierten Assessment-Stichtage sowie `All timeslots` an; ein ausgewaehlter Stichtag laedt ueber den bestehenden `openProject`-Pfad genau die zugeordneten ScanRuns, die Gesamtauswahl weiterhin die vollstaendige Mandantenhistorie. - Die Optionen werden ueber die vorhandene Same-Origin-API aus Assessment-Historie und Importdateiliste abgeleitet. Import-, Mapping-, Filter-, Persistenz- und Schemalogik bleiben unveraendert; nach Datahub-Aenderungen wird die Liste ueber das bestehende Aenderungsereignis aktualisiert. - Drei fokussierte UI-Tests, die Local-only-Sicherheitspruefung und der Client-/Server-Produktionsbuild sind erfolgreich. Der Gesamtlauf erreichte 639 bestandene Tests und 8 uebersprungene optionale PostgreSQL-Tests; ein unabhaengiger Result-Fenster-Rendervertrag schlug in diesem Lauf einmal fehl und bestand direkt anschliessend isoliert gemeinsam mit seinen Abhaengigkeiten (16 von 16). Der globale Designcheck bleibt ausschliesslich wegen der unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Phase 7 bleibt abgeschlossen. Direktes Client-Open aus der DataHub-Uebersicht vom 2026-08-22 (Phase-7-Navigationskorrektur): - Jede reale Client-Karte besitzt unten rechts eine gelbe `Open`-Aktion. Sie oeffnet ohne vorherige Kartenauswahl den neuesten scannergebundenen Timeslot samt seiner vollstaendigen ScanRun-Menge ueber den bestehenden Work-Pfad. Die obere `Manage`-Aktion bleibt getrennt und oeffnet weiterhin die Stammdaten-/Timeslotverwaltung. - Bei einem Client ohne scannergebundenen Timeslot bleibt `Open` sichtbar, aber mit erklaerendem Titel deaktiviert. Vier fokussierte DataHub-Tests und der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich; keine API-, Persistenz-, Schema- oder Datenänderung. Phase 7 bleibt abgeschlossen. Vier-Quadrate-Fortschrittsindikator vom 2026-08-22 (Phase-7-Praesentationskorrektur): - Fortschritts-Pop-ups des Importworkflows verwenden keinen rotierenden Kreis mehr. Vier kleine Quadrate liegen oben, rechts, unten und links auf einer gedachten Kreisbahn; genau eine rote Markierung wird schrittweise im Uhrzeigersinn weitergeschaltet. - Der vorhandene Statuscontainer und seine Texte bleiben unveraendert. Bei systemweit reduzierter Bewegung stoppt die Animation und zeigt einen statischen roten Zustand. Fuenf fokussierte Tests und der Client-/Server-Produktionsbuild sind erfolgreich; keine Import-, API-, Persistenz- oder Schemaaenderung. Rahmenloser Duplicate-Hinweis vom 2026-08-22 (Phase-7-Praesentationskorrektur): - Die Dateivorschau im Import-Bestaetigungsdialog verwendet keine umrandeten Karten oder Statuspills mehr. Checkbox, Dateiinformationen, Mappingbestaetigung und Footeraktionen bleiben funktional unveraendert; flache Eintraege werden hoechstens durch eine Haarlinie voneinander getrennt. - Exakte und moegliche Dubletten erscheinen unter der englischen Ueberschrift `Duplicate found` als mindestens 16 px grosser, automatisch umbrechender Fliesstext. Dateiname, Hash und Hinweise koennen die Dialogbreite nicht mehr vergroessern; die Vorschau scrollt nur vertikal. - Sechs fokussierte Tests und der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich. Keine Import-, API-, Persistenz-, Schema- oder Datenänderung; Phase 7 bleibt abgeschlossen. Timeslot-getrennter Work-Zustand vom 2026-08-22 (Phase-7-Zustandskorrektur): - Der Client bleibt der uebergeordnete Datenrahmen; der in Work gewaehlte Timeslot ist die lokale Arbeitsgrenze. Snapshot-Lesezeichen sowie My-Workspace-Markierungen/Reviews werden unter einem stabilen Schluessel aus Client-ID und vollstaendiger sortierter ScanRun-Menge gespeichert. Zwei Timeslots desselben Clients teilen diese lokalen Arbeitszustaende damit nicht mehr. - Beim Timeslot-Wechsel werden Suche, Facetten und Workspaceansicht wie bisher zurueckgesetzt, der Statusfilter nun jedoch aus dem Profil des neu geladenen Toolsets statt aus dem vorherigen Stand uebernommen. Ein gemischtes Aggregat vereinigt die Statusfilter der tatsaechlich enthaltenen Werkzeugprofile; ein Blattwechsel setzt weiterhin die exakten Defaults des einzelnen Blattwerkzeugs neu. Dynamische Feldfacetten werden ausschliesslich aus den im gewaehlten Stand vorhandenen Daten abgeleitet. - 24 fokussierte Tests fuer Scope, Timeslot-Auswahl, Snapshots, Workspace, dynamische Facetten und gemischte Toolprofile sind erfolgreich. Der Produktionsbuild ist derzeit unabhaengig hiervon durch bereits vorhandene fehlende Graph-Filtervariablen in `ObsidianGraphView.tsx` blockiert. Keine Import-, API-, Backend-, Persistenzschema- oder Datenbankaenderung; die Trennung betrifft ausschliesslich lokalen UI-Zustand und Profilkomposition. Timeslot-getrennte Result-DB vom 2026-08-22 (Phase-7-Zustands- und Querykorrektur): - Der aktive Timeslot wird ueber seine vollstaendige ScanRun-Menge aus Work bis in Result-DB, Facettenabfrage, Same-Origin-API und Repository weitergereicht. Resultliste, Trefferzahl und Filterwerte entstehen damit ausschliesslich aus Findings dieses Stands. `All timeslots` bleibt als ausdruecklicher Aggregatmodus ohne ScanRun-Filter erhalten. - Der Unified-Result-Queryvertrag wurde additiv um wiederholbare `scanRunIds` erweitert. Lokale Projektion und PostgreSQL wenden die Menge gemeinsam mit dem Clientfilter an; dadurch steht derselbe eindeutige Kontext spaeter auch einer LLM-Anreicherung zur Verfuegung, ohne Client und Stichtag zu vermischen. - 22 fokussierte Tests und der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich. Die Gesamtsuite umfasst 647 bestandene Tests sowie 8 uebersprungene optionale PostgreSQL-Tests; Local-only ist gruen, der globale Designcheck bleibt ausschliesslich an den zwei unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine Migration und keine Realdatenpruefung; Phase 7 bleibt abgeschlossen. Verbindlicher aktiver Timeslot vom 2026-08-22 (neuere Phase-7-Zustandshaertung): - Die ausdrueckliche Nutzerkorrektur loest den zuvor angebotenen Client-Aggregatmodus fuer die normalen Arbeitsansichten ab. Bei einem geoeffneten Client ist die konkrete ScanRun-Menge eines Timeslots der einzige fachliche Scope fuer Work, Graph, Dashboard und Result DB. Der Work-Selector bietet deshalb keinen `All timeslots`-Eintrag mehr und waehlt ohne vorhandenen Scope automatisch den neuesten scannergebundenen Timeslot. - Result DB und Graph verhalten sich bei einem Client ohne aktive ScanRun-Menge konservativ: Sie zeigen keine projektweite Ergebnismenge beziehungsweise keinen aggregierten Graphen, sondern fordern eine Timeslot-Auswahl an. Datenaktualisierungen am bereits aktiven Client bewahren dessen ScanRun-Scope statt ihn implizit auf das gesamte Projekt zurueckzusetzen. - Der bestehende API-/Repository-Vertrag mit wiederholbaren `scanRunIds` bleibt unveraendert die technische Querygrenze. Dashboard, Work und Graph lesen den bereits timeslot-begrenzt geladenen Workspace; Result DB wendet dieselbe Menge serverseitig auf Zeilen und Facetten an. - Sechs fokussierte Suites mit 21 Tests sowie der Gesamtlauf mit 650 bestandenen Tests und 8 uebersprungenen optionalen PostgreSQL-Tests sind erfolgreich. Local-only und Client-/Server-Produktionsbuild sind gruen. Der bekannte Designcheck-Befund bleibt ausschliesslich auf `datahub-redesign.css` Zeilen 39 und 42 begrenzt. Keine Migration, Schemaaenderung oder Realdatenpruefung; Phase 7 bleibt abgeschlossen. Nur erreichbare Filterwerte vom 2026-08-22 (Phase-7-Filterkorrektur): - Work- und Result-DB-Facetten geben nur Werte mit mindestens einem Treffer unter Client, aktivem Timeslot, Blatt, Suche und den jeweils anderen aktiven Filtern aus. Die betrachtete Facette nimmt ihren eigenen Filter bei der Neuberechnung aus, damit zwischen weiterhin erreichbaren Alternativen gewechselt werden kann. - Wird eine Work-Auswahl durch einen anderen Filter unmoeglich, wird der unsichtbar gewordene Restfilter automatisch entfernt; dasselbe gilt fuer einen nicht mehr erreichbaren Statusfilter. Numerische und Datumsbereiche behalten ihre vorhandene Eingabelogik, weil sie keine diskreten Nullwertoptionen ausgeben. - 22 fokussierte Tests, der vollstaendige Client-/Server-Produktionsbuild, 650 Standardtests und Local-only sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen. Das geschrumpfte Radiusbudget ist festgeschrieben. Der Designcheck bleibt ausschliesslich an den zwei bekannten unveraenderten Schattenregeln in `datahub-redesign.css` Zeilen 39 und 42 rot. Keine API-, Persistenz-, Schema- oder Datenänderung; Phase 7 bleibt abgeschlossen. Abnahmekriterien: - Purple-Knight-Filter benötigen keine fest verdrahtete UI-Sonderlogik. - Ungeeignete Freitextfelder erzeugen keine unbrauchbaren Filterlisten. - Importwarnungen und Mapping-Konfidenzen sind sichtbar. #### Report Engine als eigenstaendiger Nur-Lese-Baustein (entschieden 2026-09-30) Status: in Arbeit (Verschiebung, v0.1 und v0.2 am 2026-09-30 umgesetzt; ein v0.1-Kriterium ist nur teilweise verifiziert, die Kontext-Eingabe aus Phase 13E ist offen). Ziel: Technischer und Management Report ohne Internet und ohne LLM, erzeugt von einer eigenstaendigen Report Engine im Assessor. Sie nutzt nur benoetigte, gespeicherte Assessor-Daten und veraendert die Assessor-Logik nicht. Machbarkeitspruefung 2026-09-30 (nur gelesen): Report Model (`ReportProjection` 1.1.0), Korrelation (1.0.0), Assembler, beide Renderer und der API-Endpunkt `report-projection` existieren bereits und lesen ausschliesslich. Es fehlen ein eingefrorener, gespeicherter Stand, eine technisch erzwungene Nur-Lese-Grenze und ein konsistenter Lesezeitpunkt. Verbindliche Nutzerentscheidungen 2026-09-30: - Ablage im Code: Die bestehenden Report-Bausteine werden ohne Logikaenderung nach `src/reporting/` verschoben. Betroffen sind Projektion, Korrelation, Assembler, `client-report-projection` und beide Renderer. Das geschieht als eigener Schritt vor v0.1, und die Tests bleiben vor und nach der Verschiebung identisch gruen. Security-Domain-Katalog, Scoring und Review-Hydration bleiben Assessor-Bausteine und werden nur importiert, damit Report, Client Info und Work dieselben Zahlen zeigen. Ein Architekturtest erzwingt die Grenze: Ausserhalb von `src/reporting/` importieren nur die Report-Aktionen der UI und die Server-Route aus der Engine, und die Engine erreicht keine schreibenden Repository-Methoden. - Eingefrorener Stand: Jeder Reportlauf wird serverseitig in einem eigenen, danach unveraenderlichen Archivordner gespeichert. Er enthaelt `projection.json`, beide HTML-Dateien und ein Manifest mit Datei-Hashes, Projektions-, Korrelations- und Renderer-Version, Repository-Revision, Scope und Zeitpunkt. Der Pfad ist ueber `ASSESSOR_REPORT_ARCHIVE_DIR` einstellbar; der Standard liegt im lokalen Anwendungsdatenordner, nie im Repository oder in OneDrive. Das Loeschen eines Clients loescht auch sein Archiv. Der HTML-Download bleibt wie heute. Die Datenbank wird nicht beruehrt; `projection.json` und Manifest sind intern und werden nie mit Report A ausgeliefert. - Grenzen: nur der gemeinsame Security-Domain-Katalog; Severity nur je Quelle und nie als Summe ueber Scanner; Review-Status nur als `Selbstauskunft, nicht verifiziert` und nicht in Report A; Szenarien und Zusammenhaenge ausschliesslich aus der Kontext-Engine (Phase 13E). `docs/REPORT_STRATEGY.md` bleibt fuer Inhalte bindend. Umsetzungsfolge: 1. Verschiebung nach `src/reporting/` und Architekturtest. 2. v0.1: Nur-Lese-Port-Typ, eigener Datenbank-Pool mit `default_transaction_read_only=on` nur fuer die Report Engine, Vergleich der Repository-Revision vor und nach dem Lesen mit Wiederholung, danach das Serverarchiv. 3. v0.2: deterministische Textbausteine ueber der Projektion und ID-Listen je Aggregat fuer die Beleg-Kette (Projektion 1.2.0). 4. Danach: Kontextergebnisse aus Phase 13E als Eingabe. Abnahme v0.1: - [x] Verschiebung ohne Logikaenderung; Tests vor und nach identisch; Architekturtest gruen. Umgesetzt und verifiziert am 2026-09-30, siehe Aenderungsprotokoll. - [ ] Schreibversuch ueber den Report-Pool wird von PostgreSQL abgelehnt (Test); `PostgresAssessorRepository.create()` liest auf diesem Pool nur. Teilweise verifiziert 2026-09-30: Der Report-Leser nutzt `openReadOnly` statt `create()`, weil `create()` einen Result-DB-Neuaufbau (Schreibvorgang) anstoesst. Dass `openReadOnly` keinen Neuaufbau anstoesst, nur SHOW/SELECT ausfuehrt und eine beschreibbare Sitzung verweigert, ist synthetisch getestet. Gegen die kanonische Datenbank wurde inhaltsfrei bestaetigt: Die Sitzung ist schreibgeschuetzt, die Revision blieb unveraendert und keine Schreibmethode ist erreichbar. Der Test auf eine tatsaechlich abgelehnte Schreibanweisung existiert, laeuft aber nur mit `ASSESSOR_TEST_DATABASE_URL` und wurde mangels Testdatenbank nicht ausgefuehrt; gegen die kanonische Datenbank wurde bewusst kein Schreibversuch unternommen. - [x] Revisionsaenderung waehrend des Lesens fuehrt zu Wiederholung oder klarem Fehler (synthetischer Test). HTTP 409 `report_state_changed`. - [x] Erneutes Rendern aus dem archivierten `projection.json` ergibt byte-identisches HTML; die Manifest-Hashes stimmen, und eine veraenderte Datei wird beim Lesen erkannt. - [x] Report A enthaelt keine technischen Kennungen (Leckagetests gruen). Das Archiv liegt ausserhalb von Repository, Anwendungsordner und OneDrive (Startpruefung getestet). Das Loeschen eines Clients entfernt sein Archiv (HTTP-Test). - [x] `npm test`: 1662 bestanden, 15 uebersprungen; die 7 bestehenden, unabhaengigen Fehler in 6 Dateien sind unveraendert. Beide Produktionsbuilds bestanden; Plan und Produktversion 2.10.0 nachgefuehrt. ### Phase 8 – Vergleichsengine Status: abgeschlossen Ziele: - Findings über Scan-Läufe zuverlässig zuordnen. - Unsichere Übereinstimmungen von sicheren Treffern unterscheiden. Matching-Reihenfolge: 1. Tool- und Regel-ID 2. Control- oder Framework-ID 3. Regel-ID und betroffenes Objekt 4. normalisierte Merkmalskombination 5. unsicherer Ähnlichkeitsvorschlag Ergebnisse: - neu - weiterhin vorhanden - behoben - wieder aufgetreten - Schweregrad geändert - Status oder Evidenz geändert - möglicherweise identisch - nicht vergleichbar Verifizierter Abschlussstand vom 2026-07-17: - ScanRunComparison ist ein separates versioniertes Ergebnis und verändert weder Finding-Vorkommen noch Original- oder Reviewdaten. - Bereits bestätigte lokale Regeln und gemeinsame kanonische Definitionen werden vor neu berechneten Schlüsseln berücksichtigt; danach folgen eindeutige Tool-/Regel-, Framework-/Control-, Regel-/Asset- und Merkmalskombinationen. - Eine Matchingstufe ordnet nur beidseitig eindeutige Kandidaten automatisch zu; doppelte IDs oder Controls werden nicht willkürlich aufgelöst. - Neu, weiterhin vorhanden, behoben, wieder aufgetreten, möglicherweise identisch und nicht vergleichbar werden einschließlich zusammengefasster Zählwerte ausgegeben. - Änderungen an Severity, Status, Score, betroffenem Objekt und Evidenz werden getrennt und reihenfolgeunabhängig erkannt. - Wiederauftreten wird über ältere Läufe desselben Assessments erkannt, wenn das Finding im direkten Basislauf fehlt. - Textähnlichkeit erzeugt ausschließlich einen Vorschlag mit Benutzerbestätigungspflicht und niemals automatisch eine gemeinsame Identität. - Bestätigte Vorschläge können als serialisierbare LocalComparisonRule erzeugt und in späteren Vergleichen wiederverwendet werden. - Die Ergebnisreihenfolge ist stabil und unabhängig von der Arrayreihenfolge des Eingabemodells. - Unterschiedliche Assessments und nicht ausreichend vergleichbare Werkzeugdaten werden sichtbar diagnostiziert. - Algorithmus, Sicherheitsgrenzen und Persistenzübergang sind in docs/COMPARISON_ENGINE.md dokumentiert. - 32 Testdateien mit 85 Tests, Local-only-Prüfung und Produktionsbuild laufen erfolgreich. Abnahmekriterien: - Vergleichsergebnisse sind reproduzierbar. - Unsichere Matches werden nicht automatisch als identisch gespeichert. - Benutzerbestätigungen können als lokale Mappingregel wiederverwendet werden. #### Geplantes Arbeitspaket: faire Vergleiche bei fehlenden Folgequellen Statusklarstellung 2026-09-11: Der oben dokumentierte Abschluss betrifft den historischen Vergleichskern, nicht die nachfolgende Erweiterung. P0 ist abgeschlossen, P1 in Arbeit und P2-P6 sind offen. Der verbindliche Detailplan steht in [TIMESLOT_COMPARISON_PLAN.md](TIMESLOT_COMPARISON_PLAN.md): getrennte Regel-/Vorkommensidentitaet, profilgebundene Gegenpruefung, Erhaltung jeder offenen Verpflichtung bei Teilabdeckung, reparierte Quell-/Versionspruefungen und expliziter A/B-Bericht. Die nachfolgenden Festlegungen vom 2026-09-06 bleiben als Ausgangspunkt erhalten; ihre pauschale Abloesung durch einen neuen Quelllauf wird durch den verpflichtungsbezogenen Nachweisvertrag praezisiert. Alte UI-Abschlussnotizen sind kein Beleg fuer die heutige Produktanbindung. Ziel ist eine belastbare Fortschrittsaussage, auch wenn ein Kunde beim naechsten Timeslot nicht mehr alle bisherigen Scanner- oder GPO-Quellen liefert. Fehlende Evidenz darf weder als Verbesserung noch als Behebung erscheinen. Verbindliches Fachmodell: - Jede im Projekt erwartete Quelle besitzt je Timeslot genau einen Evidenzzustand: `observed-current` (im aktuellen Stand neu erhoben), `carried-forward-awaiting-revalidation` (letzter bekannter Stand, aktuell nicht erneut gemessen) oder `retired-out-of-scope` (ausdruecklich ab einem Stichtag aus dem Scope genommen). - Fehlt eine zuvor erwartete Quelle, werden ausschliesslich ihre noch offenen Finding-/Review-Verpflichtungen fortgeschrieben. Der alte Scan, die alte GPO-Beobachtung und deren Zeitstempel werden nicht als aktuelle Messung in den neuen Timeslot kopiert; Original-Timeslot, Quelltool, letzter Beobachtungszeitpunkt und Alter bleiben sichtbar. - Ein neuer Lauf derselben Quelle und desselben Scopes ersetzt den Fortschreibungszustand. Erst dann darf die Vergleichsengine `neu`, `weiterhin vorhanden`, `behoben` oder `wieder aufgetreten` fuer diese Quelle verifizieren. - Das ausdrueckliche Beenden einer Quelle ist eine eigene, auditierbare Aktion mit Akteur, Wirksamkeitsdatum und Begruendung. Es loescht keine Historie und ist nicht mit dem normalen Auswahlhaekchen beziehungsweise Bookmark gleichzusetzen. - GPO- und andere umgebungsbezogene Rohbeobachtungen bleiben als historische letzte Evidenz erhalten, werden aber ohne aktuellen Import nicht neu bewertet. Fortgeschrieben werden offene Findings und Arbeitsverpflichtungen, nicht behauptete aktuelle Konfigurationen. Vergleich und Score werden getrennt ausgewiesen: 1. **Gemessener Fortschritt** verwendet nur die Schnittmenge der im Basis- und Ziel-Timeslot aktuell beobachteten, fachlich vergleichbaren Quellen. 2. **Gesamtexposition / offener Backlog** umfasst aktuelle Findings plus fortgeschriebene, noch nicht erneut verifizierte Findings. Fortgeschriebene offene Risiken behalten ihr Risikogewicht, damit das Weglassen eines Scans den Score nicht verbessert. 3. **Evidence Coverage / Freshness** zeigt separat, welcher Anteil aktuell gemessen, fortgeschrieben oder bewusst aus dem Scope genommen ist. Score und Abdeckung duerfen nie zu einer einzigen scheinbar praezisen Zahl verschmelzen. Vorgesehene Abnahmekriterien: - Ein fehlender Folgescan erzeugt weder `behoben` noch eine automatische Scoreverbesserung. - Gemeinsam vorhandene Quellen liefern weiterhin einen normalen, reproduzierbaren Fortschrittsvergleich. - Fortgeschriebene Findings sind optisch und maschinenlesbar von aktuell bestaetigten Findings getrennt und zeigen Quelle, Ursprungs-Timeslot und Alter. - Ein spaeterer aktueller Scan beendet die Fortschreibung deterministisch und erzeugt den korrekten Lebenszyklus. - `retired-out-of-scope` erfordert eine ausdrueckliche, auditierte Entscheidung; historische Findings bleiben erhalten. - Scanner, GPOs und spaetere Tools benutzen denselben generischen Quellenzustandsvertrag, ohne toolbezogene Sonderlogik in React. ### Phase 9 – Fachliche Persistenzschnittstelle Status: abgeschlossen Ziele: - Fachlogik von konkreter Datenbank und Transporttechnologie trennen. Benötigte Operationen: - Projekte und Assessments verwalten - Importe starten, abschließen und zurückrollen - Findings und Vorkommen speichern und abfragen - Reviews aktualisieren - Profile und bestätigte Mappings verwalten - Vergleiche laden und speichern - Daten exportieren und kontrolliert löschen Verifizierter Abschlussstand vom 2026-07-17: - AssessorRepository definiert eine asynchrone, transport- und datenbankunabhängige Grenze für Projekte, Assessments, Findings, Reviews, Profile, Mappingregeln, Vergleiche, Export und Löschung. - LocalAssessorRepository dient als lokale In-Memory-Referenzimplementierung und ausführbarer Vertrag für spätere Backend- und PostgreSQL-Adapter. - Eine Importsitzung umfasst genau einen Scan-Lauf mit Dateien, Tabellen, Definitionen, Vorkommen, Evidenz und Diagnosen; gestagete Daten bleiben bis zum Commit unsichtbar. - Commit validiert alle Sitzungsreferenzen und das vollständige kanonische Assessment-Modell, bevor der Zustand atomar ersetzt wird; Rollback und Validierungsfehler hinterlassen keine Teilimporte. - Repository-Revisionen verhindern, dass ein veralteter paralleler Import zwischenzeitliche Änderungen überschreibt. - Reviewupdates verwenden optimistische Revisionen; veraltete Schreibversuche werden als Konflikt abgewiesen. - Profilregistrierungen, bestätigte lokale Mappingregeln und Vergleichsergebnisse werden über dieselbe fachliche Grenze verwaltet. - Projektexporte enthalten alle projektbezogenen Fachobjekte; kaskadierende Löschung verlangt die exakte Projekt-ID und eine ausdrückliche Bestätigung. - Eine automatisierte Architekturprüfung verhindert SQL oder Datenbankclientimporte in React-, Komponenten- und Featuremodulen. - Die bestehende lokale UI- und Snapshotablage bleibt während des Übergangs unverändert; die Referenzimplementierung ist bewusst noch keine dauerhafte Produktdatenbank. - Verträge, Transaktionsgrenzen, Konfliktregeln und Backendübergang sind in docs/PERSISTENCE_BOUNDARY.md dokumentiert. - 33 Testdateien mit 91 Tests, Local-only- und Architekturprüfung sowie Produktionsbuild laufen erfolgreich. Nachtraeglicher verifizierter UI-Integrationsstand vom 2026-09-06: - Die in FindingReader gepflegten Workflowdaten werden nicht mehr ausschliesslich im Browser gespeichert. Kanonische Finding-Vorkommen tragen ihre stabile Datenbankidentitaet bis in jede Work-Projektion; alle Projektionen desselben Vorkommens teilen einen Review. - Bookmark, exakter UI-Status, kanonischer Workflowstatus, Prioritaet, Owner/Team, Due Date, Prerequisites, Required Access/Roles, Next Step, Evidence/Acceptance Criteria, Comment und die Marker Question Needed, Permission Blocked, Quick Win, External Team sowie Not Relevant werden ueber die bestehende Review-API mit optimistischer Revision persistiert. - Vorhandene datenbankgestuetzte Reviews haben beim Laden Vorrang. Ein bisher nur lokal vorhandener Review bleibt erhalten, wird auf alle Projektionen desselben Vorkommens vereinheitlicht und beim naechsten verbundenen Laden ohne bestehenden Datenbankreview migriert. Fuer rein lokale, noch nicht kanonisch persistierte Importe bleibt die Browserablage der sichere Rueckfall. - Die Erweiterung nutzt das vorhandene JSONB-Reviewobjekt und benoetigt keine SQL-Migration. 43 fokussierte synthetische Roundtrip-, Repository-, Projektions-, Scope- und API-Tests, 825 Standardtests, Local-only-/Designpruefung sowie Client-/Serverbuild sind erfolgreich; 8 optionale PostgreSQL-Tests wurden uebersprungen und keine realen Findinginhalte gelesen. Abnahmekriterien: - React führt kein SQL aus. - Fachlogik hängt weder von SQLite noch von PostgreSQL ab. - Transaktionsgrenzen eines Imports sind definiert. ### Phase 10 – Lokales Backend Status: abgeschlossen Ziele: - Die Zielarchitektur zunächst vollständig auf dem Entwicklungsrechner betreiben. - React schrittweise von lokalen Aufrufen auf eine Backend-Schnittstelle umstellen. Lokaler Aufbau: ```text Browser ↓ http://localhost ASSESSOR-Backend ↓ lokale Datenbank ``` Backend-Verantwortung: - Dateiannahme und Validierung - Importsteuerung - Parsing und Normalisierung - Persistenz und Vergleiche - Reviews und Exporte - strukturierte Fehler und Audit-Ereignisse Verifizierter Abschlussstand vom 2026-07-17: - Ein Node.js-Backend auf Basis der eingebauten HTTP-Laufzeit liefert die gebaute React-App und `/api/v1` vom selben Ursprung aus; standardmäßig wird ausschließlich an `127.0.0.1:4173` gebunden. - Die versionierte API bildet Projekte, Assessments, Findings, Reviews, Profile, Mappingregeln, Vergleiche, Export, kontrollierte Löschung und atomare Importsitzungen auf `AssessorRepository` ab. - CSV, JSON, HTML, XML, XLSX und XLS können über einen validierten Same-Origin-Endpunkt mit der vorhandenen plattformneutralen Importengine serverseitig verarbeitet werden. - Der Node-Markupadapter führt importierte Skripte nicht aus, entfernt aktive HTML-Inhalte und weist fehlerhaftes XML kontrolliert ab. - React prüft den Backendstatus und verwendet bei Verbindung den gekapselten API-Client; Browser-/Tauri-Parsing bleibt während der Migration als Fallback erhalten. - Strukturierte Fehler enthalten Code, Meldung und Request-ID. Schreibzugriffe benötigen eine besondere Request-Kopfzeile und werden bei fremdem Browser-Ursprung abgewiesen. - Sicherheitsheader, Größen- und Formatprüfung, ein inhaltsfreies Audit-Ereignisprotokoll sowie Same-Origin-Architekturregressionen sind automatisiert getestet. - Phase 10 verwendet zunächst die flüchtige Referenzimplementierung; Phase 11 ergänzt PostgreSQL und Migrationen über dieselbe Grenze, ohne React oder Fachlogik an die Datenbank zu koppeln. - Architektur, Startbefehle, Datenfluss und Übergangsgrenzen sind in `docs/LOCAL_BACKEND.md` dokumentiert. - 36 Testdateien mit 101 Tests, Same-Origin-/Local-only-Sicherheitsprüfung, Produktionsbuild und gestarteter Browser-/Health-Prüfung laufen erfolgreich. - Nachhärtung vom 2026-08-02: Client, Server und Tests besitzen eigenständige `vite.client.config.ts`, `vite.server.config.ts` und `vitest.config.ts` mit getrennten Cache- und Outputpfaden. Alle npm-Skripte wählen ihre Konfiguration explizit; `vite.config.ts` ist nur ein clientseitiger Kompatibilitätsalias für Werkzeuge ohne `--config`. Ein Architekturtest schützt Skriptrouting, Zuständigkeitsgrenzen, `noEmit` und die vollständige Einbeziehung von TS- und TSX-Tests. `npm test` und `npm run build` liefen parallel erfolgreich; 105 Testdateien mit 498 Standardtests bestanden, 7 optionale PostgreSQL-Tests wurden erwartungsgemäß übersprungen. Local-only- und Designprüfung sowie die TypeScript-Prüfung aller vier Konfigurationsdateien waren erfolgreich. - Nachhärtung vom 2026-08-02: `npm run dev` ist der verbindliche lokale Entwicklungsstart für Backend und Client. Der plattformneutrale Node-Starter prüft `/api/v1/health`, baut und startet ein fehlendes Backend ausschließlich auf `127.0.0.1:4173` und startet den Client erst nach erfolgreicher Health-Prüfung auf `127.0.0.1:5173`; `npm run dev:client` bleibt als ausdrücklich client-only benannter Spezialweg erhalten. Der Architekturvertrag deckt Startreihenfolge, Adressen und dedizierte Konfigurationen ab. `npm test` und `npm run build` liefen parallel erfolgreich; 105 Testdateien mit 499 Standardtests bestanden, 7 optionale PostgreSQL-Tests wurden erwartungsgemäß übersprungen. Abnahmekriterien: - Die Anwendung funktioniert im normalen Browser über `localhost`. - Kernfunktionen hängen nicht mehr von Tauri-Kommandos ab. - Tauri kann optional als lokale Hülle weiterbestehen. ### Phase 11 – PostgreSQL Status: abgeschlossen Ziele: - Dauerhafte, mehrbenutzerfähige Speicherung einführen. Anforderungen: - versionierte Datenbankmigrationen - Fremdschlüssel und Integritätsregeln - Transaktionen pro Import - geeignete Indizes - Volltextsuche - Backup- und Restore-Verfahren - nachvollziehbare Löschung Verifizierter Abschlussstand vom 2026-07-17: - `PostgresAssessorRepository` implementiert den vollständigen fachlichen Repository-Vertrag für Projekte, Assessments, atomare Importe, Findingabfragen, Reviews, Profile, Mappingregeln, Vergleiche, Export und kontrollierte Löschung. - Das relationale Schema erzwingt Primärschlüssel, Fremdschlüssel, Checks, kaskadierende Löschregeln, eindeutige Scan-Reihenfolgen und optimistische Reviewrevisionen; vollständige versionierte Fachobjekte bleiben zusätzlich als JSONB erhalten. - Migrationen sind nummerierte SQL-Dateien, werden per PostgreSQL-Advisory-Lock serialisiert, einzeln transaktional ausgeführt und mit SHA-256-Prüfsumme in `assessor_schema_migrations` protokolliert. - Ein Import wird im Prozess gestagt und beim Commit auf genau einer Poolverbindung in genau einer Datenbanktransaktion gespeichert; die gesperrte Repository-Revision verhindert konkurrierendes Überschreiben. - B-Tree-Indizes decken Beziehungen und Filter ab; gespeicherte `tsvector`-Dokumente und GIN-Indizes ermöglichen Volltextsuche, ein zusätzlicher GIN-JSONB-Index unterstützt strukturierte Zusatzfelder. - Das Backend wählt PostgreSQL über `ASSESSOR_DATABASE_URL`, führt Migrationen beim Start aus und meldet die aktive Persistenz im Health-Endpunkt. Ohne URL bleibt der explizite In-Memory-Entwicklungsmodus; Verbindungsfehler führen nicht zu einem stillen Fallback. - Docker Compose stellt PostgreSQL 16 lokal ausschließlich auf Loopback mit persistentem Volume und nicht versionierter Passwortdatei bereit. - `pg_dump` im Custom-Format und `pg_restore` wurden praktisch gegen eine getrennte Wiederherstellungsdatenbank geprüft; Migrationstabelle und persistierte Profilregistrierungen wurden nach dem Restore verifiziert. - Setup, Migrationen, Suche, Backup, Restore und Löschung sind in `docs/POSTGRESQL.md` dokumentiert. - 40 Testdateien mit 108 Tests einschließlich realem PostgreSQL-16-Integrationstest, Same-Origin-/Local-only-Sicherheitsprüfung, Produktionsbuild und gestartetem PostgreSQL-Backend laufen erfolgreich. Abnahmekriterien: - Fehlgeschlagene Importe hinterlassen keine Teilbestände. - Mehrere Scan-Läufe bleiben sauber getrennt. - Backup und Wiederherstellung sind praktisch getestet. ### Phase 12 – Mehrdatei-Importworkflow Status: abgeschlossen Ziele: - Mehrere heterogene Dateien gemeinsam in ein Assessment laden. Ablauf: 1. Dateien auswählen 2. technische Vorprüfung 3. Quellen und Tabellen erkennen 4. Erkennungsergebnis anzeigen 5. unsichere Zuordnungen bestätigen 6. Import transaktional ausführen 7. Importbericht anzeigen 8. Findings und Vergleiche öffnen Verifizierter Abschlussstand von Phase 12 am 2026-07-17: - Der direkte Mehrdateiimport wurde durch einen Vorschau-, Freigabe- und Berichtsworkflow ersetzt; das aktuell geöffnete Projekt ändert sich erst nach erfolgreichem Abschluss. - CSV, JSON, XML, HTML, XLSX und XLS sowie unterschiedliche erkannte Werkzeuge können gemeinsam vorbereitet und als heterogenes Assessment gespeichert werden. - Jede Datei wird unabhängig technisch geprüft und geparst. Fehler bleiben als kontrollierte, nicht ausgewählte Vorschauzeilen sichtbar und verhindern nicht die Verarbeitung anderer Dateien. - Vorschau und Importbericht zeigen Format, Werkzeug, Konfidenz, Tabellen, Datensätze, Warnungen, nicht zugeordnete Felder, offene Mappingbestätigungen, Fehler, Dubletten und SHA-256. - Unsichere automatische Quellen-, Tabellen- und Feldzuordnungen müssen vor dem Import der betroffenen Datei ausdrücklich bestätigt werden. - SHA-256 wird aus den tatsächlichen Bytes berechnet. PostgreSQL-Migration 002 speichert Hash, Dateimetadaten, ersten und letzten Import sowie Wiederholungszähler; der Browserfallback besitzt eine klar gekennzeichnete lokale Historie. - Der Server gleicht Abschlussauswahlen über eindeutige Vorschau-IDs und unveränderte Metadaten gegen seine eigene geparste Vorschau ab; manipulierte oder abgelaufene Abschlüsse werden abgewiesen. - Bestätigte Dateien werden in das kanonische Projekt-, Assessment-, Scan-Lauf-, Datei-, Tabellen-, Finding-, Evidenz- und Diagnosemodell überführt. - `commitCanonicalImport` speichert kanonisches Modell und Fingerprints in einem Repository-Vorgang; PostgreSQL verwendet dafür genau eine Transaktion und eine optimistisch gesperrte Repository-Revision. - Ein dauerhafter Importbericht wird lokal für die letzte Sitzung abgelegt; Details und Betriebsgrenzen stehen in `docs/IMPORT_WORKFLOW.md`. - 44 Testdateien mit insgesamt 119 Tests, Local-only-Sicherheitsprüfung, Produktionsbuild und echter PostgreSQL-16-Integration sind erfolgreich verifiziert. Nachtraeglicher verifizierter UI-Integrationsstand vom 2026-08-04 (Status von Phase 8 und 12 bleibt abgeschlossen): - Der Datahub projiziert Mandanten horizontal und ihre persistierten Scan-Durchgaenge chronologisch als anklickbare Datumsstaende. Datumsaktion und Vergleichsauswahl sind getrennt: ein Klick oeffnet ausschliesslich den gewaehlten Scanstand in Work, zwei Checkboxen starten den Vergleich; maximal zwei Staende desselben Mandanten sind gleichzeitig auswaehlbar. - Vier Regler werden als SVG-Donut-Zustandsanzeigen fuer offene Abweichungen, behobene Abweichungen, kritische Abweichungen und gepruefte Zielbefunde gerendert. Die Werte stammen aus dem bestehenden kanonischen Vergleichs- und Reviewmodell, nicht aus React-seitiger Scannerlogik. - Persistierte Assessments desselben Mandanten werden fuer den Vergleich ausschliesslich read-only in ein virtuelles Vergleichsmodell ueberfuehrt. Originalmodelle, ScanRuns und Persistenz werden nicht veraendert; unterschiedliche Mandanten werden abgewiesen und unsichere Aehnlichkeiten bleiben `possibly-identical` mit Bestaetigungsbedarf. - MITRE- und Microsoft-Baselinebereiche verwenden die rackartige Referenzgestaltung; bestehende Upload-, Katalog- und Wartungsfunktionen bleiben erhalten. Responsive Regeln stellen Donuts und Rack-Inhalte am kompakten Breakpoint einspaltig dar. - Verifikation nur mit synthetischen beziehungsweise inhaltsfreien Signalen: `npm test` mit 591 bestandenen und 8 uebersprungenen Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Isolierter Browser-Preview: vier Donuts, vier Rackmodule, kein horizontaler Seiten-Overflow in Desktop- und kompakter Ansicht. Keine Migration oder Persistenzaenderung; reale Mandanteninhalte wurden nicht inspiziert. Korrigierter und verifizierter Timeslot-Stand vom 2026-08-05 (praezisiert den UI-Integrationsstand vom 2026-08-04; Status von Phase 8 und 12 bleibt abgeschlossen): - Ein fachlicher Datumsstand ist ein vollstaendiger Assessment-Timeslot eines Mandanten. Scannerimporte wie CIS-CAT, PingCastle, PurpleKnight und Maester sind getrennte `ScanRun`-Quellen innerhalb dieses Timeslots; ein GPO-Backup ist eine weitere, direkt an denselben Assessment-Timeslot gebundene Quelle und wird nicht als kuenstlicher Scannerlauf modelliert. - Neue Timeslots besitzen einen expliziten fachlichen Stichtag `Assessment.effectiveAt`. Importvorschau, Abschluss und GPO-Submission bewahren `targetAssessmentId`; wiederholte Quellenimporte ergaenzen das bestehende Assessment mit fortlaufenden ScanRun-Sequenzen statt ein neues Assessment anzulegen. - Die Datahub-Historie rendert genau eine Zeile je Timeslot und oeffnet beziehungsweise vergleicht alle darin enthaltenen ScanRuns gemeinsam. Mehrteilige Dateien desselben Scannerlaufs zaehlen als eine Quelle. Bestehende Legacy-Imports ohne `effectiveAt` werden fuer die Darstellung nach ihrem Quellkalendertag zusammengefuehrt; dadurch bilden die vier Scannerlaeufe vom 22.07.2026 zusammen mit dem vorhandenen GPO-Backup genau einen historischen Stand. - Ein neuer Bewertungsstand wird im Mandanteneditor mit Datum angelegt und danach als aktiver Timeslot ausgewaehlt. Scanner- und GPO-Uploads sind erst mit einem aktiven Timeslot verfuegbar und werden serverseitig erneut auf denselben Mandanten geprueft. - Verifikation ausschliesslich mit synthetischen Daten: `npm test` mit 595 bestandenen und 8 erwartungsgemaess uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Keine SQL-Migration; der fachliche Stichtag und die GPO-Zuordnung werden im vorhandenen versionierten JSONB-Datensatz bewahrt. Reale Mandanteninhalte wurden nicht inspiziert. Nachtraegliche verifizierte Referenzlayout-Korrektur vom 2026-08-05: - Die allgemeine Datahub-Begrenzung auf 1180 px wird nicht mehr durch eine spezifischere 100-Prozent-Regel ueberschrieben. MITRE- und Baseline-Racks bleiben dadurch mittig begrenzt. - Mandantenhistorie und Zustandsregler verwenden `max-content` mit `max-width: 100%` und stehen mittig. Ein einzelner Mandant belegt 190 px plus 62 px fuer die Hinzufuegen-Aktion statt eine leere Vollbreitenmatrix zu erzeugen; die vier Donut-Zustaende und der Vergleich bilden einen kompakten 904-px-Rackblock. - Bei mehreren Mandanten bleibt die Historie horizontal scrollbar; unter 1100 px beziehungsweise 760 px greifen die bestehenden zwei- und einspaltigen Responsive-Regeln. - Verifikation: `npm test` mit 596 bestandenen und 8 erwartungsgemaess uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Eine statische Layoutregression verhindert die erneute Vollbreiten-Ueberschreibung. Keine Daten-, API- oder Persistenzaenderung. Abschliessende Referenzkorrektur auf ausdruecklichen Bildvergleich vom 2026-08-05 (ersetzt die unmittelbar vorherige kompakte Layoutinterpretation): - Bild 2 definiert einen vollbreiten Rackaufbau. Alle Datahub-Rackmodule nutzen wieder die verfuegbare Arbeitsbreite; die Mandantenmatrix enthaelt stets acht gleichmaessige sichtbare Slots. Nicht belegte Slots sind ausschliesslich praesentative `Empty`-Spalten und erzeugen keine Projekte oder Persistenzobjekte. - Rechts folgt eine schmale 66-px-Hinzufuegen-Spalte. Der erste beziehungsweise aktive Mandant und sein aktueller Timeslot sind violett markiert. Jeder Timeslot bleibt fachlich genau eine Zeile mit allen Quellen; die Dreiecksflaeche waehlt fuer den Zwei-Staende-Vergleich, der Datumsklick oeffnet den gesamten Stand. - Der separate Vergleichskasten wurde aus dem Zustandsrack entfernt. Vier kompakte 270-Grad-Regler stehen links in zwei Paaren mit breitem Zwischenraum und Trennlinie; ihre Werte stammen unveraendert aus dem kanonischen Timeslotvergleich. Bei zwei ausgewaehlten Timeslots startet der Vergleich weiterhin automatisch. - MITRE- und Baseline-Racks verwenden dieselbe volle Arbeitsbreite. Ab 1100 px beziehungsweise 760 px bleiben die vorhandenen responsiven Umbrueche aktiv; bei einer breiteren Mandantenmatrix scrollt nur deren innerer Bereich horizontal. - Verifikation: `npm test` mit 596 bestandenen und 8 erwartungsgemaess uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Die gezielte Layoutregression sichert Vollbreite, acht Slots, Empty-Platzhalter, aktive Erstspalte, Plusbreite, Reglerpaarabstand und 270-Grad-Bogen. Keine Daten-, API- oder Persistenzaenderung. Abnahmekriterien: Verifizierte Mandantendetail-Korrektur vom 2026-08-05 (Status von Phase 12 bleibt abgeschlossen; Phase 13B bleibt in Arbeit): - Die Detailansicht nach Klick auf einen Mandanten folgt der ausdruecklichen Bildreferenz innerhalb des unveraenderten bisherigen Datahub-Inhaltsrahmens: maximal 1180 px, horizontal zentriert und mit bestehendem Viewer-Inset. - Sichtbare Fachaktionen sind ausschliesslich Open, Delete, Import Data, GPO Backup Folder und Save. Timeslot-Anlage/-Auswahl, GPO-Statuslisten und das Policy-Analysepanel werden in dieser Detailansicht nicht gerendert. - Stammdaten enthalten ausschliesslich Name, Consultant und Remarks. Die Scan History zeigt je persistiertem ScanRun File Date, Scan Report, Files, Format, Total Size, Imported und Delete; Originaldateien und Quelldaten bleiben unveraendert. - Zwei Rackmodule mit insgesamt acht Reglern reproduzieren die Referenz rein praesentativ und sind aria-hidden; sie erzeugen keine Fachwerte und keine Persistenzmutation. - Verifikation mit inhaltsfreien Signalen: 598 Standardtests bestanden, 8 optionale PostgreSQL-Tests erwartungsgemaess uebersprungen, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Browserpruefung bestaetigt 1180 px Inhaltsbreite, gleiche linke Position und Breite von Kopf, Stammdaten und Historie, zwei Rackmodule, acht Regler, keine Timeslot-/Policy-Steuerung und keinen horizontalen Seiten-Overflow. Reale Mandanteninhalte wurden nicht gelesen oder abgebildet. Verifizierte zentrierte Datahub-Referenzkorrektur vom 2026-08-05 (Phase 12 UI-Nachhaertung; Phase 13B bleibt in Arbeit): - Die neue ausdrueckliche Datahub-Bildreferenz ersetzt fuer die Uebersicht die zuvor dokumentierte Vollbreiteninterpretation. Alle vier Rackmodule verwenden denselben maximal 1180 px breiten, horizontal zentrierten Inhaltsrahmen wie die Mandantendetailansicht. - Die Historie zeigt weiterhin acht sichtbare Mandantenslots plus 66-px-Hinzufuegen-Spalte. `Empty`-Slots und die vier mit Transpose/Detune bezeichneten Regler sind reine Praesentation; Auswahl ueber Dreieck, Oeffnen ueber Datum sowie MITRE-JSON- und Baseline-ZIP-Upload bleiben die einzigen fachlich verdrahteten Funktionen dieser Uebersicht. - MITRE-Rack, Baseline-Rack und Baselinezeilen folgen der Referenzstruktur und ihren Beschriftungen. Der innere Historienbereich bleibt bei schmaleren Viewports horizontal scrollbar, die Seite selbst laeuft nicht horizontal ueber. - Verifikation: 598 Standardtests bestanden, 8 optionale PostgreSQL-Tests erwartungsgemaess uebersprungen; Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Inhaltsfreie Browsermessung bestaetigt vier deckungsgleiche Racks mit 1179,98 px Breite, acht Mandantenspalten, eine Hinzufuegen-Spalte, vier Regler, neun MITRE-Felder, eine Baseline-Sektion, keine alten Donuts, kein Zusatzmenue und keinen Seiten-Overflow. Keine Daten-, API- oder Persistenzaenderung. Verifizierte Timeslot-Statusanzeige vom 2026-08-05 (Phase 12 UI-Nachhaertung; Phase 13B bleibt in Arbeit): - Die sechs Referenzdiagramme zeigen Results All, Deviation, Passed, Not Applicable, Not Run und Error fuer den zuletzt angewählten Timeslot des jeweiligen Mandanten. Ein Timeslot mit mehreren Scannerlaeufen wird ueber alle zugehoerigen kanonischen Finding-Vorkommen gemeinsam aggregiert. - Results All bildet stets 100 Prozent; alle weiteren animierten 270-Grad-Fortschrittsboegen zeigen ihren Anteil an dieser Gesamtzahl. Deviation verwendet das zentrale Abweichungspraedikat, die weiteren Kategorien folgen den kanonischen Outcomes beziehungsweise dem fehlgeschlagenen technischen Ausfuehrungszustand. Originalstatus und Provenienz bleiben unveraendert. - Blau, Warnorange, Erfolgsgruen, Violett, neutral Grau und Fehlerrot unterscheiden die sechs Boegen ueber bestehende Designtokens. Bei reduzierter Bewegung bleibt der finale Zustand ohne Animation sichtbar. Die mittlere Trennlinie entfaellt; unter 1100 beziehungsweise 760 px brechen die Diagramme auf drei beziehungsweise zwei Spalten um. - Der neueste Timeslot des aktiven beziehungsweise ersten Mandanten wird beim Laden standardmaessig ausgewaehlt, auch wenn nur ein Stand existiert. Ein zweiter angewählter Stand bleibt fuer den Vergleich moeglich; die Anzeige folgt dem zuletzt angewählten Stand. - Verifikation: 599 Standardtests bestanden, 8 optionale PostgreSQL-Tests erwartungsgemaess uebersprungen; Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Inhaltsfreie Browserpruefung bestaetigt genau eine Standardauswahl, sechs numerische Werte und Prozentanzeigen, sechs animierte Boegen mit eindeutigen Tokenfarben, Results All bei 100 Prozent, die sechs geforderten Beschriftungen, keine Trennlinie, deckungsgleiche Ausrichtung und keinen Seiten-Overflow. Keine Daten-, API- oder Persistenzaenderung. Verifizierter bindender Donut-Komponentenstandard vom 2026-08-05 (Phase 12 UI-Nachhaertung; Phase 13B bleibt in Arbeit): - Die ausdrueckliche Referenz ChatGPT Image Aug 5, 2026, 01_12_23 PM.png ist fuer die jetzige und jede kuenftige Donut-Anzeige bindend. Die Datahub-Zeile verwendet sechs gleich breite dunkle Einzelkarten in einem gemeinsamen Rackrahmen, jeweils mit farbigem Kopfstrich, linksbuendigem Titel, grossem 270-Grad-Ring, zentralem Absolutwert und farbigem Prozentwert. - DonutMetricCard und .donut-metric-rack kapseln Struktur, 700-ms-Animation, sichtbaren Startpunkt bei 0 Prozent, vollstaendigen 270-Grad-Bogen bei 100 Prozent, Rundkappen, Typografie, Abstaende und responsive Raster. Freie lokale SVG-, Gauge- oder Donutvarianten sind im Komponentenvertrag ausgeschlossen. - Dark- und Lightmode nutzen dieselbe Geometrie und Informationshierarchie. Der Lightmode besitzt eigene helle --donut-*-Flaechen-, Linien-, Text-, Schatten- und kontrastangepasste Statusfarbwerte; Bedeutung und Reihenfolge der sechs Farben bleiben unveraendert. - Nach dem Gesamtbildabgleich wurde der Standard proportional kompakter skaliert: 196 px Kartenmindesthoehe, maximal 128 px Ring, 8 px Kartenabstand und 12 px Rackinnenabstand sowie entsprechend reduzierte Titel-, Wert- und Prozenttypografie. Der 1180-px-Rahmen, die Sechserausrichtung und alle Funktionswerte bleiben unveraendert. - Der ausdruecklich vorgegebene Kartenradius und die zwei tokenisierten Tiefenschatten sind eng auf DonutMetricCard und Rack begrenzte Ausnahmen der bisherigen flachen Designsprache. Designvertrag, Skill-Assets und automatisierte Designpruefung dokumentieren und sichern diese Grenze. - Verifikation: 601 Standardtests bestanden, 8 optionale PostgreSQL-Tests erwartungsgemaess uebersprungen; Local-only- und Designpruefung mit 239 Tokens und 0 rohen Farben sowie Client-/Server-Produktionsbuild erfolgreich. Inhaltsfreie Browserpruefung bestaetigt sechs gleich breite Karten im 1180-px-Rahmen, Referenzproportionen, grosse Ringe, Kopfstriche, Rundungen, Animationen, eindeutige Farben, Results All bei 100 Prozent, gueltige Theme-Rollen und keinen Seiten-Overflow. Keine Daten-, API- oder Persistenzaenderung. - Der Importbericht zeigt erfolgreiche Dateien, Warnungen, Fehler, Dubletten, nicht zugeordnete Felder und Konfidenzen. - Einzelne fehlerhafte Dateien können kontrolliert behandelt werden. - Wiederholte Imports sind über Hash und Importmetadaten erkennbar. ### Phase 13 – Sicherheit und Belastbarkeit Status: abgeschlossen (2026-07-17) Ziele: - Nicht vertrauenswürdige Dateien und große Datenmengen kontrolliert verarbeiten. Mindestmaßnahmen: - Limits für Datei-, Tabellen-, Zeilen-, Spalten- und Zellgrößen - Zeit- und Speicherlimits für Parser - Schutz vor ZIP-Bombs - keine Ausführung importierter HTML-Inhalte - sichere XML-Verarbeitung ohne externe Entitäten - keine Ausführung von VBA oder Excel-Formeln - parametrisierte Datenbankabfragen - sichere temporäre Dateien - Audit-Log - Sicherheits- und Lasttests Abnahmekriterien: - Manipulierte Dateien führen zu kontrollierten Fehlern. - Ressourcenlimits sind dokumentiert und getestet. - Das Sicherheitsmodell beschreibt den tatsächlichen Datenfluss korrekt. Verifizierter Abschlussstand von Phase 13 am 2026-07-17: - Eine zentrale Ressourcenrichtlinie begrenzt Datei, dekodierten Text, Tabellen, Zeilen, Spalten, Zellen, Markup, JSON-Verschachtelung und ZIP-Inhalte vor und nach dem formatspezifischen Parsing. - Serverseitige Parser laufen in kurzlebigen Workern mit Zeit-, Speicher-, Parallelitäts- und Warteschlangengrenzen; Überlastung und Abbrüche werden als strukturierte Importfehler gemeldet. - ZIP-Bombs, verschlüsselte beziehungsweise ausbrechende Archive, ZIP64, eingebettete VBA-Projekte, XML-Entitäten und aktive HTML-Inhalte werden kontrolliert abgewiesen oder entfernt. - Excel-Formeln und VBA werden nicht ausgeführt; spreadsheet-orientierte CSV-Ausgaben neutralisieren Formel-Injection bei unveränderten internen Originalwerten. - Die Datensatznavigation verwendet stabile, memoierte Filterergebnisse und Finding-Karten; verknüpfte Result-Tabellen werden erst beim Öffnen des Detailbereichs gerendert. - Der serverseitige Vorschaucache besitzt Zeit-, Anzahl- und Bytegrenzen. Audit-Ereignisse enthalten Dauer und Fehlercode, aber keine Importinhalte. - Die Importpipeline erzeugt keine temporären Quelldateien; PostgreSQL-Zugriffe bleiben parametrisiert und bestätigte Batchimporte atomar. - Die tatsächlichen Grenzen und Betriebsunterschiede sind in `docs/IMPORT_SECURITY_LIMITS.md` und `SECURITY.md` dokumentiert. - 49 Testdateien mit 139 Tests wurden geprüft: 135 Standardtests erfolgreich, 4 PostgreSQL-Tests im Standardlauf erwartungsgemäß übersprungen und anschließend separat gegen PostgreSQL 16 erfolgreich. Local-only-Sicherheitsprüfung, Client-/Server-Produktionsbuild und gestarteter Worker-API-Smoke-Test waren erfolgreich. ### Phase 13A – Ingestion 2.0 und Profilarchitektur Status: abgeschlossen Ziele: - Die in den Phasen 3 bis 6 begonnene Trennung von technischem Dateiformat, Quellwerkzeug, Reportvariante, fachlicher Beobachtung und kanonischem Finding verbindlich vervollständigen. - Einen neuen Dateityp über einen sicheren Formatadapter, ein neues Werkzeug primär über ein versioniertes Mappingprofil und eine wesentlich andere Reportstruktur über einen kleinen Source Extractor integrieren. - Bestehende Scannerimporte und die lokale Anwendung während der schrittweisen Umstellung funktionsfähig halten. Verbindliche Pipeline: ```text Upload -> Format-/Container-Erkennung -> sicherer Formatadapter -> DecodedSourceDocument -> Source Extractor oder generischer Fallback -> FindingCandidate -> Mappingprofil -> kanonisches Finding-Modell ``` Architekturgrenzen: - Formatadapter dekodieren ausschließlich technische Inhalte. Sie kennen keine Quellwerkzeuge und erzeugen weder Severity noch Findings. - `DecodedSourceDocument` unterstützt tabellarische, hierarchische, objektartige und containerbasierte Sichten. Nicht tabellarische Inhalte werden nicht verlustreich in künstliche Tabellen gezwungen. - Source Extractors sind kleine, explizit registrierte Komponenten für formatspezifische Reportstrukturen. HTML-Selektoren sowie JSON-/XML-Pfade gehören zum Extractor, nicht zum Mappingprofil. - Mappingprofile ordnen benannte Source-Felder kanonischen Rollen zu und verwenden nur freigegebene Transformationen. Profile sind schema-validiert, versioniert und enthalten keinen dynamischen Code. - Eine Benutzerangabe zum Werkzeug ist nur ein Erkennungshinweis. Strukturelle Validierung bleibt erforderlich. - Batchzugehörigkeit und Dateiprofil bleiben getrennt. Eine generische Begleitdatei erhält nicht ohne eigene Strukturprüfung das Mappingprofil des Batch-Werkzeugs. - Nur stabile native Regelkennungen oder bestätigte lokale Regeln erzeugen dauerhafte Finding-Identitäten. Titelähnlichkeit bleibt ein Reviewhinweis. - `ImportedDataset` bleibt vorerst eine UI-Kompatibilitätsansicht; neue Fachlogik darf nicht davon abhängen. Umsetzungsschritte: 1. Parallele Erkennungswege zu einer Recognition Engine mit Kandidaten, Evidenz, Konfidenz und Bestätigungsbedarf zusammenführen. 2. Gemeinsame Verträge für `SourceLocator`, Diagnosen, Verarbeitungsstände und versionierte Provenienz definieren. 3. Formatdetektion um Dateisignatur-, MIME- und Container-Evidenz ergänzen; Dateiendung und Client-MIME nicht allein vertrauen. 4. `ImportDocument` kompatibel um ein typisiertes `DecodedSourceDocument` ergänzen. 5. Source-Extractor-Registry einführen und Extractors nur ergänzen, wenn der generische Strukturadapter nachweislich Inhalte verliert. 6. Extraktionsvarianten und gemeinsame Mappingprofile trennen. 7. Dauerhafte Finding-Identität ohne unsicheren Titel-Fallback absichern. 8. Allgemeine Importartefakte, versionierte Processing Runs und persistente Jobs in Domänenmodell, Repository und PostgreSQL ergänzen. 9. Scannerimporte schrittweise migrieren und vollständig regressionsprüfen. Verifizierter Zwischenstand vom 2026-07-20: - Umsetzungsschritt 1 ist im ersten vertikalen Schnitt umgesetzt: Die Importengine wählt das Laufzeitprofil über das Ergebnis der gemeinsamen Recognition Engine; ein nur über den Dateinamen erkanntes oder mehrdeutiges Werkzeug bleibt bis zur expliziten Bestätigung im generischen Fallback. - Offene Quellen-, Tabellen- und Feldzuordnungen verhindern Fast-Path und Abschlussimport. Die Oberfläche verlangt eine ausdrückliche Bestätigung; der Client überträgt ausschließlich bestätigte Overrides. - Das Backend verwendet weiterhin die gecachte unveränderte Vorschau, validiert Overrides gegen registrierte Profile und tatsächlich erkannte Tabellen, Spalten und kanonische Rollen und wendet sie erst danach auf das zu persistierende Dataset an. Fehlende oder ungültige Bestätigungen werden kontrolliert abgewiesen. - Die Werkzeugzuordnung des Scan-Laufs und das Profil jeder Importdatei sind getrennt: Ein eindeutig erkanntes Batch-Werkzeug bezeichnet weiterhin den Scan-Lauf, generische Begleitdateien behalten jedoch ihr eigenes generisches Dateiprofil, ihre Erkennungsevidenz und ihre Mappingidentität. - Synthetische Regressionen decken Dateiname-only-Erkennung, explizite Profilbestätigung, serverseitige Ablehnung fehlender und manipulierter Overrides sowie die Batch-/Dateiprofiltrennung ab. - Verifikation des ersten Schnitts: `npm test` erfolgreich mit 147 bestandenen Standardtests und 4 erwartungsgemäß übersprungenen PostgreSQL-Integrationstests; Local-only-Sicherheitsprüfung erfolgreich. `npm run build` für Client und Server erfolgreich. Die optionale PostgreSQL-Integration wurde nicht ausgeführt, da dieser Schnitt keine Persistenz- oder Schemaänderung enthält. - Umsetzungsschritte 2 und 4 sind im zweiten vertikalen Schnitt umgesetzt: `SourceLocator`, versionierte Importprovenienz, Transformationen, Processor-Referenzen und deterministische Processing-States bilden gemeinsame Verträge. `DecodedSourceDocument` ist der erweiterte Dokumentvertrag; `ImportDocument` bleibt als Kompatibilitätsname für UI und Recognition erhalten. - CSV, Excel und HTML liefern tabellarische Sichten. JSON bewahrt zusätzlich die native Objekt-/Arraystruktur, XML eine pfad- und attributerhaltende Hierarchiesicht und HTML neben Tabellen einen bereinigten Textblick. Verlustbehaftete tabellarische Kompatibilitätsprojektionen und HTML-Sanitizing werden in der Provenienz ausdrücklich markiert. - Source-Locators reichen vom Dateinamen über Tabellen-, Zeilen- und Spaltenpositionen bis zu Excel-Zellreferenzen, JSON-/XML-Pfaden, HTML-Selektoren und vorbereiteten Containerpfaden. Die verwendete Textkodierung wird nach der plattformneutralen Dekodierung am Dokument festgehalten. - Architekturregressionen verwenden ausschließlich synthetische Inhalte und prüfen native JSON-/XML-Strukturen, HTML-Text neben Tabellen, Locator-Provenienz, Adapterversionen, Processing-States und die unveränderte tabellarische Kompatibilität. - Verifikation des zweiten Schnitts: `npm test` erfolgreich mit 148 bestandenen Standardtests und 4 erwartungsgemäß übersprungenen PostgreSQL-Integrationstests; Local-only-Sicherheitsprüfung erfolgreich. `npm run build` für Client und Server erfolgreich. Die optionale PostgreSQL-Integration wurde nicht ausgeführt, da auch dieser Schnitt weder Persistenz noch Schema ändert. - Umsetzungsschritt 3 ist im dritten vertikalen Schnitt umgesetzt: Eine zentrale Formaterkennung bewertet Excel-/OLE-/ZIP-Signaturen, Inhaltsstruktur, Dateiendung und deklarierten Medientyp als getrennte Evidenz. Signatur und Struktur bestimmen die Parserwahl; Endung und MIME bleiben schwache Hinweise. - ZIP-Ressourcen- und Pfadprüfung wird jetzt anhand der tatsächlichen PK-Signatur statt der Dateiendung ausgeführt. Excel-Workbooks werden über Containerstruktur erkannt; generische ZIPs, unbekannte Binärdaten und Dateien mit vorgetäuschter Excel-Endung werden vor dem Parser kontrolliert abgewiesen. - Parser- und Ressourcenlimits richten sich nach dem tatsächlich erkannten Format. Dadurch greifen insbesondere XML-Entitäts-, JSON-Tiefen- und Markup-Grenzen auch bei irreführender Endung oder falschem Client-MIME. - Formatkandidaten, Evidenz, Konflikte und Validierungsart werden im `DecodedSourceDocument` gespeichert. Abweichende Hinweise erzeugen strukturierte Diagnosen, ohne eine strukturell stärkere Parserentscheidung zu überschreiben. - Synthetische Regressionen prüfen umbenanntes JSON und Excel, Endungs-/MIME-Konflikte, beschädigte und generische ZIPs, unbekannte Binärdaten, falsche Excel-Dateien sowie XML- und JSON-Sicherheitslimits bei irreführenden Dateinamen. - Verifikation des dritten Schnitts: `npm test` erfolgreich mit 152 bestandenen Standardtests und 4 erwartungsgemäß übersprungenen PostgreSQL-Integrationstests; Local-only-Sicherheitsprüfung erfolgreich. `npm run build` für Client und Server erfolgreich. Die optionale PostgreSQL-Integration wurde nicht ausgeführt, da keine Persistenz- oder Schemaänderung vorgenommen wurde. - Umsetzungsschritt 5 ist im vierten vertikalen Schnitt umgesetzt: Eine explizite, deterministisch priorisierte Source-Extractor-Registry erzeugt neutrale `FindingCandidate`-Objekte mit Originalwerten und vollständigen Source-Locators. Extractors weisen noch keine kanonischen Rollen, Severity oder Finding-Identitäten zu. - Der native Objekt-Extractor verarbeitet JSON-Objekt-/Arrayansichten und bewahrt verschachtelte `JsonValue`-Originalwerte. Der generische Tabellen-Extractor ist der registrierte Fallback für CSV, Excel, HTML und vorerst XML; er übernimmt ausschließlich Quellspalten, Header und Positionen. - Extractor-ID, Version, Match-Evidenz, Diagnosen und Processing-State werden parallel zum bestehenden UI-/Mappingpfad am Importergebnis geführt. Die bestehende kanonische Persistenz verwendet weiterhin den regressionsgeprüften Altpfad, bis Mappingprofile in Umsetzungsschritt 6 kontrolliert auf `FindingCandidate` migriert werden. - Die Registry bleibt statisch und codebasiert registriert; importierte Dateien können weder Extractorcode noch Registryeinträge liefern. Ein Spezialextractor gewinnt nur mit positiver struktureller Evidenz, sonst wird der generische Fallback verwendet. - Synthetische Regressionen prüfen deterministische Extractorwahl, tabellarischen Fallback ohne kanonische Rollen, native JSON-Kandidaten mit verschachtelten Originalwerten, Locator-Treue und den zusätzlichen Extraction-Processing-State in Browser- und Serverpipeline. - Verifikation des vierten Schnitts: `npm test` erfolgreich mit 154 bestandenen Standardtests und 4 erwartungsgemäß übersprungenen PostgreSQL-Integrationstests; Local-only-Sicherheitsprüfung erfolgreich. `npm run build` für Client und Server erfolgreich. Die optionale PostgreSQL-Integration wurde nicht ausgeführt, da keine Persistenz- oder Schemaänderung vorgenommen wurde. - Umsetzungsschritt 6 ist im fünften vertikalen Schnitt umgesetzt: Versionierte Mappingprofile werden auf neutrale `FindingCandidate`-Felder angewendet und erzeugen einen eigenen `CandidateMappingResult` mit getrennten Extractor- und Mappingprofil-Referenzen. - Recognition und Candidate-Mapping verwenden dieselbe Feldrollen-Evidenzkomponente. Automatische, Fallback- und bestätigte Entscheidungen bleiben mit Konfidenz, Evidenz und Bestätigungsbedarf nachvollziehbar; eine explizite Profil- oder Feldbestätigung berechnet das Kandidatenmapping konsistent neu. - Mapping ergänzt Rollen additiv. Originalwerte, dekodierte Werte und vollständige Source-Locators bleiben unverändert erhalten; unterschiedliche Extraktionsvarianten können deshalb dasselbe Mappingprofil verwenden, ohne Reportselektoren oder Parserlogik in das Profil zu verlagern. - Der neue Mapping-Processing-State läuft in Browser- und Serverpipeline parallel mit. Die kanonische Finding-Persistenz verwendet bis zur regressionsgesicherten Scanner-Migration in Umsetzungsschritt 9 weiterhin den bestehenden Pfad und wird durch diesen Schnitt nicht doppelt oder still umgestellt. - Synthetische Regressionen prüfen gemeinsame Recognition-/Mappingevidenz, versionierte Profilprovenienz, Unabhängigkeit von Extractorvarianten, verschachtelte JSON-Originalwerte, Locator-Treue und die Neuberechnung nach expliziter CIS-CAT-Profilbestätigung. - Verifikation des fünften Schnitts: `npm test` erfolgreich mit 159 bestandenen Standardtests und 4 erwartungsgemäß übersprungenen PostgreSQL-Integrationstests; Local-only-Sicherheitsprüfung erfolgreich. `npm run build` für Client und Server erfolgreich. Die optionale PostgreSQL-Integration wurde nicht ausgeführt, da weder Persistenz noch Schema geändert wurden. - Umsetzungsschritt 7 ist im sechsten vertikalen Schnitt umgesetzt: Finding-Definitionen tragen eine explizite versionierte Identitätsstrategie mit Dauerhaftigkeit und Evidenz. Gemappte native Regel-IDs erzeugen werkzeuggebundene dauerhafte Schlüssel; Findings ohne eine solche ID erhalten ausschließlich importlokale `unresolved`-Schlüssel. - Titel, Titel-Asset-Kombinationen, Kategorien und andere abgeleitete Merkmale erzeugen weder im kanonischen Import noch im Vergleich automatische dauerhafte Identitäten. Die deklarativen Profil-`comparisonKeys` enthalten nur noch Kombinationen mit `rule-id`. - Der Vergleich verwendet automatisch nur nachweislich dauerhafte Definitionen, eindeutige Werkzeug-/Regel-IDs oder eindeutige Framework-/Control-IDs. Titelähnlichkeit bleibt ein `possibly-identical`-Reviewvorschlag und kann erst durch eine explizit bestätigte lokale Regel verbunden werden. - Lokale Regeln dürfen auch gleiche bestätigte Endpunkte ausdrücken, werden jedoch weiterhin nur bei genau einem eindeutigen Paar angewendet. Mehrdeutige Kandidaten erzeugen keine automatische oder lokal bestätigte Zuordnung. - Neue Modellvalidierungen erkennen widersprüchliche Identitätsmetadaten, native Definitionen ohne Quellregel-ID, unresolved Definitionen mit vorgetäuschter Regel-ID und doppelte kanonische Schlüssel. Legacy-Modelle ohne neue Metadaten bleiben lesbar; ihre Definition gilt nur mit vorhandener Regel- oder Framework-ID als automatisch dauerhaft. - Kanonische Importe erzeugen pro Datei eine aggregierte Warnungsdiagnose für unresolved Findings. Originaltitel und Quellfelder bleiben vollständig erhalten, werden aber nicht mehr als Persistenzidentität missbraucht. - Synthetische Regressionen prüfen stabile Identität trotz Titeländerung, getrennte importlokale Identitäten bei identischen Titeln, Reviewvorschläge statt automatischer Titel-/Asset-Zuordnung, explizite lokale Bestätigung, Mehrdeutigkeitsblockade und Identitätsvalidierung. - Verifikation des sechsten Schnitts: `npm test` erfolgreich mit 163 bestandenen Standardtests und 4 erwartungsgemäß übersprungenen PostgreSQL-Integrationstests; Local-only-Sicherheitsprüfung erfolgreich. `npm run build` für Client und Server erfolgreich. Die optionale PostgreSQL-Integration wurde nicht ausgeführt, da weder Persistenzschema noch Repository geändert wurden. - Umsetzungsschritt 8 ist im siebten vertikalen Schnitt umgesetzt: Versionierte allgemeine Importartefakte bewahren Projektbezug, Parent-Hierarchie, Art, sicheren relativen Pfad, SHA-256, Größe, Sensitivität, Parse-Status und eine ausschließlich backendkontrollierte Speicherreferenz. - Processing Runs werden als unveränderliche Historie mit Processor-Versionen, Diagnosen, Zeitpunkten und expliziter Supersession gespeichert. Frühere Verarbeitungsergebnisse werden beim Reprocessing nicht überschrieben. - Persistente Ingestion Jobs besitzen projektweit eindeutige Idempotenzschlüssel, deterministische Claim-Reihenfolge, atomare PostgreSQL-Claims mit `FOR UPDATE SKIP LOCKED`, begrenzte Leases und Versuche sowie Retry- und Dead-Letter-Zustände. Abgelaufene Leases werden kontrolliert übernommen; ausgeschöpfte Jobs werden nicht erneut ausgeführt. - Lokales und PostgreSQL-Repository prüfen Projektgrenzen und Referenzen konsistent, exportieren und löschen die neuen Entitäten projektbezogen. Idempotente Wiederholungen und leere Worker-Polls verändern die Repository-Revision nicht. - Migration `003_ingestion_artifacts_jobs.sql` ergänzt relationale Fremdschlüssel, Zustands- und Lease-Constraints, Hashprüfung sowie Claim-, Artefakt- und Processing-Indizes, ohne bestehende Migrationen zu verändern. - Synthetische Regressionen prüfen Artefakthierarchie, Pfadschutz, unveränderliche Processing Runs, Idempotenz, Retry, Worker-Besitz, Lease-Recovery, Dead Letter, Schema-Constraints und vollständigen Projektexport. - Verifikation des siebten Schnitts: `npm test` erfolgreich mit 168 bestandenen Standardtests und 5 im Standardlauf erwartungsgemäß übersprungenen PostgreSQL-Integrationstests; Local-only-Sicherheitsprüfung erfolgreich. `npm run build` für Client und Server erfolgreich. Die PostgreSQL-Integration lief zusätzlich mit 5 von 5 Tests gegen eine frische kurzlebige PostgreSQL-16-Instanz erfolgreich; die Instanz wurde danach entfernt. - Umsetzungsschritt 9 ist im achten vertikalen Schnitt umgesetzt: Die kanonische Persistenz verwendet bei neu verarbeiteten Dateien das bestätigte versionierte `CandidateMappingResult` als einzige semantische Quelle. Die frühere direkte Ableitung aus UI-Tabellen bleibt ausschließlich als Kompatibilitätsfallback für Legacy-Datensätze ohne Mapping bestehen. - Eine plattformneutrale Candidate-Projektion überführt Originalwerte, Feldrollen, Mappingentscheidungen, Konfidenzen, Processor-Versionen und vollständige Source-Locators in Definitionen, Vorkommen und Evidenz. Native JSON-Objektpfade bleiben erhalten und werden nicht durch die verlustbehaftete Tabellenprojektion ersetzt. - Kanonische Importe lehnen offene Quellen-, Tabellen-, Recognition-Feld- und native Candidate-Feldentscheidungen auch außerhalb des HTTP-Handlers ab. Native Candidate-Bestätigungen verwenden validierte stabile Decision-IDs; unbekannte IDs und eine Umgehung tabellarischer Feldentscheidungen werden serverseitig abgewiesen. - Vorschau und Persistenz zählen dieselben ausgewählten Candidates. Kandidaten aus ausdrücklich nicht ausgewählten Tabellen werden nicht als Findings gespeichert und mit einer strukturierten Diagnose nachvollziehbar ausgewiesen. - Purple Knight, PingCastle, CIS-CAT, Maester und der generische Fallback werden mit synthetischen Fixtures über den Candidate-/Mappingpfad bis in ein validiertes kanonisches Modell geprüft. Semantisch gleichwertige CSV- und native JSON-Inhalte erzeugen dieselbe Finding-Identität, Severity und Statusbedeutung. - Architekturprüfungen verhindern Quelltoolwissen in technischen Formatadaptern und direkte Parser-/Candidate-Mappinglogik in React-Komponenten. Bestehende APIs, Identitätslogik, Exporte, Filter, lokale Verarbeitung und PostgreSQL-Persistenz bleiben regressionsgeprüft. - Abschlussverifikation: `npm test` erfolgreich mit 176 bestandenen Standardtests und 5 im Standardlauf erwartungsgemäß übersprungenen PostgreSQL-Integrationstests; Local-only- und Architekturprüfung erfolgreich. `npm run build` für Client und Server erfolgreich. Die PostgreSQL-Integration lief zusätzlich mit 5 von 5 Tests gegen eine frische kurzlebige PostgreSQL-16-Instanz erfolgreich; die Instanz wurde danach entfernt. Nachträgliche verifizierte Regression vom 2026-07-21: Importtabellen-Identitäten enthalten neben Quelldatei und Tabellenname nun den stabilen Tabellenindex; die Dataset-Kompatibilitätsprojektion übernimmt dieselbe ID unverändert. Dadurch bleiben mehrfach identisch benannte HTML-Tabellen – wie in umfangreichen PingCastle-Berichten – getrennt adressierbar und erzeugen keine doppelten `SourceTableRecord`-IDs. Eine synthetische Regression prüft zwölf gleich benannte Tabellen bis zum validierten kanonischen Modell. `npm test` mit 248 Standardtests und Local-only-Sicherheitsprüfung sowie Client-/Serverbuild sind erfolgreich; keine Persistenz- oder Schemaänderung. Nachträgliche verifizierte Zielkontext-Regression vom 2026-07-21: Der Importworkflow bewahrt `targetProjectId` nun über Vorbereitung, bestätigungspflichtige Vorschau, Freigabe und Fehlerzustand. Damit kann ein bereits ausgewählter Mandant beim Abschluss nicht mehr verloren gehen und ein Scannerimport legt nicht unbeabsichtigt einen neuen Mandanten an. Synthetische Zustands-, API- und Datahub-Gruppierungsregressionen sind grün. `npm test` mit 249 Standardtests und Local-only-Sicherheitsprüfung sowie Client-/Serverbuild sind erfolgreich; keine Schemaänderung. Nachträgliche verifizierte PingCastle-Strukturregression vom 2026-07-22: Ein dedizierter plattformneutraler Source Extractor verarbeitet die nativen Finding-Strukturen aus bereinigten PingCastle-HTML-Berichten und aus `HealthcheckData/RiskRules`-XML. Wiederholte HTML-Darstellungen derselben Regel werden innerhalb einer Datei anhand der Rule ID zusammengeführt; dieselbe Rule ID erzeugt formatübergreifend dieselbe kanonische Finding-Identität, während jedes importierte Dateiformat sein eigenes Vorkommen mit Quell-Locator und Provenienz behält. Regelähnlicher aktiver HTML-Inhalt wird vor der Extraktion entfernt. Synthetische HTML-/XML-Paritäts-, Deduplikations-, Sicherheits- und Persistenzregressionen sind grün. `npm test` mit 281 bestandenen Standardtests, 7 erwartungsgemäß übersprungenen optionalen PostgreSQL-Tests und erfolgreicher Local-only-Sicherheitsprüfung sowie Client-/Serverbuild sind erfolgreich; keine Persistenz- oder Schemaänderung. Nachträgliche verifizierte native Work-Projektionsregression vom 2026-07-22: Finding-Vorkommen aus nativen Source Extractors ohne künstliche `SourceTable`-ID erhalten nun je Importdatei eine auswählbare Work-Unteransicht anhand von Werkzeug, Scandatum und technischem Dateiformat. Die Projekt-Gesamtansicht, kanonische Rule-ID-Identität und dateibezogene Provenienz bleiben unverändert. Die ausdrücklich freigegebenen Dummy-PingCastle-Dateien wurden ausschließlich rein lesend gegen den aktuellen Importer geprüft: HTML und XML enthalten jeweils 37 gematchte Regeln und erzeugen jeweils 37 Candidates ohne offene oder ausgeschlossene Mappingentscheidungen; reale Inhalte wurden nicht in Tests übernommen. Eine synthetische Regression sichert die native Unteransicht. `npm test` mit 282 bestandenen Standardtests, 7 erwartungsgemäß übersprungenen optionalen PostgreSQL-Tests und erfolgreicher Local-only-Sicherheitsprüfung sowie Client-/Serverbuild sind erfolgreich; keine Persistenz- oder Schemaänderung. Nachträgliche verifizierte Scanverlaufs-Nachhärtung vom 2026-07-22: Verknüpfte Scanberichte können über eine projekt- und scanlaufgebundene, exakt bestätigte Repository-/API-Mutation einzeln gelöscht werden. PostgreSQL-Kaskaden und der lokale Adapter entfernen abhängige Dateien, Tabellen, Vorkommen, Nachweise, Diagnosen, Occurrence-Reviews, scanlaufabhängige Artefakte und ungültig gewordene Vergleiche; gemeinsam verwendete Finding-Definitionen, andere Scanläufe und der Mandant bleiben erhalten. Nicht mehr referenzierte Importfingerprints werden nur für die gelöschten Hashes bereinigt. Die Scan-Historie markiert bekannte Werkzeuge bei höchstens 60 Sekunden auseinanderliegenden Dateizeitpunkten als „Mögliches Duplikat“; derselbe projektgebundene Hinweis erscheint in der Uploadvorschau, bleibt aber im Gegensatz zur exakten SHA-256-Dublette auswählbar. Im freigegebenen Dummy-Mandanten wurden Markierung, Löschschaltfläche und Bestätigungsdialog rein oberflächlich geprüft und der Dialog ohne Löschung geschlossen. `npm test` mit 286 bestandenen Standardtests, 7 erwartungsgemäß übersprungenen optionalen PostgreSQL-Tests und erfolgreicher Local-only-Sicherheitsprüfung sowie Client-/Serverbuild sind grün. Der PostgreSQL-Löschpfad wurde zusätzlich über die laufende API ausschließlich mit zwei synthetischen Test-Scan-IDs ausgeführt und vollständig auf null Importdateien bereinigt; keine Dummy-Daten wurden verändert. Nachträgliche verifizierte Result-Link-Regression vom 2026-08-02: Der gemeinsame Result-Linker löst das Werkzeug eines Findings aus der Blattmetadaten- beziehungsweise Projektprovenienz auf und schließt Detailblätter mit einer ausdrücklich abweichenden toolId aus. Die unscharfe Zuordnung verwendet nur noch erkennbare Datei- oder stabile Regel-ID-Verweise; beliebiger Ergebnisfließtext, wie ihn Maester im Feld Result liefert, kann keine Quelltabelle mehr über Wort- oder Namensähnlichkeit übernehmen. Explizite CIS-CAT-source-table-Verweise sowie bestehende Purple-Knight-Datei- und SI-ID-Verweise bleiben erhalten. Drei neue synthetische Regressionen prüfen Maester gegen CIS-CAT, Maester-Fließtext gegen ein textähnliches Blatt und einen legitimen Maester-ID-Link im gemischten Projekt. npm test bestand mit 485 Standardtests; 7 optionale PostgreSQL-Integrationstests wurden übersprungen. Local-only- und Designprüfung sowie Client-/Server-Produktionsbuild waren erfolgreich. Keine Persistenz-, Schema-, Importdaten- oder Realdatenänderung. Phase 13A ist damit vollständig verifiziert und abgeschlossen. Persistenzprinzipien: - Bestehende Projekt-, Assessment-, Scan-Lauf-, Importdatei-, Finding-, Evidenz- und Reviewtabellen bleiben die gemeinsame Grundlage. - Ein allgemeines Importartefakt hält Parent-Beziehung, Art, relativen Pfad, Hash, Größe, Sensitivität, Parse-Status und backendkontrollierte Speicherreferenz. - Ein Processing Run speichert Parser-, Extractor-, Profil- und Mappingversion, ohne frühere Läufe zu überschreiben. - Persistente Jobs verwenden Idempotenzschlüssel, begrenzte Wiederholungen und Lease-/Recovery-Zustände. - Schemaänderungen erfolgen ausschließlich über neue unveränderliche Migrationen. Abnahmekriterien: - Architekturtests verhindern Toolwissen in Formatadaptern und Parserlogik in React. - Semantisch gleiche synthetische Inhalte aus mehreren Formaten ergeben dieselbe fachliche Bedeutung. - Benutzerangabe oder Batchassoziation erzwingen kein unvalidiertes Werkzeugmapping. - Unbekannte Inhalte bleiben mit Provenienz und Diagnosen erhalten. - Titelähnlichkeit erzeugt keine automatische Finding-Zusammenführung. - Alle bestehenden Scannerimporte, APIs, Exporte und Filter bleiben regressionsgeprüft. - `npm test`, `npm run build` und bei Persistenzänderungen die PostgreSQL-Integration sind erfolgreich. ### Phase 13C - Scanner Context und Environment Inventory Status: in Arbeit Zwischenstand 2026-09-09 (PurpleKnight): Workbook-Findings neben Summary wiederhergestellt; HTML-Berichtskontext, Originalwerte/Provenienz, Null-Details und Vollstaendigkeitsdiagnosen verifiziert. Profil 1.3.0 empfiehlt Reimport bei unveraenderter Historie. Dummy-Abgleich und 25 synthetische Regressionen sind abgeschlossen; damit ist keine pauschale Abnahme aller Scanner-Versionen oder der gesamten Phase 13C verbunden. Zwischenstand 2026-09-09 (PingCastle-Auditpunkte 1-3): Strukturtreue der Attribute, Leerzustaende und HTML-Zellwerte mit synthetischen Browser-/Serverregressionen, unabhaengiger Dummy-Strukturzaehlung und produktivem Parse-only-HTTP-Abgleich verifiziert. Profil 1.5.0 empfiehlt Reimport, aendert aber keine Historie. XML bleibt vorerst generisch unter `pingcastle.xml.*`; gemeinsame semantische Schluessel und HTML-Control-Path-JSON sind weiterhin offen. Eine gleiche Findingzahl allein gilt nicht als Abnahme des gesamten Berichtskontexts. Zwischenstand 2026-09-06 (Baseline-Vollreimport): Der bestaetigte Delete-Pfad entfernt nun auch ausschliesslich reproduzierbare Policy-Evaluations- und Finding-Ketten, die die geloeschte Baselineanalyse referenzieren. Kundenimporte, GPO-Beobachtungen, Environment Profiles und Snapshotaggregationen bleiben erhalten. Damit ersetzt diese Entscheidung die fruehere Delete-Sperre fuer bereits verwendete Baselines. Vor der produktiven Loeschung wurde der kanonische PostgreSQL-Bestand als Custom-Format gesichert und der Dumpkatalog gelesen. Der letzte blockierte Baselineeintrag wurde geloescht; der Katalog ist leer und 51 GPO-Beobachtungen sind weiterhin vorhanden. Der Neuimport selbst erfolgt anschliessend durch den Benutzer. Ziele: - Scannerinformationen ausserhalb einzelner Findings verlustfrei und mit Quellprovenienz erfassen. - Vorhandene Werte, explizite Abwesenheit, leere Bereiche, Zugriffsfehler, Lizenzgrenzen und Parserluecken fachlich unterscheidbar machen. - Die Informationen in lokaler und PostgreSQL-Persistenz, Export, API, Result-DB-naher Snapshotabfrage und Dashboard bereitstellen. Umgesetzter Stand vom 2026-08-23: - PingCastle HTML persistiert einen vollstaendigen strukturierten Abschnittsbestand mit Hierarchie, Prosa und allen Tabellen; eine zusaetzliche Report-Overview erfasst Tabellen ausserhalb benannter Abschnitte. XML bewahrt die nicht zu `RiskRules` gehoerende `HealthcheckData`-Hierarchie als Abschnitt und typisierte Pfadbeobachtungen. - Typisierte Beobachtungen enthalten Scanner-/Berichtsmetadaten, Risiko-Scores, stabile zentrale AD-Schluessel fuer Domaene, Forest, Function Level, Schema, DC-Anzahl und Recycle Bin sowie generische, quellentreue Werte fuer jede weitere Tabellenzelle. LAPS, Backup, WEF, krbtgt und ausdruecklich fehlende Entra-Konfiguration werden als eigene Fakten abgebildet. - `ScannerReportSection` und `EnvironmentObservation` erweitern das kanonische Modell additiv. Migration 018, Local-/PostgreSQL-Repositories, Projekt-Export und eine read-only Environment-Snapshot-API speichern und liefern denselben Vertrag. - Die Unified Result DB projiziert jede typisierte EnvironmentObservation als eigenen Result-Typ `environment-observation` neben Scanner-Findings und Policy-Evaluationen. Original- und Normalwert, Property, Subject, Erfassungszustand, Abschnitt, Locator sowie Import-, Profil- und Mappingprovenienz bleiben direkt ueber Listen-, Facetten- und Einzelresultat-API abrufbar. Environment-spezifische Facetten filtern Zustand, Property und Subject; Finding-Achsen wie Severity, IOE, Abweichung und Review werden fuer diese Zeilen nicht fachlich umgedeutet. - PingCastle-Profil 1.4.0 klassifiziert bekannte Tabellen mit den normalisierten sichtbaren PingCastle-Bezeichnungen `domain-information`, `computer-information`, `user-information`, `admin-groups`, `control-paths-analysis`, `infrastructure`, `anomalies`, `password-policies`, `gpo`, `trusts-details` und `pki`. Jeder sichtbare Environment-Unterpunkt wird im flachen Subject-Feld als Punktpfad an seinen Hauptbereich gebunden, beispielsweise `domain-information.entra-id-configuration`, `computer-information.operating-systems`, `infrastructure.wsus-settings`, `anomalies.windows-event-forwarding-wef` oder `gpo.firewall-configuration`. Tabellen mit null Zeilen tragen den Unterpunkt ueber ihre Row-Count-/Presence-Beobachtung; Unterpunkte ohne Tabelle erhalten eine quellentreue Heading-Presence-Beobachtung. Backup, LAPS, WEF und krbtgt bleiben entsprechend dem Bericht unter Anomalies. Finding-Regeldetailabschnitte werden nicht als Environment-Unterpunkte umgedeutet, und unbekannte Tabellen bleiben verlustfrei `pingcastle-table-row`. Bestehende 1.3.0-Importe benoetigen fuer die neuen Subject-Typen einen Reimport. - PingCastle-Profil 1.3.0 ist die erste eindeutig versionierte Verarbeitungsrevision mit verbindlicher Environment-Context-Erfassung. Historische 1.2.0-Importe bleiben unveraendert gespeichert, gelten aber auch bei gleichem Finding-Kompatibilitaetsschluessel als `reimport-recommended`; nur ein neuer 1.3.0-Import darf als `current` erscheinen. - Das Dashboard zeigt den aktiven Timeslot als Directory Overview mit zentralen Fakten, Betriebssystemen, hervorgehobenen Infrastruktur-/PKI-/Trust-/LAPS-Bereichen und einer Coverage-Zusammenfassung der Erfassungszustaende. - Der Environment-Result-Vertikalschnitt ist mit 36 fokussierten synthetischen Domain-, Local-Repository-, PostgreSQL-Vertrags-, API-, HTTP- und UI-Tests verifiziert. Der Gesamtlauf besteht mit 703 Tests und ueberspringt 8 optionale PostgreSQL-Integrationstests; Local-only und der vollstaendige Client-/Server-Produktionsbuild sind erfolgreich. Nur der bereits dokumentierte globale Designcheck fuer zwei Schattenregeln in `datahub-redesign.css` Zeilen 39/42 bleibt rot. Die reale PostgreSQL-Laufzeitintegration fuer Migration 018 bleibt offen; Phase 13C bleibt deshalb in Arbeit. Abnahmekriterien: - Jeder vom Scanner benannte Nicht-Finding-Abschnitt bleibt mit Tabellen, Prosa, Zustand und Locator erhalten. - Zentrale Umgebungswerte besitzen stabile semantische Schluessel; unbekannte Felder bleiben generisch und verlustfrei erhalten. - Snapshot, Export und Dashboard verwenden dieselbe projekt- und scanlaufgebundene Grundmenge. - `npm test`, `npm run build` und die PostgreSQL-Integration sind ohne fachfremde Vorfehler erfolgreich. ### Phase 13B – GPO-Backup- und Microsoft-Baseline-Analyse Verifizierter Zwischenstand 2026-09-18 (stabile Work-Liste und technische Pfadtitel): Die Datensatzwahl startet keine zweite kartenlokale `scrollIntoView`-Animation mehr; nur der virtuelle Listencontainer positioniert eine ausserhalb des Viewports liegende Auswahl und tut dies ohne Smooth-Animation. Die Trefferliste reserviert ihre schmale Scrollbarspur dauerhaft, sodass das Ein- und Ausblenden des Balkens die Textbreite und damit den Zeilenumbruch nicht verschiebt. Lange GPO-Registrytitel werden im Readerkopf und in der Finding-Ueberschrift ueber die gemeinsame `technical-path`-Darstellung mit Pfadschrift, vollstaendigem Inhalt und Umbruch innerhalb der Lesespalte ausgegeben; Accepted Risk und Kopfaktionen behalten ihre eigene Gridspalte. Die genaue Auswahlinteraktion und der lange Registrytitel sind synthetisch regressionsgesichert. 1.339 Tests bestanden, acht optionale PostgreSQL-Tests uebersprungen; Local-only-/Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Keine Parser-, Bewertungs-, API-, SQL-, Persistenz- oder Bestandsdatenaenderung; Phase 13B bleibt in Arbeit. Verifizierter Zwischenstand 2026-09-06 (Benchmark-Semantik): Evaluator 1.3.3 erzeugt `Passed` oder `Failed` ausschliesslich aus einer zur beobachteten Umgebung passend ausgewaehlten Microsoft-Security-Baseline mit vorhandenem, technisch vergleichbarem Sollwert. Ein vorhandener Sollwert ohne Kundenwert ist `Failed`; identische Werte sind `Passed`, abweichende Werte `Failed`. Leere Baselinezeilen werden nicht bewertet, nicht unterstuetzte Werte bleiben Review/Warning und werden nie zu Pass/Fail umgedeutet. Security-Template-Registrywerte behalten Typ und Wert im Vergleich. Ausschliesslich Dummy wurde neu ausgewertet: 363 Failed, 13 Passed und 8 Review/Warning; 0 Pass/Fail-Zeilen ohne Baselinewert. 831 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Phase 13B bleibt in Arbeit. Status: in Arbeit Verifizierter Zwischenstand 2026-09-06 (baseline-getriebener Soll-/Ist-Vergleich): Evaluator 1.3.1 startet je aktiver Microsoft-Baselineanalyse bei deren technisch aufgeloesten Empfehlungen. Ein identischer typisierter Ist-Wert wird `configured_match`/Passed, ein abweichender oder im importierten GPO-Backup fehlender Ist-Wert wird `confirmed_configured_deviation`; Einstellungen ohne Baselineempfehlung erzeugen kein Bewertungsergebnis. Mehrere Baselines werden unabhaengig ausgewertet und nicht mehr als mehrdeutige globale Betriebssystemauswahl blockiert. Konflikte, indeterminierte Werte und unvergleichbare Typen bleiben Review. Die neutrale Auswertung behauptet weder Wirksamkeit noch Severity und bleibt fuer die Finding Factory `ineligible`. Migration 020 erlaubt dafuer baseline-gebundene Ergebnisse ohne erfundenen Aggregationszustand; Work zeigt fehlende und vorhandene Vergleiche einzeln mit kurzem Baseline-Namen. Ein deduplizierter GPO-Reimport startet die aktuelle Auswertung erneut. Nach Datenbanksicherung wurde ausschliesslich der freigegebene Dummy neu ausgewertet: 3.638 Vergleiche, 55 Passed, 3.556 Abweichungen (davon 3.483 fehlende Ist-Werte) und 27 Review-Faelle. Kein anderer Mandant wurde ausgewertet. 821 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Phase 13B bleibt fuer die Aufloesung der 27 Review-Faelle, weitere Preference-CSEs und Exportdetails in Arbeit. Verifizierter Zwischenstand 2026-09-06 (direkte Work-Anzeige): Baseline-Abweichungen werden in der regulaeren Work-Projektion als `Failed` dargestellt und erscheinen im eigenen Blatt sowie in der Kategorie und Quelle `GPOs`; passende Werte bleiben `Passed`, unentscheidbare Vergleiche `Investigate`. Damit greift der normale Work-Standardfilter fuer Abweichungen, ohne dass die separate Policy-Analyseansicht fuer die taegliche Findingsicht erforderlich ist. Beim Oeffnen werden ausschliesslich Ergebnisse des aktuellen Evaluators beruecksichtigt und pro GPO-Backup der vollstaendigste Baseline-Lauf gewaehlt; ein spaeterer Teillauf kann die vollstaendige Auswertung nicht mehr verdraengen. Der leere Clientzustand enthaelt keinen Verweis mehr auf die separate View. 825 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Ausschliesslich synthetische Regressionen verwendet; keine Kundendaten oder Persistenz veraendert. Phase 13B bleibt in Arbeit. Verifizierter Zwischenstand 2026-09-06 (direkte Result-DB-Anzeige): Der Local- und PostgreSQL-Read-Pfad projiziert nun jeden aktuellen, deterministischen Baselinevergleich direkt als `policy_deviation` unter dem Source Tool `GPOs`. Abweichung, Uebereinstimmung, Nichtanwendbarkeit und Review bleiben als `fail`, `pass`, `not_applicable` und `warning` getrennt; neutrale Vergleiche behalten Severity `unknown`. Ein bereits durch die Finding Factory angereicherter Vergleich ersetzt seine neutrale Zeile und wird ebenfalls unter `GPOs` gefuehrt, sodass keine Duplikate entstehen. Rohbeobachtungen bleiben ausschliesslich `internal-analysis`. Die PostgreSQL-Projektion materialisiert den grossen Evaluation-Run einmal je aktiver Aggregation statt ihn je Ergebniszeile erneut aus JSONB zu entpacken. Inhaltsfreie Laufzeitpruefung auf dem freigegebenen Dummy: Source Tool `GPOs` vorhanden, 3.638 aktuelle Vergleiche und 3.583 Abweichungen; Listen- und Facettenabfragen jeweils unter 0,5 Sekunden. 826 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich. Keine Persistenzmutation und keine Einsicht in Kundeninhalte; Phase 13B bleibt fuer Review-Faelle, weitere Preference-CSEs und Exportdetails in Arbeit. Verifizierter Zwischenstand 2026-09-06 (Evaluation ohne Zusatzklick): Der bestehende automatische Jobpfad fuehrt nach Parsing und Identity-Analyse unmittelbar Snapshotaggregation, Baseline-Evaluation und Finding Factory aus und setzt den Importjob erst danach auf `succeeded`. Der irrefuehrende `Evaluate`-Button wurde aus erfolgreichen beziehungsweise partiellen GPO-Zeilen entfernt; `Retry` bleibt ausschliesslich fuer fehlgeschlagene Importjobs. Der vorhandene projektgebundene Evaluate-Endpunkt bleibt als technische Recovery-Grenze erhalten, ist aber kein regulaerer UI-Arbeitsschritt. Der Progressdialog bleibt waehrend Queue, Import und automatischer Auswertung geoeffnet. Ein neuer Regressionstest sichert die Reihenfolge Analyse -> automatische Evaluation -> Jobabschluss. 827 Tests bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Keine Bestandsdaten veraendert; Phase 13B bleibt in Arbeit. Zwischenstand 2026-09-06 (einzelnes GPO-Delete): Die bisher auf Dead-Letter-Artefakte begrenzte Loeschung gilt nach ausdruecklicher Bestaetigung fuer jeden beendeten GPO-Import. Abhaengige Policy-Snapshot-Aggregationen werden als reproduzierbare Derivate invalidiert; ihre Evaluationen und Findings folgen transitiv. Der Timeslot, andere Quellen und das Environment Profile bleiben erhalten. Laufende oder eingereihte Jobs blockieren die Mutation. Die UI bietet Delete direkt in jeder GPO-Zeile. Keine Migration und keine Mutation des kanonischen Bestands; Phase 13B bleibt in Arbeit. Zwischenstand 2026-09-06: Die automatische GPO-Pipeline nutzt zuerst beobachtete Betriebssystem-/DC-Daten aus dem EnvironmentSnapshot desselben Timeslots, mit Quellenreferenzen; Functional Levels sind kein Betriebssystemersatz. GPMC-CoreSettings und verschachtelte GPReport-Identitaeten werden nun gelesen. Der speicherbegrenzte SAX-Metadatenparser verarbeitet groessere Backups; eine synthetische Regression mit 2300 GPOs prueft ZIP und Ordnertransport. Security Templates und Advanced Audit erhalten auf Kunden- und Baselinenseite gemeinsame native Zielidentitaeten neben Registry.pol. Nach Import folgen bei eindeutigen Voraussetzungen Aggregation, Evaluation und die weiterhin freigabegesicherte Finding Factory; Work projiziert aktuelle Bewertung und Baselinewert neben den Beobachtungen. Evaluate ersetzt den obligatorischen View-Zwischenschritt. Verifiziert auf dem ausdruecklich freigegebenen Dummy: erneute Verarbeitung des erhaltenen Originals erfolgreich, 51 aktuelle Beobachtungen und 50 persistierte Bewertungsergebnisse. Diese stehen in Review, nicht auf bestaetigter Uebereinstimmung: Backup-ID/-zeit und Setvollstaendigkeit sind nicht ausreichend belegt; die vorhandene Baselineanalyse ist unvollstaendig. Das referenzierte Original der passenden Baseline fehlt sowohl im konfigurierten LocalAppData-Speicher als auch im vorhandenen Workspace-Speicher. Migration 019 erweitert nur erlaubte Policy-Zielarten; vorher wurde ein Custom-Format-Backup des kanonischen Bestands erstellt und per pg_restore --list auf Lesbarkeit geprueft, kein Restore behauptet. Kundenoriginale und bestehende Runs bleiben unveraendert. Keine anderen Kunden neu verarbeitet. Keine visuelle Browserabnahme; Phase 13B bleibt offen. Aktueller verifizierter Zusatzstatus vom 2026-09-04: Die nachtraeglich eingefuehrte Regelkatalog-Grenze blockiert den urspruenglich vorgesehenen neutralen Feinvergleich zwischen importierter Microsoft Security Baseline und technisch eindeutig aufgeloesten GPO-Einstellungen nicht mehr. Fehlt fuer alle anwendbaren Kontexte eine Katalogregel, verwendet Evaluator 1.2.0 den importierten Baselinewert direkt mit einem typgetreuen Equality-Comparator und erzeugt reproduzierbar `configured_match` oder `confirmed_configured_deviation`. Eine solche neutrale Abweichung besitzt keine erfundene Severity, keine Risikoregel und bleibt fuer die Finding Factory `ineligible`; erst eine eindeutige freigegebene Katalogregel darf staerker/schwaecher, Abhaengigkeiten, Risiko und Finding-Freigabe ergaenzen. Teilweise ADMX-Metadaten blockieren den exakten Vergleich einer bereits aufgeloesten Einstellung nicht, bleiben aber als Diagnose sichtbar; mehrdeutige oder nur fuer einen Teil der Kontexte passende Regeln, unvollstaendige Kundensnapshots, Baseline-Mehrdeutigkeit, Wertkonflikte und nicht vergleichbare Typen bleiben fail-closed in Review. Die Aktionsprojektion erkennt Evaluationen aelterer Engineversionen nicht mehr als aktuellen Abschluss und bietet fuer denselben Snapshot und dieselbe Baseline eine neue 1.2-Auswertung an. 36 fokussierte Policy-Tests und alle betroffenen GPO-Tests sind erfolgreich. Im Gesamtlauf bestanden 785 Tests; ein fachlich unabhaengiger bestehender statischer Data-Hub-Test erwartet eine einzeilige Quelltextformatierung, waehrend die bereits vorhandene uncommittete UI-Aenderung denselben Ablauf mehrzeilig schreibt; 8 optionale PostgreSQL-Tests wurden uebersprungen. Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine API-, SQL- oder Persistenzaenderung; Phase 13B bleibt fuer den noch fehlenden Baseline-only/Subject-missing-Vergleich, fachliche Kataloganreicherung, weitere Preference-CSEs und Exportdetails in Arbeit. Aktueller verifizierter Zusatzstatus vom 2026-09-03: Die bislang fehlende GPO-Anbindung an Work und Result DB ist als additives, timeslotgebundenes Readmodell geschlossen. Jede aktuelle rohe `PolicyObservation` wird als eigener Quelltyp `policy-observation` mit Assessment-, Artefakt-, Backup-, Parser-, Reducer-, Identity-, Wert-, Diagnose- und Locator-Provenienz projiziert. Diese Datensaetze bleiben fachlich `informational`, zeigen IOE und Deviation als nicht anwendbar und werden auch unter dem Result-DB-Standardfilter `Deviation = Yes` als Kontext sichtbar; nur die Finding Factory darf weiterhin eine echte `policy_deviation` erzeugen. Work fuegt `Group Policy · Observations` als eigenes Blatt hinzu und nimmt dieselben Zeilen in `All Records` auf, sodass `Source: Scan` dort `Group Policy` anbietet. Der freigegebene Dummy-Timeslot liefert ueber die laufende PostgreSQL-API 452 Scannerabweichungen plus 51 GPO-Beobachtungen, insgesamt 503 sichtbare Resultate. 13 fokussierte Tests und der Gesamtlauf mit 781 bestandenen sowie 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine SQL-Migration und keine Veraenderung der importierten Originaldaten; Phase 13B bleibt fuer fachliche Identity-/Regelkataloge und bestaetigte Policy-Findings in Arbeit. Aktueller verifizierter Zusatzstatus vom 2026-09-03: Die bislang implementierte, aber nicht erreichbare Policy-Analyseoberflaeche ist nun aus dem Data-Hub-Clientdetail zugreifbar. Eine erfolgreiche GPO-Quellenzeile verwendet keine irrefuehrende deaktivierte Scanner-Auswahlbox mehr, sondern eine eigene Quellenmarkierung und eine `View`-Aktion. Diese oeffnet die projektgebundene GPO-Analyse mit Reprocessing, Environment Profiles, Aggregation, Evaluation, Finding Factory, aktueller Summary, Historie und Review Queue; zur Stammdatenansicht kann direkt zurueckgewechselt werden. `Source: Scan` bleibt fachlich auf Scanner-Runs begrenzt. Sieben fokussierte Data-Hub-/Policy-UI-Tests, die Gesamtsuite mit 775 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine API-, SQL- oder Persistenzaenderung; Phase 13B bleibt in Arbeit. Aktueller verifizierter Zusatzstatus vom 2026-09-03: GPO-Backups sind im ausgewaehlten Data-Hub-Timeslot nun als eigene Quellenzeilen sichtbar und werden im Quellenzaehler beruecksichtigt. Die Ansicht aktualisiert sich unmittelbar nach einer GPO-Einreichung; Queue-, Verarbeitungs-, Teil-, Erfolgs-, Recovery- und Dead-Letter-Zustaende bleiben unterscheidbar, und fehlgeschlagene Importe koennen direkt wiederholt oder geloescht werden. Der Browser bietet getrennte Eingaben fuer einen normalen GPO-Backup-Ordner und ein bereits vorhandenes ZIP. Ein Ordner wird weiterhin lokal in ein deterministisches Transport-ZIP verpackt, waehrend ein ZIP unveraendert dieselbe projekt- und timeslotgebundene, gehaertete Backend-Ingestion durchlaeuft. 14 fokussierte Data-Hub-/Transport-/HTTP-Tests sowie die Gesamtsuite mit 774 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine API-, SQL- oder Persistenzaenderung; Phase 13B bleibt in Arbeit. Aktueller verifizierter Zusatzstatus vom 2026-09-03: Der bisher nur eingebettete fachlich leere Policy-Evaluation-Regelkatalog besitzt nun eine lokale, betriebsseitig kontrollierte Ladegrenze. Ein kuratierter JSON-Katalog wird ausschliesslich bei gemeinsam konfiguriertem Dateipfad und SHA-256 geladen, ist auf 5 MiB und regulaere Nicht-Symlink-Dateien begrenzt und wird erst nach Hash-, UTF-8-/JSON-, Struktur- und vollstaendiger fachlicher Katalogvalidierung aktiviert. Jede Abweichung verhindert den Serverstart noch vor Aufbau der Repository-Laufzeit; ohne Konfiguration bleibt der sichere leere Freigabekatalog aktiv. Drei neue synthetische Loaderregressionen, 28 fokussierte Katalog-/Evaluations-/HTTP-Tests sowie die Gesamtsuite mit 773 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine Netzwerk-, API-, SQL- oder Persistenzaenderung; fachliche Regeln und Windows-Inbox-ADMX-/ADML-Inhalte bleiben bis zur autorisierten Kuratierung weiterhin leer beziehungsweise offen. Aktueller verifizierter Zusatzstatus vom 2026-09-03: Die offene snapshotbezogene Ergebnisdeduplizierung ist als additive aktuelle Sicht im Policy-Analyse-Readmodell umgesetzt. Die unveraenderliche Run-Historie bleibt vollstaendig erhalten; Summary und Review Queue zaehlen dagegen nur die aktiven Ketten aus nicht ersetztem Environment Profile, neuester nicht ersetzter Identity-Analyse je Artefakt, dazu passender Snapshotaggregation, neuester Evaluation je Aggregation und neuestem Finding-Run je Evaluation. Veraltete Ketten werden auch nicht mehr als ausfuehrbare Evaluate-/Finding-Aktionen angeboten. Drei Domainregressionen sowie Panel-, Actions- und HTTP-Regression sind erfolgreich; Gesamtsuite mit 770 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind gruen. Keine Persistenz- oder SQL-Aenderung; das Readmodell wurde additiv erweitert und Phase 13B bleibt fuer fachliche Regel-/Inbox-ADMX-Kuratierung, weitere Preference-CSEs und Exportdetails in Arbeit. Aktueller verifizierter Zusatzstatus vom 2026-08-26: Die Freigabegrenze des weiterhin fachlich leeren Policy-Evaluation-Regelkatalogs validiert nun alle Runtime-Enumwerte fuer Auslieferungsmechanismus, Baseline-Disposition, Comparator und Severity, blockiert ueberlappende Selektoren beziehungsweise mehrdeutige Regeln und lehnt widerspruechlich wiederverwendete Risiko- oder Abhaengigkeits-IDs fail-closed ab. Es wurden keine Policyempfehlung und keine Severity erfunden oder freigegeben. Der lokale private Artefaktspeicher wurde vom veralteten fremden Benutzerpfad auf den aktuellen LocalAppData-Pfad ausserhalb des Webroots korrigiert; Backend, App und Speicherroot sind inhaltsfrei technisch erreichbar. Neun neue Katalogregressionen, 25 fokussierte GPO-/Katalogtests, die Gesamtsuite mit 764 bestandenen und 8 uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine API-, SQL- oder Persistenzaenderung; Phase 13B bleibt in Arbeit. Aktueller verifizierter Zusatzstatus vom 2026-08-22: Der globale Microsoft-Security-Baselinekatalog besitzt nun einen bestaetigungspflichtigen Delete-Pfad durch UI, Same-Origin-API, Service sowie Local- und PostgreSQL-Repository. Nur nicht von Policy-Evaluationen referenzierte Pakete duerfen geloescht werden; Klassifikationen und gespeicherte Analysen werden zusammen mit dem Katalogeintrag entfernt, das private Originalobjekt anschliessend best-effort bereinigt. Keine SQL-Migration; Phase 13B bleibt in Arbeit. Ziele: - GPMC-/`Backup-GPO`-Backups und Microsoft-Security-Baselinepakete deterministisch, sicher und nachvollziehbar analysieren. - Richtlinieneinstellungen technisch identifizieren, innerhalb eines konsistenten Kundensnapshots aggregieren, Konflikte erkennen und jede aktive importierte Baseline separat als nachvollziehbaren Soll-/Ist-Vergleich auswerten; Produkt- und Rollenfilter bleiben eine nachgelagerte Sicht statt einer globalen Importsperre. - Nur bestätigte konfigurierte Abweichungen als normale Findings erzeugen; tatsächliche Wirksamkeit ohne Scope- oder RSoP-Evidenz niemals behaupten. Gemeinsame und getrennte Grenzen: - GPO-Importe verwenden Upload, Containererkennung, Artefakte, Provenienz, Ressourcenlimits, Jobs, Repository, Audit und Persistenz aus Phase 13A. - GPO-Parser erzeugen `PolicyObservation` statt `FindingCandidate` und durchlaufen nicht das generische Scanner-Mapping. - Beide Wege treffen erst bei einer fachlich bestätigten Finding-Erzeugung im kanonischen Finding-Modell zusammen. Verbindliche Policy-Pipeline: ```text ZIP/Verzeichnis -> sichere Artefaktinventarisierung -> GPO-Backupinstanzen und Analysesnapshot -> Artefaktparser -> rohe Policy-Instruktionen -> CSE-/artefaktspezifische semantische Reduktion -> PolicyObservation -> technische Policy-Identität -> Aggregation im Kundensnapshot -> Baseline-Anwendbarkeit -> typisierter Vergleich und Dependency-Regeln -> Consensus und Risikoregel -> PolicyEvaluationResult -> Finding oder Prüfhinweis ``` Fachliche Regeln: - GPO-Namen, Pfade, Beschreibungen und Dateinamen bestimmen keinen Zielkontext. Anwendbarkeit wird je Policy aus technischer Identität, Computer-/User-Scope, Produktfamilie, Produktversion und Rolle bestimmt. - Der Benutzer wählt nur grundsätzlich vorhandene Plattform- und Produktkontexte in einem versionierten `EnvironmentProfile`. - GPO-GUID, Backup-GUID, Sicherungszeitpunkt, Domäne, Abschnittsstatus, Vollständigkeit und Snapshot bleiben getrennt. Historische Backupinstanzen oder gemischte Domänen und Zeitpunkte erzeugen keine scheinbar gleichzeitigen Konflikte. - Einzel- und Setvollständigkeit werden getrennt modelliert; ein ausgewählter oder unbekannter Backupsatz erlaubt keine negative Gesamtaussage. - Artefakt-/CSE-spezifische Reducer berücksichtigen Instruktionsreihenfolge, Löschoperationen, Create/Update/Replace/Delete, Abschnittsstatus und dokumentierte Anwendungssemantik vor der GPO-übergreifenden Aggregation. - `PolicyIdentity` beschreibt das technische Konfigurationsziel. Delivery Mechanism, Client-Side Extension, Operation, Reihenfolge und Item-Level-Targeting bleiben an der Beobachtung erhalten. - Registry Policy und Registry Preference können dasselbe Ziel referenzieren, werden wegen unterschiedlicher Durchsetzungs-, Targeting- und Persistenzsemantik aber nicht gleich behandelt. - Das Fehlen in einer GPO ist kein `not_configured` der Umgebung. `not_observed_in_backup_set` bleibt ein qualifizierter Reviewhinweis. - Baselinezustände unterscheiden ausdrückliche Empfehlung, ausdrücklich nicht anwendbar, keine Empfehlung, Kataloglücke, unaufgelöste Identität, Parserlücke und nicht unterstützte Einstellung. - `stronger_than_baseline` und `weaker_than_baseline` sind nur mit freigegebenen typisierten Comparatoren zulässig, etwa Gleichheit, Min/Max, Enum-Ordnung, Bitmaske, Menge, Auditflags, Rechte-/ACL- oder zusammengesetzte Regeln. - Policy-Abhängigkeiten, Overrides, gegenseitige Ausschlüsse und Voraussetzungen werden versioniert modelliert. Advanced-/Legacy-Audit, Domain-Passwortrichtlinien, Fine-Grained Password Policies und andere CSE-Sonderfälle erhalten keine universelle Skalarbewertung. - Ein bestätigter Consensus setzt exakte Identität, vollständiges Parsing, bekannten Comparator, vollständig geprüfte plausible Kontexte, eindeutige Baselineempfehlungen und eine freigegebene Risikoregel voraus. - Die belastbare Klassifikation heißt `confirmed_configured_deviation`. Eine Abbildung auf `confirmed_finding` muss ausdrücklich `Scope unbekannt` und `Wirksamkeit nicht verifiziert` ausweisen. - Konflikte, kontextabhängige Fälle, unaufgelöste Policies und Baselinelücken erzeugen feste Prüfhinweise, aber keine erfundene Severity. Unterstützter erster Artefaktscope: - GPO- und Backupmetadaten - Computer- und User-`Registry.pol` - Security Templates - Advanced Audit Policy - XML-basierte Group Policy Preferences einschließlich Aktionen und Item-Level-Targeting - Skriptinventar ohne Ausführung - unbekannte Artefakte mit transparentem Status Sicherheitsanforderungen: - ZIP-Slip, absolute und Windows-Spezialpfade, Unicode-/Case-Kollisionen, Symlinks, manipulierte Header, ZIP-Bombs, verschachtelte Archive und tatsächliche kumulierte Entpackgrenzen kontrollieren. - XML ohne DTD, externe Entitäten, externe Schemas, XInclude oder Netzwerkzugriff und mit Strukturgrenzen verarbeiten. - Importierte Skripte und Binärdateien niemals ausführen. - GPO- und Baselineoriginale unverändert außerhalb des Webroots mit zufälliger Speicher-ID, SHA-256-Integritätsprüfung und Backendzugriff aufbewahren, damit Reprocessing reproduzierbar bleibt. - GPP-`cpassword` und andere mögliche Geheimnisse niemals entschlüsseln; Vorhandensein erkennen und Werte in UI, Logs, Diagnosen und Exporten maskieren. - Node-Worker sind eine Ressourcen-, keine Sicherheits-Sandbox. Ein optionales `LGPO.exe` benötigt einen separaten niedrig privilegierten Prozess ohne Shell und Netzwerk, mit festem Pfad und Hash, begrenzter Umgebung, Timeout und Ausgabelimits. - Die Anwendung muss ohne `LGPO.exe` starten und nicht unterstützte Dateien transparent kennzeichnen. Persistenz und Versionierung: - Allgemeine Importartefakte aus Phase 13A werden für GPO-Rohartefakte wiederverwendet. - Relationale Fachobjekte modellieren GPO-Backups, Policy-Identitäten und -Beobachtungen, Baselinekataloge und -einstellungen, Environment Profiles, Evaluation Runs, Ergebnisse und Mehrquellen-Evidenz. - Beobachtungen und Katalogversionen bleiben unveränderlich. Alle Parser-, Identity-, ADMX-, Baseline-, Comparator-, Dependency-, Risiko- und Evaluationsversionen werden am Run gespeichert. - Reprocessing erzeugt neue Processing- und Evaluation-Runs mit Supersession-Beziehung und überschreibt keine Historie. - Engineversionen gehören in Run und Idempotenzschlüssel, nicht in die stabile Finding-Definition. - Ein Ergebnis kann viele Kundenbeobachtungen, Artefakte und Baselinewerte referenzieren; es wird keine willkürliche Hauptdatei gewählt. - Nur bestätigte konfigurierte Abweichungen werden in die generischen Finding-Tabellen geschrieben. Andere Policyergebnisse werden über eine gemeinsame Read-API mit normalen Findings filterbar. Umsetzungsschritte: 1. Bestandsaufnahme und `docs/architecture/gpo-current-state.md` erstellen. 2. GPO-Bedrohungsmodell, Rohartefaktspeicher und Aufbewahrungsgrenze festlegen. 3. Sichere Container-Ingestion sowie Backup-, Snapshot- und Vollständigkeitserkennung implementieren. 4. Metadaten-, Security-Template-, Advanced-Audit- und Preferences-Parser mit Reducern implementieren. 5. `Registry.pol`-Bibliotheken und Lizenzen prüfen; Read-only-Parser oder optionalen `LGPO.exe`-Adapter integrieren. 6. Policy-Identitäten und separaten versionierten ADMX-/ADML-Metadatenkatalog implementieren. 7. Microsoft-Baselinekataloge mit bestätigten Produkt-, Versions-, Rollen- und Scope-Metadaten importieren und freigeben. 8. Snapshotaggregation, Konflikterkennung, Anwendbarkeit und vollständigkeitsgesicherten Consensus implementieren. 9. Typisierte Comparatoren, Dependency-/Override-Regeln und Policy-Risikokatalog implementieren. 10. Finding Factory, Prüfhinweise, Mehrquellen-Evidenz und gemeinsame Filterprojektion ergänzen. 11. API, persistente Jobs, Reprocessing, Audit, UI-Vorschau, Details und Exporte ergänzen. 12. Parser-, Sicherheits-, Evaluations-, PostgreSQL-, End-to-End- und Scannerregression verifizieren. Verifizierter Zwischenstand vom 2026-07-21: - Die Bestandsaufnahme aus Schritt 1 und das Bedrohungsmodell sowie die fachliche Speicher-/Aufbewahrungsgrenze aus Schritt 2 sind in `docs/architecture/gpo-current-state.md` und `docs/architecture/gpo-threat-model.md` dokumentiert. Der dateibasierte Backend-Speicher ist im Serverruntime konfigurierbar, verwendet standardmäßig einen nicht veröffentlichten lokalen Datenpfad und verweigert eine Lage innerhalb des Webroots. Benutzer-/Rollenautorisierung, Verschlüsselung und konkrete Löschfristen bleiben vor dem Firmenbetrieb offen. - Als vorbereitender Vertragsblock für Schritt 3 sind strikte NFC- und Case-sichere relative Artefaktpfade, versionierte Backupidentitäten, technische Domänen- und Erhebungsevidenz, explizite Backupsatz-Semantik, Artefaktinventar, Abschnittsstatus sowie getrennte Einzel- und Setvollständigkeit implementiert. - Der deterministische Snapshot-Builder trennt Projekte, Domänen, explizite Backupsätze und historische Stände. Doppelte GPO-/Backup-GUIDs, widersprüchliche Setdeklarationen, Domänenmischung und zu große Erhebungszeitspannen werden blockiert; unbekannte oder unvollständige Evidenz bleibt unbestimmt. - Nur ein konsistenter, manifestgestützter vollständiger Domänenexport mit vollständigen unterstützten Backupinstanzen darf Aussagen über die Abwesenheit innerhalb dieses Backupsatzes erlauben. Ausgewählte Teilmengen, Skriptinventare, unbekannte Artefakte oder fehlende Abschnitte erlauben dies nicht. Scope, Verknüpfung und tatsächliche Wirksamkeit werden daraus ausdrücklich nicht abgeleitet. - Die sichere ZIP-Inventarisierung und der selektive verifizierte Zugriff sind als dedizierter, ressourcenbegrenzter Backend-Worker implementiert. Zentralverzeichnis und lokale Header, sichere Pfade und Kollisionen, Typen, Datenbereiche, deklarierte und tatsächliche Größen/Kompressionsverhältnisse, CRC und SHA-256 werden geprüft; Links, Spezialdateien und verschachtelte Archive werden blockiert. Ein begrenzter XML-Metadatenparser lehnt DTD, Entitäten, externe Referenzen, XInclude, Schemas und nicht erlaubte Kodierungen ab und trennt GPO-GUID, Backup-GUID, Domäne und Sicherungszeit. Technische Identität stammt ausschließlich aus Inhalt; Ordner- und Anzeigenamen sind keine Identität. Konflikte oder gemischt gültige/ungültige Felder blockieren fail-closed, `cpassword` wird nur als vorhanden erkannt und sein Wert nie ausgegeben. - Der Rohartefaktspeicher verwendet serverseitige zufällige UUID-Schlüssel, private Staging-/Objektbereiche, exklusive Dateien, Flush vor Veröffentlichung, nachgeschaltete Größen-/SHA-256-Prüfung, überschreibungsfreie Veröffentlichung und integritätsgeprüfte Lesezugriffe. Der GPO-Ingest erzeugt konservative Backupinstanzen nur bei Metadaten- und SYSVOL-Evidenz unter derselben Backupwurzel; Erhebungsevidenz stammt vom Backend, der Backupsatz bleibt ohne Manifest unbekannt und Parserlücken verhindern Vollständigkeitsbehauptungen. - Die projektgebundene Submission-Grenze prüft vor jeder Aufbewahrung Projekt, Dateimetadaten, Größe, Base64-Konsistenz und den Container im begrenzten GPO-Worker. Erkannte Originale werden mit `secret`-Sensitivität gespeichert, als unveränderliches Importartefakt referenziert und über einen projektweit idempotenten `analyze-gpo-backup`-Job aus Migration 004 eingeplant. Der Lease-basierte Runner claimt ausschließlich diesen Jobtyp, liest das projektgebundene Original erneut mit Größen- und SHA-256-Prüfung und persistiert Processing Run und Backupinstanzen über Migration 005 atomar vor dem Jobabschluss. Deterministische Run-/Datensatz-IDs machen den Crash-Retry nach bereits erfolgter Persistenz revisionsneutral; abweichende Wiederholungen überschreiben keine Historie. - Der Datahub bietet für bestehende Mandanten in Chrome eine native Auswahl des vollständig entpackten GPO-Backupordners. Relative Browserpfade werden vor dem Lesen kanonisiert und containerweit auf Unicode-/Case-Kollisionen geprüft; Anzahl, Einzel- und Gesamtgröße folgen der gemeinsamen Ressourcenrichtlinie. Die Dateien werden sequenziell und bytegleich in einen deterministischen unkomprimierten ZIP-STORE-Transportumschlag überführt und an dieselbe projektgebundene Submission-Grenze gesendet. Der gehärtete Backend-Worker validiert den Umschlag unabhängig erneut; die Annahme bedeutet nur `queued`, nicht erfolgreiche Analyse oder Vollständigkeit. - Die Mandantenansicht lädt GPO-Artefakt-, Job- und Processing-Status projektgebunden aus dem Backend und aktualisiert `queued`, `running`, `succeeded`, `partial`, `dead-letter` und wiederherstellungsbedürftige Zustände während der sichtbaren Ansicht. Neue GPO-Artefakte und Analysejobs werden in einer Repository-Transaktion angelegt; bei Fehlschlag wird das neu geschriebene Objekt sofort entfernt. Eine stündliche Reconciliation repariert referenzierte GPO-Artefakte ohne Job und entfernt ausschließlich reguläre, nicht referenzierte Speicherobjekte beziehungsweise Stagingreste nach standardmäßig 24 Stunden Schonfrist und mit begrenzter Löschanzahl. Dead-Letter-Jobs können projektgebunden ohne erneuten Upload kontrolliert auf `queued` zurückgesetzt werden. Das bestätigte Löschen eines fehlgeschlagenen Imports entfernt Artefakt, Job- und Verarbeitungshistorie atomar und schreibt vor dem Dateilöschen einen persistenten Löschauftrag; ein Prozessabbruch wird durch dieselbe Reconciliation wiederaufgenommen. Ungültige oder ältere persistierte Speicherreferenzen werden gezählt und sperren fail-safe jede reguläre Orphan-Objektlöschung, ohne Lösch-Outbox oder Jobreparatur abzubrechen. Große zulässige GPO-Umschläge werden über eine übertragene Worker-Kopie statt Structured Clone übergeben; der GPO-Worker bleibt mit konfigurierbaren Standardgrenzen von 1.024 MB Old Generation und 128 MB Young Generation begrenzt. Jedes JSDOM-Fenster der GPO-Metadaten- und Preference-Parser wird in `finally` geschlossen. Der Worker gibt nur den persistenzrelevanten Analysevertrag aus Backupinstanzen und Diagnosen zurück; Parser-Zwischenmodelle werden nicht über die Threadgrenze geklont. - Der Security-Template-Pfad aus Schritt 4 verarbeitet `GptTmpl.inf` im begrenzten GPO-Worker. INF-Zeichen-, Zeilen- und Feldgrenzen werden erzwungen; `System Access`, `Kerberos Policy`, `Privilege Rights` und `Registry Values` bleiben als getrennte Instruktionstypen erhalten. Ein separater versionierter Reducer erzeugt zeilenbelegte Policy-Beobachtungen, behandelt unterschiedliche Dubletten als Konflikt und setzt die effektive Anwendung stets auf `unknown`. Unbekannte Abschnitte bleiben `partial`, syntaktisch ungültige unterstützte Werte blockieren das Artefakt ohne Instruktions-Salvage. - Der Advanced-Audit-Pfad aus Schritt 4 verwendet den allgemeinen CSV-Code ausschließlich als begrenzten lexikalischen Decoder mit physischen Startzeilen. Die fachliche Auswertung stützt sich nur auf technische `Subcategory GUID` und numerische `Setting Value` von 0 bis 3; lokalisierte Anzeigenamen werden ignoriert. Ausschließlich das Systemziel wird als Computer-Policy reduziert, benutzerspezifische Ziele bleiben transparent `partial`. Abweichende Dubletten derselben GUID werden Konflikte, ungültige unterstützte Zeilen blockieren das gesamte Artefakt ohne Salvage, und die effektive Anwendung bleibt `unknown`. - Der Group-Policy-Preferences-Pfad aus Schritt 4 verarbeitet begrenztes UTF-8/BOM-UTF-16-XML ohne DTD, Entitäten, externe Referenzen, Schemas oder fremde Processing Instructions. Getrennte CSE-Reducer unterstützen Registry Preferences, Local Users and Groups, Services sowie Drive Maps anhand ihrer dokumentierten technischen CLSID-/Elementstruktur. Item-UID, Dokumentreihenfolge, deaktivierter Zustand, `removePolicy`, `applyOnce` und vorhandenes Item-Level-Targeting bleiben an jeder Instruktionsbeobachtung erhalten; Targetingwerte werden nicht voreilig ausgewertet, sondern durch Filtertypen und einen Ausdruckshash als `unknown` gebunden. Registry, Local Users and Groups und Drive Maps bewahren ihre C/D/R/U-Semantik; Services verwendet davon getrennt `configure`. Drive Maps wird ausschließlich im User-Scope reduziert und erhält die aktionsabhängige Bedeutung von `useLetter`: exakter Buchstabe, Delete-Bereich, erster freier Buchstabe oder erstes vorhandenes Mapping im Bereich. `thisDrive` und `allDrives` bleiben wegen ihrer Präzedenz getrennt. Services wird ausschließlich im Computer-Scope reduziert und erhält `serviceAction`, `startupType`, Fehleraktionen und rohe dokumentierte Zeitfelder. Local-Group-Ziele bewahren SID-Priorität, Delete-all-users/-groups vor der geordneten Memberliste sowie Add/Remove je Mitglied. Bei kennworttragenden CSEs wird `cpassword` ausschließlich als `passwordAttributePresent` abgebildet; der Wert verlässt die Parsergrenze nicht. Unbekannte Preference-CSEs und noch nicht unterstützte Eigenschaften bleiben `partial`, fehlerhafte unterstützte Strukturen blockieren ohne Salvage. Alle Beobachtungen werden innerhalb der unveränderlichen Backupinstanz atomar mit dem Processing Run gespeichert. Weitere Preference-CSEs bleiben offen; Schritt 5 ist fuer den gegenwaertigen GPMC-Bestand umgesetzt, Schritte 3, 4 und 11 sowie Phase 13B bleiben in Arbeit. - Der `Registry.pol`-Pfad aus Schritt 5 ist als kleiner read-only In-Process-Parser ohne externe Laufzeitabhaengigkeit umgesetzt. Er prueft PReg-Signatur und Version, begrenzt Datei, Datensaetze und Datenfelder, dekodiert die Typen 1, 2, 3, 4, 5, 7 und 11 sowie die von Microsofts Referenzimplementierung verwendete leere REG_NONE-Schluesselanlage (Typ 0), bewahrt Datensatzreihenfolge und Byteoffset-Provenienz und reduziert Set-, Delete-, SecureKey- und Soft-Instruktionen getrennt. Unbekannte Typen und ungueltige unterstuetzte Strukturen blockieren ohne Salvage; unbekannte reservierte Operationen bleiben transparent partial. Die Beobachtungen werden ueber den bestehenden Worker und die unveraenderliche Backupinstanz persistiert. Schritt 5 ist damit fuer den gegenwaertigen GPMC-Bestand umgesetzt; ADMX-Identitaet, Baseline-Einstellungsparser und Evaluation bleiben offen. - Der Schritt-6/7-Analysevertrag fuehrt eine stabile, versionsunabhaengige technische Registry-Zielidentitaet aus Scope, Hive, kanonischem Schluessel und Wert beziehungsweise Schluesselziel ein. ADMX ordnet diese Identitaet nur zusaetzlich ueber Zielnamespace, Policy-Name und Element-ID zu; ADML-Strings bleiben lokalisierte Metadaten. Der begrenzte ADMX-/ADML-Parser lehnt externe Konstrukte, fremde Namespaces, doppelte Zielnamespaces und doppelte technische Policy-IDs ab. Ein selektiver Baseline-ZIP-Adapter behandelt XLSX/PDF/Skripte opak, prueft Containerstruktur, Pfade, Typen und deklarierte Gesamtgrenzen und entpackt mit lokaler Header-, CRC-, Groessen-, Ratio- und SHA-256-Pruefung ausschliesslich Backup.xml, Registry.pol, ADMX und ADML. Registry.pol wird durch exakt denselben Parser und Reducer wie beim GPMC-Pfad verarbeitet. Die persistente Worker-/Repository-Anbindung sowie Evaluation bleiben offen. - Verifikation: 267 Standardtests, Local-only-Sicherheitsprüfung und Client-/Server-Produktionsbuild einschließlich eigenem `gpo-inventory-worker.mjs` erfolgreich; 7 optionale PostgreSQL-Integrationstests im Standardlauf übersprungen und separat 7 von 7 gegen eine frische kurzlebige PostgreSQL-16-Instanz erfolgreich. Zusätzlich wurden dauerhaft neu ladbarer Mandantenstatus, Dead-Letter-Retry ohne Reupload, bestätigtes projektgebundenes Löschen, atomare Lösch-Outbox, Wiederaufnahme nach Prozessabbruch, fail-safe Behandlung einer nicht unterstützten Legacy-Speicherreferenz, speicherschonende Worker-Übergabe, garantierte JSDOM-Freigabe, kompakter Worker-Rückgabevertrag sowie ein synthetischer 1.740-Dateien-/80.186.702-Byte-Lastlauf mit 300 Backupinstanzen unter der unveränderten 1-GB-Grenze, Zustandsableitung aus Job und Processing Run, atomare Artefakt-/Jobanlage, PostgreSQL-Transaktionsrollback, sofortiges Dateispeicherrollback, Reparatur fehlender Jobs sowie alters- und mengenbegrenzte Orphan-Reconciliation synthetisch verifiziert. Ausschließlich synthetische ZIP-, Ordner-, Template-, Audit-, Preference-, Status-, Reconciliation-, Lösch- und Projektdaten wurden verwendet; Testcontainer und -daten wurden anschließend entfernt. - Nachhärtung vom 2026-07-22: Die quadratische Quellzeilenberechnung aller unterstützten Preference-CSEs ist durch einen gemeinsamen linearen Scanner ersetzt. Ein danach mit 45.000 Registry-Preference-Beobachtungen reproduzierter zweiter Speicherpeak wurde im Persistenzpfad durch backupwurzelweise Verarbeitung und sofortige Freigabe der Parser-Zwischenmodelle, eine kompakte Worker-Rückgabe ohne vollständiges Containerduplikat sowie ereignisbasiertes Registry-XML-Parsing mit dem lokal gebündelten, fest versionierten `saxes` 6.0.0 beseitigt. Der synthetische Produktionsworker verarbeitet 91.316.402 Bytes, 2.040 Einträge, 300 Backupinstanzen und 45.000 Beobachtungen bei 512 MB Old Generation erfolgreich; zuvor brach derselbe Lauf mit `gpo-inventory-memory-limit` ab. 270 Standardtests, Local-only-Sicherheitsprüfung und Client-/Server-Produktionsbuild erfolgreich; 7 optionale PostgreSQL-Integrationstests mangels Persistenzänderung erwartungsgemäß übersprungen. Keine realen GPO- oder Mandanteninhalte wurden gelesen. - Erster Unified-Result-Vertikalschnitt vom 2026-07-22: Der neue plattformneutrale Read-Vertrag projiziert jedes Scanner-Finding-Vorkommen einzeln mit Projekt-, Assessment-, Lauf-, Tool-, Profil-, Regel- und Locatorprovenienz. Severity, Outcome, technische Ausführung, Reviewstatus, Reviewentscheidung, Lebenszyklus und Wirksamkeit bleiben getrennte Dimensionen; unbelegte Lifecycle-/Effective-Aussagen bleiben `unknown`. Vorhandene Quellkategorien werden strukturiert und namespaced ausgegeben. `AssessorRepository`, Local- und PostgreSQL-Adapter, API und Client stellen Result-, Facetten-, Kategorien- und Detailqueries bereit. `PolicyObservation` wird ausdrücklich nicht projiziert; Policyresultate folgen erst nach stabiler `PolicyIdentity`, Baseline und Evaluation. Keine Schemaänderung. 274 Standardtests, Local-only-Sicherheitsprüfung, Client-/Serverbuild und 7 von 7 PostgreSQL-Integrationstests erfolgreich; ausschließlich synthetische Testdaten. - Zweiter Unified-Result-Vertikalschnitt vom 2026-07-22: Migration 007 ergänzt additiv getrennte, geprüfte und indexierte PostgreSQL-Spalten für fachliches Outcome und technische Ausführung sowie einen namespaced, profilversionierten Kategorienkatalog mit mehrwertiger Occurrence-Zuordnung und Backfill. Neue Scannerimporte bewahren die Dimensionen zusätzlich als `MappedValue`; Legacy-Status bleibt lesekompatibel. „Failed to run“ wird als `execution_error` mit technischer Ausführung `failed` persistiert und nicht als fachliches `fail`. Beide PostgreSQL-Importpfade schreiben Dimensionen und Kategorien atomar. 277 Standardtests, Local-only-Sicherheitsprüfung, Client-/Serverbuild und 7 von 7 PostgreSQL-Integrationstests gegen frisches PostgreSQL 16 erfolgreich; ausschließlich synthetische Daten, Testcontainer entfernt. Phase 13B bleibt in Arbeit. - Verifizierte GPO-Ordner-Worker-Nachhärtung vom 2026-07-22: Die projektgebundene Submission lässt den begrenzten Worker weiterhin den vollständigen ZIP-STORE-Transportumschlag einschließlich Pfaden, Headern, Größen, Kompressionsverhältnissen, CRC und Hash prüfen, übernimmt in der Vorstufe jedoch nur noch das kompakte Erkennungsergebnis statt eines vollständigen Inventars. Das vollständige Inventar bleibt ausschließlich innerhalb der eigentlichen Job-/Parsergrenze. Workerfehler werden in sichere technische Kategorien überführt; rohe Fehlermeldungen und mögliche Quelldaten verlassen die Grenze nicht. Der synthetische Produktionsworker verarbeitet damit auch in der Erkennungsvorstufe 91.316.402 Bytes und 2.040 Einträge sowie anschließend 300 Backupinstanzen und 45.000 Beobachtungen bei 512 MB erfolgreich. `npm test` mit 281 bestandenen Standardtests, 7 erwartungsgemäß übersprungenen optionalen PostgreSQL-Tests und erfolgreicher Local-only-Sicherheitsprüfung sowie Client-/Serverbuild sind grün; keine Persistenz- oder Schemaänderung. Schritte 3 und 11 sowie Phase 13B bleiben in Arbeit. - Reale GPMC-Kompatibilitaetsnachhaertung vom 2026-08-04: Synchron geworfene Parserablehnungen werden innerhalb der Worker-Promisegrenze in strukturierte Diagnosen ueberfuehrt und nicht mehr als generischer Workerabsturz maskiert. Ein technisch gueltiger lokaler Microsoft-`BackupTime` ohne UTC-Offset bewahrt GPO-/Backup-ID und Domaene, bleibt aber mit `gpo-metadata-backup-time-zone-missing` bewusst `partial`; freie oder widerspruechliche Zeitformate bleiben fail-closed. Der ausdruecklich freigegebene Mandant Dummy und dessen GPO-Ordner wurden vollstaendig geprueft: Eine fachfremde XLSX im Auswahlroot wurde als verschachteltes Archiv sicher abgewiesen und nicht importiert; die 13 eigentlichen GPO-Dateien ergaben drei aufgeloeste Backupidentitaeten, drei vollstaendige Inventare und 47 Policy-Beobachtungen und wurden mit persistentem Status `partial` in PostgreSQL gespeichert. Der private Artefaktspeicher wurde wegen fehlender Hardlink-Unterstuetzung des synchronisierten Workspace-Dateisystems lokal auf einen expliziten NTFS-Pfad ausserhalb des Webroots konfiguriert. 519 Standardtests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich; 7 optionale PostgreSQL-Integrationstests im Standardlauf uebersprungen. Phase 13B bleibt in Arbeit. - Datahub- und Baselinekatalog-Zwischenstand vom 2026-08-04: Persistente GPO-Artefakte werden nun zusammen mit Scannerlaeufen in der Mandantenkarte und in Linked Scan Reports projiziert, ohne sie als Scanner-Findings umzudeklarieren. Der freigegebene Dummy zeigt fuenf Berichte einschliesslich einer GPO-Zeile mit drei Backupinstanzen. Migration 011 fuehrt einen globalen Microsoft-Security-Baselinekatalog ein; mehrere offizielle ZIP-Pakete koennen ueber das Backend in den privaten, SHA-256-geprueften Artefaktspeicher geladen und dedupliziert werden. Produktfamilie, Produktversion, Rolle und Scope werden als getrennte Metadaten gefuehrt; nur genau ein vollstaendig passendes Paket darf automatisch ausgewaehlt werden, Mehrdeutigkeit und fehlende Metadaten bleiben fail-closed. Reconciliation schuetzt referenzierte Baselineoriginale vor Orphan-Loeschung. 523 Standardtests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich; Migration 011 real angewendet, API und Datahub im Browser verifiziert. Die Paket- und Metadatenauswahl ist implementiert; Baseline-Einstellungsparser, Registry.pol/ADMX-Identitaet, Comparatoren und eigentliche PolicyEvaluation bleiben offen. Phase 13B bleibt in Arbeit. - Baselineklassifikations-Nachhaertung vom 2026-08-04: Migration 012 fuehrt unveraenderliche, detektorversionierte Klassifikationsrevisionen ein, ohne die importierten Originaldatensaetze umzuschreiben. Ein ZIP-Paket kann mehrere Produktkontexte tragen; kombinierte Windows-10-/Windows-Server-Pakete bleiben dadurch fuer beide Kontexte exakt auswaehlbar. Detektor `microsoft-baseline-filename-v2` korrigiert ausserdem Microsoft 365 Apps 2512 sowie Server-Jahresversionen. Alle 11 freigegebenen Original-ZIPs stimmen per SHA-256 bytegenau mit dem PostgreSQL-Katalog ueberein; Migration 012, 11 Pakete und 11 Klassifikationen sind real bestaetigt. Vier repraesentative Auswahlfaelle und die Datahub-Darstellung wurden gegen die laufende App verifiziert. 524 Standardtests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich; 7 optionale PostgreSQL-Integrationstests uebersprungen. Baseline-Einstellungsparser und PolicyEvaluation bleiben offen; Phase 13B bleibt in Arbeit. - GPO-Berichtsprojektion auf Nutzerkorrektur vom 2026-08-04 bereinigt: Ein importiertes, inventarisiertes oder teilweise geparstes GPO-Backup ist kein Ergebnis gegen Microsoft Security Baselines und wird daher weder in Linked Scan Reports noch im Scanberichtzaehler der Mandantenkarte gefuehrt. Upload-, Job-, Inventar- und Parserstatus bleiben getrennt unter GPO Processing sichtbar. Erst ein spaeterer persistierter Baseline-Evaluation-Run darf als GPO-Pruefbericht projiziert werden. Der freigegebene Dummy zeigt wieder vier echte Scanberichte; drei erkannte GPO-Backupinstanzen bleiben ausschliesslich im Verarbeitungsstatus sichtbar. 526 Standardtests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich; 7 optionale PostgreSQL-Integrationstests uebersprungen. Keine Daten- oder Schemamigration; Phase 13B bleibt in Arbeit. - Mandanten-GPO-Backup-Snapshot auf Nutzerkorrektur vom 2026-08-04 praezisiert: Ein ausgewaehlter Hauptordner ist genau ein Backup-Snapshot des Mandanten; seine Unterordner sind die darin enthaltenen einzelnen GPOs und keine separaten Mandanten-Backups. Alle erkannten GPO-Datensaetze erhalten dieselbe aus dem Quellartefakt abgeleitete Backup-Set-ID, Scope selected-gpos und Evidenz user-selection und werden zu einem Analysesnapshot gruppiert. Bereits persistierte Datensaetze ohne Set-ID werden lesekompatibel ueber das gemeinsame Quellartefakt gruppiert, ohne unveraenderliche Historie umzuschreiben. Die Status-API fuehrt gpoCount ein; der alte technische Zaehler bleibt voruebergehend als kompatibler Alias. Die UI zeigt fuer Dummy 1 Mandanten-GPO-Backup mit 3 erkannten GPOs. Der Snapshot bleibt selected-subset und erlaubt keine Abwesenheits-, Link-, Scope- oder Wirksamkeitsbehauptung. 526 Standardtests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild erfolgreich; 7 optionale PostgreSQL-Integrationstests uebersprungen. Keine SQL-Migration; Phase 13B bleibt in Arbeit. - Produktive Schritt-6/7/11-Anbindung vom 2026-08-04: Migration 013 persistiert stabile technische Policy-Identitaeten, versionierte Identity-Analysis-Runs und -Aufloesungen, Microsoft-Baseline-Analysen, ADMX-Katalogversionen und Baseline-Einstellungen. Der begrenzte Produktionsworker fuehrt sowohl die Registry-Policy-Identitaetsaufloesung der GPO-Beobachtungen als auch die ADMX-/ADML- und Registry.pol-Analyse der Baselinepakete aus. Local- und PostgreSQL-Repositories speichern Analyse-Run, Aufloesungen, Katalog und Einstellungen atomar; Retry nach bereits erfolgtem Commit bleibt revisionsneutral. Enginewechsel erzeugen deterministische supersedierende Processing- und Identity-Runs, explizites Reprocessing prueft den erwarteten Vorgaenger optimistisch, und Start-Reconciliation verarbeitet fehlende aktuelle Analysen nach. Projektgebundene APIs stellen Policy-Analysen und GPO-Reprocessing bereit; Referenzdaten-APIs stellen Baseline-Analysen und deren Reprocessing bereit. Ausschliesslich synthetische Fixtures wurden verwendet. `npm test` ist mit 543 bestandenen Tests und 8 erwartungsgemaess uebersprungenen optionalen PostgreSQL-Tests gruen; Local-only-, Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Der neue synthetische PostgreSQL-Paritaetstest ist vorbereitet, konnte aber nicht gegen eine frische PostgreSQL-16-Instanz ausgefuehrt werden, weil kein lokales Image vorhanden und der externe Image-Download nicht freigegeben war. Snapshotaggregation, Evaluation und Result-Projektion bleiben offen; Phase 13B bleibt in Arbeit. - Produktiver Schritt-8/11-Vertikalschnitt vom 2026-08-04: Migration 014 persistiert unveraenderliche, revisionsverkettete EnvironmentProfile-Kontexte sowie versionierte Snapshot-Aggregationslaeufe, ihre explizit ausgewaehlten Identity-Analysis-Quellen und technischen Zustandszeilen. Die Aggregation verlangt genau einen konsistenten Analysesnapshot, prueft Domaene und Scope gegen das Profil, reduziert Registry-Policy-Instruktionen in ihrer Quellreihenfolge einschliesslich Delete-Semantik und unterscheidet configured, deleted, conflicted und indeterminate. Identische GPO-uebergreifende Werte bleiben beobachtet konfiguriert; abweichende Werte werden ohne erfundene GPO-Praezedenz zum Konflikt. Unvollstaendigkeit, unaufgeloeste Identitaeten, nicht ausgewertetes Targeting und set-value-if-absent ohne bekannten Vorzustand bleiben feste Reviewhinweise. Jeder Lauf setzt effectiveState auf unknown und permitsFindingGeneration auf false; diese Stufe erzeugt daher weder Findings noch Wirksamkeitsaussagen. Local- und PostgreSQL-Repositories, projektgebundene Create-/List-/Aggregate-APIs und deterministische Idempotenz sind integriert. npm test ist mit 551 bestandenen Tests und 8 im Standardlauf erwartungsgemaess uebersprungenen PostgreSQL-Tests gruen; Local-only-, Designpruefung und Client-/Server-Produktionsbuild sind erfolgreich. Die komplette PostgreSQL-Suite ist mit 8 von 8 Tests gegen eine frische kurzlebige PostgreSQL-16-Instanz erfolgreich, womit die zuvor offene Paritaetspruefung fuer Migration 013 und 014 geschlossen ist. Ausschliesslich synthetische Daten; Testcontainer und Testdaten entfernt. Typisierte Evaluation, Consensus/Risiko, Ergebnis-/Evidenzpersistenz und Unified-Result-Projektion bleiben offen; Phase 13B bleibt in Arbeit. - Produktiver Schritt-9/11-Vertikalschnitt vom 2026-08-04: Migration 015 persistiert versionierte Evaluation Runs, die expliziten Baseline-Analysequellen, PolicyEvaluationResults und typisierte Mehrquellen-Evidenz. Die getrennte Bewertungsengine implementiert Equality-, Minimum-, Maximum-, Enum-, Bitmask-, Mengen- und Auditflag-Comparatoren; produktiv freigegeben ist zunaechst ausschliesslich die explizite Equality-Zuordnung, bis weitere Comparatoren durch versionierte Katalogregeln gebunden sind. Ein Vergleich verlangt einen vollstaendigen Aggregationslauf, pro Profilkontext genau eine vollstaendige Baselineanalyse, einen vollstaendigen ADMX-Katalog, eindeutige technische Identitaet und Baselinekonsens. Match oder nachweislich staerker wird als configured-match gespeichert, nachweislich schwaecher oder abweichend als bestaetigte konfigurierte Abweichung; jede Luecke, Mehrdeutigkeit, Unvergleichbarkeit oder jeder Konflikt bleibt review-required und niemals finding-berechtigt. effectiveState bleibt immer unknown und projectedFindingCount wird relational auf null erzwungen; dieser Schritt erzeugt noch keine Findings und projiziert nichts in das Unified Result Model. Local-/PostgreSQL-Repositories sowie Create-/List-APIs sind integriert und deterministisch idempotent. `npm test` ist mit 564 bestandenen Tests und 8 erwartungsgemaess uebersprungenen optionalen PostgreSQL-Tests gruen; Local-only-, Designpruefung und Client-/Server-Produktionsbuild sind erfolgreich. Die vollstaendige PostgreSQL-Suite ist mit 8 von 8 Tests gegen eine frische kurzlebige PostgreSQL-16-Instanz erfolgreich; Migrationen 001 bis 015, Evaluationpersistenz, Idempotenz und kaskadierendes Projektloeschen wurden synthetisch verifiziert, Testcontainer und Testdaten entfernt. Die vorhandenen Microsoft-Baselinepakete bleiben wegen fehlender Windows-Inbox-ADMX-Kataloge partial und koennen daher produktiv weiterhin nur Review-Ergebnisse erzeugen. Dependency-/Override-/Risikoregeln, explizite Nichtanwendbarkeit, Finding-Erzeugung, Unified-Result-Projektion und UI bleiben offen; Phase 13B bleibt in Arbeit. - Regelkatalog-Nachhaertung fuer Schritt 9/11 vom 2026-08-04: Die Evaluationsengine verwendet keinen impliziten Equality-Fallback mehr. Ein unveraenderlicher freigegebener Policy-Evaluation-Regelkatalog wird als vollstaendiger Snapshot und als Bestandteil des deterministischen Run-Schluessels gespeichert; jede Regel bindet exakt technische Policy-Identitaet, Delivery Mechanism, Produktfamilie, Produktversion, Rolle und Scope. Ausdrueckliche Empfehlung, ausdrueckliche Nichtanwendbarkeit, keine Empfehlung und Katalogluecke bleiben getrennte Baselinezustaende. Empfehlung verlangt einen expliziten typisierten Comparator und eine freigegebene Risikoregel. Versionierte Prerequisite-, Mutual-Exclusion- und Override-Regeln duerfen Nichtanwendbarkeit nur bei vollstaendigem abwesenheitsfaehigem Snapshot ableiten; unbekannte Abwesenheit, aktive gegenseitige Ausschluesse und Definitionskonflikte bleiben Review. Migration 016 speichert Katalogprovenienz, Baselinezustand sowie Regel-, Dependency- und Risiko-IDs relational und erweitert die Klassifikation um not-applicable, ohne die Finding Factory zu oeffnen. Eine read-only Referenzdaten-API macht den aktiven Katalog transparent. Der produktive freigegebene Katalog 1.0.0 ist bewusst leer, bis setting-spezifische Regeln fachlich kuratiert sind; deshalb erzeugt der aktuelle reale Bestand weiterhin ausschliesslich Review. Synthetische Tests decken Minimum, Katalogluecke, Nichtanwendbarkeit, keine Empfehlung, Prerequisite, Mutual Exclusion und Override ab. `npm test`: 573 bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Die vollstaendige PostgreSQL-Suite lief mit 8 von 8 Tests gegen eine frische kurzlebige PostgreSQL-16-Instanz; Migrationen 001 bis 016 und die relationale Risiko-/Nichtanwendbarkeitsgrenze sind verifiziert, Testcontainer und synthetische Testdaten entfernt. Finding Factory, Unified-Result-Projektion, UI und reale Regelkuratierung bleiben offen; Phase 13B bleibt in Arbeit. - Produktiver Schritt-10/11-Vertikalschnitt vom 2026-08-04: Eine versionierte Finding Factory verarbeitet ausschliesslich bereits `eligible` klassifizierte `confirmed_configured_deviation`-Ergebnisse und prueft vor jeder Projektion erneut explizite Baselineempfehlung, eindeutige Risikoregel, Comparatorrelation, vollstaendigen Snapshot-/Aggregationszustand sowie exakt passende Observation-, Backup-, Baseline-, Setting- und Kontext-Evidenz. Jede verletzte Invariante erzeugt eine persistente Ablehnung und niemals ein Finding. Migration 017 persistiert idempotente Factory Runs und Policy-Finding-Occurrences gegen die gemeinsame kanonische Finding-Definition; Scanner-Occurrences bleiben unveraendert an Scan Run und Importdatei gebunden. Local- und PostgreSQL-Repositories, projektgebundene Create-/List-API und Client sind integriert. Nur bestaetigte Policy-Abweichungen erscheinen als `policy-evaluation` im bestehenden Unified-Result-Read-Modell; Scope bleibt `unknown`, Wirksamkeit `not-verified` beziehungsweise `unknown_effective_state`, `is_ioe` bleibt false. Der produktive leere Regelkatalog erzeugt weiterhin null Findings. `npm test`: 577 bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Produktionsbuild erfolgreich. Die vollstaendige PostgreSQL-Suite lief mit 8 von 8 Tests gegen eine isolierte kurzlebige PostgreSQL-16-Instanz; Migrationen 001 bis 017, Factory-Idempotenz und der gemeinsame Read-Pfad wurden synthetisch verifiziert, Testcontainer und Testdaten entfernt. UI fuer Reviewhinweise/partielle Analysen und reale Regel-/Inbox-ADMX-Kuratierung bleiben offen; Phase 13B bleibt in Arbeit. - Produktiver Schritt-11-UI-Vertikalschnitt vom 2026-08-04: Ein projektgebundenes, typisiertes Policy-Analyse-Readmodell fuehrt Identity-Analysis-, Snapshot-Aggregations-, Evaluation- und Finding-Factory-Laeufe fuer die Darstellung zusammen, ohne die unveraenderlichen Fachobjekte umzuschreiben. Ein neuer read-only API-/Clientpfad liefert Laufhistorie, Environment-Profile-Revisionen, Evaluationsergebnisse und eine severity-freie Review-Queue. Der Datahub trennt konfigurierte Abweichungen, tatsaechlich erzeugte Policy-Findings und Review-Datensaetze sichtbar; Konflikte, unaufgeloeste Identitaeten, Katalog-/Parserluecken, unbekanntes Targeting, partielle Laeufe und Factory-Ablehnungen behalten feste technische Kategorien und Evidenzzaehler. Die Ansicht weist aus, dass ihre Zaehler persistierte Laufhistorie beschreiben und dass effektive Anwendung ohne RSoP/GP Results nicht verifiziert ist. Synthetische Domain-, HTTP-, Client- und Renderregressionen sichern insbesondere, dass Review oder unvollstaendige Evidenz kein Finding erzeugen. `npm test`: 582 bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Keine Migration oder Persistenzaenderung; reale Daten wurden nicht inspiziert. Profilwahl/-orchestrierung in der UI, fachliche Regelkuratierung, vollstaendige Windows-Inbox-ADMX-Kataloge, weitere Preference-CSEs und Exportdetails bleiben offen; Phase 13B bleibt in Arbeit. - Produktiver Schritt-11-Orchestrierungsvertikalschnitt vom 2026-08-04: Das projektgebundene Policy-Analyse-Readmodell liefert neben Laufhistorie und Review nun eine typisierte Aktionsbereitschaft fuer GPO-Reprocessing, Snapshotaggregation, Baselineevaluation und Finding Factory. Neue Aktionen werden ausschliesslich aus aktiven Environment-Profile-Revisionen, nicht supersedierten Identity-Analysis-Runs, dem tatsaechlich letzten Processing Run sowie pro Profilkontext exakt ausgewaehlten Baselinepaketen und deren aktiver Analyse abgeleitet. Fehlende oder mehrdeutige Kataloge blockieren; partielle Identity-, Aggregations-, Baseline- oder Evaluationsevidenz wird ausdruecklich `review-only`; bereits deterministisch vorhandene Laeufe werden `completed`. Der Datahub kann Environment Profiles mit Betriebssystem-, optionalem Produkt-, Rollen-, Scope- und Domaenenkontext neu oder als Revision anlegen und ruft fuer alle weiteren Schritte nur die bestehenden projektgebundenen, idempotenten Backendmutationen auf. Supersedierte Profile und Analysen werden fuer neue Aktionen nicht angeboten, stale GPO-Reprocessing bleibt durch den erwarteten letzten Processing Run optimistisch gesperrt. Synthetische Readmodell-, Supersession-, Baselineauswahl-, HTTP- und Renderregressionen sichern Ready-, Review-only-, Completed- und Blocked-Zustaende. `npm test`: 588 bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Keine Migration oder Persistenzaenderung; reale Daten wurden nicht inspiziert. Fachliche Regelkuratierung, vollstaendige Windows-Inbox-ADMX-Kataloge, weitere Preference-CSEs, aktuelle snapshotbezogene Ergebnisdeduplizierung und Exportdetails bleiben offen; Phase 13B bleibt in Arbeit. - Phase-13A-Darstellungsregression vom 2026-07-22 behoben: Ein serverseitig abgeschlossener Scannerimport lädt für Work unmittelbar wieder das persistierte kanonische Mandantenmodell statt der rohen Parserprojektion. PingCastle-XML zeigt dadurch RiskRules-Findings und keine allgemeinen HealthcheckData-Knoten; das Profil verwendet Title als Kartenüberschrift. 287 Standardtests, Local-only-Sicherheitsprüfung und Client-/Serverbuild erfolgreich. Die laufende Dummy-Ansicht wurde rein lesend auf 37 XML-Findings, vorhandene XML-Unteransicht, ausgewählten Titel und fehlenden DomainSid-Knoten geprüft. Keine Persistenz- oder Schemaänderung. - Phase-13A-PingCastle-Results-Nachhaertung vom 2026-08-21: Der HTML-Extractor 1.7.0 verfolgt strikt lokale Fragmentverweise aus `Details` rekursiv ueber Subsections, Tabellenzellen, Bootstrap-Modals und Collapse-Bereiche bis zu ihren Tabellenendpunkten. Elterninhalte maskieren separat verlinkte Zielcontainer, sodass jede Tabelle genau einmal und mit hierarchischer Bezeichnung im bestehenden `Verwandte Daten`-/Results-Vertrag erscheint. Zyklen, fehlende oder mehrdeutige Ziele sowie Tiefen-, Ziel- und Tabellenlimits werden sicher begrenzt und diagnostiziert; externe oder aktive Ziele werden nicht verfolgt. Results-IDs sind pro Importdatei isoliert. Das technische Feld `Verwandte Daten` und seine importdateigebundene Sektions-ID bleiben intern vollstaendig erhalten und speisen weiterhin den exakten Results-Linker, werden im Finding-Reader jedoch weder als Abschnitt noch unter `Additional Information` angezeigt. Auf ausdrueckliche Nutzerentscheidung ersetzt dies zugleich die statische HTML/XML-Begleiteranreicherung vom 2026-07-22: HTML und XML bleiben getrennte Importe, nur HTML erzeugt PingCastle-Results, XML meldet die fehlende Results-Faehigkeit als Importwarnung. Synthetische Rekursions-, Sicherheits-, Projektions- und Formattrennungsregressionen sind gruen. Der ausdruecklich freigegebene Dummy-Bericht wurde einmalig inhaltsarm verifiziert: `P-Delegated` erzeugt sieben Results-Bloecke mit 4, 14, 5, 3, 1, 1 und 5 Datenzeilen; der temporaere Realdatei-Test wurde entfernt. `npm test`: 616 bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Client-/Server-Produktionsbuild erfolgreich. Aktualisierte App und Backend laufen lokal und liefern HTTP 200. Keine API-, SQL- oder Persistenzaenderung; Phase 13A bleibt abgeschlossen. - Phase-13A-/Phase-7-PingCastle-Detailpfad vom 2026-08-21 nachgeschaerft: Extractor 1.8.0 ordnet rekursiv erreichte Modal- und Collapse-Endpunkte nach ihrer tatsaechlichen Zielposition im HTML; die finding-spezifische Results-Verknuepfung erhaelt diese Reihenfolge auch dann, wenn die globale Blattliste anders sortiert ist. Profil 1.2.0 zeigt hierarchische Pfadtitel an und entfernt nur das technische `PingCastle ·`-Praefix. Bereits strukturiert erhaltene Abschnittsprosa wird direkt vor ihrer Tabelle projiziert; reine Modal-Titel-/`Close`-Artefakte werden nicht als doppelter Text angezeigt. 49 fokussierte synthetische Tests, die vollstaendige Testsuite einschliesslich Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich. Keine API-, SQL- oder Persistenzaenderung; bestehende Importe benoetigen fuer die neue Zielreihenfolge und Preambles einen Reimport. Phase 13A und Phase 7 bleiben abgeschlossen. - Phase-7-PingCastle-Readerkorrektur vom 2026-08-21: Sobald strukturierte PingCastle-Results vorhanden sind, wird das urspruengliche Feld `Details` weder als Reader-Fliesstext noch unter Additional Information angezeigt. Die fachlichen Texte und Tabellen bleiben im geordneten Results-Pfad erhalten. Bei alten oder unvollstaendigen PingCastle-Importen ohne strukturierte Results bleibt `Details` als lesbarer Fallback sichtbar. 38 fokussierte synthetische Tests, die vollstaendige Testsuite einschliesslich Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild sind erfolgreich; keine Import-, API-, SQL- oder Persistenzaenderung. Phase 7 bleibt abgeschlossen. - Verifizierte PingCastle-Score- und Regelkatalog-Nachhärtung vom 2026-07-22: Der native Extractor übernimmt aus XML die individuellen Regelpunkte, die vier autoritativen Kategorie-Scores, den Domain Risk Level sowie strukturierte Details/ExtraDetails. Die Work-Kompatibilitätsprojektion ergänzt ausschließlich statische Herstellertexte aus einer im selben Projekt vorhandenen HTML-Begleitdatei mit identischem Dateistamm und Rule ID; dynamische Scanwerte werden nie formatübergreifend kopiert und die HTML-Quelle wird sichtbar ausgewiesen. Regelpunkte, Kategorie-Score und Domain Risk Level erscheinen getrennt mit der Herstellersemantik „Kategorie maximal 100, Gesamtscore als Maximum der vier Kategorien“. Synthetische XML-/HTML-, Projektions- und UI-Regressionen sowie der ausdrücklich freigegebene Dummy-Paarabgleich mit 37 korrespondierenden Regeln sind erfolgreich. npm test mit 289 bestandenen Standardtests, 7 erwartungsgemäß übersprungenen optionalen PostgreSQL-Tests, Local-only-Sicherheitsprüfung und Client-/Serverbuild sind grün. Der veraltete reviewfreie Dummy-XML-Lauf wurde kontrolliert durch die neu verarbeitete freigegebene Datei ersetzt und der HTML-Begleitlauf ergänzt; Browserprüfung bestätigt je 37 getrennte XML-/HTML-Findings, Score-Badges, Regeltexte und ExtraDetails. Keine Schemaänderung. - Verifizierte PurpleKnight-Result-Persistenznachhärtung vom 2026-07-22: Quelltabellen ohne Finding-Vorkommen bewahren ihre Zeilen nun als optionale Originalfelder im kanonischen SourceTable-Vertrag; Tabellen mit bereits persistierten Finding-Vorkommen werden nicht doppelt gespeichert. Work rekonstruiert diese unterstützenden Tabellen nach Finding- und nativen Ansichten, sodass Result-Referenzen wie SI000055 wieder auf die vollständige Ergebnistabelle zeigen. Synthetische Import-, Projektions-, Reihenfolge- und Linkerregressionen sind grün. `npm test mit 291 bestandenen Standardtests, 7 erwartungsgemäß übersprungenen optionalen PostgreSQL-Tests, Local-only-Sicherheitsprüfung und Client-/Serverbuild sind erfolgreich. Der ausdrücklich freigegebene reviewfreie Dummy-PurpleKnight-Lauf wurde mit derselben lokalen XLSX ersetzt; Browserprüfung bestätigt 20 Results-Buttons sowie für den genannten Fund eine Tabelle mit einer Zeile und vier Spalten. Die abschließende Bestandsprüfung erkannte den bereits zuvor fehlenden separaten PingCastle-XML-Lauf; die lokal vorhandene freigegebene XML-Datei wurde mit 37 Findings ergänzt und der Browser bestätigt wieder 193 Findings aus PurpleKnight, PingCastle HTML und PingCastle XML. Additive kanonische JSON-Vertragserweiterung, keine SQL-Migration. - Phase-13A-CIS-CAT-Results-Nachhärtung vom 2026-07-30: Der neue `cis-cat-html-source-extractor` folgt den internen `#detail-*`-Verweisen der Assessment-Result-Tabelle und bewahrt pro Ergebniszeile genau ein Candidate-Finding. `Benchmark Item` und die vorangestellte Regelnummer werden im Profil 1.1.0 als Titel beziehungsweise Rule ID abgebildet. Description, Rationale, Remediation einschließlich Impact, Assessment Evidence, Rule Result XML, References sowie CIS Controls V7/V8 bleiben als strukturierte Originalwerte mit sicherem Klartextwert erhalten; stabile, auf dieselbe Quelldatei begrenzte `sourceTableIndex`-Verweise öffnen alle zugehörigen Quelltabellen im Results-Fenster. Der bounded-lexical HTML-Pfad richtet verschachtelte Tabellen an seinen tatsächlichen nicht überlappenden Parserindizes aus und verlinkt XML-interne Doppeltabellen nicht erneut. Die kanonische Work-Projektion zeigt strukturierte Originalfelder über ihren `rawValue`, ohne die Provenienz zu überschreiben. Synthetische Extractor-, Persistenz-, Projektions-, Linker- und Readerregressionen sowie `npm test` mit 437 bestandenen Standardtests, 7 erwartungsgemäß übersprungenen optionalen PostgreSQL-Tests, erfolgreicher Local-only- und Designprüfung und der Client-/Server-Produktionsbuild sind grün. Der ausdrücklich freigegebene Dummy-Bericht wurde real mit 411 Findings und 1.815 Quelltabellen vorgeprüft; die Beispielregel 2.2.2 besitzt alle zehn genannten Textabschnitte und exakt sechs Evidence- plus zwei Control-Tabellenverweise. Zwei vorherige CIS-CAT-Testläufe wurden kontrolliert durch diesen einen geprüften Lauf ersetzt; API und Datahub bestätigen wieder vier Scanberichte insgesamt. Die verbundene Browsersteuerung blockierte danach die weitere Work-Seite durch ihre URL-Policy, daher ist das Results-Popup nicht zusätzlich visuell abgenommen; sein Daten- und Darstellungsvertrag ist durch die genannten Regressionen und den realen Parser-/Persistenznachweis abgedeckt. Keine SQL-Migration. - Phase-13A-CIS-CAT-Results-Darstellungskorrektur vom 2026-07-30: Auf Nutzerkorrektur zeigt das Results-Fenster ausschließlich die über `sourceTableReferences` verlinkten Assessment-Evidence- und CIS-Control-Tabellen; Description, Rationale, Remediation/Impact, References und sonstiger Finding-Fließtext bleiben im Finding. `Rule Result XML` ist dort ein standardmäßig geschlossenes, bewusst zu öffnendes Detail und wird nicht als Result-Text behandelt. Bereits persistierte `CIS-CAT Details`-Sammelfelder werden lesekompatibel zerlegt, ohne Reimport oder Datenmigration; neue Importe speichern XML als eigenes strukturiertes Originalfeld. In gemischten Projekten bestimmt zusätzlich die `toolId` des aktiven Blatts das Darstellungsprofil, sodass `Benchmark Item` statt `Weight`/`1.0` als Titel verwendet wird. Verifiziert mit 440 bestandenen Standardtests, 7 erwartungsgemäß übersprungenen optionalen PostgreSQL-Tests, erfolgreicher Local-only- und Designprüfung sowie Client-/Server-Produktionsbuild. Die ausdrücklich freigegebene Dummy-Ansicht bestätigt für Regel 2.2.2 den vollständigen Benchmark-Titel, geschlossenes XML und acht verlinkte Results-Blöcke ohne Finding-Volltext oder XML. Keine SQL-Migration und kein Reimport erforderlich. - Phase-13B-Result-DB-Abweichungs- und Titelkorrektur vom 2026-07-30: Das werkzeugunabhängige Abweichungsprädikat 1.1.0 bewertet nun neben festgestellten IOEs und `warning` auch `Outcome: fail` als fachliche Abweichung. Dadurch bleiben fehlgeschlagene CIS-CAT-Compliance-Checks vertragsgemäß `IOE: Nein`, erscheinen aber als `Abweichung: Ja`. Der PostgreSQL-Vorfilter verwendet exakt dieselben Outcome-Werte (`fail`, `warning`) wie die plattformneutrale Projektion, sodass Zeilenanzeige, Facettenzählung und Ja/Nein-Filter nicht mehr auseinanderlaufen. Eine kanonische Importregression sichert zusätzlich, dass der CIS-CAT-Titel aus `Benchmark Item` in die `FindingDefinition` übernommen wird und weder `Quelle: Datei` noch der Dateiname sein darf. Verifiziert mit 443 bestandenen Standardtests, 7 erwartungsgemäß übersprungenen optionalen PostgreSQL-Tests, erfolgreicher Local-only- und Designprüfung sowie Client-/Server-Produktionsbuild. Im ausdrücklich freigegebenen Dummy zeigt Regel 2.2.2 den vollständigen Benchmark-Titel, `fail`, `Abweichung: Ja`; kein geladener CIS-CAT-Titel lautet `Quelle: Datei`. Der Filter `Abweichung: Ja (323)` liefert 323 Treffer und die 50 geladenen Zeilen sind vollständig `fail`/`Ja`. Keine SQL-Migration und kein Reimport erforderlich. - Phase-13A-CIS-CAT-Results-Vollstaendigkeit vom 2026-07-31: Auf Nutzeranforderung erscheint jetzt jeder verlinkte oder im Bericht nur aufgeklappte CIS-CAT-Inhalt im Results-Fenster. Der Extractor 1.2.0 leitet die Abschnittszuordnung nicht mehr aus einer festen Liste bekannter Ueberschriften ab, sondern aus den Marken des Berichts selbst: Aufklappverweise („Show Assessment Evidence“, „Show Rule Result XML“) und fette Ueberschriften mit Doppelpunkt. Damit tragen auch kuenftige Rahmenwerke ihre woertliche Ueberschrift; zuvor fiel jede unbekannte Fassung — etwa „CIS Controls V8“ — auf die vorherige Marke „Rule Result XML“ zurueck, deren Tabellen bewusst aussortiert werden, sodass die zugehoerige Steuerungstabelle vollstaendig aus dem Fenster verschwand. Die XML-Doppeltabellen werden nun ueber ihren Behaelter (`div.xml` mit `_xml_result`) statt ueber eine Zeichenkette im Text davor ausgeschlossen. Der bisher berechnete, aber nie ausgegebene Aufzaehlungstext der Zuordnungen erscheint als neues Feld `Control Mappings` ohne die Bedienbeschriftung „More“; Detailtabellen ohne Caption uebernehmen ihre einzelne Kopfzelle als Namen („CIS Control Information“ statt „Tabelle 7“). `ToolProfileDefinition.presentation.resultSectionHeaders` erklaert werkzeugunabhaengig, welche Felder als eigene benannte Abschnitte in das Fenster gehoeren; CIS-CAT 1.3.0 nennt ausschliesslich `Control Mappings`, und der Reader blendet genau dieses Feld aus. Das Rule Result XML gehoert auf Nutzerkorrektur vom selben Tag ausdruecklich nicht dazu: es fuellte das Fenster vor den eigentlichen Belegtabellen und bleibt daher — wie in der Darstellungskorrektur vom 2026-07-30 festgelegt — ein standardmaessig geschlossenes Detail im Finding, fuer neue Importe aus dem eigenen Feld und fuer aeltere Importe aus dem Sammelfeld `CIS-CAT Details`. `LinkedResults`/`FloatingResultsWindow` zeigen statt eines einzelnen fest benannten Ergebnistextes beliebig viele benannte Abschnitte; Datensatz- und Graphansicht verwenden dieselbe Zusammenstellung. Verifiziert mit 460 bestandenen Standardtests, 7 erwartungsgemaess uebersprungenen optionalen PostgreSQL-Tests, erfolgreicher Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild. Regressionen sichern beide Richtungen: das XML erscheint im Fenster an keiner Stelle und bleibt im Reader ein geschlossenes Detail. Neue synthetische Fixture `assessment.future-controls.synthetic.html` mit einer neuen CIS-Fassung und einem fremden Rahmenwerk sichert die Regression bis in die gerenderte Fensterausgabe. Keine visuelle Abnahme an realen Daten und kein Reimport erforderlich fuer die Reader-Vertraeglichkeit; die neuen Felder entstehen erst beim naechsten Import des Berichts. Keine SQL-Migration. - Phase-13A-CIS-CAT-Results-Verknuepfungskorrektur vom 2026-07-31: Am freigegebenen Dummy zeigte sich, dass das Results-Fenster einer einzelnen Regel 3.294 Zeilen aus rund 50 identischen Belegtabellen fuehrte. Ursache war nicht die Extraktion, sondern der Ergebnis-Linker: er verglich die Quelldatei des Datensatzes mit `record.sourceFile`, das in der Projektansicht („ · Alle Datensaetze") den Projektnamen traegt statt der Datei. Der exakte `source-table:`-Verweis fand dadurch genau in der ueblichen Leseansicht kein Blatt und fiel auf die Namensaehnlichkeit zurueck, die jede gleichnamige Tabelle des gesamten Berichts hereinzog — CIS-CAT gibt dieselbe Belegtabelle je Regel erneut aus. Der Linker liest die Herkunft jetzt aus dem Provenienzfeld „Quelle: Datei" und behandelt einen vorhandenen Quelltabellenverweis als abschliessend: loest er nichts auf, bleibt das Ergebnis leer statt einen Ersatz zu erfinden. Zusaetzlich zwei Beschriftungsfehler, die erst der reale Bericht zeigte. Erstens baut er einen Aufklappblock nicht als Verweis, sondern als `ShowAssessment Evidence`: Bedienwort und Bezeichnung stehen in getrennten Elementen, und die Bezeichnung traegt keinen Doppelpunkt. Es entstand deshalb gar keine Marke, und die Belegtabellen erbten die vorhergehende Ueberschrift „Impact". Die Markensuche wertet `caption`-Beschriftungen jetzt ohne Doppelpunkt als Abschnitt und liest einen Aufklappverweis ueber sein Ende hinaus, falls ein Bericht die aeltere Ankerform nutzt. Zweitens setzt der Bericht die Steuerung selbst fett mit Doppelpunkt in den Listenpunkt, wodurch die eingebettete Tabelle „Control 6: …" statt „CIS Controls V7.0" hiess; Ueberschriften innerhalb einer Zuordnungsliste gelten deshalb nicht mehr als Abschnitt. Der References-Block wird ueber seinen Behaelter von den Zuordnungen getrennt, weil der Bericht fuer beide dieselbe Listenklasse verwendet. Die synthetische Fixture bildet alle drei realen Strukturen ab. Verifiziert mit 463 bestandenen Standardtests, 7 erwartungsgemaess uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild. Am ausdruecklich freigegebenen Dummy wurde der Bericht mit dem korrigierten Extractor neu eingelesen (411 Occurrences) und der ueberholte Lauf danach entfernt, sodass der Mandant wieder genau vier Scanberichte fuehrt: Regel 17.7.5 zeigt jetzt 130 statt 3.294 Zeilen in sieben Bloecken — Control Mappings, viermal „Assessment Evidence · …", „CIS Controls V7.0 · CIS Control Information" und „CIS Critical Security Controls V8.0 · CIS Control Information" — ohne XML und ohne References im Fenster, waehrend der Reader Description, Remediation, Rationale, References und das geschlossene Detail „Rule Result XML" fuehrt. Keine SQL-Migration. - Schluessel/Wert-Tabellen ohne Kopfzeile vom 2026-07-31: Die CIS-Control-Tabellen erschienen im Results-Fenster als einzelne Spalte „Label:" mit der Zeile „Description:" - ohne einen einzigen Wert. Ursache war die generische Kopfzeilensuche: eine `` ist eine reine Schluessel/Wert-Tabelle (`Control:`, `Subcontrol:`, `Label:`, `Description:`) mit einer spaltenuebergreifenden Titelzeile und hat gar keine Kopfzeile. `detectHeaderRow` waehlte die Zeile mit den zwei laengsten Beschriftungen, machte deren Wert zur Spaltenueberschrift und verwarf alles darueber; von vier Angaben blieb eine. `analyzeRows` erkennt eine solche Tabelle jetzt an zwei Spalten mit durchgaengigen Bezeichnern auf Doppelpunkt, vergibt die Spaltennamen `Feld`/`Wert` und behaelt jede Zeile; eine vorangestellte Zeile ohne Wert bleibt Titel. Das ist die einzige Stelle, an der Spaltennamen vergeben statt gelesen werden, und sie ist als solche benannt. Da Quelltabellen aus `sheet.analysis.records` persistiert werden, wirkt die Korrektur erst mit einem erneuten Import. Verifiziert mit 464 bestandenen Standardtests, 7 erwartungsgemaess uebersprungenen optionalen PostgreSQL-Tests, Local-only- und Designpruefung sowie Client-/Server-Produktionsbuild; am freigegebenen Dummy zeigt Regel 17.7.5 nach dem Neuimport beide Steuerungstabellen vollstaendig — `CIS Controls V7.0` mit Control, Subcontrol, Label und Description, `CIS Critical Security Controls V8.0` zusaetzlich mit Implementation Group und Security Function, jeweils mit Wert. Bekannter Rest ohne Informationsverlust: im bounded-lexical Pfad (Dateien ueber 4 MB) konsumiert der Parser eine verschachtelte Tabelle zusammen mit ihrer aeusseren; die aeussere Complex-Check-Tabelle traegt dadurch eine dreispaltige erste Zeile, faellt aus der Schluessel/Wert-Erkennung und zeigt ihr `Criterion:` nicht — dieselbe Angabe steht vollstaendig im unmittelbar folgenden Block der inneren Tabelle. Keine SQL-Migration. Abnahmekriterien: - Benutzer sehen und bearbeiten nur autorisierte Projekte. - Betrieb, Wiederherstellung und Update sind dokumentiert und getestet. - Es findet keine Übertragung an externe Dienste statt, sofern dies nicht später ausdrücklich beschlossen wird. #### Spaeteres Arbeitspaket: automatische Security-Baseline-Updates Nutzerentscheidung 2026-10-02: fuer spaeter vormerken, jetzt nicht implementieren. Zuordnung: Phase 13B, mit Backend-Betrieb aus Phase 10 und Kataloganzeige aus Phase 7. Status: geplant / zurueckgestellt; keine automatische Pruefung, kein Download und kein Zeitplan aktiviert. - Ziel: Das Backend kann regelmaessig nach neuen Security-Baseline-Versionen suchen, sie herunterladen und ueber den bestehenden validierten Importweg als eigene Version aufnehmen. Der manuelle ZIP-Upload bleibt verfuegbar. - Oberste Praemisse: Datenqualitaet vor Geschwindigkeit. Vor Uebernahme sind Herkunft aus festgelegten offiziellen Quellen, eindeutige Version, unterstuetztes Format und Vollstaendigkeit zu pruefen. Originalartefakt, Herkunft, Pruefsumme und Validierungsergebnis muessen nachvollziehbar erhalten bleiben. - Fehler, unvollstaendige Pakete, unklare Versionen und nicht erreichbare Quellen duerfen die letzte gueltige Baseline nicht ersetzen. Gleiche Versionen duerfen keine doppelten Katalogeintraege erzeugen; neue Versionen bleiben getrennt von vorhandenen Releases. - Bestehende Auswertungen und ihre Baseline-Zuordnung werden durch ein Update nicht automatisch ueberschrieben oder neu bewertet. Eine erneute Auswertung bleibt ein gesonderter Vorgang ueber den bestehenden kontrollierten Pfad. - Vor Umsetzung klaeren: unterstuetzte Hersteller/Produkte und offizielle Downloadquellen, Pruefintervall, Proxy-/Offline-Betrieb sowie sichtbare Update- und Fehlerhinweise. Quellenwechsel und Formatdrift sind Risiken; die Update-Pruefung darf keine Mandantendaten an externe Dienste uebertragen. - Spaetere Abnahme mit synthetischen Quellen/Paketen: gueltige neue Version, identische Version, falsche Herkunft, unklare Version, unvollstaendiges oder ungueltiges Paket und Netzwerkfehler; jeweils unveraenderte vorhandene Baselines und historische Auswertungen nachweisen. Umsetzung erfordert eine neue Freigabe der tatsaechlich betroffenen Core-Bereiche; diese Planaufnahme ist keine Implementierungsfreigabe. ### Phase 13D - Referenzerkennung und katalogbasierte Einordnung 2026-09-26 - Phase 13D / gemischte Work-Projektion (2.8.5, umgesetzt und verifiziert): Beim Anhaengen von GPO-Ergebnissen an All Records wird referenceRecognition jetzt vom jeweiligen Scannerbefund uebernommen. Zuvor blieben die Referenzlaeufe gespeichert, gingen aber beim Neuaufbau der Reader-Projektion verloren. Die Uebernahme bewahrt Referenzen, Quellenherkunft, Erkennerversion, Lauf und Katalogversion/-hash einschliesslich bewusst leerer Erkennung; GPOs und nicht indexierte Befunde erhalten keine fremden Referenzen. Synthetische Regression oeffnet Referenzdetails im echten FindingReader mit und ohne GPOs. 30 fokussierte Referenz-/GPO-/CIS-Tests und 9 UI-/API-Versionsvertragstests, beide Produktionsbuilds sowie Design-/Local-only- und Diffpruefung bestanden. Patchversion fuer rueckwaertskompatible Projektionskorrektur; keine Datenmutation und kein Reimport bzw. neuer Erkennungslauf erforderlich. Bereits geladene Workspaces muessen neu geladen werden. Phase 13D bleibt in Arbeit. Status: in Arbeit (erster Umfang am 2026-09-26 umgesetzt und verifiziert; weitere Frameworks und Folgeetappen offen). Ziel: gemeinsame, offline faehige Referenzerkennung aus behaltenen Originalfeldern mit unveraenderlicher Katalog- und Quellenherkunft. Erster Umfang: Enterprise ATT&CK und D3FEND; eigenstaendige Ableitung statt Finding-Identitaet oder Scoring-Eingriff. Einzelheiten und Grenzen: `docs/REFERENCE_RECOGNITION.md`. Abnahme erster Umfang: - [x] Frameworkweite Erkenner fuer IDs und eindeutige exakte Titel; declared/mentioned, unknown/deprecated/revoked getrennt. - [x] Quelle mit Feld, Position, UTF-16-Offsets, Originaltext, Datei-/Input-/Kataloghash und Erkennerversion behalten. - [x] Normale Batchimports speichern Ableitung und Kataloge atomar; bestehende Scannerlaeufe koennen pro Client explizit nachverarbeitet werden. - [x] Append-only Referenzlaeufe und gemeinsame unveraenderliche Kataloge in PostgreSQL/Repository und Projektexport; synthetisch gegen kanonische PostgreSQL verifiziert. - [x] Pathfinder liest gespeicherte aktive Referenzen; Reader zeigt auch historische/unbekannte Treffer und Provenienz. Keine neue automatische Finding-Korrelation. - [x] Client-/Server-Produktionsbuilds und Produktversionsvertrag bestanden; beide Themes mit ausschliesslich synthetischen Komponenten bei normaler und 480px Readerbreite geprueft. Entscheidungen 2026-09-26: Erkennerversion 1.0.0; gebuendelte Kataloge ATT&CK 19.2 und D3FEND 1.6.0. ATT&CK-Onlineupdate speichert den vollstaendigen Erkennungskatalog mit der Matrix, aendert aber keine frueheren Referenzlaeufe. D3FEND-Laufzeitupdate, weitere Frameworks, technische Identitaetsaufloesung und Korrelationsansicht gehoeren zu spaeteren Etappen. Eine Datenbank pro Client bleibt wie beauftragt ausschliesslich im Zielplan. Risiken/Grenzen: Nur behaltene Felder koennen ohne Reimport erkannt werden; mehrdeutige Namen werden nicht geraten. Der historische Text `Account Monitoring` ist kein exakter Eintrag des gebuendelten D3FEND-Technikkatalogs und erzeugt deshalb keine freie Graphrelation mehr; der Originaltext bleibt sichtbar. Die manuelle Browsermatrix ist ein Matrixfallback und waehlt keine serverseitige Erkennungsversion. Sehr grosse Client-Nachverarbeitungen koennen spaeter einen persistierten Hintergrundjob benoetigen. Niedrigstufige Staging-API-Imports erhalten Referenzen ueber die explizite Nachverarbeitung. Details im Funktionsdokument. Migration: 023 (021/022 in der kanonischen DB durch Timeslot-/Obligation-Arbeit belegt, unberuehrt). Vorheriger lokaler PostgreSQL-Backup verifiziert (Custom-Dump, TOC lesbar, SHA-256 dokumentiert in `.assessor-data/backups`; keine Kundendaten ausgegeben). Eigene synthetische Testdaten exakt geloescht. Versionsentscheidung: neue rueckwaertskompatible Faehigkeit, Minor-Version 2.8.0, Produktversionsvertrag und beide Builds verifiziert; 2.7.0 bleibt als historischer MITRE-Update-Meilenstein dokumentiert. Keine Reimportpflicht fuer vorhandene Felder. Nachpruefung 2026-09-26: Der Nutzer sah den Referenzbereich in einer bereits geoeffneten Clientansicht nicht. Frontend auf 5173 und Produktionsbundle auf 4173 enthielten die Funktion; nach Strg+F5 bestaetigte der Nutzer die Sichtbarkeit. Ergaenzter synthetischer Interaktionstest oeffnet den Client ueber Auswahl/Manage, prueft den Bereich unter den Stammdaten und verarbeitet per Button exakt den Client ueber alle Timeslots. Zusammen mit den zwei vorhandenen Referenz-UI-Tests bestanden (3/3). Kein Produktionscode geaendert, daher Version weiterhin 2.8.0. Bestehende Scans wurden bei dieser Pruefung nicht nachverarbeitet. ### Phase 13E - Kontext-Engine und abschaltbarer Kontext-Layer Neueste Nutzerentscheidung 2026-10-01 / gemeinsame Engines-Steuerung (Phasen 13E und 7): Der blaue `Engines`-Button ersetzt den frueheren Context-Schalter an derselben Toolbar-Position. Das Popup zeigt Core Engine (immer aktiv, gesperrt), Context Engine und Report Engine; Standard fuer alle ist aktiv, optionale Auswahl wird lokal gespeichert. Context aus entfernt Kontextdarstellungen und den aktiven Clusterfilter und unterbindet neue Context-Anfragen. Report aus sperrt neue Report-Erzeugung in der UI. Bereits gestartete Serverlaeufe werden nicht abgebrochen; spaete UI-Ausgaben werden verworfen. Diese Entscheidung ersetzt die nachfolgend historisch dokumentierte Daueraktivierung und stellt die bedienbare Abschaltbarkeit wieder her. Die Aktivierung gehoert zum Core; Engines beziehen ihren Zustand daraus, ohne voneinander abzuhaengen. Die Freigabe fuer Presentation, Core Tests und Governance liegt vor. Aktuelle Nutzerentscheidung 2026-10-01 (ersetzt die nachfolgenden historischen Schalter- und Plaketten-Sprungregeln): Context ist dauerhaft aktiv, ohne Toolbar-Schalter und ohne lokale An/Aus-Praeferenz. Ein Klick auf eine Context-Cluster-Plakette setzt den exakten Work-Filterwert und ersetzt eine vorige Cluster-Auswahl; andere Filter bleiben erhalten. Der Detailabschnitt bleibt pro Finding standardmaessig eingeklappt. Die Nur-Lese- und fachlichen Grenzen bleiben verbindlich. Die Core-Freigabe fuer Presentation, Core Tests und Governance wurde im Chat ausdruecklich erteilt. Die technische Funktionsfaehigkeit des Readers ohne Engine-Anbindung bleibt separat abgesichert. Nutzerkorrektur 2026-10-01 (umgesetzt und verifiziert): `Context` im Finding Reader startet eingeklappt, auch beim Finding-Wechsel und nach erneutem Einschalten des Layers. Native Disclosure per Maus/Tastatur; Cluster-Plaketten oeffnen den Abschnitt vor dem Sprung. Der globale Layer-Schalter bleibt eine separate Funktion. Status: in Arbeit (Engine, API, Finding Reader, Work-Facette und Pathfinder am 2026-09-30 umgesetzt und per Test verifiziert; die Sichtpruefung des Pathfinders in beiden Themes und die Stufe Client Info sind offen). Ziel: Der Assessor erhaelt eine zweite, abschaltbare Betrachtungsweise fuer Gesamtzusammenhaenge. Die Kontext-Engine laeuft parallel zur bestehenden technischen Pipeline, liest deren gespeicherte Ergebnisse ausschliesslich lesend und leitet daraus belegte Zusammenhaenge ab. Die technische Betrachtung bleibt massgeblich und wird weder veraendert noch in Frage gestellt. Dieselben Kontextergebnisse speisen die Report Engine (Phase 7). Ausgangslage (Pruefung 2026-09-30, nur gelesen): Observation, technische Policy-Identitaet, Snapshotaggregation, Baseline-Evaluation, `Not configured` sowie Conflict-/Duplicate-Diagnosen existieren bereits in Phase 13B. Deshalb entsteht kein `CANONICAL_MODEL v2` und kein Umbau dieser Schichten. Neu sind nur Semantic Catalog, Declared Fact, Bedingungen, Relationship-Katalog, Cluster und Remediation-Hebel. Die ungenutzten Evaluator-Anknuepfungspunkte `PolicyRiskRule`, `PolicyDependencyRule` und `stronger/weaker` werden fuer den Kontext nicht befuellt, weil sie Urteile und Severity des Assessors veraendern wuerden. Verbindliche Nutzerentscheidungen 2026-09-30: - (a) Ein kuratierter Katalog wird als neue Wissensbasis freigegeben: Semantic Definitions, Relationships und Cluster-Regeln. Jede Regel ist versioniert und traegt eine zitierte, offline gespeicherte Quellenangabe. Nicht katalogisierte Einstellungen bleiben ausdruecklich `nicht semantisch zugeordnet` und werden nie geraten. - (b) Reihenfolge: zuerst Engine und API ohne UI, dann Finding Reader (Abschnitt `Kontext` nach Problem und Next step), dann Pathfinder (Cluster als Knoten/Zweig mit Details im rechten Panel; bestehende Pathfinder-Regeln bleiben), dann eine Work-Facette, zuletzt eine Client-Info-Uebersicht im bestehenden Kachelsystem nach gesonderter visueller Abnahme. Geaendert am 2026-09-30 auf Nutzerwunsch: nach dem Finding Reader folgen ein AD-Katalog-Batch, dann die Work-Facette, dann Pathfinder, zuletzt Client Info (siehe Aenderungsprotokoll). - (c) Die Work-Facette `Kontext-Cluster` ergaenzt die festgelegte GPO-Facettenliste, ist aber nur bei eingeschaltetem Layer sichtbar. `Source: Scan` bleibt letzte Facette. Beim Abschalten wird ein aktiver Kontextfilter entfernt. Verbindliche Grenzen des Kontext-Layers: - Der Layer ist eine abgeleitete, abschaltbare Lesart. Er beeinflusst nie Verdict, Score, technische Filter und Status, Reviews, Risikoakzeptanzen, Result DB oder Priority Findings. ATT&CK-/Relationship-Ableitungen gelangen nie in die Result DB. - Das Einhaltungsurteil bleibt das autoritative Assessor-Verdict. Die Kontext-Engine erzeugt kein eigenes Pass/Fail, kein `unsicher/sicher`-Urteil, keine Plattform-Default-Fehlkonfiguration aus `Not configured` und keine normalisierte Prioritaet. Der Remediation-Hebel ist nur eine Anzahl betroffener Bedingungen und Cluster, ohne Rang, Aufwand oder Risikoscore. - Ausgeschaltet heisst: kein Request, keine Berechnung, kein gerendertes Kontextelement und kein aktiver Kontextfilter. Standard ist `aus`; die Wahl wird pro Anwender lokal gespeichert. - Kontextaussagen sind als `Kontext` gekennzeichnet und tragen Katalogversion und Quelle. Sie formulieren `beguenstigt`, nie `ausnutzbar` oder `bestaetigt`. Unbekannte Bedingungen werden ausdruecklich getrennt angezeigt und zaehlen nie als erfuellt oder nicht erfuellt. Keine Pass/Fail-Statusfarben; visuelle Umsetzung nach `assessor-ui` mit bestehenden Tokens. - Declared Facts beziehen sich auf die GPO-Backup-Konfiguration, nie auf effektive Host-Zustaende. Die Schluesselbestandteile sind Assessment-Lauf, Backup-Instanz, Semantic-ID und Computer-/User-Scope. Mehrere GPOs ergeben je einen Fact ohne behauptete Vorrangfolge. `Not linked`, Konflikte und Duplikate bleiben sichtbar markiert. - Datenweg: plattformneutrales Modul (vorgesehen `src/assessment-context/`), Berechnung im Backend ueber eigenen API-Endpunkt, Nur-Lese-Repository-Port und Nur-Lese-Datenbankzugriff. Die Richtung ist fest: Assessor -> Kontext-Engine -> UI und Reporting, nie zurueck. Zunaechst keine eigene Persistenz: deterministische Berechnung bei Bedarf, begrenzter Cache nach Repository-Revision und Scope, frische Ergebnisse nach Import oder Neuauswertung. Eigene Tabellen nur nach gesonderter Freigabe mit Backup und Migration. - UI und Report lesen dieselben Kontextergebnisse mit derselben Engine- und Katalogversion. Abnahme erster Umfang (Pilot-Cluster `Credential Relay Exposure` mit etwa 8 bis 12 belegbaren GPO-Einstellungen): - [x] Katalogformat, Validierung, Versionierung und Quellenpflicht fuer Semantic, Relationship und Cluster umgesetzt (`src/assessment-context/context-catalog.ts`, Katalog 1.0.0). Der Pilot umfasst sieben statt der geschaetzten 8 bis 12 Einstellungen, weil nur GPO-deklarierbare Einstellungen mit belastbarer Quelle aufgenommen wurden (LmCompatibilityLevel, SMB-Server- und SMB-Client-Signierung, LDAP-Server- und LDAP-Client-Signierung, LDAP Channel Binding, LLMNR). Registry-Ziele und Werte wurden am 2026-09-30 gegen Microsoft Learn, KB4520412 und MITRE T1557.001 (`Name Resolution Poisoning and SMB Relay`) geprueft; die Anwendung laedt keine Quelle. - [x] Die Engine erzeugt Declared Facts je GPO-Backup, Bedingungen mit erfuellten, nicht erfuellten und unbekannten Belegen, Cluster (`present`, `not-present`, `undetermined`) und den Remediation-Hebel ausschliesslich aus gespeicherten Beobachtungen und deren gespeicherter Identitaetsaufloesung, mit Evidenz bis zur Observation-ID. Es gibt keine Titelheuristik; Konflikte zwischen GPOs und rein unverlinkte Quellen werden markiert. - [x] Nur-Lese-Grenze technisch erzwungen: Port-Typ nur mit Lesemethoden, derselbe schreibgeschuetzte Datenbankleser wie die Report Engine, Architekturtest ohne Aufrufe schreibender Methoden und ohne UI-, Server-, Report- oder Datenbankimporte. Der Schreibablehnungstest mit einer separaten Testdatenbank steht wie bei Report Engine v0.1 noch aus. - [x] Dauerhafter Abnahmetest: Work, Client Info, Score und Result DB liefern mit Layer an und aus identische Zahlen und Urteile; ein Engine-Lauf veraendert keine gespeicherten Daten. Erledigt am 2026-09-30: Ohne Kontextfilter sind Work-Liste und alle uebrigen Facettenzaehlungen mit Layer an und aus identisch (Test fuer die Status `all` und `deviation`); Client Info, Scoring, Result DB und die Server-Persistenz duerfen den Kontext nicht importieren (Grenztest); der Engine-Lauf laesst Revision und Projektexport unveraendert. - [x] Ausgeschalteter Layer erzeugt keinen Request und keine Berechnung (Verhaltenstest; Standard aus, lokal je Anwender gespeichert, robust bei blockiertem Speicher). Abschalten entfernt einen aktiven Kontextfilter (Verhaltenstest an der echten Filterleiste, am 2026-09-30 zusaetzlich in der App geprueft); waehrend der Layer an ist und laedt, bleibt der Filter bestehen. - [ ] UI-Stufen nach (b) jeweils mit synthetischem Interaktionstest und Pruefung beider Themes. Erledigt: Finding Reader, Work-Facette `Context Cluster` und Pathfinder (per Interaktionstest verifiziert; Sichtpruefung beider Themes steht nach Backend-Neustart aus). Offen: Client Info. - [x] Ausschliesslich synthetische Fixtures mit festen Referenzausgaben; `npm test`: 1679 bestanden, 15 uebersprungen, die 7 bestehenden, unabhaengigen Fehler unveraendert; beide Produktionsbuilds bestanden. Nutzerentscheidung 2026-09-30, hebt den Ausschluss der Scannerquellen auf: Der Kontext gilt fuer die Findings aller Scans. Umsetzung in zwei Schritten: (1) Abschnitt `Context` bei jedem Finding, (2) Scanner-Beobachtungen ueber exakt katalogisierte Rule-IDs; danach weitere Cluster. Weiter offen: weitere Cluster, Verlaufsbetrachtung ueber den bestehenden Timeslot-Vergleich (keine zweite Drift-Logik), Darstellung im Management Report. ### Phase 13F - Regulatorische Kontrollsuche und RAG-Grundlage Status: in Arbeit Ziele: - Regulatorische Kontrolltexte versioniert und reproduzierbar fuer mehrsprachige semantische Suche aufbereiten. - Qdrant ausschliesslich als rebuildbaren Retrievalindex verwenden; PostgreSQL bleibt fachliche Quelle fuer Scans, Findings, Ergebnisse, Reviews, Mappinglaeufe und Entscheidungen. - Retrieval, Embedding, Chunking, spaetere Hybridfusion, Reranking und Mapping als getrennte Backendgrenzen halten. Umgesetzter Grundstand vom 2026-09-15: - Lokaler und Deployment-Compose-Stack enthalten das gepinnte Qdrant-Image 1.19.1, einen API-Key, deaktivierte ausgehende Nutzungstelemetrie und ein getrenntes persistentes Volume. Lokal ist nur die REST-Schnittstelle auf Loopback veroeffentlicht; im Deployment bleibt Qdrant intern. - `RegulatoryControlDocument` und `RegulatoryChunk` definieren einen versionierten, framework-/versions-/control-/chunk-/sprachgebundenen Vertrag. Chunk- und Inhaltsidentitaeten sind deterministisch; Originalkorpus und Korpusversion bleiben die Wiederaufbauquelle. - Die aktive Collection `assessor_regulatory_chunks_v2` verwendet benannte Dense-/Sparse-Vektoren, Cosine fuer Dense und zwoelf Payloadindizes fuer alle Filterfelder. Sparse ist nur die vorbereitete Schema- und Schnittstellenposition, noch kein aktiver Retriever. - Ein abgesicherter OpenAI-kompatibler Embeddingadapter verlangt fuer Remoteziele HTTPS, erlaubt HTTP nur auf Loopback fuer den lokalen llama.cpp-Testbetrieb und bindet ein ausdruecklich freigegebenes mehrsprachiges Modell an dessen exakte Dimension. Redirects, unbeschraenkte Antworten und Dimensionsdrift werden abgewiesen. Ein opt-in `dimensions`-Request unterstuetzt spaetere OpenAI-/LiteLLM-Vergleiche, bleibt fuer llama.cpp aus. - CLI-Ingestion validiert und segmentiert einen begrenzten JSON-Korpus, bettet Chunks in Batches ein und ersetzt dokumentgebundene Qdrant-Punkte. Die Queryseite verwendet dasselbe Modell und kann Korpus, Framework, Version, Control und Sprache exakt filtern. - `RegulatoryRetriever`, `RegulatoryCandidateRetriever` und `RegulatoryReranker` trennen Verbraucher, Candidate Retrieval und optionale Nachsortierung. Spaetere Hybridfusion kann die Candidate-Stufe ersetzen, ohne Mappingcode an Qdrant zu binden. - Der Finding-Query-Builder akzeptiert die bestehende `UnifiedResultProjection`, gibt aber ausschliesslich katalogeigene Maester-/PingCastle-Regel-IDs, fest definierte oeffentliche Technikthemen und bekannte oeffentliche Toolnamen weiter. Rohtexte dienen nur lokaler Themenklassifikation; Titel, Beschreibung, Empfehlung, Asset, Pfade, Mandanten-/Projekt- und Reviewdaten werden nicht kopiert. Ohne oeffentliches Signal bleibt der Aufruf fail-closed und erreicht den Retriever nicht. - Ein begrenzter versionierter Evaluationsvertrag und die CLI `rag:evaluate` messen HitRate@K, Recall@K und MRR auf Kontrollebene. Query- und erwartete Kontrollsprache sind getrennt deklariert; die CLI gibt nur Aggregatmetriken aus. Synthetische Unit-Rankings pruefen den Vertrag, gelten aber nicht als Qualitaetsnachweis des realen Modells. - Ein eingecheckter synthetischer EN/DE-Smoke-Korpus und drei sprachuebergreifende Labelcases sichern den ausfuehrbaren Vertrag. Der opt-in WSL-Qdrant-Integrationstest prueft mit deterministischen synthetischen Vektoren den realen 1.19.1-Collection-/Index-/Replace-/Filter-/Retrievalpfad; er bewertet ausdruecklich keine Embeddingqualitaet. - Der produktiv gebaute End-to-End-Pfad ist mit lokalem llama.cpp/BGE-M3 FP16 live gelaufen: sechs Dokumente/sechs Chunks; drei Cross-Language-Smoke-Cases bei K=3 jeweils Rang 1 und damit HitRate, Recall und MRR 1,0. Der Mini-Korpus ist nur ein Wiring-Smoke-Test, kein belastbarer Modellvergleich. - Der Grundstand ist in `docs/REGULATORY_RAG.md` dokumentiert und mit synthetischen Vertrags-, Client-, Ingestion-, Retrieval- und Deploymenttests abgesichert. - Der PDF.js-Importer erzeugt aus den explizit uebergebenen ISO-27001-/27002-Pfaden einen lokalen Korpus-v2 mit Quellhashes, Ausgaben, 93 geteilten Kontrollidentitaeten, Abschnittsarten und Seitenbereichen. Nur ISO-27002-Abschnitte werden semantisch gerankt; die entsprechende ISO-27001-Aussage wird als autoritative Referenzevidenz angehaengt. - Ein manueller Work-Vertikalschnitt startet pro kanonischem Scanner-Finding einen idempotenten asynchronen Lauf, gruppiert die 32 Dense-Chunks auf acht Controls, validiert maximal fuenf LiteLLM-Vorschlaege gegen exakt gelieferte Evidenz und speichert Runs sowie optimistisch nebenlaeufigkeitsgeschuetzte Accept/Reject-Ereignisse append-only in PostgreSQL. - Data Hub bietet fuer genau diese beiden PDFs einen token-geschuetzten Upload mit begrenztem Parserworker und asynchronem Embeddingstatus. Die private Korpusquelle ueberlebt Serverneustarts, die Original-PDFs nicht; die Aktivierung erfolgt nach erfolgreichem Indexaufbau ohne manuellen CLI- oder Umgebungsversionsschritt. - Result DB startet auf ausdrueckliche Aktion einen projektgebundenen Batch fuer exakt denselben vollstaendigen normalisierten Filter-/Timeslot-Scope wie Export JSON. Der Dienst paginiert serverseitig unabhaengig von der Anzeige, dedupliziert Scanner-Vorkommen global nach `ruleKey`, verwendet erfolgreiche und aktive Mappings wieder, versucht fehlgeschlagene Regeln einmal erneut und begrenzt Einzel- plus Batchpipelines gemeinsam auf zwei. Migration 027 speichert nur Scope, Filterhash, Idempotenz, Status und Aggregatfortschritt; Entscheidungen bleiben manuell im bestehenden Work-Panel. - 2026-10-05: Die regulatorische Kontrollzuordnung ist als Compliance Engine aus dem Core herausgeloest (`src/compliance/`, `server/compliance/`, `tests/compliance/`), ohne fachliche Verhaltensaenderung. Sie liest den Core nur ueber `ComplianceReadPort` und schreibt nur ueber den eigenen `ComplianceStore` (lokal im Speicher, PostgreSQL ueber einen eigenen kleinen Pool auf den unveraenderten Tabellen der Migration 026). Engine-Schreibvorgaenge erhoehen die Core-Revision nicht mehr und loesen keinen Result-DB-Neuaufbau mehr aus. Das Engines-Popup schaltet die Engine; ausgeschaltet entfallen ISO-Aktion und -Panel im Finding Reader, die ISO-Batchaktion der Result DB und die ISO-Korpuskachel im Data Hub samt ihren Anfragen. Offen bis zur Phasenabnahme: - Engine-Lesezugriff ueber eine read-only Datenbanksitzung wie bei der Report Engine (heute liest der Port ueber das laufende Core-Repository, weil ein Result-DB-Lesezugriff auf den Core-Neuaufbau warten koennen muss) - Frameworkneutrale Erweiterung um weitere Korpora (zum Beispiel BSI, DORA) mit Framework-Auswahl in der UI; BSI Grundschutz++ ist als naechstes Framework beschlossen, siehe den folgenden Abschnitt - formaler Update-/Freigabeprozess fuer neue lizenzierte ISO-Ausgaben und Korpus-Rebuilds - kuratierte Erweiterung der oeffentlichen Signal-/Regelkataloge - repraesentativer freigegebener EN/DE-Evaluationssatz und dokumentierte reale Dense-Baseline gegen den autorisierten Korpus - aktive Sparse-/BM25-Erzeugung, Hybridfusion und evaluierter Reranker - Confidence-Kalibrierung, Mandanten-/Rollenabgrenzung, Betriebsmonitoring und Lasttest - Betriebsprozess, der vor jeder kuenftigen Migration einen laufenden Hot-Reload-Backendprozess stoppt oder die Migration bis nach dem verifizierten Backup sperrt Abnahmekriterien: - Ein freigegebener synthetischer Referenzkorpus kann vollstaendig neu aufgebaut und sprachuebergreifend mit dokumentierten Qualitaetsmetriken abgefragt werden. - Qdrant-Ausfall oder Rebuild veraendert keine fachlichen PostgreSQL-Daten. - Jede gespeicherte Zuordnung referenziert Korpus-/Control-/Chunk-, Embedding-, Retrieval-, Reranker-, Prompt-/Schema- und Entscheidungsprovenienz. - Unzureichende oder widerspruechliche Evidenz bleibt reviewpflichtig; Retrievalscore allein wird nie als fachliche Confidence ausgegeben. #### BSI Grundschutz++ in der Compliance Engine (Nutzerentscheidung 2026-10-08, in Arbeit) Quelle ist die BSI-Stand-der-Technik-Bibliothek (`github.com/BSI-Bund/Stand-der-Technik-Bibliothek`, OSCAL-JSON, CC BY-SA 4.0, rollierende Veroeffentlichung ohne Releases oder Tags; Version ist `metadata.version`). Explizite Nutzerentscheidungen vom 2026-10-08: - Ansatz: direkte Zuordnung (A) mit der offiziellen BSI-Zuordnung ISO/IEC 27001:2022 Annex A -> Grundschutz++ (B) als guenstiger erster Stufe. - Umfang: nur die 901 Kernel-Anforderungen (Klasse `BSI-Stand-der-Technik-Kernel-G0` im aufgeloesten Anwenderkatalog Grundschutz++). Methodik (95) und Risikomanagement (4) bleiben ausgeschlossen, weil Scannerbefunde kaum ISMS-Prozessanforderungen treffen und die Suche verwaessern wuerden. - Katalogbeschaffung wie bei der MITRE-Matrix: ein kompakter, versionsgepinnter Snapshot mit Quell-URL, Quell-SHA-256, Quellversion und Lizenzhinweis liegt im Enginepfad und wird von einem Engine-Skript aus den offiziellen Dateien erzeugt. Ableitung und Zuordnung brauchen kein Netz. Eine spaetere Aktion `Update from BSI` nach dem Muster `Update from MITRE` laedt feste offizielle Dateien und stellt eine neue Version bereit, ohne bestehende Ergebnisse zu ersetzen; sie kommt erst mit Aktualisierung des Sicherheitsmodells fuer dieses ausgehende Ziel. - Zuordnung zunaechst nur manuell: `Map new scans automatically` umfasst BSI nicht. Stufen: 1. Stufe 1 (B, ohne Modell, ohne Migration): Aus den akzeptierten ISO-Kontrollen einer Regel werden ueber die BSI-Zuordnung Kernel-Anforderungen abgeleitet. Jede abgeleitete Anforderung nennt ISO-Quellkontrolle, Beziehung (`subset-of`, `equivalent-to`, `intersects-with`) und Zuordnungsversion, ist als abgeleitet gekennzeichnet, wird nicht als eigene Entscheidung gespeichert und aendert keine ISO-Entscheidung. Ziele der Zuordnung, die im Katalogsnapshot fehlen, werden als Diagnose ausgewiesen und nie umgedeutet (Stand Zuordnung 1.0.1-qa gegen Katalog vom 2026-09-24: `BER.5.1.2`, `BER.6.8`, `DET.3.1.13`, `GEB.5.4`; die uebrigen nicht aufloesbaren Ziele sind Methodik-IDs und fallen durch den Kernel-Umfang weg). Die 20 Praktiken (zum Beispiel `KONF`, `BER`, `DET`) uebernehmen die Rolle der ISO-Themen. 2. Stufe 2 (A, manuell): eigener BSI-Korpus (Anforderung und Erlaeuterung) im bestehenden Qdrant-/BGE-M3-Pfad unter eigenem `corpusId`, eigene Promptversion fuer die deutschen `MUSS`/`SOLLTE`-Anforderungen, Start nur ueber ausdrueckliche Aktion (Einzel-Finding und Result-DB-Batch). Die Stufe-1-Ableitung dient als Evaluationsreferenz (aggregierte Konsistenz), nicht als Wahrheit. `assessor_regulatory_mappings` (Eindeutigkeit ohne Korpus) und `assessor_regulatory_mapping_decisions` kennen kein Framework; Stufe 2 braucht deshalb einen Framework-/Korpusdiskriminator per Migration mit separater Freigabe und verifiziertem Backup. Darstellung: BSI-Texte duerfen unter CC BY-SA 4.0 mit Namensnennung im Browser erscheinen, anders als die ISO-Texte. Neue oder geaenderte Erweiterungspunkte (Finding-Reader-Abschnitt, Work-Facetten fuer BSI-Anforderung und -Praktik, Framework-Wahl bei Einzel- und Batchzuordnung, Data-Hub-Katalogkachel) sind Core-Aenderungen (Presentation) und brauchen Core-Freigabe. Die BSI-Kachel im Client-Info-Tab `Compliance` belegt den dafuer vorgesehenen Platz der Frameworkkachelzeile. Status: - [x] Stufe 1 Datenschicht: Konverter `src/compliance/bsi-grundschutz.ts`, Generator `server/compliance/update-bsi-assets.mjs`, gepinnte Snapshots in `server/compliance/data/` (Katalog 2026-09-24, Zuordnung 1.0.1-qa, BSI-Commit `a128311`), Ableitung mit Diagnosen, synthetische Tests (2026-10-08) - [x] Stufe 1 Darstellung: Client-Info-Kachel, Finding Reader, Work-Facetten (Produktversion 2.22.0, 2026-10-08; Sichtpruefung beider Themes in der laufenden App steht aus) - [x] Stufe 2: BSI-Korpus, direkte Zuordnung, Migration 029 (Produktversion 2.23.0, 2026-10-09; Sichtpruefung beider Themes und ein erster echter BSI-Lauf in der laufenden App stehen aus) - [x] Stufe 2 Konsistenzpruefung ISO <-> BSI mit Review im Tab `Compliance` (Produktversion 2.23.0, 2026-10-09) - [x] `Update from BSI` mit Sicherheitsmodell-Aktualisierung (Data-Hub-Kachel, in Produktversion 2.22.0 enthalten, 2026-10-08) ##### Stufe 2 mit Konsistenzpruefung (Nutzerentscheidung 2026-10-09, umgesetzt in 2.23.0) Ziel: Die ISO-Zuordnungen verbessern, indem das Modell Befunde zusaetzlich direkt BSI-Kernel-Anforderungen zuordnet und das Ergebnis je Regel mit der Stufe-1-Ableitung (akzeptierte ISO-Kontrollen -> offizielle BSI-Zuordnung) verglichen wird. Abweichungen erscheinen zur menschlichen Pruefung. Explizite Nutzerentscheidungen vom 2026-10-09: - Umfang: vollstaendige Stufe 2 (eigener BSI-Korpus, direkte Zuordnung, Migration), keine reine Verifikation der abgeleiteten Anforderungen. - Die vorlaeufige automatische Annahme der ersten zwei ISO-Vorschlaege bleibt unveraendert; eine Inkonsistenz haelt sie nicht zurueck. - Die Pruefung findet im Client-Info-Tab `Compliance` statt (Engine-Code), nicht in einer neuen Work-Facette. - Vorlaeufig (Nutzerentscheidung 2026-10-09, kann spaeter geaendert werden): auch direkte BSI-Zuordnungen nehmen wie ISO die ersten zwei Vorschlaege automatisch an, mit demselben Kommentar; eine bestehende Entscheidung bleibt erhalten. Vergleichsregel (`src/compliance/bsi-consistency.ts`): Je Regel werden die direkt akzeptierten BSI-Anforderungen (juengste Entscheidung je Anforderung, also auch die automatisch angenommenen) mit den Zielen der akzeptierten ISO-Kontrollen in der BSI-Zuordnung verglichen. Ohne akzeptierte BSI-Anforderung gibt es nichts zu vergleichen; eine Regel mit akzeptierter ISO-Kontrolle zaehlt dann als `Not compared`. Drei Zustaende: - `Consistent`: mindestens eine direkte Anforderung liegt in der Zielmenge einer akzeptierten ISO-Kontrolle. Ein Treffer genuegt, weil `subset-of` mehrere Anforderungen umfasst und ein Befund selten alle trifft. - `Inconsistent`: mindestens eine direkte Anforderung ist ueber die BSI-Zuordnung erreichbar, aber keine liegt in der abgeleiteten Menge (auch ohne akzeptierte ISO-Kontrolle). Pruefpflichtig. - `No reference`: keine direkte Anforderung ist ueber die BSI-Zuordnung von einer ISO-Kontrolle erreichbar (629 der 901 Kernel-Anforderungen). Keine Abweichung, sondern die Luecke, die die direkte Zuordnung schliesst. Zusaetzlich als Hinweis die Gegenrichtung: Fuehrt eine direkte Anforderung rueckwaerts ueber die BSI-Zuordnung zu einer nicht akzeptierten ISO-Kontrolle, nennt die Pruefansicht diese Kontrolle als Kandidaten. Der Zustand wird deterministisch aus Entscheidungen, Laeufen und der aktiven Zuordnungsversion berechnet, nicht gespeichert. Uebereinstimmung belegt Konsistenz, nicht Richtigkeit: beide Zuordnungen stammen vom selben Modell und Befundtext. Grenzen: Eine Inkonsistenz aendert, verwirft oder blockiert keine ISO-Entscheidung; abgeleitete Anforderungen werden weiterhin nie als Entscheidung gespeichert. Nur der Mensch entscheidet. `Map new scans automatically` umfasst BSI weiterhin nicht. BSI-Texte mit Namensnennung (CC BY-SA 4.0), ISO-Texte weiterhin nicht im Browser. Umsetzung 2.23.0 (urspruenglicher Entwurf der Pruefansicht: Liste der Regeln mit Abweichungen des Timeslots, gruppiert nach Zustand (`Inconsistent` zuerst), je Regel akzeptierte ISO-Kontrollen mit ihrer abgeleiteten BSI-Menge, direkte BSI-Vorschlaege und die Kandidaten der Gegenrichtung. Aktionen: Accept/Reject der direkten BSI-Vorschlaege und der ISO-Kontrollen ueber den bestehenden Entscheidungsweg, `Mark reviewed` fuer eine bewusst belassene Inkonsistenz. `Mark reviewed` gilt fuer einen Fingerabdruck der verglichenen Mengen; aendern sich Entscheidungen oder Zuordnungsversion, erscheint die Regel erneut. Befundzahl und Sprung nach Work wie die bestehenden ISO-Drilldowns.) - Datenhaltung: Migration 029 (`framework` in `assessor_regulatory_mappings` mit Eindeutigkeit einschliesslich Framework und in `assessor_regulatory_mapping_decisions`, Werte `iso27001`/`bsi-kernel`; neue Tabelle `assessor_regulatory_consistency_reviews`). Vor der Migration Backup `backups/assessor-pre-029-20261009.dump`, per Wiederherstellung in eine Pruefdatenbank verifiziert (Zaehler identisch); danach alle 162 Zuordnungen und 325 Entscheidungen `iso27001`. ISO-Objekte tragen im JSON kein Framework-Feld, ISO-Zuordnungs-IDs, Batch-Scope-Schluessel und URLs bleiben unveraendert. - BSI-Korpus (`server/compliance/bsi-corpus.ts`): je Kernel-Anforderung ein deutsches Dokument (Aussage und Erlaeuterung mit eingesetzten Parametern) unter `corpusId` `bsi-grundschutz-kernel`, Version aus Katalogdatum und Quell-Hash. Er wird beim ersten BSI-Lauf aus dem aktiven Katalog gebaut (auch nach `Update from BSI`), aeltere Katalogstaende werden danach entfernt. - BSI-Zuordnung: derselbe Dienst mit Framework-Parameter, Retrieval `bsi-dense-requirement-1.0.0` (40 Treffer, bis zu 12 Anforderungen, jeweils alle Chunks der Anforderung als Evidenz), Prompt `bsi-1.0.0`, Evidenz ohne Seitenangaben. Explizite Nutzerentscheidung 2026-10-09, spaeter am Tag (ersetzt die reine ISO-Historie der Entscheidung vom 2026-10-08): `Last mapping` und das Fenster, jetzt `Mapping history`, listen ISO- und direkte BSI-Laeufe (Batches und Einzelzuordnungen) gemeinsam; die Tabelle hat nach `Started` die Spalte `Framework` (`ISO 27001/27002`, `BSI Grundschutz++`), der Knopf nennt einen BSI-Lauf mit `· BSI` nach dem Datum, ein ISO-Lauf behaelt seine bisherige Beschriftung. `Map new scans automatically` umfasst BSI nicht. - Startpunkte: Finding Reader, Abschnitt `BSI requirements` mit eigenem Teil `Mapped directly`, Knopf `Map BSI requirements` (Fenster `BSI requirement mapping` wie das ISO-Fenster) und dem Konsistenzzustand in der Zusammenfassung; der Abschnitt bleibt je Befund eingeklappt und erscheint fuer den direkten Teil erst, wenn das Backend den BSI-Zustand geliefert hat. Result-DB-Fenster `ISO mapping batch` mit zweitem Teil `BSI Grundschutz++ requirements` und `Start BSI mapping batch` fuer dieselben Filter. - Pruefansicht: Kachel `ISO ↔ BSI review` in der Frameworkkachelzeile des Tabs `Compliance` (Compared rules, Inconsistent, No ISO reference, Consistent, Not compared, Reviewed; Gedankenstrich waehrend des Ladens). Ihr Results-Fenster listet die Regeln nach Zustand (Start `Inconsistent`), benannt nur ueber eine Result-DB-Zeile des Timeslots, nie ueber den internen Regelschluessel. Je Regel: akzeptierte ISO-Kontrollen (Reject), direkte BSI-Anforderungen mit Herkunft (Reject), ISO-Kandidaten der Gegenrichtung (Accept nur, wenn der aktuelle ISO-Lauf sie abgerufen hat), `Mark reviewed` mit optionalem Kommentar fuer den aktuellen Fingerabdruck. - Core-Aenderungen mit Core-Freigabe Store, Presentation, Platform, Core Tests vom 2026-10-09: Migration und Tabellenklassifikation, HTTP-Routen (`framework`-Parameter, `regulatory-mapping-consistency`, `regulatory-mapping-consistency-reviews`), API-Client, Finding-Reader-Einbindung des BSI-Abschnitts, Batch-Ueberschriftenstil, Versionsvertragstests. AGENTS.md beschreibt Stufe 2 noch als ausstehend; die Aktualisierung braucht eine Governance-Freigabe. - Verifikation: synthetische Tests fuer Vergleichsregel, BSI-Lauf und Entscheidungstrennung, Pruefliste mit `Mark reviewed`, Batch, Korpusaufbau, UI-Interaktionen (Kachel, Fenster, Batchdialog, Finding Reader), erweiterter Invarianztest; `npm test` (alle bestanden) und beide Builds. Ausstehend: Sichtpruefung beider Themes und ein erster echter BSI-Lauf in der laufenden App. Urspruengliche Umsetzungsschritte (Entwurf): 1. Migration (Core `Store`, separate Freigabe, vorher verifiziertes Backup): `framework` (`iso27001`, `bsi-grundschutz-kernel`) in `assessor_regulatory_mappings` (Eindeutigkeit einschliesslich Framework) und `assessor_regulatory_mapping_decisions`; bestehende Zeilen erhalten `iso27001`. Neue Engine-Tabelle fuer `Mark reviewed` (Regel, Fingerabdruck, Kommentar, Zeit). Tabellenklassifikation im Repository. 2. BSI-Korpus (Engine): Anforderung und Erlaeuterung der 901 Kernel-Anforderungen aus dem aktiven Snapshot unter eigenem `corpusId` im Qdrant-/BGE-M3-Pfad, Neuaufbau bei `Update from BSI`. 3. BSI-Zuordnung (Engine): eigene Prompt- und Schemaversion fuer deutsche `MUSS`/`SOLLTE`-Anforderungen, Einzel- und Batchlauf ueber den bestehenden Dienst mit Framework-Parameter; Wiederverwendung erfolgreicher Laeufe je Regel wie bei ISO. 4. Startpunkte (Core `Presentation`, `Platform`): Framework-Wahl oder zweite Aktion bei `Map ISO controls` im Finding Reader und beim Result-DB-Batch; Framework-Parameter in den HTTP-Routen. 5. Konsistenzberechnung und Pruefansicht (Engine): reine Funktion mit synthetischen Tests fuer alle drei Zustaende, Gegenrichtung und Fingerabdruck; Pruefliste im Tab `Compliance`. 6. Finding Reader `BSI requirements` (Engine-Inhalt): direkte und abgeleitete Anforderungen getrennt kenntlich. 7. Invarianztest der Compliance Engine erweitern; `npm test`, beide Builds, Produktversion (Minor). Vor der Umsetzung offen, am 2026-10-09 entschieden: Migration mit Backup und Core-Freigabe erteilt; direkte BSI-Vorschlaege werden vorlaeufig wie ISO automatisch angenommen (Nutzerentscheidung entgegen dem Vorschlag, nur manuell anzunehmen). Risiko: Weil beide Seiten automatisch angenommen werden und vom selben Modell stammen, zeigt `Consistent` zunaechst nur die Uebereinstimmung zweier Automatiken; die Entscheidung ist ausdruecklich vorlaeufig. #### Client-Info-Tab `Compliance`: Uebersichtszeile (Nutzerentscheidung 2026-10-08, umgesetzt) Nach Freigabe eines lokalen, nicht versionierten Mockups mit synthetischen Daten steht ueber der unveraenderten Frameworkkachelzeile eine Uebersichtszeile in denselben sechs Spuren. Reiner Engine-Code (`src/compliance/ui/ComplianceOverview.tsx`, `compliance.css`, `server/compliance/regulatory-mapping-service.ts`); kein Erweiterungspunkt und keine Core-Datei geaendert. - `Mapping coverage` (quadratisch, zwei Spuren): gemeinsamer Client-Info-Donut ueber die zuordenbaren Abweichungen des Timeslots (Scannerbefunde und GPO-Einstellungen, eine GPO-Einstellung einmal). Jede Abweichung zaehlt genau einmal im staerksten Zustand ihrer Regel: akzeptierte Kontrolle, sonst erfolgreiche Zuordnung ohne akzeptierte Kontrolle, sonst fehlgeschlagene juengste Zuordnung, sonst noch nicht zugeordnet (auch wartend oder laufend). `accepted` ist identisch mit `Findings` der ISO-Kachel. Die Antwort `coverage` enthaelt nur Zahlen; die Work-Filterzuordnungen tragen sie nicht. - `Annex A footprint` (vier Spuren): alle 93 Kontrollen nach Thema (Organizational | People ueber Physical | Technological), Kontroll-ID je Zelle, Schattierung in einem neutralen Diagrammton in vier Stufen (1-2, 3-9, 10-24, 25+), keine Status- oder Severityfarbe. Nur Kontrollen und Themen mit Treffern oeffnen Work (`Deviation` plus `ISO control` beziehungsweise `ISO theme`), wie die Facetten. Eine Detailzeile nennt bei Hover oder Fokus ID, Thema, Titel und Befundzahl. Nutzerauftrag derselben Sitzung: auch Kontrollen ohne Befund tragen ihren Titel; er stammt aus den ISO/IEC-27001-Referenzdokumenten des aktiven lizenzierten Korpus (`annexATitles`, nur Titel, nie Klauseltext, je Korpusversion zwischengespeichert, ohne Index keine Titel), der Titel eines Zuordnungslaufs hat Vorrang. ISO-Texte werden weiterhin nicht im Repository gebuendelt. Die Legende sagt ausdruecklich, dass eine leere Zelle keine Konformitaetsaussage ist. - Nutzerauftrag 2026-10-08, spaeter am Tag: Zwei Schaltflaechen neben der Ueberschrift (`ISO 27001/27002`, `BSI Grundschutz++`, Client-Info-Tabknoepfe mit `aria-pressed`) schalten nur die Uebersichtszeile um; die Frameworkkacheln bleiben unveraendert, Standard ist ISO. Die BSI-Ansicht (Nutzerwahl) zeigt `Mapping coverage` mit fuenf Zustaenden (mit BSI-Anforderung, ISO-Kontrolle ohne BSI-Anforderung, zugeordnet ohne akzeptierte Kontrolle, noch nicht zugeordnet, fehlgeschlagen; die ersten beiden teilen `accepted`) und `Kernel footprint` mit allen 901 Kernel-Anforderungen als unbeschriftete Zellen je Praktik in Katalogreihenfolge. Die 629 Anforderungen, die die BSI-Zuordnung von keiner ISO-Kontrolle erreicht, tragen nur eine kleine neutrale Markierung, damit eine leere Zelle nicht als Luecke dieses Clients gelesen wird. Hover oder Fokus nennen ID, Praktik, Titel und ISO-Weg abgeleiteter Anforderungen und die Befundzahl; nur Anforderungen und Praktiken mit Treffern oeffnen Work (`BSI requirement`, `BSI practice`). Nutzerkorrekturen derselben Sitzung: Jede Anforderung ist ein Quadrat mit nur ihrer Nummer innerhalb der Praktik (zum Beispiel `10.5`; das Praefix nennt die Praktikueberschrift), auch ohne Befund oder ohne ISO-Erreichbarkeit (gestrichelter Rand). Die Kachel zeigt nur die zwei Praktiken mit den meisten Befunden (absteigend, Gleichstand in Katalogreihenfolge), damit die Quadrate lesbar bleiben; `Show all` oeffnet alle Praktiken mit groesseren Quadraten (14px-Datenrolle) im gemeinsamen Results-Fenster, ein Work-Sprung dort schliesst das Fenster. Ohne abgeleitete Anforderung nennt die Kachel das ausdruecklich. Im `Show all`-Fenster bleiben Detailzeile und Legende unten angeheftet, waehrend das Raster scrollt; die Detailzeile nennt fuer jede Anforderung den veroeffentlichten Titel, auch ohne Zuordnung oder ISO-Erreichbarkeit. Die Kontrolluebersicht liefert dafuer `bsiFootprint` (IDs, Titel unter CC BY-SA 4.0 und Erreichbarkeit aus dem aktiven Katalog, keine Anforderungstexte); die Work-Filterzuordnungen tragen ihn nicht. - Nutzerauftrag 2026-10-08 (Core-Freigabe Presentation): Die Legendenzeile `Mapping failed` der `Mapping coverage` (ISO- und BSI-Ansicht) ist bei mindestens einem Befund ueber die ganze Zeile klickbar und oeffnet Work mit dem Status `Deviation` und der neuen Compliance-Engine-Facette `ISO mapping` = `Mapping failed`; dort laesst sich jeder Befund ueber `Map ISO controls` im Finding Reader neu zuordnen. Die Facette steht nach `ISO theme`, erscheint nur, solange eine Zuordnung fehlgeschlagen ist, und matcht wie die Kontrollfacetten (Scannerbefunde nach Vorkommen, GPO-Einstellungen nach Scope und technischer Identitaet). Grundlage ist `failedFindings` der Work-Zuordnungen: zuordenbare Befunde, deren Regel keine akzeptierte Kontrolle hat und deren juengster Lauf fehlschlug, also dieselbe Zustandsregel wie die Abdeckungszahl. Core-Aenderung nur der neue Drilldown in `DashboardPanel.tsx` neben den bestehenden ISO-/BSI-Drilldowns. - Nutzerauftrag 2026-10-08, spaeter (Core-Freigabe Presentation): Auch `ISO control, no BSI requirement` der BSI-Abdeckung oeffnet Work, ueber den zweiten Wert gleichen Namens der Facette `ISO mapping` (Befunde mit akzeptierter ISO-Kontrolle, von denen keine eine BSI-Anforderung erreicht; im Browser aus den Work-Zuordnungen berechnet). Der Drilldown in `DashboardPanel.tsx` ist dafuer allgemein `onOpenMappingState(state)`. Der Tab `Compliance` zeigt unter der Tableiste dieselbe Kontextzeile wie die Overview mit `Client` und `Assessment` (Timeslot-Wechsel), ohne `Source`, weil der Tab immer den ganzen Timeslot abdeckt (Nutzerzustimmung zum Vorschlag). - Nutzerkorrektur 2026-10-12 (ersetzt nur die quadratische `Mapping coverage` und die zwei Praktiken der Kernel-Kachel): Die Uebersichtszeile ist nur so hoch, wie der hoehere Inhalt braucht, beide Kacheln sind gleich hoch. Die Zellen beider Footprints wachsen mit der Kachelbreite von der bisherigen Groesse bis hoechstens 64px (Seitenverhaeltnis 5:3, Nummern in der 14px-Datenrolle); jede Annex-A-Themenspalte ist nur so breit wie ihre sechs Zellen, die Spalten verteilen sich ueber die Kachel. Die BSI-Anforderungen fuellen ein Raster mit so vielen Spalten dieser Groesse, wie passen. Die Kernel-Kachel zeigt nur noch die eine Praktik mit den meisten Befunden (Gleichstand in Katalogreihenfolge); `Show all` bleibt unveraendert. Nur Engine-Code; synthetische UI-Tests angepasst. - Nutzerkorrektur 2026-10-12, spaeter (ersetzt nur die feste Zahl von vier Praktiken der Frameworkkachel `BSI Grundschutz++`): Die Kachel zeigt nach `Requirements` und `Findings` mindestens vier und hoechstens zehn Praktiken mit den meisten Befunden, so viele, wie ihr Quadrat fasst (Containerabfragen auf die Innenbreite: sechs ab 17rem, acht ab 20.5rem, zehn ab 23.5rem); `Results` listet weiterhin alle. Die Formulierung in `AGENTS.md` ist mit `Core-Freigabe: Governance` entsprechend angepasst. - Waehrend des Ladens Gedankenstrich, nichts klickbar; bei ausgeschalteter Engine nichts. Verifiziert durch synthetische UI- und Diensttests, `npm test` und beide Builds; Sichtpruefung beider Themes in der laufenden App mit gewaehltem Client steht aus (der laufende Server muss fuer `coverage` neu gestartet werden). ## 8. Aktuell empfohlene Umsetzungsetappe 2026-09-26 - Phase 13D / Phase 13C Darstellung (2.8.3, umgesetzt und verifiziert): Catalog references startet bei aktuellem Client eingeklappt; gruen vor Ueberschrift und aktuellem/erfolgreichem Status, orange und automatisch offen bei Handlungsbedarf oder Fehler. Pruefung, Verarbeitung und leere Clients bleiben neutral. Katalogversionen bleiben eingeklappt sichtbar, Erfolg nach Update bleibt offen, manuelles Umschalten funktioniert per Maus und Tastatur. Timeslots-Zeile mit gleichem Abstand oben/unten und gemeinsam zentrierten Controls. Purple-Knight-Timeslots benennen Active Directory, Entra ID oder kombinierten Scope aus bestehenden kanonischen Namen bzw. exakt lauf-/dateigebundenen gespeicherten Metadaten/Umgebungsbeobachtungen. Ohne Scopebeleg bleibt der Originalname; keine Vermutung aus Dateinamen oder fremden Scans, keine Persistenz-/Importer-/Scoringaenderung und keine neue Reimportpflicht. 36 gezielte Interaktions-/Layout-/Versionsvertragstests, beide Produktionsbuilds, Local-only-/Designcheck und synthetische Dark-/Light-Sicht- und Tastaturpruefung bestanden. App und Backend gesund auf 2.8.3 mit kanonischer PostgreSQL. Patchversion fuer zusammengehoerige UI-Korrekturen; Phase 13D bleibt in Arbeit. Die bekannte Gesamtsuite-Baseline mit sechs fachfremden Fehlern wurde nicht erneut ausgefuehrt. 2026-09-26 - Phase 13D Handlungstexte (2.8.2, umgesetzt und verifiziert): Allgemeiner Erklaerabsatz im linken Catalog-references-Bereich entfernt. Please update benennt Handlungsbedarf, Up to date / No action needed. den aktuellen Stand, Update successful den per erneutem Statusabruf bestaetigten Erfolg. Button heisst Update references; ATT&CK-/D3FEND-Versionen sowie Rot-bei-Bedarf/Gelb-sonst bleiben. Leere Clients, laufende Pruefung und Fehler erhalten eigene Texte; bei verbleibender Arbeit wird kein Erfolg behauptet. 25 gezielte UI-/Versionsvertragstests, beide Produktionsbuilds, Local-only-/Designcheck und synthetische Light-/Dark-Pruefung bestanden. Patchversion fuer reine UI-Korrektur, keine reale Nachverarbeitung oder Persistenzaenderung; Phase 13D bleibt in Arbeit. Die bekannte Gesamtsuite-Baseline mit sechs fachfremden Fehlern wurde fuer diese Textkorrektur nicht erneut ausgefuehrt. Nachtrag Phase 13D, 2026-09-26, Version 2.8.1 (Nutzerkorrekturen umgesetzt und verifiziert): Die Clientuebersicht beruecksichtigt jetzt ausstehende Referenzerkennung sowie veraltete Erkenner-/Katalogstaende mit gelbem Statuspunkt und hervorgehobenem Manage, auch ohne Clientauswahl. Echte Erkennungsfehler sind rot; unbekannter Status bleibt als Pruefhinweis sichtbar und bietet einen Status-Retry. Bestehende Import-/GPO-Fehler behalten Vorrang. Statusabrufe laufen unabhaengig von den Uebersichtsdaten mit maximal drei gleichzeitigen Anfragen und ohne neues Polling; Daten-/Import- und erfolgreiche Katalogupdates aktualisieren sie. Ein neuerer Panelstatus gewinnt gegen verspätete Uebersichtsantworten. Zusaetzliche explizite Nutzerentscheidung: Catalog references steht links direkt ueber Timeslots, auch bei Stammdatenbearbeitung. Recognize references ist bei Nachverarbeitungs- oder Wiederholungsbedarf rot, sonst standardgelb; dies ist eine begrenzte Ausnahme der allgemeinen Aktionsfarbe. Die linke Quellnavigation bleibt unterhalb des Clientkopfs scrollbar. Nach Erfolg aktualisieren sich Karte und Workspace. Risiken/Grenzen: Ausfuehrungsfehler sind aktueller UI-Zustand; nach erneutem Laden zeigt die persistierte Bereitschaft weiterhin den ausstehenden Lauf, ohne einen gespeicherten Hintergrundjob vorzutäuschen. Keine reale Client-Nachverarbeitung, Migration oder Scoring-/Importsemantikaenderung. Verifikation: 25 gezielte Status-/UI-/Readiness-Tests; nach der Platzierungskorrektur 23 UI-/Layout-/Versionsvertragstests bestanden, einschliesslich sieben Tests fuer den Clientstatus und den tatsaechlichen Manage-/Nachverarbeitungs-/Rueckkehrpfad. Vollsuite waehrend dieses Batches: 1582 bestanden, 14 uebersprungen, dieselben sechs bestehenden Fehler in fuenf Dateien. Finale Client-/Serverbuilds, Local-only-, Design- und Diffpruefung bestanden. Synthetische Dark-/Light-Sichtpruefung bestaetigt Statusfarben, linke Platzierung, roten/gelben Button und Scrollbarkeit bei kleiner Fensterhoehe. App/Backend melden 2.8.1, HTTP 200 und kanonische PostgreSQL. Versionsentscheidung: rueckwaertskompatible Korrektur als Patch; Phase 13D bleibt fuer ihren weiteren Umfang offen. Ergaenzung 2026-09-11 fuer den Timeslotvergleich: Nach dem jetzt dokumentierten Planauftrag beginnt eine spaeter beauftragte Implementierung mit P0/P1 aus [TIMESLOT_COMPARISON_PLAN.md](TIMESLOT_COMPARISON_PLAN.md), danach folgen P2-P6 in Abhaengigkeitsreihenfolge. Zuerst Vergleichsidentitaet und Gegenpruefung absichern, dann offene Verpflichtungen und A/B-Scorebasis, zuletzt die Oberflaeche. Dieser Dokumentationsauftrag startet keine Umsetzung und unterbricht keine unabhaengigen Phase-13B-Arbeiten. Die folgenden aelteren Empfehlungen bleiben als Projektkontext erhalten. Die naechste Umsetzung fuehrt Phase 13B auf dem konsolidierten Import-, Policy-Analyse- und Orchestrierungsunterbau fort: 1. Phase 13A ist abgeschlossen: Erkennung, technische Dokumenttypen, Source Extractors, Mappingprofile, Finding-Identität sowie allgemeine Artefakt-, Processing- und Jobgrenzen sind konsolidiert und die Scannerpersistenz verwendet den Candidate-Pfad. 2. Phase 13B ist in Arbeit: Der sichere Ingestion-Unterbau, technische Policy-Identitaeten, versionierte ADMX-/Baselineanalysen, deterministisches Reprocessing, Environment Profiles, konservative Snapshotaggregation, typisierte Evaluation, fail-closed Finding Factory, Unified-Result-Read-Projektion, projektgebundene Review-/Orchestrierungsoberflaechen und die aktuelle snapshotbezogene Ergebnisdeduplizierung sind umgesetzt. Als naechste vertikale Etappe folgen fachlich kuratierte Policy-Regeln und vollstaendige versionierte Windows-Inbox-ADMX-/ADML-Kataloge; danach weitere Preference-CSEs und Exportdetails. Ohne RSoP/GP Results bleibt die effektive Anwendung weiterhin ausdruecklich nicht verifiziert. 3. Phase 13F besitzt den lizenzierten ISO-Korpus-v2, die rebuildbare Qdrant-/Dense-Grundlage, den fail-closed Public-Signal-Pfad, den persistierten manuell reviewten Einzel-Finding-Workflow sowie das explizit vorgezogene gefilterte Result-DB-Batchmapping. Als naechste Etappe folgen ein unabhaengig gelabelter repraesentativer EN/DE-Evaluationssatz und die reale Dense-Baseline; Sparse/Hybrid, Reranking, Confidence-Kalibrierung und jede automatische Entscheidung bleiben bis zu dieser Bewertung ausgeschlossen. 4. Erst nach verifizierter Phase 13B den kontrollierten Firmenbetrieb aus Phase 14 mit SSO, Rollen, HTTPS, Monitoring, Backup/Restore und Aufbewahrung fortsetzen. Die technische Reihenfolge ist bis einschliesslich Phase 13A umgesetzt. Phase 13B baut auf dem verifizierten sicheren Ingestion-Unterbau auf und reicht inzwischen produktiv von der begrenzten Parser-/Workerverarbeitung ueber unveraenderliche Analyse-, Profil-, Aggregations- und Evaluationslaeufe bis zur streng evidenzgebundenen Finding Factory und ihrer gemeinsamen Unified-Result-Leseprojektion. Das Backend leitet projektgebundene Aktionsbereitschaft aus aktiven Revisionen und exakt passenden Referenzdaten ab; der Datahub fuehrt Environment-Profile-Anlage, Reprocessing, Aggregation, Evaluation und Finding Factory ueber die autoritativen idempotenten Services aus. Der produktive Regelkatalog bleibt bis fachlicher Kuratierung leer, und die vorhandenen Microsoft-Baselines bleiben ohne vollstaendige Windows-Inbox-ADMX-/ADML-Kataloge partial; dadurch erzeugt dieser reale Bestand weiterhin nur Review und keine Findings. Aktualisierung vom 2026-08-04: Die persistente Worker-/Repository-Anbindung fuer technische Policy-Identitaeten, ADMX-Kataloge und Baseline-Einstellungsanalysen ist umgesetzt. Deterministisches GPO- und Baseline-Reprocessing mit Retry, Idempotenz und Supersession sowie die zugehoerigen Read-/Reprocess-APIs sind vorhanden. Als naechste vertikale Etappe folgen Snapshotaggregation, Konflikterkennung, `EnvironmentProfile` und die vollstaendigkeitsgesicherte Bewertungsengine; Inbox-ADMX-Kataloge und weitere Preference-CSEs bleiben getrennte Katalog-/Parserarbeit. Aktualisierung nach dem Schritt-8-Vertikalschnitt vom 2026-08-04: Versionierte Environment Profiles und die konservative persistente Snapshotaggregation sind umgesetzt. Die naechste vertikale Etappe ist die getrennte Bewertungsengine mit typisierten Comparatoren, Dependency-/Override-Regeln, vollstaendigkeitsgesichertem Consensus, Evaluation Runs und Mehrquellen-Evidenz. Erst bestaetigte konfigurierte Abweichungen duerfen danach in das Unified Result Model projiziert werden; Inbox-ADMX-Kataloge, weitere Preference-CSEs und RSoP-Evidenz bleiben eigenstaendige Erweiterungen. Aktualisierung nach dem Schritt-9-Vertikalschnitt vom 2026-08-04: Versionierte Evaluation Runs, Ergebnis- und Mehrquellen-Evidenzpersistenz sowie die konservative Bewertungsengine sind umgesetzt. Die Comparatorbibliothek ist typisiert; produktiv ist vorerst nur Equality explizit kataloggebunden. Als naechste vertikale Etappe folgen freigegebene Comparatorzuordnungen und Dependency-/Override-/Risikoregeln, ausdrueckliche Nichtanwendbarkeit sowie die streng getrennte Finding-Erzeugung und Unified-Result-Projektion. Windows-Inbox-ADMX-Kataloge, weitere Preference-CSEs, UI fuer Review-/Konflikt-/Katalogluecken und RSoP-Evidenz bleiben eigenstaendige Arbeitspakete. Aktualisierung nach dem Schritt-10/11-Finding-Vertikalschnitt vom 2026-08-04: Finding Factory, persistente Policy-Finding-Occurrences, projektgebundene API und Unified-Result-Read-Projektion sind fuer ausschliesslich vollstaendig belegte `eligible` konfigurierte Abweichungen umgesetzt. Unvollstaendige Evidenz bleibt als Factory-Ablehnung ausserhalb des Resultmodells; Scope und Wirksamkeit bleiben ausdruecklich unbekannt beziehungsweise nicht verifiziert. Der aktive produktive Katalog bleibt bis zur fachlichen Freigabe setting-spezifischer Regeln leer und erzeugt daher weiterhin keine Findings. Als naechster Vertikalschnitt folgt die UI fuer Konflikte, Katalog-/Parserluecken, partielle Analysen und unaufgeloeste Identitaeten; danach folgen fachliche Regelkuratierung und vollstaendige Windows-Inbox-ADMX-Kataloge. Weitere Preference-CSEs bleiben ein getrenntes Arbeitspaket. Aktualisierung nach dem Schritt-11-UI-Vertikalschnitt vom 2026-08-04: Konflikte, partielle Analysen, Katalog-/Parserluecken, unaufgeloeste Identitaeten, unbekanntes Targeting und Finding-Factory-Ablehnungen sind nun projektgebunden ueber ein typisiertes Readmodell, eine read-only API und den Datahub sichtbar. Findings und Review bleiben getrennt; Laufhistorie wird nicht als deduplizierter aktueller Kundenzustand bezeichnet, und die fehlende RSoP-/GP-Results-Evidenz bleibt sichtbar. Der unmittelbar folgende Orchestrierungsvertikalschnitt erweitert diese read-only Ansicht um bedienbare Environment-Profile-, Reprocessing-, Aggregations-, Evaluations- und Finding-Factory-Aktionen; fachlich kuratierte Regel- und Windows-Inbox-ADMX-Kataloge, weitere Preference-CSEs und Exportdetails bleiben getrennte Arbeitspakete. Aktualisierung nach dem Schritt-11-Orchestrierungsvertikalschnitt vom 2026-08-04: Environment Profiles und ihre Revisionen koennen nun im Datahub angelegt werden; GPO-Reprocessing, Aggregation, Evaluation und Finding Factory sind ueber serverseitig abgeleitete Ready-/Review-only-/Completed-/Blocked-Aktionen bedienbar. Katalogauswahl, aktive Revisionen und technische Quellen werden im Backend-Readmodell bestimmt, waehrend jede Mutation ihre bestehenden Fachinvarianten erneut prueft. Als naechste Vertikalschnitte folgen die fachlich kuratierten Policy-Regeln und vollstaendigen Windows-Inbox-ADMX-Kataloge sowie danach aktuelle snapshotbezogene Ergebnisdeduplizierung, weitere Preference-CSEs und Exportdetails. Aktualisierung nach der snapshotbezogenen Ergebnisdeduplizierung vom 2026-09-03: Das Policy-Analyse-Readmodell trennt nun den aktuellen aktiven Snapshotpfad von der weiterhin vollstaendigen Audit-Historie. Summary, Review Queue und ausfuehrbare Folgeaktionen verwenden nur die aktive Revisionskette; historische Evaluationen bleiben separat sichtbar. Als naechste fachliche Etappen verbleiben kuratierte Policy-Regeln und vollstaendige Windows-Inbox-ADMX-/ADML-Kataloge, danach weitere Preference-CSEs und Policy-Exportdetails. Aktualisierung nach der Katalog-Ladegrenze vom 2026-09-03: Fachlich freigegebene Policy-Regeln koennen nun als lokal betriebener, SHA-256-gepinnter und vollstaendig validierter JSON-Katalog reproduzierbar aktiviert werden; der Default bleibt leer und fail-closed. Als naechster fachlicher Schritt sind ein autorisiert kuratierter Regelinhalt und vollstaendige versionierte Windows-Inbox-ADMX-/ADML-Quellen erforderlich; weitere Preference-CSEs und Policy-Exportdetails bleiben danach offen. ## 9. Bereits getroffene Architekturentscheidungen - 2026-10-01, Core Engine und Engines (Nutzerentscheidung): Der Assessor mit allen bestehenden Funktionen heisst Core Engine, die Kontextanreicherung aus Phase 13E Context Engine; die nur lesende Report Engine aus Phase 7 ist ebenfalls eine Engine. Neue Features kommen als eigene Engines. Engines lesen den Core uneingeschraenkt, aber nur ueber einen erklaerten Nur-Lese-Port und den schreibgeschuetzten Datenbankzugang; sie schreiben, aendern oder uebersteuern ihn nie. Abhaengigkeiten zeigen nur von der Engine zum Core; der Core funktioniert mit allen Engines aus unveraendert, und jede Engine traegt einen dauerhaften An/Aus-Gleichheitstest. Eine Engine erzeugt keine Findings; Scanner-Profile, Importer und Parser sind immer Core. Eigene Speicherung einer Engine nur in eigenen Tabellen nach gesonderter Freigabe. Jede Core-Aenderung braucht die ausdrueckliche Freigabe des Nutzers fuer die konkrete Anfrage und den benannten Core-Bereich (Ingest, Normalization, Evaluation, Store, Disclosure, Reference Catalogs, Shared Kernel, Presentation, Platform, Core Tests, Governance). Erweiterungspunkte in Core-Ansichten (Context-Schalter, Facette `Context Cluster`, Reader-Abschnitt `Context`) sind Core-Code. Die verbindliche Fassung steht in AGENTS.md unter "Core Engine and engines", die Pfadzuordnung in `.claude/hooks/core-guard.mjs`. Der Projekt-Hook fragt vor schreibenden Werkzeugaufrufen auf Core-Pfaden nach; er ist Sicherheitsnetz, nicht Autoritaet. - 2026-09-23, Tabellenueberschriften im Environment-Results: Gespeicherte Tabellen- und Beobachtungsprovenienz darf fuer eine rein lesende, tabellengenaue Ueberschriftenzuordnung kombiniert werden. Der interne `sourceTableIndex` ist ein Join-Schluessel, kein leserelevantes UI-Feld. Die eindeutige native Unterabschnittsueberschrift hat Vorrang vor einem generisch nummerierten Tabellennamen; bei Konflikt wird nicht geraten. Die Zuordnung bleibt auf Scanlauf, Importdatei und Abschnitt begrenzt, ohne kanonische Werte zu veraendern. - 2026-09-23, Korrektur Environment-Detail-Results: Der Results-Button ist eine vertiefende, rein lesende Sicht auf den vorhandenen EnvironmentSnapshot, Quell-Findingbestand und die vorhandenen Score-Beitraege, nicht die Wiederholung der Kachel. Fachgruppen erhalten Quellabschnitte/Beobachtungen aus demselben Snapshot; Source Overview bleibt die vollstaendige Auffangansicht fuer nicht zuordenbare Originalfakten und zeigt die zugrundeliegenden Findings mit Originalfeldern. Original-/Normalwerte und Herkunft werden getrennt gezeigt, grosse Mengen progressiv ohne Zeilenverlust. Die fruehere Entscheidung unmittelbar darunter zum duplizierten Fensterinhalt ist durch diese ausdrueckliche Nutzerkorrektur ersetzt; Dialogmechanik und Kachel bleiben erhalten. - 2026-09-23, Environment-Detail-Results: Die acht Kacheln teilen sich genau die bestehende Results-Dialogmechanik der Betriebssystemkachel. Fensterinhalte sind eine zweite Leseansicht derselben bereits abgeleiteten Kacheldaten, keine neue Datenquelle, Result-DB-Abfrage oder Bewertungssemantik. Dialogaktionen verwenden den konkreten Kacheltitel fuer barrierefreie Namen; der OS-Sondertext in der gemeinsamen Fensterkomponente ist damit ersetzt. - 2026-09-23, Korrektur zur gemeinsamen Finding-Ueberschrift: Ein PingCastle-Regel-ID-Treffer allein beweist nicht dieselbe Berichtsversion. Die Leseprojektion darf einen besseren Titel nur aus dem eindeutig gepaarten Bericht desselben Projekts, Datums und Dateistamms uebernehmen; bei gleichrangigen widerspruechlichen Titeln bleibt der eigene native Titel. Die fruehere Entscheidung fuer den kanonischen Definitionstitel gilt innerhalb eines Vorkommnisses weiter, war fuer getrennte HTML-/XML-Vorkommnisse aber unvollstaendig. Oeffentliche PingCastle-IDs werden nur gegen den dokumentierten Regelkatalog validiert und in nativer Schreibweise angezeigt. - 2026-09-23, gemeinsame Finding-Ueberschrift: Result DB und Work fuehren Scannerfindings mit dem kanonischen `FindingDefinition.title`. Vorkommnisspezifische native Titel duerfen die Work-Ueberschrift nicht mehr ueberschreiben; bei Abweichung bleiben sie als `Native source heading` in der Leseprojektion sichtbar. Diese Regel ist reine Praesentation und aendert weder Originalfeld noch Provenienz, Finding-Identitaet oder gespeicherte Daten. **Security-Domain-Mengenbalken (2026-09-20):** Die Verteilung innerhalb der sichtbaren Client-Info-Security-Domains wird als dezenter Balken in einer eigenen Subgrid-Spalte dargestellt. Das gemeinsame Raster bemisst links den laengsten Domainnamen und rechts die breiteste Mengenzahl; der Balken bleibt mit gemeinsamem Abstand vollstaendig dazwischen, endet bei allen Zeilen an derselben Kante und waechst nach links. Alle Balken erben exakt den gemeinsam am Posture-Bereich gesetzten Tone des Overall Scores; dadurch stimmen sie immer mit der aktuellen Donutfarbe ueberein, waehrend die einzelnen Domainknoten weiterhin ihre eigene Pass-Rate-Farbe besitzen. Bezugsmenge ist die Summe exakt der angezeigten Domainmengen; eine Zeile verwendet denselben Wert, den ihre rechte Zahl bereits zeigt, einschliesslich des bestehenden Review-only-Falls. Der Balken ergaenzt die Zahl nur visuell, ist `aria-hidden` und darf weder fachliche Mengen noch Bewertung, Klassifikation oder Navigation beeinflussen. - 2026-09-20, Mindestgroessen fuer Information und Lesetext: Primaere Information in Tabellen, Kacheln und Feldbeschriftungen darf nicht unter 14 px fallen; zu lesende Werte und fortlaufender Text verwenden 16 px. Kleinere Rollen sind ausschliesslich fuer kompakte Controls, technische Metadaten und Badges zulaessig und duerfen nicht zum Verdichten primaerer Information missbraucht werden. Bestehende semantische 14-/16-px-Tokens bleiben die Quelle; keine lokale Literal- oder View-Sondergroesse. - 2026-09-20, PingCastle-OS-Zustandsprojektion: `Nb OS`, `Nb Active`, `Nb Inactive`, `Nb Enabled` und `Nb Disabled` sind voneinander unabhaengige, native Werte derselben retained source row. Die UI darf sie gemeinsam anzeigen, aber weder Differenzen berechnen noch Werte ueber Quellzeilen oder Inventare hinweg zusammenfuehren. Die vorhandene generische Umgebungsextraktion bleibt die Quelle; keine neue Parser- oder Persistenzsemantik ist erforderlich. - 2026-09-20, gemeinsamer Deviation-Scope: Data Hub und Client Info verwenden fuer Ergebnisanzahl und Prozentnenner dasselbe gemischte, timeslotgebundene Projektblatt sowie dieselbe zentrale Zustandsklassifikation. Scanner-Run-IDs allein sind keine vollstaendige Ergebnisgrenze, weil aktuelle GPO-/Policy-Ergebnisse assessmentgebunden vorliegen. Der Data-Hub-Donut bleibt eine Statusprojektion und macht ein GPO-Backup nicht zu einem Scanner-Run. - 2026-09-18, Client-Info-Praesentation: Die freigegebene Ableton-Designsprache gilt auch fuer Client Info. Der Nutzer verlangt ausdruecklich den Erhalt der gemessenen gebogenen Overall-zu-Domaenen-Verbindungen. Zusammenfassung vor aufklappbaren Evidenz-/Governancedetails; keine Aenderung der fachlichen Daten- und Scorevertraege. Der exakte Resize-/Disclosure-/Risikowechselpfad ist synthetisch abgesichert. - 2026-09-20, Client-Info-Breiten- und Zeilenvertrag: Posture und Aktionsrail verwenden auf breiten Ansichten exakt 1:1 und teilen die verfuegbare Zeilenbreite zur Haelfte. Diese spaetere Nutzerkorrektur ersetzt die kurzzeitig dokumentierte 2:1-Aufteilung. Jede gemeinsame Kachelzeile behaelt identische Hoehe und Unterkante. Accepted Risks uebernimmt die feste linke Client-/Timeslot-Auswahlbreite `clamp(420px, 27vw, 520px)` und die rechte Informationsflaeche; unterhalb des bestehenden schmalen Breakpoints bleibt die Stapelung erhalten. - 2026-09-20, Overall-Score-Inhaltsvertrag: Unter dem Score-Donut erscheinen weder eine textuelle Statuswiederholung noch ein zweiter Critical-Findings-Zaehler. Assessment Coverage bleibt auf die kompakte Inhaltsbreite begrenzt und darf die gebogenen Domaenenlinien nicht beruehren oder ueberlagern. **Verbindliche Ableton-Designreferenzen einschliesslich Client Info (2026-09-18):** Die ausdrueckliche Nutzerkorrektur ersetzt die bisherige Client-Info-Sonderpalette/-Geometrie durch denselben visuellen Vertrag wie Data Hub, Work und Pathfinder. Die drei bestehenden, freigegebenen Ansichten bleiben Referenzen; sie werden nicht an neue Entwuerfe angepasst. Aktuelle Projekt-Tokens und AGENTS.md haben Vorrang vor historischen Skill-Assets, Archetypen und verworfenen Bildentwuerfen. Der Vertrag gilt bereits fuer Designvorschlaege: gemeinsame neutrale Flaechen, transparente Segmente, flache eckige Tiles, vorhandene Controls, Inter, gelbe/bernsteinfarbene Auswahl und Aktionen, blauer Fokus, semantische Statusfarben, 20px Inset und volle 360-Grad-Donuts. Fachliche Client-Info-Hierarchie, Scoremodelle und Quelle-/Work-Drilldowns bleiben erhalten. Aeltere abweichende Entscheidungen im Verlauf sind historische Eintraege und durch diese Korrektur nur hinsichtlich der visuellen Ausnahme supersediert. **Vollstaendiger Security-Domain-Katalog im Work-Filter (2026-09-18):** Der unveraenderte gemeinsame Client-Info-Katalog ist der Optionsvertrag, nicht die aktuell gefilterte Treffermenge. Alle acht Domains bleiben bei null Treffern auswaehlbar; Unclassified wird nur bei vorhandenen unklassifizierten Datensaetzen ergaenzt. Eigene Auswahl bleibt bei der Facettenzaehlung ausgenommen; andere aktive Filter gelten weiter. Noch gueltige aktive Kategorie-/Statusauswahlen verschwinden bei null Treffern nicht automatisch. Der normale Domain-Deviation-Drilldown aus Client Info verwendet denselben sichtbaren Filter statt pathFindingIds; ausdrueckliche Review-only- und Einzelbefundpfade bleiben separat begrenzt. Quellen-/Timeslotgrenzen und Domainzuordnung werden nicht erweitert. **Aktuelle GPO-Laufauswahl und autoritative Statusfilter (2026-09-18, beauftragter Fehlerfix):** Work und PostgreSQL-Result-DB messen Laufabdeckung an verschiedenen Baseline-IDs in den erhaltenen Ergebnissen; mehrere Analyseversionen eines Pakets sind keine zusaetzliche Abdeckung. Fehlen solche IDs vollstaendig, bleiben deklarierte Analyseverweise der Fallback. Bei gleicher Abdeckung gewinnt der neuere Lauf, bei gleichem Zeitpunkt die ID. Historie bleibt unveraendert. Deviation darf ein autoritatives Fail nicht aufgrund des angezeigten Configured Value verwerfen; die vereinbarten Sonderfaelle fuer erforderliche Schluessel-/Leerstringpraesenz bleiben Fail, das gewoehnliche Not-configured-Urteil bleibt neutral. Result DB zaehlt weiterhin Vergleiche, Work Einstellungen. Synthetische Interaktionstests sichern beide GPO-Work-Einstiege sowie die Result-DB-Auswahl; optionale PostgreSQL-Paritaetstests verwenden ausschliesslich synthetische CTEs in einer read-only-Verbindung ohne Schema-/Tabellenanlage. **Result-DB-Statusfilterkorrektur (2026-09-18, ausdruecklicher Nutzerauftrag):** Die fruehere Ausnahme vom 2026-09-07, GPO-Klassifikationen unabhaengig von Deviation zu zaehlen und Deviation bei Auswahl zu entfernen, ist abgeloest. Result Status beachtet wie andere Facetten jeden fremden aktiven Filter und nimmt nur die eigene Auswahl aus seiner Alternativzaehlung aus. Ausgewaehlte Nulltreffer bleiben sichtbar. Gemeinsame Labels mit Work sind reine Praesentation; Result DB behaelt Einzelvergleiche, Work seinen technischen Setting-Rollup. Review required bleibt fachlich eigenstaendig; No baseline rule und Not comparable werden nicht durch Freigabe interner Beobachtungen fuer Result DB erfunden. **Work rollt Baselinepakete auf die technische Einstellung auf (2026-09-18):** Persistierte Paketvergleiche bleiben eigenstaendige Evidenz; Work zeigt je Projekt/Aggregation/Scope/Identitaet genau eine Zeile mit dem vorhandenen Zaehlerurteil. Baselineauswahl filtert die Mitgliedschaft, nicht das Urteil. Abweichende Sollwerte bleiben paketbezogen; Quellenmarkierungen benoetigen Evidenz gegen alle aktuellen Varianten. Alte lokale Review-Identitaeten werden fuer lesbaren Erhalt mitgefuehrt; widerspruechliche Reviews und Risikoakzeptanzen werden nicht automatisch vereinigt. Details siehe GPO_BASELINE_EVALUATION.md. **Work-Listenstabilitaet und technische Pfade (2026-09-18):** Eine Auswahl darf nicht gleichzeitig vom virtuellen Listencontainer und vom einzelnen Listenelement animiert werden. Der Container ist die einzige Scrollautoritaet und positioniert eine notwendige Auswahl deterministisch ohne Smooth-Animation; sichtbare Karten loesen keinen eigenen Scroll aus. Scrollbare Datensatzlisten reservieren ihre Scrollbarspur. Vollstaendige Registrypfade in Titeln verwenden dieselbe inerte `technical-path`-Darstellung wie Pfadfelder, bleiben vollstaendig lesbar und duerfen Kopfaktionen nicht ueberlagern. Der Titelvertrag umfasst `registry · ` sowie `Registry Values · MACHINE\\...`/`USER\\...`; nackte `MACHINE\\`-/`USER\\`-Texte ausserhalb dieses Vertrags werden nicht umklassifiziert. Diese Darstellungsentscheidung aendert weder Originaltitel noch Datensatzidentitaet. Festlegung 2026-09-17 (Phase 13B, GPO-Quellwiederherstellung): Die persistierte backend-controlled-Referenz bleibt als Provenienz erhalten; die aktuelle Dateiverfuegbarkeit wird separat und ohne Repository-Revisionscache gelesen. Nur ENOENT bedeutet fehlende Bytes und Upload required; Zugriffs-, Konfigurations- oder ungueltige Objektpfade ergeben Storage unavailable. Automatische Reparatur, Retry und Reprocess duerfen ohne verfuegbare Quelle keinen Job erzeugen; verschwindet sie nach dem Einreihen, endet der erste fehlgeschlagene Versuch ohne automatische Wiederholung. Der gezielte Originalupload bindet an Projekt/Artefakt und gegebenenfalls Timeslot, prueft Groesse und SHA-256 und stellt die urspruengliche Speicher-ID atomar ohne Ueberschreiben wieder her. Gespeicherte Analysen bleiben erhalten. Reine Neuauswertung erhaltener Eingaben bleibt moeglich; veraltete Analyzer benoetigen weiterhin zuerst Reprocessing. Kein Analyzerbump, keine neue Interpretation und keine Bestandsmutation allein durch die Verfuegbarkeitsanzeige. Festlegung 2026-09-16 (Phase 7/13B, Policy-Rollup-Praezisierung): Diese Entscheidung ersetzt die am selben Tag dokumentierte Interpretation, nach der Conflict-/Duplicate-Container trotz eines belegten Mitglieds-Fails score-neutral bleiben koennten. Verdict und Diagnose sind getrennte Achsen. Ein belegter Fail eines konfigurierten, vergleichbaren In-Scope-Mitglieds macht die technische Policy-Einstellung insgesamt genau einmal zu Fail; Conflict/Duplicate bleibt als zusaetzliches Merkmal. Ohne belegten Fail ergeben ausschliesslich Pass-Mitglieder einen Policy-Pass, waehrend ungeklaerte Anwendbarkeit oder Prioritaet Review required bleibt. Ein konkretes Geraet wird ohne Effective-State-/RSoP-Evidenz weiterhin nicht als verwundbar behauptet. Festlegung 2026-09-16 (Phase 7/13B, GPO-Bewertungsscope): Die operative GPO-Analyse ist misconfiguration-first. Scorefaehig sind nur konfigurierte, technisch eindeutig vergleichbare Kundeneinstellungen im anwendbaren Microsoft-Baseline-Scope. `Not configured`, `Duplicates` und `Conflicts` bleiben sichtbare, eigenstaendige und score-neutrale Containerkategorien. Ein unabhaengig belegter Fail eines darin enthaltenen konfigurierten Werts bleibt genau einmal scorewirksam; weder Containerstatus noch Quellanzahl erzeugen zusaetzliches Gewicht. Vollstaendige Baseline-Adoption ist ein eigener Hardening-Auftrag und darf aus dem normalen GPO-Score nicht behauptet werden. Diese Nutzerentscheidung ersetzt jede Lesart, nach der fehlende Microsoft-Empfehlungen ueber Coverage oder einen impliziten Nenner den operativen Score mindern. Festlegung 2026-09-16 (Phase 7, gemischter Work-Filterkontext): GPO-spezifische Facetten gehoeren ausschliesslich zum eindeutigen Werkzeugkontext `group-policy`, der durch das GPO-Blatt oder eine eindeutige GPO-Quellenauswahl entsteht. `Source: Scan = All` ist ein gemischter Kontext; dort bleiben Result Status, allgemeine Scannerfacetten und der permanente Source-Filter sichtbar, waehrend GPO-exklusive Felder nicht am allgemeinen Facettenlimit teilnehmen. Jeder Kontextwechsel entfernt gespeicherte Facettenauswahlen, die im neuen sichtbaren Vertrag nicht mehr gueltig sind. Festlegung 2026-09-16 (Phase 7, Work-Snapshots): Die vollstaendig wirksame Work-Projektion ist der Snapshotvertrag. Ein gespeicherter Ansichtsstand umfasst deshalb auch den Finding-Scope eines Drilldowns und darf ihn beim Wiederherstellen nicht pauschal leeren. Der Scope wird als Datensatz-ID-Liste lokal und timeslotgebunden gespeichert; alte Eintraege ohne Feld werden abwaertskompatibel als uneingeschraenkte Ansicht gelesen. Pathfinder-Snapshots behalten zusaetzlich ihre Graphknoten und wenden daraus weiterhin ihren exakten Finding-Scope an. Festlegung 2026-09-14 (GPO-Varianten, Nutzerfreigabe): Unbekannte Zielrolle verhindert kein eindeutiges Urteil ueber alle beruecksichtigten Baselinevarianten. Die Vereinigung von Kontenlisten ist kein neuer Sollwert; jede Variante behaelt ihr eigenes Einzelurteil. Dies ersetzt fuer neue Evaluationen die pauschale Review-/Konfliktsperre bei abweichenden Baselinewerten aus dem GPO-Vorlagenkontext vom 2026-09-09, nicht die historische Evidenz. Explizite Rollenwahl, Originalherkunft, fehlende Wirksamkeitsevidenz und strikte Trennung von Baselinealternativen und Kunden-GPO-Konflikten bleiben bestehen. Bewertungswechsel verlangt Evaluator 1.5.0 und explizite Neuauswertung, nicht automatisch einen Scanner-Reimport. Festlegung 2026-09-11 (Phase-8-Planergaenzung): Regeldefinition, objekt-/scopebezogene Vergleichsidentitaet und zeitgebundene Beobachtung bleiben getrennt. Abwesenheit ohne belastbare Gegenpruefung ist keine Behebung. Scorevergleich und Behebungsfreigabe erhalten unterschiedliche fachliche Bedingungen; teilweise neue Evidenz ersetzt nicht pauschal alle alten Verpflichtungen. A und B bleiben die ausdrueckliche Messbasis, aeltere Historie dient getrennt der Verpflichtungs-/Lifecycleverfolgung. Die Festlegung praezisiert das Quellenmodell vom 2026-09-06 und ersetzt fuer die kuenftige Implementierung die historische Regel `abwesend = resolved`; keine historischen Daten oder Ergebnisse werden umgeschrieben. Details und Grenzen: [TIMESLOT_COMPARISON_PLAN.md](TIMESLOT_COMPARISON_PLAN.md). Festlegung 2026-09-15 (Phase 13F, Finding-Retrievalgrenze): Nur Scanner-Findings mit einem exakt katalogisierten oeffentlichen Maester-/PingCastle-Regel-ID oder einem lokal erkannten fest definierten oeffentlichen Technikthema duerfen eine Embeddingquery erzeugen. Freitext, kundenspezifische Tool-/Regel-IDs, Assets, Pfade, Werte, Mandanten-/Projekt-/Review- und Provenienzdaten werden nie kopiert; ohne oeffentliches Signal bleibt Retrieval fail-closed. Der lokale Source-Result-Bezug bleibt ausserhalb des Embeddingrequests. Diese technische Minimierung ersetzt keine organisatorische Datenschutzfreigabe. Evaluationsmetriken werden auf Kontrollebene ermittelt und Retrievalscores bleiben Kandidatenranking, keine fachliche Confidence. Festlegung 2026-09-15 (Phase 13F, ausdruecklicher Nutzerauftrag): Qdrant ist der rebuildbare Suchindex fuer versionierte regulatorische Chunks und niemals fachliche Quelle fuer Scannergebnisse oder Mappingentscheidungen. PostgreSQL bleibt System of Record fuer Scans, Findings, Ergebnisse, Reviews und spaetere append-only Mappingprovenienz. Dense und Sparse sind benannte Vektorraeume; zunaechst wird nur mehrsprachiges Dense Retrieval aktiviert. Candidate Retrieval und optionaler Reranker bleiben getrennte Schnittstellen. Ein Modellwechsel darf alte Vektoren nicht still weiterverwenden; Modellname und Dimension werden explizit gebunden, Abfragen filtern auf das aktive Modell, und ein Korpus-Rebuild bleibt Pflicht. Der Embeddingdienst ist eine eigene externe Vertrauensgrenze; Findinginhalte duerfen erst nach einer getrennten Datenschutzfreigabe als minimierte Query uebertragen werden. Festlegung 2026-09-15 (Phase 13F, ISO-Mapping): ISO 27002 ist fuer alle 93 Controls der semantische Korpus; ISO 27001 Annex A bleibt autoritative Referenz und Vollstaendigkeitspruefung. Kanonische IDs sind `5.1` bis `8.34`, Aliaswerte `A.5.1` bis `A.8.34`. Ein Mapping bedeutet ausschliesslich fachliche Relevanz, niemals Compliance. Dense Retrieval gruppiert zuerst auf Control-Ebene; LiteLLM darf nur gelieferte Controls und Chunk-IDs ausgeben. Kein Confidencewert akzeptiert automatisch. Runs und Entscheidungen sind append-only in PostgreSQL, Qdrant bleibt jederzeit rebuildbar. Die erste UI bleibt beim einzelnen Finding; Batchmapping, Sparse/Hybrid und Reranking bleiben bis zur repraesentativen Retrievalbewertung ausgeschlossen. Festlegung 2026-09-15 (Phase 13F, Finding-Retrievalgrenze – Revision, ersetzt die vorstehende Festlegung auf ausdruecklichen Nutzerauftrag): Die ISO-Mappingquery wird nicht mehr aus einer festen Themenwhitelist erzeugt, sondern aus der gemeinsamen datenschutzsicheren Finding-Projektion (`src/domain/privacy-safe-finding.ts`, `privacySafeFinding`) – exakt derselben Grenze wie die KI-Uebersicht. Query-Quelle ist der regelbezogene Prueftext (Titel, sowie Beschreibung und Empfehlung, jeweils aus der je Regel deduplizierten Finding-Definition, mit E-Mail-Redaktion); katalogisierte Regel-IDs, oeffentlicher Toolname und erkannte Technikthemen bleiben nur noch Query-Anreicherung. Die Ergebnistabelle/Occurrence (affectedAsset, Source-Locator/Pfad, Objektwerte, Mandanten-/Review-/Provenienzdaten) wird nie gelesen. Dadurch mappt jedes Scanner-Finding mit Pruef-Titel; nur Nicht-Scanner-Datensaetze und Findings ohne Titel bleiben `insufficient-public-context`. `REGULATORY_RETRIEVAL_VERSION` auf `dense-control-grouping-1.1.0` erhoeht; kein Reimport, da Mappinglaeufe regenerierbar sind und keine persistierten Scannerdaten geaendert werden. Restrisiko: Die geteilte Redaktion entfernt nur E-Mail-Adressen und verlaesst sich auf regelgenerische Definitionen; eine haertere Redaktion (Host/IP/Pfad) waere eine gemeinsame Entscheidung fuer beide KI-Funktionen und bleibt offen. Folgeetappen: assessment-weites Batchmapping ueber alle Findings (dedupliziert je Regel/Definition, analog zum KI-Uebersicht-Scopelauf) und optional eine symmetrische Einzel-Finding-KI-Uebersicht. Praezisierung 2026-09-15 (Phase 13F, Mapping-Relevanz): Der Mapping-Systemprompt (`REGULATORY_MAPPING_PROMPT_VERSION` `1.2.0`) mappt jetzt ausdruecklich auf fachliche Themenrelevanz. Ein Kandidat wird zugeordnet, wenn er dasselbe Sicherheitsthema regelt (z. B. Passwort-/Authentisierungsverwaltung), auch wenn der ISO-Kontrolltext den konkreten Wert, Schwellwert oder Parameter des Findings nicht nennt; ISO-Controls sind prinzipienbasiert und wiederholen solche Spezifika selten. `no_relevant_control` gilt nur, wenn kein Kandidat das Thema regelt. Hintergrund: `A-MinPwdLen` wurde trotz korrekt abgerufenem Control `5.17` (Authentisierungsinformationen) faelschlich als nicht relevant zurueckgewiesen. Kein Reimport, da Mappinglaeufe regenerierbar sind. Festlegung 2026-09-15 (Phase 13F, globale ISO-Mappings, ausdruecklicher Nutzerauftrag): ISO-Mappings und Accept/Reject-Entscheidungen sind jetzt global und mandantenunabhaengig, analog zur CVE-Anreicherung. Migration `026` ersetzt die per-Occurrence-Tabellen `assessor_regulatory_mapping_runs`/`_decisions` (nur regenerierbare Testdaten, vor dem Drop gesichert) durch `assessor_regulatory_mappings` und ein globales `assessor_regulatory_mapping_decisions`. Schluessel ist die Regelidentitaet `ruleKey` (`tool:ruleId`, ersatzweise ein stabiler Titel-Hash) plus die Pipelineversionen (`UNIQUE(rule_key, corpus_version, retrieval_version, prompt_version, model)`); die Mapping-ID ist ein deterministisches Digest dieses Tupels, sodass ein Regel-Mapping genau einmal existiert und jede Occurrence in jedem Projekt es wiederverwendet. Entscheidungen sind append-only, per `(ruleKey, controlId)` gefuehrt, versionsunabhaengig und ueberleben Scan-, Assessment- und Projektloeschung. Der Dienst leitet nur die non-personale Regelidentitaet und den Pruefkontext aus dem Finding ab; Ergebnistabelle/Occurrence fliesst nie ein. Kein Reimport (kein Scanner-Import veraendert). Naechste Etappe: assessment-weites Batchmapping ueber distinct Regeln. Festlegung 2026-09-16 (Phase 13F, gefiltertes Result-DB-Batchmapping, ausdruecklicher Nutzerauftrag; begrenzte Aufhebung der frueheren Batch-Zurueckstellung): `All` bezeichnet alle Treffer der aktuell aktiven Result-DB-Filter innerhalb des gewaehlten Timeslots und ist exakt derselbe vollstaendige `UnifiedResultQuery`-Scope wie Export JSON. Offset, Limit, Load-more-Zustand und geladene Zeilen sind reine Darstellung. Der Standardfilter `deviation: true` bleibt wirksam, bis er geaendert oder zurueckgesetzt wird. Der beim Start normalisierte Snapshot bleibt fuer den Lauf unveraendert und wird projektgebunden mit kanonischem Hash und Idempotenz in Migration 027 gespeichert. Nur kanonische Scanner-Findings sind geeignet; Nicht-Scanner und fehlender oeffentlicher Pruefkontext werden gezaehlt, aber nie versendet. Vorkommen werden global nach `ruleKey` dedupliziert, erfolgreiche oder aktive Mappings wiederverwendet und fehlende beziehungsweise zuvor fehlgeschlagene deterministisch geclaimt. Einzel- und Batchaktionen teilen zwei parallele Retrieval-/Modellpipelines. Der Batch erzeugt ausschliesslich Vorschlaege; Accept/Reject bleibt manuell und es gibt weder Auto-Accept noch Batch-Entscheidungsqueue. Die vorgezogene Orchestrierung ist keine Aussage zur Retrievalqualitaet: repraesentative EN/DE-Evaluation, Sparse/Hybrid, Reranking und Confidence-Kalibrierung bleiben offen. Kein Importvertrag geaendert, daher kein Manifestbump oder Reimport. Festlegung 2026-09-10 (Purple-Knight-Begleitdateien): Ein nativer Score darf aus einer separaten Summary auf die Findings desselben Scanlaufs uebertragen werden, wenn genau ein nativer Traeger und eine eindeutige Ergebnispopulation denselben Werkzeug- und Verarbeitungskontrakt teilen. Datei- und Vorkommensherkunft bleiben gemeinsam erhalten; Mehrdeutigkeit verhindert die Verbindung. Festlegung 2026-09-10 (weitere Scanner): Native Gesamtwerte werden bei jeder Profilerweiterung zuerst geprueft und deklarativ mit ihrer Bedeutung erfasst. Die Scoredefinition ist Pflicht, die Berechnung gemeinsam; ihre Version gehoert zur Vergleichskompatibilitaet. Extraktion und Originalherkunft bleiben im generischen Importpfad. AGENTS.md und docs/SCORING_MODEL.md halten die Erweiterungsregel fest. Festlegung 2026-09-10 (Phase 7/13C/8, Nutzerfreigabe): Die bisher nur sekundaere native Scoreanzeige wird durch das versionierte hybride Beitragsmodell in `docs/SCORING_MODEL.md` ersetzt. Unterschiedliche native Risikomodelle und Bestehensquoten bleiben ausdruecklich methodisch verschieden; keine Severitygewichte oder Domainzuordnungen werden erfunden. Scoring bleibt plattformneutrale Fachlogik ausserhalb von React. Originale und gespeicherte historische Assessments bleiben unveraendert. Festlegung 2026-09-09 (Phase 13/13A, HTML-Timeout): Attributtoken werden monoton und ohne unanchored name=value-Backtracking gelesen. Gemeinsam verwendete Verweisdefinitionen werden nur innerhalb ihres exakten unveraenderten Markups indiziert; keine globale oder dateinamenbasierte Wiederverwendung. Mehrdeutigkeit, erste Definition, Zielreihenfolge, Vollstaendigkeit und Originalwerte bleiben Vertragsbestandteile. Leistung wird ueber Zeichenarbeit und Inhaltsparitaet abgesichert; der gebaute isolierte Worker muss mit unveraenderten Sicherheitsgrenzen bestehen. Die Fehleranzeige allein ist kein Beleg fuer die konkrete Struktur der realen Quelldatei. Festlegung 2026-09-09 (Phase 13A/13C, PurpleKnight): Kontext-Extractors duerfen keine anderen Findingtabellen desselben Dokuments verdraengen; sie komponieren deren generische Extraktion unter Erhaltung der Quellindizes. Native Berichtssyntax gehoert in den registrierten Source Extractor, der gemeinsame statische Leser bleibt werkzeug- und plattformneutral. HTML-Metriken verwenden dieselben semantischen Kontextvertraege wie die Zusammenfassungstabellen; unbekannte Originaldaten bleiben separat erhalten. Abgeleitete Anzeigefelder zeigen auf reale Eingabeobjekte statt erfundene Quellfelder. Zeitpraezision wird nicht fuer Formatparitaet reduziert. Fehlende IDs und unlesbare/konkurrierende Objekte scheitern, doppelte Regel-IDs bleiben getrennte Vorkommen mit Diagnose. Profil 1.3.0 versioniert Erfassung und Evidenz; Mapping/Normalisierung/Praesentation 1.1.0 und kanonischer Kompatibilitaetsschluessel bleiben erhalten. Reimport ist empfohlen, aber ohne ausdruecklichen Auftrag nicht durchgefuehrt. Festlegung 2026-09-22 (Phase 13A/13B, Purple Knight AD und Entra ID): Active Directory und Entra ID sind getrennte Assessment-Scopes desselben Purple-Knight-Profils, nicht austauschbare Scanner. Der kanonische Tool-ID bleibt `purple-knight`, waehrend ScanRun und Scorequelle den Scope lesbar benennen. AD bindet Forest und `purple_knight.ad.*`; Entra bindet `entra.tenant_name` und `purple_knight.entra.*`. Native Scores duerfen nur innerhalb ihres Scopes verwendet werden. Ein Batch mit beiden Scopes wird ausdruecklich als kombiniert bezeichnet und nie still als AD oder Entra ausgegeben. Bestehende 1.3.0-Importe bleiben historisch unveraendert und benoetigen fuer den neuen Entra-Kontext einen auditierten Reimport. Festlegung 2026-09-22 (Phase 7/13C, Maester Security Domain): Eine vorhandene Maester-Scanneridentitaet und `Unclassified` sind verschiedene Achsen. `Unclassified` darf nur die fehlende fachliche Security-Domain-Zuordnung ausdruecken. Offizielle stabile Maester-Suite-/Control-Praefixe duerfen als enger Fallback dienen, wenn Titel und beschreibende Felder keine spezifischere gemeinsame Domain liefern; sie duerfen Status, Severity, Scanneridentitaet oder Quellkategorien nicht veraendern. ORCA/EXO und Entra-Suiten fallen dabei unter `Cloud & Applications`; spezifische Inhaltsregeln wie Conditional Access behalten Vorrang. Nutzerkorrektur 2026-09-22 (Phase 13A/13B, Purple Knight AD gegen Maester): `Purple Knight for Active Directory` ist kein Maester-Scan. Gemeinsame Directory-Anzeigeflaechen oder eine werkzeuguebergreifende Tenant-Zaehlung begruenden keinerlei Scanneridentitaet. Purple-Knight-AD behaelt Tool-ID `purple-knight`, AD-Scope und ausschliesslich AD-/Forest-Kontext; Maester behaelt Tool-ID `maester` und seinen eigenen Entra-Testkontext. Kein Import-, Scoring-, Filter- oder Darstellungspfad darf Purple-Knight-AD als Maester bezeichnen, klassifizieren oder auswerten. Festlegung 2026-09-09 (Phase 13A/13C, PingCastle): Originale bleiben unveraendert. XML-Attribute werden als exakte Name/Wert-Paare mit eigenen Quellpfaden neben Text und expliziter Leere gefuehrt; Attribut-Anzeigezeichenketten sind kein verlustfreies Austauschformat. Der generische HTML-Leser schuetzt zitierte Attributgrenzen, bereinigt nur ganze Attribute und behandelt abgeschnittene Textausschnitte getrennt von vollstaendigen Dokumenten. Native Rule IDs sind erforderlich. Die historische First-Presentation-Deduplizierung bleibt erhalten, wird aber mit einer Warnung sichtbar. Kategorie-Trefferzahlen werden gegen eindeutige Regeln, nicht gegen Kataloggroessen geprueft; Originalzaehler erhalten einen separaten Reportabschnitt ausserhalb der Assetbeobachtungen. Profil 1.5.0 und Extractor 2.2.0 versionieren die Aenderung; Mapping 1.2.0, Normalisierung 1.1.0 und Kompatibilitaetsschluessel bleiben erhalten. Festlegung 2026-09-09 (Phase 13A/13C, Maester): Eingebettete Berichtsdaten sind Daten, kein auszufuehrendes Programm. Der native Extractor erweitert die generische Pipeline und liefert codekontrollierte Werkzeugerkennung, vollstaendige Originalfelder mit Quellpfaden sowie getrennten Berichtskontext. Statische Objektliterale sind nur innerhalb der dokumentierten Grammatik und Ressourcengrenzen zulaessig; dynamische oder mehrdeutige Berichtswurzeln werden explizit abgelehnt. Semantisch mehrdeutige Feldnamen werden anhand der Spalten desselben Kandidaten beziehungsweise derselben Tabelle abgebildet, nicht anhand des Dateityps allein. Gruppierungs- und Wiederverwendungsschluessel beruecksichtigen diesen Kontext. Result-Nachricht und Statusfilter verwenden dieselbe Prioritaet; Evidenztext darf keinen zweiten Ergebnisstatus erzeugen. Native Summenzaehler werden nicht als Vollstaendigkeitsbeweis benutzt oder ueberschrieben, sondern gegen die Einzeltests abgeglichen. Maester-Profil, Mapping und Praesentation steigen auf 1.1.0 bei unveraenderter Normalisierung und Kompatibilitaetsschluessel; historische Verarbeitungsstaende bleiben lesbar und werden als Reimport empfohlen ausgewiesen. Festlegung 2026-09-09 (Phase 7, Navigationskosten): Unveraenderte Filter-, Sortier- und selbst-ausnehmende Facettenprojektionen werden zwischen Verbrauchern und Bereichsbesuchen geteilt. Begrenzte schwach blattgebundene Caches fuehren alle fachlichen Eingaben im Schluessel: Profil, Dataset, Reviews, Filter, Suchtext, Sortierung und Pfadscope. Komponenten-useMemo oder wiederverwendbare IDs allein reichen nicht. Unsichtbare Rohtexte, Exportpayloads, Optionslisten und Graphbeschriftungen werden erst bei Bedarf aufgebaut. Retained Views pausieren versteckte Arbeit und uebernehmen bei Aktivierung aktuelle Eingaben; Workspacewechsel verwerfen den alten Zustand. Datenschutzarme lokale Dev-Messung bleibt ausdruecklich opt-in und ausserhalb des Produktionsbundles. Verfahren und Abnahmeregeln stehen in docs/architecture/navigation-performance.md. Festlegung 2026-09-08 (Phase 7/13B, GPO-Quellen): Die bestehende Policy-Analyseuebersicht ist fuer aktuelle Profil-, Identity- und Snapshotrevisionen autoritativ. Work uebernimmt ihre aktuellen Evaluations-IDs; wechselnde Ergebnisabdeckung ist niemals eine Importidentitaet. Die zusaetzliche Auswahl je Aggregation verwendet den gemeinsamen versionierten Evaluationsselektor. Vergleiche duerfen nur erscheinen, wenn ihre referenzierten Beobachtungen vollstaendig zum geladenen Timeslot-Scope gehoeren. Import- und Auswertungszeit bleiben getrennt; fehlende Kundenwerte beziehen ihren Importzeitpunkt aus demselben Evaluationskontext. Persistierte Historie und Originale bleiben unveraendert. Festlegung 2026-09-08 (Phase 13B, ausdruecklicher Nutzerwunsch): Die Security-Template-Regel vom 2026-07-21, jeden defekten unterstuetzten Eintrag zum Anlass fuer die Verwerfung des gesamten Artefakts zu nehmen, wird gezielt ersetzt. Nicht unterstuetzte Sektionen besitzen keine Key/Value-Grammatikpflicht. Isolierte fehlerhafte Eintraege werden diagnostiziert und ausgelassen, gueltige Instruktionen mit Originalwert und Quellzeile bleiben bei Dokumentstatus `partial` erhalten. Beschaedigte Abschnittszuordnung, Dekodierungs- und Ressourcengrenzen bleiben fail-closed. Die Inventarprojektion weist Teilverarbeitung aus und behauptet keine Vollstaendigkeit. Baseline-Consensus-Konflikte bleiben Review; der Fix waehlt keinen Gewinner und aendert weder Comparatoren noch Deviationfilter. Jede Baselineanalyse besitzt einen eigenen versionierten ADMX-Katalogdatensatz: Die Katalog-ID bindet deshalb Analyse-ID und Inhaltsidentitaet, auch wenn ADMX/ADML unveraendert sind. Technische Policy-Identitaeten und Kataloginhalte bleiben gleich; historische Analysen werden nicht ueberschrieben. Damit wird der beim ersten Bestandsreprocessing belegte PostgreSQL-Schluesselkonflikt behoben, ohne das Schema zu aendern. Festlegung 2026-09-06 (Phase 8, fehlende Folgequellen): Timeslotvergleiche trennen kuenftig gemessenen Fortschritt, Gesamtexposition und Evidence Coverage/Freshness. Fehlende erwartete Quellen werden nicht als behoben interpretiert. Offene Verpflichtungen werden mit Herkunft und Alter als `carried-forward-awaiting-revalidation` fortgeschrieben und bleiben scorewirksam; Rohbeobachtungen werden nicht als aktuelle Evidenz kopiert. Ein Scope-Ende ist ausschliesslich ueber eine begruendete, auditierte `retired-out-of-scope`-Entscheidung moeglich. Dieser generische Vertrag gilt fuer Scanner, GPOs und spaetere Tools und wird nicht ueber ein primaeres manuelles Auswahlhaekchen gesteuert. Festlegung 2026-09-06 (Phase 9/10, FindingReader-Reviews): Bearbeitbare Workflowdaten gehoeren zum kanonischen Finding-Review und damit in die ASSESSOR-Datenbank, nicht nur in Local Storage. Die stabile Occurrence-ID verbindet Aggregate und Quellansicht; Datenbankwerte gewinnen beim Laden, Local Storage bleibt Rueckfall und Migrationsquelle. Der exakte UI-Status wird additiv neben dem kanonischen Workflowstatus bewahrt; unbekannte kuenftige Marker bleiben bei Updates erhalten. Festlegung 2026-09-06 (Phase 13B, einzelnes GPO-Delete): Ein ausdruecklich bestaetigtes, projekt- und artefaktgebundenes Delete ist fuer beendete GPO-Importe zulaessig und entfernt neben der backendkontrollierten Originalkopie alle direkt oder transitiv davon abhaengigen Processing-, Identity-, Snapshot-, Evaluation- und Finding-Derivate. Eine Aggregation mit mehreren Quellen wird vollstaendig invalidiert, sobald eine ihrer Quellen geloescht wird; die uebrigen Quellimporte und das Environment Profile bleiben bestehen und koennen neu aggregiert werden. Queue-/Running-Jobs bleiben gegen Loeschung gesperrt. Die persistente Loesch-Outbox bleibt die Grenze zwischen relationalem Commit und Dateientfernung. Diese Festlegung ersetzt die Entscheidung vom 2026-07-21, Delete ausschliesslich fuer vollstaendig fehlgeschlagene GPO-Artefakte zuzulassen. Festlegung 2026-09-06 (Phase 13B, Baseline-Reimport): Eine ausdruecklich bestaetigte Baseline-Loeschung darf referenzierende, reproduzierbare Evaluation-/Finding-Derivate transitiv entfernen. Unveraenderliche Kundenquellen, GPO-Processing-Runs, Beobachtungen, Environment Profiles und Snapshotaggregationen werden dadurch nicht geloescht. Diese Reimportfunktion ersetzt die Entscheidung vom 2026-08-22, referenzierte Baselines grundsaetzlich zu sperren. Festlegung 2026-09-06 (Phase 12/13B, Datenschutzgrenze der Result DB): Die Result DB enthaelt kanonische Findings und ausschliesslich explizit freigegebene, nicht identifizierende Zusatzbeobachtungen. Eine versionierte tool-/propertybezogene Allowlist rekonstruiert nur kontrollierte Titel, Klassen und eng validierte Aggregate, Konfigurationszustaende oder technische Metadaten; Subject-Identitaet, Originalwert, Attribute, Asset, Abschnitt und Locator bleiben intern. Unbekannte beziehungsweise zukuenftige Tools behalten ihre regulaeren Findings im generischen Importpfad, ihre Zusatzfelder bleiben jedoch bis zur Datenschutzklassifikation fail-closed ausserhalb der Result DB. Rohe GPO-Policy-Beobachtungen sind nur noch im ausdruecklichen internen Analysemodus fuer Work/GPO Analysis lesbar; bestaetigte Policy-Findings bleiben Result-DB-faehig. Diese Festlegung supersediert die Entscheidung vom 2026-09-03, rohe GPO-Policy-Beobachtungen auch in der Result DB darzustellen. Festlegung 2026-09-22 (Phase 12/13B, LLM-faehige Result DB): Das ausdrueckliche Nutzerziel supersediert den Teil der vorstehenden Entscheidung, nach dem regulaere Findings ihre importierten Regeltexte und GPO-Vergleiche ihre Kundenwerte in der normalen Result DB behalten duerfen. Die Result DB ist nun fuer jede Quellart eine Disclosure-Projektion 2.0.0. Nur kontrolliertes Produktvokabular, katalogeigene oeffentliche Regel-IDs, normalisierte Bewertungsachsen, kontrollierte Diagnosecodes und eng validierte nicht identifizierende Zusatzwerte duerfen passieren. Freie Quellprosa, Personen-/Firmen-/Tenant-/Domain-/Host-/Assetdaten, Reviewpersonen, Policy-Ist-/Sollwerte und interne Provenienz bleiben im `internal-analysis`-Pfad. Der JSONL-Export ist eine zweite unabhaengige Sperre und entfernt auch Scope-/Result-/Run-/Artefaktidentitaeten, Zeitpunkte und konkrete Such-/Filterwerte. Die Aussage betrifft Identifizierbarkeit; die anonymisierte technische Sicherheitsbewertung bleibt absichtlich erhalten, da andernfalls keine fachlich nutzbare LLM-Grundlage existiert. Nutzerkorrektur 2026-09-22 (Phase 12/13B, fachlich nutzbare Result DB): Die vollstaendige Ersetzung der Regelprosa durch generische Tooltitel war eine unbrauchbare Ueberkorrektur und wird durch Disclosure Policy 2.1.0 supersediert. Bekannte Scannerprofile behalten Titel, Beschreibung und Empfehlung als fachlichen Regelinhalt; Purple Knight behaelt zusaetzlich eng validierte native `SI`-Regel-IDs. Die Projektion entfernt exakte private Literale aus Asset-, Review-, Scope- und Locatorfeldern und redigiert E-Mail/UPN, Domain, SID, Directory-Objekt, Konto, IP/MAC, URL und Pfad sowie Organisationsnamen mit Rechtsformsuffix durch typisierte Platzhalter. Unbekannte Quellen bleiben generisch; Asset und Reviewperson selbst werden nicht ausgegeben. Eine UI-Regression muss sichern, dass das Aufklappen einer Result-DB-Zeile zugleich fachlichen Inhalt zeigt und das betroffene Objekt verbirgt. Festlegung 2026-09-06 (Phase 13B/13C, ausdruecklicher Nutzerwunsch): Vor Rueckfragen zum GPO-Zielkontext vorhandene Result-DB-/PingCastle-Umgebungsbeobachtungen im selben Assessment auswerten. Belegte DC-Betriebssystemkontexte duerfen mit Beobachtungsprovenienz automatisch entstehen; dies erweitert die bisherige ausschliesslich manuelle Profilwahl. Domain-/Forest-Functional-Level, Herkunft des Backups vom DC und Registry-Pfade allein beweisen weder Betriebssystemversion noch GPO-Anwendung auf DC/Member/Client. Gemischte oder unzureichend belegte Plattformen bleiben klaerungsbeduerftig. Technische Identitaeten gleichen konkrete Einstellungen ab, nicht GPO-Namen. Festlegung vom 2026-09-06 (Phase 11, lokaler Persistenzbetrieb): Der vorhandene Docker-Compose-Bestand `assessor-2_0` mit der Datenbank `assessor`, dem Container `assessor-2_0-postgres-1` und dem persistenten Volume `assessor-2_0_assessor-postgres-data` ist der einzige kanonische lokale ASSESSOR-Datenbestand fuer diesen Workspace. Lokale Starts verwenden ausschliesslich `127.0.0.1:5432`. Die Compose-Konfiguration bindet dieses Volume deshalb namentlich als `external`; bei fehlendem Bestand oder Portkonflikt muss der Start fehlschlagen, statt eine weitere ASSESSOR-Datenbank oder einen Ersatzport anzulegen. Diese ausdrueckliche Nutzerfestlegung ersetzt die bisherige implizite, verzeichnisabhaengige Compose-Projektidentitaet. Der interne Browser-/Backend-/PostgreSQL-Zielaufbau bleibt unveraendert. | Datum | Entscheidung | Begründung | | 2026-10-09 | BSI Stufe 2 wird vollstaendig umgesetzt und um eine Konsistenzpruefung ISO <-> BSI erweitert: direkte BSI-Zuordnung je Regel gegen die Ableitung aus akzeptierten ISO-Kontrollen, Zustaende `Consistent`, `Inconsistent`, `No reference`, Pruefung im Tab `Compliance`; die automatische Annahme der ISO-Vorschlaege bleibt unveraendert (Phase 13F, Abschnitt Stufe 2 mit Konsistenzpruefung, Entwurf). | Nutzerentscheidung; Abweichungen zwischen beiden Wegen zeigen pruefwuerdige ISO-Zuordnungen, ohne eine Entscheidung automatisch zu aendern. | | 2026-10-08 | BSI Grundschutz++ wird zweites Framework der Compliance Engine: direkte Zuordnung mit der offiziellen BSI-Zuordnung ISO 27001 -> Grundschutz++ als erster Stufe, nur Kernel-Anforderungen, Katalogbeschaffung wie bei MITRE, zunaechst nur manuelle Zuordnung (Phase 13F, Abschnitt BSI Grundschutz++). | Nutzerentscheidung; die BSI-Zuordnung liefert ohne Modellaufruf eine erste Einordnung, die direkte Zuordnung die anforderungsgenaue Praezision. | | 2026-09-23 | Der globale ISO-Korpus wird bis zur Phase-14-Nutzerverwaltung nur mit einem separaten Operator-Upload-Token aus Data Hub erneuert. Die privaten versionierten JSON-Korpusquellen bleiben im Artefakt-Volume, Original-PDFs nur temporaer; der freigegebene Embedding-Endpunkt darf den lizenzierten Kontrolltext erhalten. | Der Nutzer hat Token, private Wiederaufbauquelle und Embedding-Ziel ausdruecklich bestaetigt. Eine fuer alle Projekte wirksame Korpusaktivierung darf nicht allein von der allgemeinen VPN-/App-Erreichbarkeit abhangen. | | 2026-09-14 | AI Overview verwendet ausschliesslich das per Backend konfigurierte, unternehmensverwaltete LiteLLM ueber HTTPS; ein lokales Modell oder Browserzugriff auf Gateway/Key ist nicht vorgesehen. Der vollstaendige aktive Timeslot wird ueber den bestehenden Privacy-Safe-JSON-Vertrag uebertragen, grosse Eingaben werden ohne Record-Trunkierung hierarchisch zusammengefuehrt, und nur validierte Endergebnisse werden je Timeslot persistiert. | Der Nutzer hat Work-LiteLLM samt URL, Modellalias und API-Key bereit. Die bestehende Exportgrenze verhindert einen zweiten, weiter gefassten AI-Datenvertrag; serverseitige Secrets, explizite Ausloesung, lokale Validierung und append-only Historie halten Netz-, Kosten-, Datenschutz- und Auditgrenzen nachvollziehbar. | | 2026-09-07 | Die geladene Client Info ist innerhalb der Wurzelklasse `.client-command-center` eine feste dunkle Command-Center-Ausnahme von der allgemeinen Kachelkomposition. Die genehmigte Hierarchie ist Client/Assessment/Source, sechs Icon-Fakten, Overall Score mit acht visuell verbundenen Security Domains, Priority Findings plus Assessment Gaps und abschliessend fuenf werkzeugspezifische Source-Flaechen. | Die ausdruecklich genehmigte Referenz ist ein zusammenhaengendes Erstgespraechs-Dashboard und keine Sammlung allgemeiner Anwendungskacheln. Eine eng begrenzte Ausnahme bildet diese Hierarchie originalgetreu ab, ohne Data Hub, Work, Result DB, Pathfinder oder Shell visuell zu veraendern. | | 2026-09-07 | Die Nutzerpraezisierung erweitert die unmittelbar folgende Positionsentscheidung: `Source: Scan` ist eine workspaceweite Navigationsfacette mit stabiler ID und vollstaendiger Optionsliste aus dem projektweiten All-Records-Blatt. Eine Auswahl aus einem dedizierten GPO-/Fachblatt wechselt auf dieses Aggregat und aktiviert dort direkt den ausgewaehlten Scan; lokale Facettennachzaehlung darf die Liste nicht reduzieren. | Der Filter soll nicht nur die aktuell sichtbaren Records einschraenken, sondern jederzeit den direkten Wechsel zu jedem geoeffneten Scan ermoeglichen. Nur die projektweite Quelle und ein positionsunabhaengiger Identifikator verhindern, dass ein Fachblatt alle anderen Scanner aus der Auswahl verliert oder der gesetzte Filter beim Blattwechsel unbrauchbar wird. | | 2026-09-14 | Eine eindeutige `Source: Scan`-Auswahl ist auf dem projektweiten All-Records-Blatt ein bindender Werkzeugkontext. Fuer GPOs gelten dort derselbe Facetten- und Statusvertrag wie auf dem dedizierten GPO-Blatt; die Kontextreduktion geschieht vor allgemeiner Priorisierung und Facettenlimit, ungueltige Altfilter werden entfernt. Dokumentierte Nutzerentscheidungen sind Abnahmekriterien; ein Konflikt mit Projektregeln ist vor der Umsetzung zu melden und darf nicht still umgangen werden. | Eine reine Datensatzfilterung bei unveraendertem Mischprofil zeigt fachfremde Scannerfilter und kann unsichtbare Fremdfilter aktiv lassen. Der Kontext muss deshalb die angebotene und wirksame Filtermenge bestimmen. Transparente Konfliktmeldung erhaelt die Nachvollziehbarkeit bindender Vereinbarungen. | | 2026-09-07 | `Source: Scan` ist ein permanenter Provenienzfilter jeder Work-/Graph-Ansicht und steht stets als letzter Filter ganz rechts. In der reinen GPO-Ansicht ruecken die fachlichen Filter linksbuendig zusammen; deren sichtbares Limit betraegt elf statt zehn, damit Status, neun GPO-Fachfacetten und die Source-Facette gleichzeitig erhalten bleiben. Ein fehlendes explizites Source-Feld wird praesentativ aus Scan-/Profilmetadaten ergaenzt. | Die Quellenherkunft muss unabhaengig vom aktiven Werkzeug jederzeit auffindbar und an einer stabilen Position bedienbar sein. Einwertige Source-Werte sind fuer Provenienz weiterhin relevant und duerfen weder durch die allgemeine Nuetzlichkeitspruefung noch durch das Facettenlimit verschwinden. | | 2026-09-07 | Kunden sichtbare GPO-Quellen zeigen ausschliesslich die interne Referenz ab GPO-GUID beziehungsweise `DomainSysvol/GPO`; jeder lokale oder artefaktbezogene Praefix wird in der Praesentationsschicht entfernt. Quellen stehen unmittelbar als technische Pfadzeilen in der Evidence-Zelle, ohne aufklappbaren `Show source`-Zwischenschritt und ohne doppelte Textueberschrift. Nicht eindeutig sanitisierbare Pfade werden nicht teilweise angezeigt. | Lokale Ablage- und Backupordner sind fuer die fachliche Kundenbewertung irrelevant und koennen interne Namen offenlegen. Die GPO-GUID plus interner Policy-/Datei-Locator reicht fuer eindeutige, kundenfaehige Evidenz; fail-closed Reduktion verhindert versehentliche Preisgabe bei unbekannten Pfadformen. | | 2026-09-07 | GPO-Duplicates folgen derselben vierstufigen Results-Lesepipeline wie Conflicts, verwenden aber `Observed value` mit genau einer gemeinsamen Wertzeile und einen informativen Duplicate-Hinweis. Dieser Hinweis behauptet weder Fehler noch Unbedenklichkeit, sondern ausschliesslich: identische Quellenbelegung und fuer sich allein keine Baselineabweichung. | Gleiche Informationsarchitektur macht Conflict und Duplicate vorhersehbar bedienbar. Die getrennte Semantik verhindert zugleich, dass reine Quellenredundanz als Fehlkonfiguration erscheint oder eine gegebenenfalls separate Baselineauswertung verdeckt. | | 2026-09-07 | Die GPO-Conflict-Erklaeransicht folgt verbindlich der Reihenfolge Ursache, betroffenes Setting, beobachtete Varianten und technische Details. Varianten erscheinen in einer gemeinsamen Tabelle statt in Einzelkarten. Diese Nutzerkorrektur ersetzt fuer die Primaerdarstellung die unmittelbar folgende Kartenentscheidung; deren neutrale Semantik, Quellbindung, exakte Leer-/Whitespacewerte und sicherer Fallback bleiben erhalten. | Die Leserin soll zuerst verstehen, warum ein Konflikt vorliegt, danach den betroffenen Registrykontext erkennen und erst anschliessend die Werte zeilenweise vergleichen. Eine gemeinsame Tabelle bietet bei drei oder mehr Varianten die bessere Scan- und Vergleichbarkeit; technische IDs bleiben letzte Detailstufe. | | 2026-09-07 | GPO-Konflikte verwenden in Results eine erklaerende Variantenprojektion statt zweier primaerer Evidenztabellen. Jede Variante bleibt neutral, bindet ihre Quellen direkt und zeigt leere beziehungsweise reine Whitespace-Werte explizit; wirksame GPO-Praezedenz wird nicht behauptet. Vollstaendige technische Pfade und IDs bleiben eingeklappt verfuegbar, die alte Tabellenprojektion bleibt sicherer Fallback. | Die primaere Nutzerfrage ist, welche Werte sich widersprechen und durch welche Quellen sie belegt sind. Generische Tabellen wiederholten Kontext, machten leere Werte unsichtbar und zwangen zum Querlesen technischer IDs. Progressive Disclosure verbessert die Erklaerung, ohne Evidenz zu normalisieren, einen Gewinner zu erfinden oder die bestehende Vergleichs-/Persistenzgrenze zu veraendern. | | 2026-09-03 | Die verbindliche Client-Info-Startansicht expandiert nur `Assessment Status`; alle neun anderen Informationskarten starten minimiert. | Der Gesamtstatus bleibt ohne Interaktion sichtbar, waehrend die darunterliegende feste 3/2/2-Matrix und die rechte Rail als kompakte, stabile Navigation beginnen. Inhalte werden nicht entfernt und bleiben ueber die Standarddreiecke einzeln erreichbar. | | 2026-09-03 | Minimierte Client-Info-Karten bleiben ueber die volle Breite ihrer festen Spalte gespannt. `Directory Overview` zeigt keine werkzeugspezifische PingCastle-Engine-Version mehr. | Collapse soll ausschliesslich die Hoehe reduzieren und darf die stabile Spaltengeometrie nicht veraendern. Die Directory-Karte beschreibt den Verzeichniszustand; eine Scanner-Engine-Version gehoert nicht zu diesem fachlichen Ueberblick und bleibt nur in der unveraenderten Provenienz erhalten. | | 2026-09-03 | Das Client-Info-Hauptraster verwendet drei feste Karten-Spalten mit der dauerhaften Zuordnung 3/2/2 und keine dichte Masonry-Neuverteilung mehr. Collapse veraendert nur die Hoehe innerhalb derselben Spalte. Die Desktop-KPI-Matrix streckt ihre sechs Karten auf die Hoehe von `Assessment Status`; ihre feste Reihenfolge ist Compliance Score, Deviation, High Severity, Passed, Typed Observations, Directory Sections. Nur Deviation und High Severity sind Filteraktionen. | Die ausdrueckliche Nutzeranforderung priorisiert stabile raeumliche Orientierung gegenueber global maximaler Verdichtung. Feste Spalten verhindern Positionswechsel beim Minimieren und Maximieren; die gemeinsame Kopfhoehe beseitigt die grosse Leerstelle. Begrenzte Klickziele vermeiden versehentliche Filterwechsel, waehrend die staerkere Compliance-Hierarchie den wichtigsten Gesamtwert hervorhebt. Diese Entscheidung supersediert die unmittelbar folgende Masonry-Entscheidung. | | 2026-09-03 | Rohe aktuelle GPO-Policy-Beobachtungen werden als eigener Unified-Result-Quelltyp `policy-observation` timeslotgebunden in Result DB und Work dargestellt. Sie sind Kontext-/Reviewdaten mit nicht anwendbaren Finding-Achsen und werden niemals allein durch die Sichtprojektion zu Abweichungen oder Findings. Diese Nutzerkorrektur supersediert fuer die gemeinsame Work-Ansicht die unmittelbar folgende fruehere Beschraenkung von `Source: Scan`: Dort erscheint nun auch `Group Policy`; im Data-Hub bleibt das Backup weiterhin kein auswaehlbarer Scanner-Run. | GPO-Inhalte muessen nach dem Import konkret auffindbar und exportierbar sein, auch solange Identity-, Baseline- oder Risikokataloge noch keine bestaetigte Abweichung erlauben. Die getrennte Quellart schliesst die Sichtbarkeitsluecke, ohne die konservative Finding-Factory-Grenze aufzuweichen. | | 2026-09-03 | GPO-Backups verwenden im Timeslot keine Scanner-Auswahlbox. Eine eigene Quellenmarkierung und `View` oeffnen die projektgebundene Policy-Analyse; `Source: Scan` bleibt ausschliesslich der Provenienzfilter fuer Scanner-Runs. | Ein GPO-Backup ist verarbeitbare Policy-Evidenz, aber kein kanonischer Scanner-Run. Eine deaktivierte Checkbox suggeriert fehlende Berechtigung oder Nichtauswaehlbarkeit, waehrend eine explizite Anzeigeaktion die vorhandenen Analysedaten erreichbar macht, ohne GPO-Evidenz faelschlich in den Scanner-Scope umzudeuten. | | 2026-09-03 | GPO-Backups werden im Data-Hub-Timeslot als eigene Quellen neben Scanner-Reports dargestellt. Ordnerauswahl und vorhandenes ZIP sind getrennte UI-Wege, verwenden aber dieselbe projekt- und timeslotgebundene Backend-Ingestion; nur der Ordnerweg erzeugt zuvor lokal das deterministische Transport-ZIP. | Die bislang bereits gespeicherten GPO-Quellen duerfen nicht unsichtbar bleiben oder als Scanner-Run erscheinen. Zwei eindeutige Eingaben vermeiden Missverstaendnisse, ohne die gehärtete Validierungs-, Speicher- und Jobgrenze zu duplizieren oder aufzuweichen. | | 2026-09-03 | Ein kuratierter Policy-Evaluation-Regelkatalog wird nur aus einer lokalen regulaeren Datei geladen, wenn Pfad und erwarteter SHA-256 gemeinsam konfiguriert sind. Der Hash wird vor Parsing und fachlicher Validierung geprueft; ohne Konfiguration bleibt der eingebettete leere Freigabekatalog aktiv. | Kataloginhalte bestimmen sicherheitsrelevante Abweichungen und Severities. Eine explizite Hashbindung macht den freigegebenen Stand betriebsseitig nachvollziehbar, verhindert stillen Dateidrift und bewahrt den local-only Betrieb ohne automatischen Download oder implizite Aktivierung. | | 2026-09-03 | Das Policy-Analyse-Readmodell fuehrt neben der unveraenderlichen Run-Historie eine explizite aktuelle Sicht. Aktuell sind nur die durch aktive Profil- und Identity-Revisionen erreichbaren Aggregationen mit jeweils ihrer neuesten Evaluation und ihrem neuesten Finding-Run; Summary, Review Queue und Folgeaktionen werden daraus abgeleitet. | Reprocessing darf alte Konflikte, Katalogluecken, Abweichungen und Findings nicht als aktuellen Kundenzustand doppelt zaehlen. Gleichzeitig muss jeder fruehere Lauf fuer Audit und Reproduzierbarkeit erhalten bleiben. Dieselbe Aktivkettenselektion fuer Anzeige und Aktionen verhindert Bedienung auf veralteten Analysestaenden. | |---|---|---| | 2026-09-14 | Rebase-Reconciliation AI-Integration auf defender-iot: Der Result-DB-LLM-Export verwendet das versionierte, datensparsame Privacy-Safe-JSON-Schema mit anwendungsseitig berechneter Summary, vorhandenen Scanner-Regel-IDs, ausschliesslich handlungsrelevanten Findingdetails, kompakten Nicht-ausgefuehrt-Checks und gruppierten freigegebenen Environment-Fakten; er wird als einzelne Aktion `Export JSON` ueber den gemeinsamen Download-Adapter als Datei heruntergeladen. Fehlt eine Regel-ID, wird `null` exportiert. Dies supersediert die JSONL-Exportfestlegung vom 2026-09-03 als Result-DB-Ausgabeformat. | Beide Branches definierten dieselbe LLM-Uebergabe unterschiedlich. Das datensparsame, e-mail-redigierte JSON ist fuer die LLM- und Dashboard-Nutzung token-effizienter und direkt konsumierbar; der Dateidownload ersetzt den fluechtigen Clipboard-Weg und verwendet denselben Adapter wie die uebrigen Exporte. | | 2026-09-03 | Das Client-Info-Hauptraster verwendet eine Progressive-Enhancement-Masonry-Berechnung auf Basis real gemessener Kartenhoehen. Erst nach erfolgreicher Messung aktiviert es feine 1-px-Tracks und dichten Auto-Flow; ResizeObserver aktualisiert die Spannen bei Collapse, Inhalts- und Breitenwechseln. Zustandsbuttons verwenden das gemeinsame `TriangleIcon` unten/rechts. | Ein regulaeres CSS Grid reserviert pro Zeile die Hoehe der groessten Karte und kann kuerzere geschlossene Karten nicht unabhaengig nach oben packen. Die gemessene Span-Berechnung ermoeglicht echtes Nachruecken, waehrend das vor der Messung aktive Standardraster einen sicheren Fallback ohne Ueberlagerung bildet. Gemeinsame SVG-Dreiecke sind schrift- und kodierungsunabhaengig und entsprechen der bestehenden App-Konvention. | | 2026-09-03 | Die Environment-Fakten `Marked findings`, AD Recycle Bin, Backup/krbtgt, LAPS, WEF und OS bilden eine eigene Client-Info-Kachel `Infrastructure Details`; `Infrastructure & Resilience` bleibt eine reine Mengen-/Risikokarte. Beide verwenden denselben gemeinsamen minimierbaren Kartenvertrag. | Risikoindikatoren und beschreibende Infrastrukturwerte sind zwei unterschiedliche Informationsarten. Eine eigene Kachel bewahrt die luftige Faktengeometrie, verhindert eine ueberlange Mischkarte und laesst beide Gruppen unabhaengig minimieren, ohne ihre gemeinsame Snapshotquelle zu veraendern. | | 2026-09-03 | Maester-`Invoke-MgGraphRequest`-Ausfuehrungsfehler erhalten eine additive strukturierte Praesentation mit Primaermeldung, technischen Schluesselfeldern und standardmaessig eingeklapptem vollstaendigem Rohtext. Die Erkennung und Extraktion liegt in einem reinen werkzeugspezifischen Parser ausserhalb der React-Komponente; nicht erkannte Texte fallen verlustfrei auf die bestehende Rich-Text-Darstellung zurueck. | Lange PowerShell-/HTTP-/JSON-Ketten sind in einer Fliesstextzeile nicht diagnostizierbar. Die Trennung hebt die handlungsrelevante Graph-Ursache hervor, bewahrt Request-Korrelation und Originalbeleg und haelt source-spezifische Interpretation aus der allgemeinen Darstellungskomponente heraus. | | 2026-09-03 | Alle neun Client-Info-Informationskacheln verwenden einen gemeinsamen vollstaendig minimierbaren Interaktionsvertrag: initial geoeffnet mit Minus, minimiert ausschliesslich die Kopfzeile mit Plus und intrinsischer Kopfzeilenhoehe, erneut geoeffnet mit vollstaendigem Inhalt. Die sechs reinen Zahlenkacheln bleiben nicht minimierbar und unveraendert. | Der vorherige Schalter veraenderte bei den sechs Mengen-/Faktenkarten nur optionale Zusatzangaben und fehlte bei Donutkarten teilweise, obwohl die Bedienung als Minimieren verstanden wird. Ein identischer Vertrag fuer beide gemeinsamen Kartenkomponenten plus ein explizites `align-self: start` im minimierten Zustand verhindert wirkungslose Schalter und leere, auf Nachbarhoehe gestreckte Karten. | | 2026-09-03 | Die neueste bildlich bestaetigte Nutzerreferenz ersetzt den unmittelbar zuvor festgelegten minimierten Mengenbalken: Alle neun Client-Info-Infopanels zeigen minimiert nur `Titel — Primaermenge` und Plus. Expandiert verwenden alle mengenbezogenen Inhalte hohe Zeilen mit breitem 72-px-Mengenbalken; Assessment und Severity werden nicht mehr als Donut dargestellt. Faktenzeilen nutzen dieselbe luftige Vertikalordnung. Die sechs Zahlenkacheln bleiben unveraendert. | Der Balken ist Detailinhalt und darf die minimierte Uebersicht nicht erneut verdichten. Eine einheitliche expandierte Zeilengeometrie setzt die Referenz ueber alle Infopanels um, bewahrt reale Werte und vermeidet sowohl erfundene Verlaeufe als auch lokale kompakte Sonderlayouts. | | 2026-09-03 | Die abschliessende Nutzerreferenz supersediert die unmittelbar vorherige reine Collapsed-/Expanded-Geometrie: Sechs Zahlenkacheln stehen oben; sechs Mengenpanels bleiben darunter permanent als dreispaltige Uebersicht sichtbar. Plus/Minus betrifft nur Zusatzdetails. Assessment und Severity bleiben Donut-Kacheln in einer rechten Nebenspalte, Directory Overview folgt dort als Faktenkarte. | Das Zielbild zeigt die Mengenzeilen bereits bei einem Pluszustand und fordert die Donuts ausdruecklich daneben. Eine getrennte Hauptmatrix und Verteilungsspalte bildet diese Hierarchie direkt ab, ohne reale Kennzahlen zu verbergen oder Donutverteilungen in Mengenbalken umzudeuten. | | 2026-09-03 | Die Kopfzone von Client Info verwendet dasselbe 3:1-Verhaeltnis wie Hauptmatrix und rechte Rail: sechs verkleinerte quadratische Kennzahlen links, `Assessment Status` rechts in derselben ersten Reihe. | Der erste Donut soll ohne eine neue Zwischenreihe direkt neben den Zahlenkacheln stehen. Die gemeinsame Spaltenteilung richtet Kopf- und Inhaltszone aus und laesst die verbleibenden Rail-Karten automatisch nachruecken. | | 2026-09-03 | `Open Client` aktiviert nach Uebernahme des Projekt-/Timeslot-Scope standardmaessig den Hauptbereich `Client Info`; `Work` bleibt eine anschliessend bewusst waehlbare Ansicht. | Die Client-Informationsansicht ist der vereinbarte Einstieg in einen geoeffneten Mandanten. Der Scopewechsel und die Wahl des ersten Darstellungsbereichs bleiben getrennte Verantwortlichkeiten. | | 2026-09-03 | Ein expandiertes Client-Info-Infopanel belegt regulaer sechs Rasterspalten und an den Breakpoints die komplette verfuegbare Rasterbreite; minimiert bleibt es zwei Spalten breit. Der Kopf-Primaerwert wird im Body nicht wiederholt; neutrale Mengenserien verwenden die referenzierte ordinale Farbfolge. | Die Referenz besitzt eine breite linke Label-/Wertzone und eine ebenso breite rechte Visualisierungszone. Diese Geometrie ist in einer nur zwei Spalten breiten Karte nicht darstellbar und fuehrt zum sichtbaren Ueberlauf der Mengenbalken. Das Entfernen der ersten Doppelzeile stellt zugleich die Informationshierarchie und die vier sichtbaren Referenzreihen wieder her. | | 2026-09-03 | Die ausdrueckliche AMD-Adrenalin-inspirierte Nutzerreferenz ersetzt den frueheren Quadratvertrag ausschliesslich fuer die neun Client-Info-Detailkarten. Diese starten kompakt mit einer Primaermenge und einem Mengenbalken; Plus/Minus steuert die vollstaendigen bisherigen Details je Karte. Die sechs Zahlenkacheln bleiben unveraendert quadratisch. | Progressive Disclosure erhoeht die Uebersicht, ohne Daten zu entfernen. Mengenbalken stellen den aktuellen Umfang korrekt dar, waehrend erfundene Verlaufsgraphen ohne Zeitreihe eine nicht vorhandene Entwicklung suggerieren wuerden. Die Trennung bewahrt die bestaetigte Zahlenzeile und macht alle real vorhandenen Detailbereiche bedarfsgesteuert erreichbar. | | 2026-09-03 | Die responsive Nutzerkorrektur ersetzt die unmittelbar zuvor festgelegten drei Rasterzeilen: Client-Info-Rasterzeilen verwenden eine breakpointabhaengige Mindestgroesse mit inhaltsbasiertem Auto-Wachstum. Inhaltskarten sind mindestens quadratisch und wachsen bei Bedarf; `Infrastructure & Resilience` besitzt eine automatische Inhaltshoehe. | Eine feste Zahl von Rasterzeilen ist kein responsives Verhalten und kann bei anderer Breite oder Datenmenge erneut zu viel oder zu wenig Platz liefern. Inhaltsbasierte Trackgroessen reagieren sowohl auf den Viewport als auch auf die tatsaechlichen Werte, ohne Clipping oder starre Leerflaeche. | | 2026-09-03 | Die inhaltsreiche Dashboardkachel `Infrastructure & Resilience` belegt drei Rasterzeilen und hebt ausschliesslich fuer sich das starre Quadratverhaeltnis auf; alle anderen Client-Info-Karten behalten die gemeinsame quadratische Geometrie. | Die vollstaendige dynamische OS-Liste darf weder abgeschnitten werden noch aus der Kachel herauslaufen. Eine gezielte Hoehenerweiterung bewahrt die bestehende Faktenstruktur und den dichten Gesamtrastervertrag, ohne andere Karten unnoetig zu vergroessern. | | 2026-09-03 | Regulaere Work-Finding-Kacheln besitzen eine feste Inhaltsbreite von 358 px und eine Mindesthoehe von 223 px; sie duerfen fuer vollstaendigen Inhalt nach unten wachsen. Die Metadatenreihenfolge ist Status, Kategorie, Severity/Weight und Score. Pathfinder-Micro-Cards behalten ihre eigenstaendige kompakte Geometrie. | Das freigegebene Referenzformat muss die untere Groessengrenze jeder Matrixkachel bilden. Eine feste Breite verhindert das Aufziehen der letzten Reihe; eine Mindest- statt Fixhoehe bewahrt lange Titel und Metadaten ohne Clipping. Die semantische Badge-Matrix erzeugt unabhaengig von der Datensatzkombination dieselbe Lesereihenfolge. | | 2026-09-03 | Die Result DB verwendet `Deviation = Yes` als initialen und durch `Reset filters` wiederhergestellten Arbeitszustand. Ihr LLM-Export ist versioniertes JSONL: ein Manifest mit aktivem Timeslot-/Projekt-Scope und allen Nutzerfiltern, danach eine Zeile pro vollstaendigem Unified Result. | Abweichungen sind die primaere Analysemenge. JSONL bewahrt verschachtelte Evidenz und Provenienz, bleibt an Datensatzgrenzen teilbar und ist fuer LLM- sowie maschinelle Weiterverarbeitung robuster als eine flache CSV- oder unstrukturierte Markdown-Ausgabe. Der Manifest-Snapshot macht die exportierte Auswahl reproduzierbar. | | 2026-09-03 | Balkenlisten in den quadratischen Client-Info-Karten verwenden dieselben drei Spalten fuer Label, Track und Wert sowie eine stets reservierte zweite Wertzeile fuer optionale Quellenhinweise. Zahlen und Einheiten bleiben in einer nicht umbrechenden Wertgruppe; die Resilience-Kompaktkarte ueberschreibt diesen Vertrag lokal mit ihrer bestehenden Einspaltenanordnung. | Eine optionale Zusatzzeile darf weder die Hoehe einzelner Eintraege noch Track- oder Wertbreiten zwischen gleichartigen Karten veraendern. Gemeinsame Spaltenrollen machen die Werte visuell vergleichbar, ohne Daten oder Kartenstruktur umzudeuten. | | 2026-08-26 | Ein Policy-Evaluation-Regelkatalog darf den Status `released` nur tragen, wenn seine Runtime-Vertraege geschlossen validiert sind und fuer dieselbe technische Identitaet, denselben Auslieferungsmechanismus und ueberlappende Produkt-/Versions-/Rollen-/Scope-Kontexte hoechstens eine Regel aufloesbar ist. Wiederverwendete Risiko- und Abhaengigkeits-IDs muessen katalogweit dieselbe Definition besitzen. | Der kuenftige fachlich kuratierte Katalog wird an einer sicherheitsrelevanten Finding-Grenze ausgefuehrt. TypeScript-Typen allein schuetzen weder geladene noch historisch persistierte Runtime-Daten; Mehrdeutigkeit oder unbekannte Enumwerte muessen deshalb vor jeder Freigabe fail-closed blockieren. | | 2026-08-25 | Die appweite persistente Markierungs- und Auswahlfarbe ist auf ausdrueckliche Nutzerfestlegung immer Gelb und wird in beiden Themes ueber `--marking-color` gefuehrt. Kachelauswahl, Auswahlrahmen/-marker, gemerkte Eintraege und Graphauswahl verwenden diesen Token. Blau bleibt Tastaturfokus; Gruen, Rot, Orange und Severitytoene bleiben fachliche Statussignale. | Ein einzelner semantischer Markierungston verhindert violette oder skinabhaengig wechselnde Auswahlkonturen wie im Datahub-Screenshot und bewahrt gleichzeitig die Bedeutung bestehender Statusfarben. | | 2026-08-25 | Die unmittelbar zuvor fuer Client Info festgelegte flache SOC-Kachel ist auf ausdrueckliche Nutzerfestlegung der neue appweite Kachelstandard: keine sichtbare Normalzustandskontur, kein Radius und kein Schatten; Hover veraendert nur die Flaeche. Fokus, Auswahl und kleine Statusakzente bleiben funktionale Ausnahmen. Die gemeinsamen `--tile-*`-Tokens und Projektregeln tragen diesen Vertrag. | Ein zentraler Standard verhindert, dass neue oder bestehende Ansichten erneut weisse Konturen, Rundungen oder schwebende Schatten einfuehren. Flaechenkontrast und gemeinsamer Abstand erzeugen die gewuenschte ruhige, dichte SOC-Geometrie. | | 2026-08-25 | Das quadratische Client-Info-Raster uebernimmt die flache Kartenoberflaeche der Nutzerreferenz: regulaere Kennzahl- und Inhaltskacheln haben keine Aussenkontur, keinen Schatten, den zentralen Nullradius und keine dekorative Trennlinie unter dem Kartentitel. Farbige Fokus- und Auswahlkonturen bleiben als funktionale Zustaende erhalten. | In der Referenz werden Karten allein durch Flaechenkontrast und dunkle Zwischenraeume getrennt. Die bisherige helle Kontur, Rundung und Schattenkante erzeugten eine abweichende, unruhige zweite Geometrieebene. | | 2026-08-25 | Client Info verwendet nach ausdruecklicher Nutzerkorrektur ausschliesslich quadratische Kacheln in einem gemeinsamen dichten Raster: Kennzahlen belegen 1 x 1 Rastereinheiten, Inhaltskarten 2 x 2 Einheiten. Die frueher getrennten, ueber die Gesamtbreite gestreckten Kennzahl- und Inhaltsraster entfallen. | Zwei quadratische Groessen halten kurze Kennzahlen kompakt und geben inhaltsreichen Visualisierungen ausreichend Raum. Ein gemeinsames `dense`-Raster nutzt freie Zellen neben kleinen Kacheln und vermeidet breite Karten mit ungenutzter Innenflaeche. | | 2026-08-25 | Die Nutzerkorrektur ersetzt den sichtbaren Segmentcontainer aus der Kachelgrammatik vom 2026-08-24: Segmente sind anwendungsweit transparente Layoutgruppen ohne sichtbare Flaeche, Kontur oder Schatten. Gemeinsamer Radius, Inset und Gap bleiben als Geometrievertrag erhalten; Kacheln behalten ihre eigene Flaeche, Kontur, Auswahlmarkierung und den gemeinsamen dezenten Schatten. | Der zusaetzliche Gruppenunterbau konkurriert visuell mit den einzeln abgegrenzten Kacheln und erzeugt grosse leere Farbflächen bei unvollstaendigen Reihen. Transparente Segmente bewahren Gruppierung und Layoutstabilitaet, ohne eine zweite sichtbare Kartenebene einzufuehren. | | 2026-08-25 | Source Extractors duerfen versionierte `supportingTables` liefern: quellengetreue Tabellen, die Findings belegen, aber selbst keine Finding-Quelle sind. Die Importengine projiziert sie generisch als DatasetSheets; werkzeugspezifische Darstellung bleibt ausserhalb von React. PurpleKnight-HTML 1.1.0 verwendet diesen Vertrag fuer seine eingebetteten SI-Ergebnistabellen. | PurpleKnight-Excel speichert Ergebnisdetails als eigene Workbook-Sheets, waehrend der HTML-Bericht dieselben Tabellen als strukturierte Zeilen im inerten Reportmodell traegt. Ein gemeinsamer Supporting-Table-Vertrag erhaelt Tabellen, Provenienz und Result-Verknuepfung formatuebergreifend, ohne Parsinglogik in UI oder kanonische Persistenz zu verschieben. | | 2026-08-25 | Die Nutzerkorrektur ersetzt die flaeckende 16-px-Inhaltsuntergrenze des Typografievertrags vom 2026-08-24 durch eine hybride Dichteskala: H1 bis H4, 20-px-Detailtitel und kontinuierlicher Lesetext mit 16 px bleiben erhalten; strukturierte Tabellen-, Grid- und Raw-Data-Werte verwenden 14 px, Controls 13 px, Labels, Metadaten und Tabellenkoepfe 12 px sowie Badges 11 px. Inter und die semantischen Rollen bleiben verbindlich. | Lesetext benoetigt die groessere Stufe, waehrend dichte Tabellen und Bedienoberflaechen durch die pauschale Anhebung zu wenig Information zeigten. Eine eigene Tabellenkoerperrolle verhindert, dass strukturierte Daten und Prosa erneut ueber denselben Token gekoppelt werden. | | 2026-08-24 | Die PostgreSQL-Zieladresse der Serverlaufzeit wird bei Einzelvariablen-Konfiguration aus `ASSESSOR_POSTGRES_HOST` gelesen; ohne Wert bleibt `127.0.0.1` der lokale Standard. Eine explizite `ASSESSOR_DATABASE_URL` behaelt Vorrang. | Container teilen keinen Loopback-Namensraum. Der Compose-Dienstname `postgres` muss deshalb bis in die Backend-Verbindungszeichenfolge gelangen, ohne den bestehenden lokalen Entwicklungsbetrieb zu brechen. | | 2026-08-24 | Segmente und Kacheln folgen anwendungsweit einer gemeinsamen visuellen Grammatik: flacher abgerundeter Segmentcontainer mit einheitlichem Inset und Gap; darin gleichartige abgerundete Kacheln mit feiner Kontur, dezentem gemeinsamem Schatten und fester Inhaltsbreite. Statusfarbe bleibt Akzent oder Auswahlkontur. Unvollstaendige Zeilen werden nicht gestreckt. Jede Kachel begrenzt ihren Inhalt; Titel, Werte, Labels, Zusatztexte, Medien und Aktionen duerfen weder abgeschnitten, geklemmt, ellipsiert oder verborgen werden noch die Kachelgrenze ueberschreiten oder Nachbarkacheln ueberdecken. Notwendige Umbrueche erfolgen ausschliesslich an Wortgrenzen, Zahlen werden nicht getrennt. | Ein gemeinsamer Vertrag verhindert springende Geometrie und ansichtsspezifische Sonderkarten. Die harte Inhaltsgrenze schuetzt Nachbarkacheln, waehrend vollstaendige Inhalte die fachliche Lesbarkeit erhalten. Wenn Inhalt nicht vollstaendig passt, wird er intern neu angeordnet oder die Kachel verbreitert beziehungsweise responsiv neu angeordnet. | | 2026-08-24 | Die neueste Nutzerkorrektur, am 2026-08-25 weiter verdichtet, ersetzt fuer Finding-Titel die unmittelbar folgende fruehere 18-px-Reader-Entscheidung: Trefferlistentitel bleiben auf der 16-px-Inhaltsstufe und verwenden Regular 400 statt der frueheren staerkeren Gewichte; der Titel des geoeffneten Findings verwendet eine eigene 20-px-Detailtitelrolle mit Semibold. Die Finding-Abschnittsueberschrift bleibt 18 px, regulaere Matrixkacheln bleiben 16 px. | Die Trefferliste soll ruhig und scanbar bleiben, waehrend das geoeffnete Finding als primaerer Detailkontext klar hervortreten muss. Die getrennten semantischen Rollen und kompaktere Listengeometrie loesen den Kontrast ohne die 16-px-Untergrenze fuer inhaltstragenden Text zu unterschreiten. | | 2026-08-24 | Finding-Titel verwenden innerhalb von Work eine kompakte semantische Hierarchie: Reader-Titel und Finding-Abschnitt nutzen H3 mit 18 px; Titel in Trefferlisten und regulaeren Matrixkacheln nutzen H4 mit 16 px. Die globale H1-/H2-Hierarchie und die eigenstaendige Pathfinder-Micro-Card bleiben unveraendert. | Lange Scannerbezeichnungen benoetigen in Listen und Kacheln sonst zu viele Zeilen und verdraengen Status sowie Metadaten. Die vorhandenen Typografietokens erhalten die Lesbarkeitsuntergrenze von 16 px fuer inhaltstragenden Text und vermeiden lokale Sondergroessen. | | 2026-08-24 | Alle Donutdiagramme verwenden einen gemeinsamen visuellen Vertrag: vollstaendige neutrale 360-Grad-Ringspur, farbiger Wertbogen im Uhrzeigersinn ab 12 Uhr, flache Bogenenden, gemeinsame Strichstaerke und eine mittige Primaerkennzahl mit kleiner Einheit auf derselben Grundlinie. Mehrteilige Verteilungen behalten ihre fachlichen Farbsegmente innerhalb derselben Geometrie. | Eine gemeinsame Form verhindert wechselnde Gauge-, Ring- und Prozentdarstellungen zwischen Datahub, Dashboard und Sidebar. Die neutrale Restspur macht den verbleibenden Anteil sichtbar; die zentrale Kennzahl bleibt unabhaengig von Kartenbreite und Legende unmittelbar lesbar. | | 2026-08-24 | ASSESSOR verwendet anwendungsweit die lokal gebuendelte variable Schriftfamilie Inter. Die verbindliche Hierarchie ist H1 56 px/600, H2 32 px/600, H3 18 px/600, H4 und Fliesstext 16 px mit 600 beziehungsweise 400, UI-Labels und Buttons 14 px, Metadaten und Tabellenkoepfe 13 px sowie kompakte Finding-Badges 12 px. Uppercase bleibt Tabellenkoepfen und kurzen technischen Kennzeichnungen vorbehalten; regulaere Ueberschriften und Feldbezeichnungen verwenden Title Case. | Eine lokal gebuendelte Einzelschrift verhindert plattformabhaengige Fallbacks und visuelles Springen. Semantische Rollen statt lokaler Einzelwerte schaffen nachvollziehbare Abstufungen, waehrend 16 px fuer inhaltstragenden Text die bestehende Lesbarkeitsgrenze bewahrt und dichte Finding-Zustandszeilen visuell hinter den Titel treten. | | 2026-08-24 | HTML-Berichte oberhalb von 1 MiB werden in Browser- und Backendlaufzeit direkt mit dem begrenzten lexikalischen Extraktor verarbeitet; kleinere Dokumente duerfen weiterhin den DOM-Adapter verwenden. Die isolierte Worker-Zeitgrenze von 30 Sekunden und alle bestehenden Ressourcenlimits bleiben unveraendert. | Scanner-HTML kann schon deutlich unter der bisherigen 4-MiB-Schwelle in eine DOM-Struktur expandieren, die das Worker-Zeitbudget ueberschreitet. Der vorhandene lineare Extraktor bewahrt Tabellen-, Locator-, Sicherheits- und Source-Extractor-Vertraege, ohne einen vollstaendigen DOM-Baum aufzubauen oder die Schutzgrenze aufzuweichen. | | 2026-08-23 | Im Pathfinder gerenderte Knoteninformationen sind das eigenstaendige Designelement `Pathfinder Micro Card` und keine allgemeine Matrix-/Finding-TileCard. Der Vertrag besitzt die Varianten `finding` und `relation`; Category bleibt eine groessere Relation-Auspragung. Bestaetigte Geometrie, Typografie und Radien sind eigene Tokens beziehungsweise Konstanten, und die gesamte Komposition skaliert unveraendert mit Faktor 0,4 im Graphkoordinatensystem. | Graphkarten beschriften Knoten und muessen Beziehungen sichtbar lassen. Eine Uebernahme allgemeiner Kartenmasse oder nachtraegliche kamerainverse Typografie wuerde die bestaetigte Darstellung verdecken beziehungsweise ihre inneren Proportionen veraendern. Ein eigener Vertrag erlaubt gezielte Regressionen, ohne regulaere TileCards ausserhalb des Pathfinders zu beeinflussen. | | 2026-08-23 | Scanner-Kontext wird zweistufig gespeichert: quellengetreue Reportabschnitte mit Prosa und Tabellen sowie typisierte EnvironmentObservations mit stabilen Schluesseln und explizitem Erfassungszustand. Findings bleiben ein getrennter Vertrag. | Nur die Rohstruktur verhindert Informationsverlust bei neuen PingCastle-Versionen; nur typisierte Fakten erlauben zugleich belastbare Dashboard-, Result-DB-, LLM- und Toolabfragen. Ein Zustandsfeld trennt echte Abwesenheit von leerer Ausgabe, fehlender Berechtigung, Lizenzgrenze und Parserluecke. | | 2026-08-23 | Typisierte Scanner-EnvironmentObservations werden als eigener Unified-Result-Quelltyp `environment-observation` projiziert und niemals als Finding umgedeutet. Die Projektion ist ein abgeleitetes Readmodell ueber die bestehende Environment-Persistenz; sie bewahrt Original-/Normalwert und vollstaendige Provenienz, bietet eigene Environment-Facetten und nimmt diese Zeilen aus Finding-spezifischen Facetten heraus. | Result DB, Exporte, LLMs und weitere Tools benoetigen einen gemeinsamen timeslotgebundenen Zugriff, ohne aus DFL, OS, PKI, Trusts oder Coverage kuenstliche Schweregrade, IOEs, Abweichungen oder Reviews abzuleiten. Ein Readmodell vermeidet Datenkopien und eine weitere Migration, waehrend der getrennte SourceKind den Vertrag eindeutig haelt. | | 2026-08-23 | PingCastle Environment Context erhaelt einen eigenen Profilversionsschnitt 1.3.0 bei unveraendertem kanonischem Finding-Kompatibilitaetsschluessel `pingcastle-canonical-v1.1`. Profil 1.2.0 bleibt append-only historisch erhalten und wird als reimportbeduerftig bewertet; 1.3.0 ist der einzige aktuelle Stand. | Die Context-Erfassung war zuvor unter derselben sichtbaren Profilnummer wie contextlose Importe ausgerollt. Versionsgleichheit konnte deshalb einen technisch alten Backendimport faelschlich als `Current` markieren. Der Profilversionsschnitt macht die Datenfaehigkeit deterministisch, ohne Findings umzudeuten oder Altdaten umzuschreiben. | | 2026-08-24 | PingCastle-Profil 1.4.0 und Extractor 2.1.0 verwenden fuer bekannte Environment-Subjects die normalisierten sichtbaren PingCastle-Bezeichnungen und bilden jeden sichtbaren Environment-Unterpunkt als Punktpfad unter seinem Hauptbereich ab. Der Extractor bindet Tabellen ueber den unmittelbar vorangehenden H2-Berichtstitel, ordnet leere Tabellen ueber Row Count/Presence ein und erzeugt fuer Heading-only-Unterpunkte ausschliesslich eine quellentreue Presence-Beobachtung. Prosa-Fakten fuer Entra ID Configuration, Backup, LAPS, WEF und krbtgt erhalten explizite Pfade; Finding-Regeldetailbereiche bleiben ausgeschlossen. Profil 1.3.0 bleibt append-only historisch und wird reimportbeduerftig; der Finding-Kompatibilitaetsschluessel bleibt `pingcastle-canonical-v1.1`. | Die vorherige ASSESSOR-Taxonomie `active-directory-*` und reine Section-Key-Klassifikation entsprachen weder der sichtbaren Berichtshierarchie noch Unterpunkten ohne gefuellte Tabelle. Punktpfade erhalten diese Hierarchie im flachen Subject-Feld, waehrend Originalwerte, Tabellen-/Heading-Provenienz und der generische Fallback erhalten bleiben und keine Finding-Semantik in Environment Context gelangt. | | 2026-08-23 | Geoeffnete Pathfinder-Kacheln werden in einer eigenen, nach Kanten und Knoten gerenderten SVG-Kartenebene dargestellt. Die Platzierung waehlt anhand des sichtbaren Raums links oder rechts des Bezugspunkts, haelt einen festen Abstand, bleibt innerhalb der Graphflaeche und verschiebt mehrere Karten kollisionsfrei vertikal. Finding-Kacheln reservieren feste Bereiche fuer maximal fuenf Titelzeilen, zwei vollstaendige Badgezeilen und die rechte Aktionsspalte; mehr als vier Badges werden fachlich priorisiert und mit `+N` zusammengefasst. | SVG-Malreihenfolge und DOM-Nachbarschaft hatten spaeter gezeichnete Punkte vor Karten gelegt. Eine eigene letzte Ebene beseitigt diesen Fehler deterministisch. Feste Inhaltsbereiche verhindern teilweise abgeschnittene Badges; ein sichtbarer Ueberlaufzaehler erhaelt die Information, ohne die bestaetigte Kachelgroesse oder das gemeinsame Zoomverhalten zu veraendern. | | 2026-08-23 | Die bildlich bestaetigte Pathfinder-Kachel verwendet eine feste, vollstaendige Vorlage statt der zuvor verdichteten 148-mal-72-px-Findingstruktur: Findings werden intern auf 240 mal 176 px, Rollen auf 148 mal 72 px gesetzt und beide einmalig mit dem konstanten Graphfaktor 0,4 eingebettet. Danach skaliert die komplette Komposition ausschliesslich gemeinsam mit der SVG-Kamera. CIS-Hierarchie-Badges gehoeren wieder zur Finding-Kachel. | Das Negativbeispiel zeigte, dass die kleine logische Findingflaeche bei starker Graphvergroesserung Titel und Metadaten uebergross und abgeschnitten darstellte. Eine feste ausreichend grosse Vorlage bewahrt Titel, Status, Gewicht, CIS-Kategorien und Aktionen; der konstante Einbettungsfaktor veraendert sich beim Zoomen nicht und laesst die Kachel wie ein Bild skalieren. Diese Bildreferenz ersetzt die unmittelbar vorherige Entscheidung, CIS-Badges in der Pathfinder-Kachel auszulassen. | | 2026-08-23 | Der Backend-Verbindungszustand steht in jedem Bereichsheader unmittelbar vor dem Clientnamen und wird ohne Text oder Pillenrahmen als Paar aus einem roten und einem gruenen 9-mal-9-px-Quadrat dargestellt. Gruen ist bei bestaetigter Verbindung voll sichtbar; Rot ist bei fehlender oder noch ungepruefter Verbindung voll sichtbar, der jeweils andere Zustand bleibt gedimmt. | Die kompakte binaere Anzeige bewahrt den technischen Zustand, ohne den ohnehin knappen rechten Headerbereich mit `Server connected` zu belegen. Ein dauerhaftes Rot-/Gruen-Paar macht beide Bedeutungen wiedererkennbar; ARIA-Label und Tooltip erhalten die textliche Aussage fuer assistive Technik. | | 2026-08-23 | Die neueste Nutzerkorrektur ersetzt die inverse Kamerakompensation der Pathfinder-Kachelinhalte: Jede 148-mal-72-px-Kachel ist eine eingefrorene Komposition. Flaeche, Text, Hexagon, Badges, Aktionen, Abstaende und Konturen skalieren gemeinsam und ausschliesslich mit der SVG-Graphkamera. CIS-Hierarchie-Badges bleiben in Work und am Finding erhalten, werden in der Pathfinder-Kachel jedoch nicht dupliziert, weil dieselbe Hierarchie dort bereits als verbundene Kategorie-Knoten sichtbar ist. | Die Kachel soll sich beim Zoomen wie ein einziges Bild verhalten; getrennte Gegentransformationen veraendern ihre innere Proportion. Das Weglassen der redundanten CIS-Badges verhindert innerhalb der festen Grundflaeche abgeschnittene Elemente, ohne die Kategorien aus Filter, Finding oder Graphbeziehungen zu entfernen. | | 2026-08-23 | Work definiert fuer alle bestehenden und kuenftigen abgerundeten Hauptpanels einen Aussenrand-zu-Inhalt-Abstand von 20 px auf jeder Seite. Der kanonische Token ist `--panel-content-inset`; jede Ansicht wendet ihn genau einmal am Root an, auch responsiv. | Ein gemeinsamer Root-Inset verhindert springende Inhaltskanten zwischen Bereichen und vermeidet doppelte Abstaende in Split-Panes. Die Projektregel macht den Standard fuer neue Panels verbindlich statt nur implizit im aktuellen CSS. | | 2026-08-23 | Die Pathfinder-Titelgroesse von 16 px bezeichnet die sichtbare Bildschirmgroesse. Der gesamte UI-Inhalt einer Kachel wird invers zur Kamera skaliert, waehrend die Kachelflaeche selbst proportional zoomt. | Ein blosser logischer `font-size: 16px` wird durch die SVG-Kamera vergroessert und erscheint bei starkem Zoom deutlich groesser als der zoomstabile Text neben dem Punkt. Gemeinsame Inhaltskompensation haelt auch Symbole, Badges und Aktionen im geforderten Verhaeltnis. | | 2026-08-23 | Jeder Bereichs-Header zeigt bei vorhandenem Clientkontext den Clientnamen als ungerahmten rechtsbuendigen 16-px-Text. Im Data-Hub-Detail hat der dort geoeffnete Client Vorrang vor dem aktiven Work-Client. | Der Clientkontext muss unabhaengig vom Bereich sofort sichtbar sein. Die Detailprioritaet verhindert einen falschen Namen, wenn Stammdaten eines anderen Clients verwaltet werden, ohne dessen Timeslot zu oeffnen. | | 2026-08-23 | Die neueste Nutzerkorrektur ersetzt die Pathfinder-Finding-Grundflaeche von 240 mal 176 px: Finding- und Rollenkacheln verwenden gemeinsam 148 mal 72 px und 16-px-Titeltext entsprechend der Punktbeschriftung. Die Matrixkachel wird ausschliesslich im Pathfinder kompakt angeordnet. | Gleichartige ausgewaehlte Graphpunkte sollen visuell dieselbe Kachelgroesse erhalten. Die kontextspezifische Verdichtung verhindert, dass diese Entscheidung die inhaltsreichere regulaere Matrixansicht verkleinert. | | 2026-08-22 | Pathfinder-Rollenkacheln verwenden 148 px logische Breite und trennen Titel nicht innerhalb einzelner Woerter; regulaere Umbrueche an Wortgrenzen und die bestehende Zeilenbegrenzung bleiben erhalten. | Die bisherige 116-px-Kachel bot nach Icon, Abstand und Innenrand selbst fuer kurze Kategorien wie `Anomalies` zu wenig Platz und `overflow-wrap: anywhere` erzeugte einen fachlich unnoetigen Wortbruch. | | 2026-08-22 | Path Snapshots wenden im Workbereich einen eigenen temporaeren Finding-ID-Scope an. Der Pathfinder bleibt bei Bereichswechseln montiert und passt die Kamera bei der Rueckkehr nur nach einer geaenderten Graphsignatur neu ein. | Ein Path Snapshot beschreibt eine konkrete Finding-Nachbarschaft und darf weder Workspace- noch Reviewzustand vortaeuschen. Das Erhalten derselben Graphinstanz bewahrt Kamera und Interaktion exakt; die Signaturpruefung erlaubt zugleich ein korrektes Refit nach echten Filter- oder Datenwechseln. | | 2026-08-22 | Die neueste Nutzerkorrektur ersetzt die zwischenzeitliche inverse Zoomtransformation der Pathfinder-Kacheln: Finding- und Rollenkacheln skalieren proportional mit der Graphkamera und duerfen bei weitem Herauszoomen unter lesbare Badgegroesse schrumpfen. Die Finding-Grundeinheit ist 240 mal 176 px; Punkttexte bleiben zoomstabil. | Eine bildschirmstabil grosse Kachel dominiert im herausgezoomten Netz und verdeckt Beziehungen. Proportionale Skalierung bewahrt die raeumliche Bedeutung; die groessere logische Hoehe verhindert zugleich abgeschnittene Metadaten, ohne die Darstellung bei weitem Zoom wieder aufzublaehen. | | 2026-08-22 | Alle ringmarkierten Nicht-Finding-Knoten im Pathfinder verwenden rollenunabhaengig den gemeinsamen Token `--graph-relation: #9333EA`; Finding-Knoten verbleiben auf der zentralen Severity-Skala. | Der Ring kennzeichnet bereits die gemeinsame semantische Rolle als Struktur- beziehungsweise Beziehungsknoten. Eine einheitliche violette Farbe macht diese Gruppe sofort erkennbar, ohne Kategorien, Frameworkbeziehungen oder Ziele mit einer Severity zu verwechseln. | | 2026-08-22 | Der Pathfinder-Kopf visualisiert ausschliesslich aktive nutzergesteuerte Filter als dynamische Spur aus gelbem Rechtsdreieck, Filterbezeichnungen und gelben Plus-Trennern. Die Reihenfolge folgt Suche, sichtbaren Facetten und `My Workspace`; inaktive beziehungsweise graphintern feste Filter erscheinen nicht. | Der grosse Bereichskopf soll den aktuellen Analysekontext auf einen Blick zeigen, ohne den Filterzustand zu duplizieren oder den festen Deviation-Scope als veraenderbare Auswahl misszuverstehen. Die Ableitung aus denselben Facetten-IDs und Quellwerten verhindert Abweichungen vom Panel. | | 2026-08-22 | Karten und Punkttexte besitzen im Pathfinder getrennte lokale Darstellungsschalter. `Labels` bezeichnet die Kacheln gepinnter Knoten und startet eingeschaltet; `Text` bezeichnet die Beschriftungen neben allen Punkten und startet ausgeschaltet. | Kacheln liefern Details fuer bewusst aktivierte Punkte, waehrend die vielen dauerhaften Punkttexte das Netzwerk verdichten. Unabhaengige Schalter erlauben jede Kombination, ohne Auswahl-, Pfad- oder Filterzustand umzudeuten. | | 2026-08-22 | Der Pathfinder verwendet als sichtbare Quellenwahl ausschliesslich die gemeinsame dynamische Facette `Source: Scan`; der separate Blattselector wird dort nicht gerendert. | Nutzer waehlen fachliche Scannerlaeufe und nicht technische Import-/Detailblaetter. Die bestehende Work-Facette bewahrt Scannername, Zeitstempel, Zaehler und gemeinsamen Filterzustand ohne doppelte Graphlogik. | | 2026-08-22 | Der Graphbereich traegt in Navigation und Anwendungskopf den Produktnamen `Pathfinder`; der technische AppArea-Schluessel bleibt `graph`. | Ein reiner sichtbarer Produktname darf bestehende Navigation, CSS-Selektoren, Snapshot-Wiederherstellung oder internen Zustand nicht durch eine unnoetige technische Umbenennung migrieren. | | 2026-08-22 | CIS-CAT-Results unterscheiden drei semantische Zeilenrollen: `Criterion` als gruene Sollbedingung, vom Bericht als ausgewertet markierte Istwerte als roten Verstoss und den ausdruecklichen Hinweis auf fehlende Systemelemente weiterhin als blaue Information. Die Muster und der Ton der ausgewerteten Zeile sind Teil der deklarativen CIS-CAT-Praesentation; die gemeinsame Results-Komponente rendert nur die abstrakte Rolle. | Criterion und beobachteter Istwert tragen entgegengesetzte Bedeutung und duerfen nicht dieselbe Evidenzfarbe verwenden. Profilsteuerung bewahrt die Parser-/Praesentationsgrenze und verhindert, dass generische oder andere Werkzeugtabellen allein wegen eines Wortes oder Importmarkers fachlich umgedeutet werden. | | 2026-08-22 | Ein Graph-Snapshot ist ein `Path Snapshot`: Er speichert die Menge gepinnter Graphknoten und deren direkte Ein-Schritt-Nachbarschaft zusaetzlich zum gemeinsamen View-Zustand. Normale und Path Snapshots teilen pro Client/Timeslot genau sieben Speicherplaetze; Path Snapshots werden in Work rot umrandet und oeffnen beim Anwenden wieder den Graphen. | Der fachliche Wert des Graph-Snapshots liegt im ausgewaehlten Beziehungspfad, nicht nur in Suche und Facetten. Ein gemeinsamer Speicher bewahrt die bestehende Scope-Grenze und macht die knappe Snapshotleiste vorhersehbar; Typkennzeichnung verhindert, dass Work-Ansichten und Graphpfade visuell verwechselt werden. | | 2026-08-22 | Das Graph-Panel verwendet fuer `My Workspace` und Ansichts-Snapshots dieselben AppProvider- und `ViewBookmarks`-Vertraege wie Work. Die Checkbox ist ohne markierte Findings deaktiviert; gespeicherte Ansichten bleiben am bestehenden Client-plus-Timeslot-Scope gebunden. | Workspace-Markierungen und Ansichtsaufnahmen sind fachlicher Arbeitszustand und keine Graph-Eigenschaft. Eine zweite Graph-spezifische Ablage oder Filterimplementierung koennte von Work abweichen und Snapshots zwischen Erhebungsstaenden vermischen. | | 2026-08-22 | CIS-CAT-Regelnummern werden praesentativ und profilgebunden als Hierarchie interpretiert: Die vollstaendige Nummer bleibt Finding-ID, alle echten numerischen Eltern werden als `CIS n`, `CIS n.m` und gegebenenfalls weitere Zwischenstufen abgeleitet. Die Ableitung speist Graph, dynamische Facette, Finding-Reader und Matrix-/Graphkachel, ohne Quellfelder oder kanonische Persistenz zu veraendern. | CIS-CAT liefert in den vorhandenen Assessment-Results keine eigene Category-Spalte, die Nummern tragen aber die Benchmarkstruktur. Eine gemeinsame reine Ableitung verhindert isolierte Findings und haelt Filter und Darstellung konsistent; numerische Labels vermeiden erfundene Abschnittsnamen, die je Benchmark und Version variieren koennen. | | 2026-08-22 | Finding-Vorschauen im Phase-7-Netzwerk verwenden direkt den gemeinsamen Matrix-`TileCard` mit Originaltitel, Severity-Hexagon, Outcome, Badges, Bookmark und Results-Aktion. Die Finding-Kachel verbleibt im Graph-Koordinatensystem und skaliert proportional mit der Kamera; nur die reduzierten Rollen-Vorschauen und reinen Textlabels bleiben zoomstabil. | Matrix und Graph sollen dasselbe Finding nicht mit zwei unterschiedlich nachgebauten Kacheln darstellen. Die Wiederverwendung verhindert Darstellungsdrift und erhaelt alle bestehenden Kachelaktionen; proportionale Skalierung entspricht der raeumlichen Graphmetapher und der ausdruecklichen Nutzervorgabe. | | 2026-08-22 | Finding-Punkte im Phase-7-Netzwerk verwenden direkt die bestehende Severity-Farbskala; `unknown` erhaelt eine eigene neutrale blaue Graphfarbe statt Grau. Beim Hover oder Pin eines Knotens werden nur seine unmittelbar inzidenten Kanten rot und staerker hervorgehoben, wobei Hover den zuletzt gepinnten Knoten temporaer uebersteuert. | Punktfarbe und direkte rote Pfade vermitteln zwei getrennte Informationen: Risiko des Findings und aktuelle Nachbarschaft im Netz. Eine eigene Unknown-Farbe vermeidet die vom Nutzer ausgeschlossene graue Severity-Darstellung, ohne `unknown` einer fachlich falschen bekannten Severity zuzuordnen. | | 2026-08-22 | Die Phase-7-Graphprojektion bildet vorhandene fachliche Beziehungen statt eines primaeren Sternzentrums ab: Jedes Finding wird mit allen Kategorien, allen expliziten ATT&CK-Taktiken beziehungsweise Techniken sowie allen D3FEND-Zuordnungen verbunden. Kategorie-, D3FEND-, Technik- und Taktikknoten sind reine praesentative Ableitungen aus den unveraenderten Quellfeldern; Severity bleibt eine Darstellungseigenschaft und kein Beziehungsersatz. | Die bisherige Reduktion auf `primaryTactic` liess gueltige Sekundaerbeziehungen und damit unter anderem `Lateral Movement` optisch leer erscheinen; das Ignorieren der Kategorie- und D3FEND-Felder erzeugte isolierte Sternhaufen. Eine vollstaendige, deterministische Projektion zeigt die tatsaechliche Mehrfachzuordnung, ohne Import-, Normalisierungs- oder Persistenzdaten umzuschreiben. | | 2026-08-22 | Die neuere Nutzeranforderung ersetzt fuer normale Client-Arbeitsansichten den zuvor ausdruecklich erhaltenen Modus `All timeslots`: Ein konkreter Timeslot mit seiner vollstaendigen ScanRun-Menge ist der gemeinsame Single Point of Truth fuer Work, Graph, Dashboard und Result DB. Fehlender Scope darf in Result DB und Graph nicht projektweit aufgehen; der Work-Selector waehlt stattdessen den neuesten konkreten Timeslot. | `undefined` darf nicht gleichzeitig „noch kein Timeslot gesetzt“ und „bewusst den gesamten Client aggregieren“ bedeuten. Fail-closed-Darstellung verhindert vermischte Erhebungsstaende und haelt alle Ansichten auf derselben fachlichen Grundmenge. | | 2026-08-22 | Maximierte Result-Tabellen verwenden vor jeder manuellen Anpassung ihre ungebrochene intrinsische Inhaltsbreite statt einer Mindestbreite von 100 Prozent. Eine manuell gesetzte Spaltenbreite hat danach Vorrang. | Die Maximierung stellt Arbeitsraum bereit, ist aber kein Grund fuer kuenstlich breite, visuell leere Tabellen. Inhaltsbreite ohne Zeilenumbruch erzeugt eine kompakte lesbare Ausgangsdarstellung; echte Ueberbreite bleibt sicher horizontal scrollbar. | | 2026-08-22 | Die neuere Vorgabe ersetzt die Beschraenkung der Tabellen-Spaltengriffe auf maximierte Result-Fenster: Griffe sind in jedem nicht minimierten, frei stehenden Result aktiv. Ausschliesslich das im Findings-Cluster eingereihte aktive Result und die minimierten Cluster-Slots bleiben unveraenderbar. | Die fachliche Arbeitsfreiheit haengt vom freien Fensterstatus und nicht von der Maximierung ab. Im Cluster teilen aktives Result und minimierte Slots dagegen eine kontrollierte Geometrie; dort waeren individuelle Tabellenbreiten hinderlich und koennten die Stapeldarstellung destabilisieren. | | 2026-08-22 | Im Client-Detail gehoert `Open` in den linken Timeslot-Navigatorkopf. Der rechte Dokumentkopf enthaelt im Lesemodus den neutralen/destruktiven Textbutton `Delete client` und die gelbe Primaeraktion `Edit`; im Bearbeitungsmodus werden beide durch einen gleich breiten `Save`-Button ersetzt. Bleistiftaktion und separater Delete-Footer entfallen. | Die Aktionsposition folgt ihrem fachlichen Ziel: `Open` wirkt auf die linke Timeslot-/Scan-Auswahl, Edit und Delete auf das rechte Client-Dokument. Das Ausblenden der destruktiven Aktion waehrend der Eingabe verhindert einen Fehlklick neben Save; identische Mindestbreiten vermeiden einen Positions- und Groessensprung beim Zustandswechsel. | | 2026-08-22 | Fortschritt im Import-Pop-up wird durch vier quadratische Positionen mit einer umlaufenden roten Aktivmarkierung dargestellt; der bisherige kreisfoermige Spinner entfaellt. Bei `prefers-reduced-motion` bleibt der Zustand statisch. | Die diskrete Viererfolge entspricht der gewuenschten Produktsprache, bleibt als rein praesentativer Status vom Importprozess getrennt und vermeidet eine erzwungene Bewegung fuer Nutzer mit reduzierter Animationseinstellung. | | 2026-08-22 | Importvorschauen sind flache, rahmenlose Dokumentabschnitte. Dubletten werden als englischer Hinweis mit der Ueberschrift `Duplicate found` und umbrechendem Fliesstext dargestellt; Auswahl und Aktionen bleiben unveraendert. | Die Vorschau soll Informationen und bewusste Bestaetigung priorisieren, nicht jede Datei als eigene Karte inszenieren. Ein kontrollierter Textumbruch verhindert horizontales Scrollen bei langen Dateinamen, Hashes oder Quellenhinweisen. | | 2026-08-22 | Jede Client-Karte bietet neben dem getrennten `Manage` eine direkte gelbe `Open`-Aktion fuer den neuesten scannergebundenen Timeslot. Client-Karten ohne Scan-Daten zeigen die Aktion deaktiviert. | Stammdatenpflege und operative Arbeit sind verschiedene Ziele. Der direkte Einstieg spart Auswahl- und Detailnavigation, waehrend die explizite ScanRun-Menge die bestehende Timeslot-Kontextgrenze bewahrt. | | 2026-08-22 | Client und Work-Timeslot bilden getrennte Zustandsgrenzen: Der Client bestimmt die Datenzugehoerigkeit, die sortierte ScanRun-Menge des Timeslots bestimmt Snapshot-Lesezeichen und lokale My-Workspace-/Review-Markierungen. Filterdefaults werden bei Timeslot- und Blattwechsel aus dem jeweils neu aktiven Werkzeugprofil geladen; ein gemischtes Aggregat vereinigt die Statusfilter aller enthaltenen bekannten Profile, Einzelblaetter verwenden ihr exaktes Profil. | Gleiche Clients koennen fachlich unterschiedliche Stichtage und Toolsets enthalten. Projektweit geteilte lokale Arbeitseinstellungen wuerden Markierungen und gespeicherte Ansichten zwischen diesen Staenden vermischen; beibehaltene oder rein generische Profilfilter koennten im neuen Toolset fehlen beziehungsweise eine falsche Treffermenge darstellen. | | 2026-08-22 | Der aktuell in Work geladene Timeslot ist auch die Querygrenze der Result-DB. Seine eindeutige ScanRun-Menge wird neben der Client-ID an Zeilen-, Facetten-, Local- und PostgreSQL-Abfragen weitergereicht; nur `All timeslots` laesst diesen Filter bewusst weg. | Result-DB, Work, Snapshots und eine spaetere LLM-Anreicherung muessen denselben fachlichen Stichtag meinen. Ein reiner Clientfilter wuerde Findings verschiedener Erhebungsstaende vermischen und damit Auswertung sowie Anreicherung verfälschen. | | 2026-08-22 | Diskrete Work- und Result-DB-Facetten zeigen ausschliesslich Werte mit einer Trefferzahl groesser null unter dem aktuellen Timeslot-, Such- und Fremdfilterkontext. Der eigene Facettenfilter wird fuer Alternativzaehlungen ausgenommen; unmoeglich gewordene Work-Auswahlen werden automatisch bereinigt. | Nulloptionen bieten keine ausfuehrbare Einschraenkung und vergroessern die Filterlisten ohne Nutzen. Das Ausnehmen der eigenen Facette erhaelt den Wechsel zwischen noch erreichbaren Alternativen; die Bereinigung verhindert unsichtbare Restfilter. | | 2026-08-22 | Die erste Work-Kopfzeile darf Controls nicht mehr zur Unlesbarkeit zusammenschieben: Workspace-Button, View-Tabs, Exportgruppe und direkte Aktionsbuttons sind nicht schrumpfbar; bei echter Unterbreite ist nur diese Werkzeugzeile horizontal erreichbar. Die dynamische Filtermenge bleibt ausschliesslich profil- und datengetrieben. | Ein abgeschnittener Button ist keine sinnvolle responsive Reduktion. Inhaltsbreite plus begrenzter horizontaler Rueckfall erhaelt jede Funktion, ohne fuer Werkzeuge mit wenigen Facetten kuenstliche Filter oder fuer umfangreiche Profile eine zweite Fachlogik einzufuehren. | | 2026-08-22 | Spaltenbreiten koennen in maximierten Result-Tabellen lokal per Pointer oder Tastatur veraendert werden; Doppelklick beziehungsweise Enter fuehrt ein auf 72 bis 720 px begrenztes Auto-Fit anhand des laengsten ungebrochenen Zellinhalts aus. Nicht maximierte Tabellen bleiben unveraendert, Breiten werden nicht persistiert. | Die maximierte Ansicht besitzt den notwendigen Arbeitsraum fuer tabellarische Detailanalyse. Ein gemeinsamer React-Baustein haelt verknuepfte Blaetter und Markdown-Tabellen konsistent; Begrenzung und bestehendes horizontales Scrollen verhindern, dass einzelne Extremwerte die gesamte Arbeitsflaeche unbedienbar machen. | | 2026-08-22 | Timeslots sind beim Oeffnen der Client-Ansicht standardmaessig eingeklappt. Der neueste Timeslot bleibt weiterhin vorausgewaehlt, bis der Nutzer diese Auswahl aendert. | Auswahl und Detailoffenheit sind getrennte Zustaende: Die Vorauswahl erhaelt den bestehenden Open-Workflow, waehrend die geschlossene Standardansicht den Navigator ruhig und kompakt haelt. | | 2026-08-22 | Die neueste Nutzerkorrektur ersetzt die unmittelbar vorherige Entdoppelung des Mandantennamens: Die rechte Client-Information enthaelt wieder `Name`, `Consultant` und `Remarks`, jeweils als kleine Bezeichnung direkt oberhalb des groesseren linksbuendigen Werts. Der linke Mandantenname bleibt dabei statische Identitaetsanzeige. | Die rechte Seite soll als vollstaendiges, ruhiges Stammdatendokument lesbar sein. Die unmittelbare vertikale Zuordnung beseitigt die zuvor zu grossen Abstaende und die umgekehrte Groessenhierarchie; die ausdrueckliche neuere Nutzeranweisung hat Vorrang vor der vorherigen Entdoppelungsentscheidung. | | 2026-08-22 | Der Mandantenname wird in der Client-Ansicht nur im linken Identitaetskopf dargestellt. Bei Neuanlage oder aktivem Editmodus wird dieser Titel selbst zum erforderlichen, dem bestehenden Formular zugeordneten Eingabefeld; die rechte Readerflaeche enthaelt nur Consultant und Remarks. | Die doppelte Anzeige desselben Identitaetswerts erzeugt keine neue Information und stoert die klare Master-Detail-Hierarchie. Die Verlagerung des bestehenden Editors an die sichtbare Identitaet erhaelt die Bearbeitungsfunktion ohne eine zweite Namensdarstellung. | | 2026-08-22 | Die Shell-Ueberschrift des Data-Hub-Bereichs ist kontextabhaengig: `Data Hub` fuer die Hauptansicht, `Client` fuer Neuanlage und Mandantendetail. Die Detailkomponente meldet nur ihren vorhandenen Formzustand; beim Unmount wird der Kontext zurueckgesetzt. | Der globale Bereichsname darf in einer objektbezogenen Detailansicht nicht dieselbe Hierarchieebene wie die Uebersicht behaupten. Ein schmaler praesentativer Callback haelt Shelltitel und lokales UI synchron, ohne Mandantendaten oder Navigation in die Shell zu verschieben. | | 2026-08-22 | ScanRun-Readiness im Mandantendetail wird an der bestehenden Work-Projektionsgrenze bestimmt: spezifisches Werkzeug plus kanonische Occurrences = `Recognized`, generisches Werkzeug plus kanonische Occurrences = `Generic`, fehlende Occurrences oder fehlender Run = `Not viewable`. Nicht darstellbare beziehungsweise nicht pruefbare Runs werden nicht an `Open` weitergereicht. Delete-Aktionen verwenden ausgeschriebene Textbuttons statt Papierkorb-Icons. | Ein gespeicherter Datei- oder ScanRun-Nachweis belegt nur Importhistorie, nicht Darstellbarkeit. Die kanonischen Occurrences sind die vorhandene plattformneutrale Mindestgrenze der Work-Projektion und verhindern einen erfundenen Erfolgsstatus. Textbuttons sind eindeutig, zugaenglich und folgen der ausdruecklichen dauerhaften Nutzerregel fuer destruktive Aktionen. | | 2026-08-22 | Im Mandantendetail werden Stammdaten im Lesemodus als echte einspaltige Readerabschnitte statt als Read-only-Formularfelder dargestellt. Auswahlcheckboxen und Auswahlmarker dieser Ansicht verwenden den bernsteinfarbenen Aktivton; die Auswahlflaeche bleibt neutral. Beide Importaktionen sind gelbe Primaeraktionen, Delete bleibt neutral. | Das Finding-Referenzmuster verlangt Abschnittsueberschrift und Fliesstext untereinander. Read-only-Inputs erzeugen falsche Formaffordanz und wurden durch eine Altregel zweispaltig verschoben. Bernstein trennt aktive Auswahl und Hauptaktionen klar von neutralem Inhalt, ohne die ausdruecklich abgelehnte violette Markierung fortzufuehren. | | 2026-08-22 | Die Nutzerkorrektur ersetzt fuer das Mandantendetail das proportionale 44/56-Raster durch die bestehende Work-/Reports-Listenbreite `clamp(420px, 27vw, 520px)`. Rechts steht eine transparente, links ausgerichtete Reader-Dokumentflaeche mit maximal 794 px Breite; sie verwendet Abschnittsueberschrift, Fliesstext und Haarlinientrenner ohne Aussenrahmen oder Karten. Verbleibender Raum wird bewusst nicht gefuellt. | Identische Navigationsbreiten und flache Listeneintraege halten Datahub, Work und Reports visuell zusammen. Eine begrenzte rahmenlose Readerbreite verbessert den Lesefluss und verhindert, dass kurze Mandantenwerte ueber eine breite Arbeitsflaeche auseinanderfallen; Eingaberahmen erscheinen nur im ausdruecklichen Editzustand. | | 2026-08-22 | Die ausgewaehlte Work-/Reports-Referenz ersetzt fuer das Mandantendetail die bisherige zentrierte Stapeldarstellung: links steht ein unabhaengig scrollender, aufklappbarer Timeslot-/ScanRun-Navigator, rechts die read-first Mandanteninformation. Einzelne ScanRuns duerfen lokal fuer `Open` ausgeschlossen werden; Persistenz, Importziele, bestaetigungspflichtige Loeschpfade und die sichere Mehrfach-Timeslot-Schnittmenge bleiben unveraendert. | Das Master-Detail-Muster haelt Navigation und fachlichen Inhalt sichtbar, ohne Stammdaten, Timeslots und Scans untereinander zu stapeln. Ein Ausschlussmodell erhaelt die bestehende Standardsemantik „alle ScanRuns des Timeslots“, schliesst neue Importe automatisch ein und benoetigt weder Schema- noch API-Aenderungen. | | 2026-08-22 | Graphbeschriftungen verwenden quadratische, zoomstabile Mini-Ausgaben der bestehenden Work-Kachelstruktur. Sie erscheinen im Normalzustand nur bei Hover oder Auswahl; die ausdrueckliche Labelumschaltung kann weiterhin alle Karten einblenden. | Breite Dauerkarten ueberdecken Knoten und Kanten und zerstoeren den Netzwerkueberblick. Die quadratische Miniatur erhaelt Hexagon, Titel, Outcome und Badges als vertraute Semantik, waehrend die bedingte Sichtbarkeit den Graphen als primaere Informationsstruktur bewahrt. | | 2026-08-22 | Die neuere Nutzeranforderung ersetzt die separate fachliche Graphfilterung aus der nachfolgenden frueheren Entscheidung: Work und Graph verwenden denselben AppProvider-Filterzustand und dieselbe `useFilteredRecords()`-Projektion. Der Graph rendert die vorhandenen gemeinsamen Controls fuer Suche, Quellblatt, Status, dynamische Facetten und Workspace-Einschraenkung in seiner linken Spalte; nur Labels, Auswahl und Kamera bleiben lokal. | Es gilt fachlich genau eine gefilterte Datengrundlage fuer beide Ansichten. Dadurch werden Aenderungen bidirektional uebernommen, werkzeugabhaengige Filter bleiben vollstaendig und es kann keine abweichende lokale Graph-Grundmenge entstehen. | | 2026-08-22 | Die Graphansicht ist eine reine Phase-7-Praesentationsprojektion als interaktives Finding-Technik-Taktik-Netzwerk; Import-, Mapping-, Review- und Result-Vertraege bleiben die bestehenden Quellen. Suche, Kategorie, Severity und Mapping besitzen im kompakten Graphkopf einen gemeinsamen Reset, waehrend die unabhaengige Labelumschaltung erhalten bleibt. | Die bisherige Spalten-/Kartenansicht kann vollstaendig ersetzt werden, ohne Scannerlogik in React zu verschieben oder kanonische Daten und Provenienz zu veraendern. Der gepunktete Flaechenhintergrund gehoert ausschliesslich zur Graphansicht und besitzt getrennte Dark-/Lightwerte; alle anderen Bereiche behalten ihre ungepunktete Standardflaeche. Ein gemeinsamer Reset verhindert unklare Restfilter, ohne Darstellungsoptionen unerwartet zu aendern. | | 2026-08-22 | Timeslot-Aktionen sind an den jeweils ausgewaehlten Assessment-Stand gebunden. `Import Scan` und `Import GPO Backup Folder (Zip)` uebergeben dessen Assessment-ID; `Delete` verwendet einen eigenen bestaetigungspflichtigen Assessment-DELETE-Vertrag. Der bestehende Mandanten-Delete bleibt getrennt und unveraendert. | Die Position in der Slotzeile muss auch der fachlichen Zielgrenze entsprechen. Eine Wiederverwendung des Mandanten-Delete waere irrefuehrend und koennte den gesamten Mandanten statt nur des ausgewaehlten Stands vernichten. | | 2026-08-22 | Die neue ausdrueckliche Timeslot-Vorgabe ersetzt fuer die Mandantendetailansicht die Entscheidung vom 2026-08-05, dort keine Timeslot-Anlage oder -Auswahl zu rendern. `Assessment` bleibt der Timeslot; die geschlossene Tabelle, Datumsanlage und Mehrfachauswahl sind wieder sichtbar. Ab zwei ausgewaehlten Staenden darf `Open` nur ScanRuns aus Werkzeugquellen weiterreichen, die in jedem Stand sicher identifiziert vorhanden sind. GPO bleibt eine eigene Assessment-Quelle und wird nicht in einen ScanRun umgedeutet. | Der Nutzer benoetigt den fachlichen Stichtag als sichtbare Vergleichseinheit und muss auch einen leeren ersten Stand anlegen koennen. Eine explizite Quellen-Schnittmenge verhindert Scheinveraenderungen durch fehlende Scanner- oder GPO-Abdeckung und erhaelt zugleich die bestehende Assessment-/ScanRun-/GPO-Architektur. | | 2026-08-22 | Microsoft-Security-Baselinepakete koennen nur nach ausdruecklicher UI- und API-Bestaetigung geloescht werden. Der Repository-Pfad blockiert Pakete, die bereits als Quelle einer Policy-Evaluation dienen; bei freigegebenen Paketen entfernt er Katalogeintrag, Klassifikationen und Analysen gemeinsam. | Baselineoriginale sind globale Referenzdaten und duerfen weder durch einen blossen Tabellenklick noch unter Verlust bestehender Evaluationsevidenz verschwinden. Die Schutzpruefung gehoert deshalb in die Persistenzgrenze und nicht nur in die Darstellung. | | 2026-08-22 | Die Mandantenaktionen `Import Data` und `GPO Backup Folder` haengen nur von einem bestehenden Mandanten ab, nicht von einem bereits vorhandenen Assessment oder Timeslot. Eine vorhandene Ziel-ID wird weiterhin mitgegeben; ohne Ziel-ID verwenden die bestehenden Importdienste ihren vorgesehenen mandantenbezogenen Erstimportpfad. | Gerade ein leerer oder neu angelegter Mandant benoetigt die Importaktionen, um seinen ersten Scan beziehungsweise sein erstes GPO-Backup aufnehmen zu koennen. Die fruehere UI-Bedingung machte den dafuer bereits vorhandenen Backendpfad unzugaenglich. | | 2026-08-22 | Bestehende Mandantenstammdaten sind beim Oeffnen schreibgeschuetzt. Nur der ausdrueckliche gelbe `Edit`-Textbutton im Client-Information-Kopf aktiviert die Bearbeitung und die dort erscheinende Speicheraktion; Neuanlagen starten dagegen sofort editierbar. Nach erfolgreichem Speichern oder Verlassen der Ansicht wird der Modus wieder gesperrt. | Der explizite Bearbeitungsmodus verhindert versehentliches Ueberschreiben oder Loeschen bestehender Feldinhalte, ohne den Neuanlagefluss mit einem unnoetigen Zwischenschritt zu belasten. Ein ausgeschriebener Button ist eindeutiger als der bisherige Stift; die Submit-Sperre sichert dieselbe Regel unabhaengig von der sichtbaren Schaltflaeche. | | 2026-08-22 | Die neue ausdrueckliche Datahub-Vorgabe ersetzt die achtspaltige Mandanten-/Timeslottabelle und deren `Empty`-Slots aus den Entscheidungen vom 2026-08-05. Statusdiagramme stehen oben; darunter folgen nur reale Mandantenkarten und eine Plus-Karte. Es existiert genau eine Mandantenauswahl, deren neuester scannergebundener Timeslot die Diagramme speist; `Show` erscheint nur auf der ausgewaehlten Karte und oeffnet die bestehende Mandantenansicht. | Die Uebersicht soll Mandanten statt technischer Timeslotzellen in den Vordergrund stellen. Eine einzige Auswahl macht Diagrammquelle, sichtbare Umrandung und Navigation eindeutig; die bestehende Assessment-/ScanRun-Persistenz sowie die Mandantendetailseite bleiben unveraendert. | | 2026-08-21 | Die neueste Nutzerkorrektur ersetzt fuer PingCastle die Reader-Darstellungsentscheidung desselben Tages: Sind strukturierte Results vorhanden, verschwindet `Details` vollstaendig aus Fliesstext und Additional Information. Ohne strukturierte Results bleibt `Details` als Fallback sichtbar. | Nach der vollstaendigen Results-Pfadprojektion waere derselbe fachliche Inhalt im Reader und im Popup doppelt vorhanden. Der bedingte Fallback verhindert zugleich Informationsverlust bei historischen oder unvollstaendigen Importen. | | 2026-08-21 | PingCastle-Results folgen der im HTML definierten Reihenfolge der tatsaechlichen Detailziel-Container. Jeder Tabellenblock zeigt seinen vollstaendigen hierarchischen Pfadtitel; fachlicher Abschnittstext steht unmittelbar vor der zugehoerigen Tabelle. Die finding-spezifische Referenzliste ist fuer die Anzeigeordnung autoritativ, nicht die globale Dataset-Blattreihenfolge. | Linkausloeser koennen im sichtbaren Text vor ihren spaeter definierten Modal-/Collapse-Zielen stehen, und gemeinsam genutzte Results-Blaetter koennen global in der Reihenfolge eines anderen Findings vorliegen. Zielposition plus finding-spezifische Referenzen bilden dagegen den vollstaendigen Detailspfad deterministisch ab; Titel und Preamble erhalten den zum Verstaendnis notwendigen Kontext ohne Tabelleninhalt zu duplizieren. | | 2026-08-21 | Der Doppelklick auf die freie Kopfzeile eines geoeffneten Result-Fensters maximiert das Fenster innerhalb der sichtbaren Arbeitsflaeche; ein einfacher Klick auf die maximierte Titelleiste stellt die vorherige Geometrie und Clusterposition wieder her. Nur im minimierten Zustand bleibt der Doppelklick ein Wiederherstellen. | Damit sind Einklappen, Flaechenmaximierung und Rueckkehr zur Standardposition eindeutig getrennt. Die dynamisch gemessene Unterkante des statischen Headers verhindert Ueberdeckung, waehrend Position, Nutzergroesse und Clusterzugehoerigkeit des normalen Fensters unveraendert erhalten bleiben. | | 2026-08-21 | PingCastle-HTML ist die alleinige Quelle fuer Results und deren interne Subsection-, Modal- und Collapse-Beziehungen. HTML und XML werden als getrennte Importe dargestellt und nicht mehr ueber Dateistamm plus Rule ID gegenseitig angereichert; diese Nutzerentscheidung ersetzt die entsprechende Begleiteranreicherung vom 2026-07-22. Ein PingCastle-XML-Import bleibt als eigenstaendige RiskRules-Quelle erhalten, erzeugt aber keine Results und weist beim Import ausdruecklich darauf hin. | Der vorliegende XML-Regelknoten enthaelt verlaessliche Regelmetadaten, aber keine explizite, finding-spezifische Beziehung zu den im HTML gerenderten Evidence- und Popup-Tabellen. Nur der lokale HTML-Linkgraph liefert eine nachvollziehbare Beweiskette; eine semantische XML-Zuordnung waere heuristisch und koennte fremde Details an ein Finding haengen. | | 2026-08-21 | Die ausdrueckliche Nutzerkorrektur ersetzt fuer PingCastle die Darstellungsentscheidung vom 2026-07-25: `Details` bleibt auch bei vorhandenen strukturierten Belegtabellen normaler Lesetext im Finding, steht direkt nach `Technical explanation` und erscheint nicht unter `Additional Information`. Strukturierte Belegtabellen bleiben getrennt im Results-Fenster; der importierte Detailwert wird weder veraendert noch verworfen. | Der Zusatzinformationstableau ist fuer Metadaten, nicht fuer fachlichen Fliesstext. Die normale Reader-Darstellung bietet Lesetypografie und erhaelt zugleich die Trennung zwischen originalem Detailtext und strukturierten Belegdaten. | | 2026-08-17 | Der Standard-Vitest-Lauf behaelt Dateiparallelitaet und den isolierenden `forks`-Pool bei, begrenzt ihn im lokalen Windows-Betrieb jedoch auf hoechstens vier Worker. `minWorkers` bleibt 1. Die konkrete Workerzahl ist eine gemessene plattformspezifische Betriebsgrenze und kein Architekturvertrag des Config-Separation-Tests. | Kontrollierte Gesamtlaeufe ergaben: 1 Worker 395,31 s, 2 Worker 203,48 s und 4 Worker 122,45 s; alle drei Grenzen waren stabil. Der CPU-basierte Default-Pool blieb dagegen auf dem synchronisierten `G:`-Laufwerk weitgehend `queued` und brach mit einem Node-Dateilesefehler ab. Ein zweiter 4-Worker-Lauf ueber `npm test` terminierte in 121,03 s einschliesslich der nachgeschalteten Local-only- und Designpruefungen. | | 2026-08-17 | **Zurueckgezogen:** Der Standard-Vitest-Lauf verarbeitet Testdateien mit genau einem Fork und ohne Dateiparallelitaet. | Diese erste Stabilisierung war ein belastbarer Diagnosebeweis, wurde aber vor dauerhafter Festschreibung durch kontrollierte 2- und 4-Worker-Benchmarks ersetzt. `fileParallelism: false` haette `maxWorkers` ohnehin auf 1 ueberschrieben und die Suite ohne belegten Grund dauerhaft serialisiert. | | 2026-08-17 | In Arbeits- und Analyseansichten ist `Deviation` der profiluebergreifende initiale Result-Status. Projekt-, Blatt- und Ansichtswechsel bewahren die bewusste Nutzerauswahl; nur eine ausdrueckliche Statusauswahl oder Filterruecksetzung darf sie aendern. Severity-Diagramme verwenden dieselbe nachgezaehlte Facette wie der Filter und setzen beim Klick ausschliesslich die jeweilige Severity. Die Datahub-Statuskarten bleiben davon getrennte, ungefilterte Timeslot-Statistiken mit `Results All` als Referenz. | Eine einzige Facetten- und Statussemantik verhindert abweichende Diagrammzahlen und unbemerkte Filterresets. Die ausdrueckliche Datahub-Grenze erhaelt dessen statistischen Overview-Charakter. | | 2026-08-17 | Severity-Diagramme sind eine Mehrfachauswahl innerhalb genau einer Kategorie-Facette. Jeder Klick schaltet eine Stufe unabhaengig ein oder aus; mehrere Stufen sind fachlich ODER-verknuepft und werden stets in der kanonischen Reihenfolge Critical, High, Medium, Low, Info gespeichert. Bei Mehrfachauswahl zeigt das Filterfeld die kompakte Kombination `Crit-High-Med-Low-Inf` beziehungsweise deren ausgewaehlte Teilfolge. | Toggle-Semantik vermeidet zusaetzliche Modifier-Tasten und bleibt zwischen Diagrammen, Facettenfilter und Resultliste eindeutig. Die feste Reihenfolge verhindert von der Klickreihenfolge abhaengige Filteranzeigen. | | 2026-08-05 | Die Referenz ChatGPT Image Aug 5, 2026, 01_12_23 PM.png definiert verbindlich alle Donut-Anzeigen. DonutMetricCard und .donut-metric-rack sind die einzigen zulaessigen Implementierungen; Dark- und Lightmode teilen Geometrie und Semantik, besitzen aber eigene --donut-*-Themewerte. Die verbindliche kompakte Proportion verwendet 196 px Kartenmindesthoehe und maximal 128 px Ringdurchmesser. Kartenradius und tokenisierte Tiefenschatten sind ausschliesslich fuer diesen Vertrag zugelassen. | Ein wiederverwendbarer Komponentenvertrag verhindert abweichende lokale SVG-Varianten. Die enge, automatisiert gepruefte Ausnahme setzt die ausdrueckliche Nutzerreferenz um, ohne Schatten, Radien oder rohe Farben fuer andere Panels freizugeben. | | 2026-08-05 | Die Datahub-Statusanzeige verwendet sechs kanonisch gespeiste 270-Grad-Diagramme. Results All ist die 100-Prozent-Referenz; Deviation, Passed, Not Applicable, Not Run und Error werden unabhaengig relativ zur Gesamtzahl dargestellt und mit bestehenden semantischen Designtokens gefaerbt. | Die Berechnung bleibt ausserhalb der React-Praesentation und zerstoert weder Originalstatus noch Provenienz. Unabhaengige Anteile vermeiden die falsche Annahme, dass fachlich ueberlappende oder nicht vollstaendig partitionierende Kategorien gemeinsam exakt 100 Prozent ergeben muessen. | | 2026-08-05 | Die vier Datahub-Statusregler lesen den zuletzt angewählten Timeslot. Beim Laden wird der neueste vorhandene Stand des aktiven beziehungsweise ersten Mandanten ausgewaehlt; mehrere ScanRuns desselben Timeslots werden gemeinsam gezaehlt. `Deviation` verwendet das zentrale Abweichungspraedikat, technische Fehler bleiben als `Error` getrennt. | Die Anzeige benoetigt eine eindeutige fachliche Quelle, auch bei nur einem vorhandenen Stand. Die bestehende kanonische Outcome-/Execution-Semantik verhindert werkzeugspezifische UI-Logik und Doppelinterpretationen; ein zweiter Stand kann weiterhin fuer den Vergleich hinzugewaehlt werden. | | 2026-08-05 | Die neueste ausdrueckliche Datahub-Referenz supersediert die Vollbreitenentscheidung desselben Tages: Uebersicht und Mandantendetail teilen einen maximal 1180 px breiten zentrierten Rahmen. Acht visuelle Mandantenslots, die schmale Plusspalte, vier dekorative Transpose-/Detune-Regler, MITRE und Baselines bilden ausschliesslich die gezeigte Rackoptik. | Der Nutzer hat Breite, Position und Optik erneut eindeutig festgelegt. Platzhalter und Regler bleiben ohne Fachzustand; vorhandene Navigation sowie MITRE-/Baseline-Uploads bleiben an ihren bestehenden sicheren Grenzen verdrahtet. | | 2026-08-05 | Die ausdrueckliche Mandantendetail-Referenz ist fuer den View nach Klick auf einen Mandanten autoritativ. Der bestehende 1180-px-Inhaltsrahmen und seine Position bleiben erhalten; sichtbar sind nur Open, Delete, Import Data, GPO Backup Folder, Save, die drei Stammdatenfelder und die ScanRun-Historie. Die abgebildeten Rackregler sind reine Praesentation ohne Fachzustand. | Die Referenz verlangt eine enge, unverwechselbare Funktionsmenge. Verdeckte oder zusaetzliche Timeslot-, GPO-Status- und Policy-Bedienung wuerde diese Vorgabe verletzen; aria-hidden verhindert zugleich, dass dekorative Regler als nicht funktionierende Controls angekuendigt werden. Domain-, API- und Persistenzmodelle bleiben unveraendert. | | 2026-08-05 | Die ausdrueckliche Bild-2-Referenz ersetzt die zuvor dokumentierte kompakte Zentrierung: Datahub-Rackmodule fuellen die Arbeitsbreite, die Historie zeigt acht gleichmaessige visuelle Mandantenslots plus schmale Hinzufuegen-Spalte, und das Zustandsrack zeigt vier kleine 270-Grad-Regler links ohne separaten Vergleichskasten. `Empty`-Slots bleiben reine Praesentation. | Die Zielgrafik ist fuer diesen View die autoritative Layoutvorgabe. Sichtbare Platzhalter reproduzieren das Raster ohne fachliche Scheindaten; die Trennung von Dreiecksauswahl und Datumsoeffnung erhaelt den Zwei-Timeslot-Workflow. Die kompakte Zentrierung aus dem vorherigen Schritt war eine Fehlinterpretation und wird nicht weitergefuehrt. | | 2026-08-05 | Referenz-Rackmodule bleiben auf maximal 1180 px begrenzt; Mandantenhistorie und Donut-Zustandsblock schrumpfen zusaetzlich auf ihre tatsaechliche Inhaltsbreite und werden mittig ausgerichtet. Mandantenspalten besitzen eine feste kompakte Breite, bei Ueberlauf bleibt horizontales Scrollen erhalten. | Ein einzelner Mandant oder vier Zustandsregler duerfen nicht durch flexible 1fr-Spalten auf die gesamte Arbeitsflaeche gezogen werden. Inhaltsbreite verhindert massiven Leerraum, waehrend die Obergrenze und vorhandene Breakpoints mehrere Mandanten und kleine Viewports weiterhin sicher behandeln. | | 2026-08-05 | `Assessment` ist der fachliche Mandanten-Timeslot eines Stichtags; `ScanRun` ist eine Scannerquelle innerhalb dieses Stands. GPO-Backups werden direkt an dieselbe Assessment-ID gebunden, ohne einen kuenstlichen ScanRun zu erzeugen. Oeffnen und Vergleichen projiziert jeweils alle ScanRuns eines Timeslots gemeinsam. | Ein Bewertungsdurchgang besteht aus allen zum Stichtag erhobenen Quellen. Eine Historienzeile je Scannerimport wuerde denselben fachlichen Stand vervielfachen und Fortschrittsvergleiche verfaelschen; die bestehende Assessment-/ScanRun-Hierarchie bildet die gewuenschte Einheit bereits ab und benoetigt keine neue Hauptentitaet. | | 2026-08-04 | Die Datahub-Historie darf mehrere persistierte Assessments desselben Mandanten fuer einen expliziten Zwei-Staende-Vergleich in ein read-only virtuelles Assessment projizieren. Auswahl und Navigation bleiben getrennte Bedienhandlungen; ein Datums-Klick laedt nur den gewaehlten ScanRun, waehrend maximal zwei Checkboxen desselben Mandanten den Vergleich bestimmen. | Die Vergleichsengine erwartet ein gemeinsames Assessment, die bestehende Persistenz trennt Durchgaenge jedoch teilweise auf Assessments. Eine rein lesende, mandantengebundene Projektion nutzt die bestehende Engine ohne Schema- oder Datenmutation. Getrennte Controls verhindern, dass Auswahl versehentlich den Arbeitskontext wechselt. | | 2026-08-04 | Bedienbare Policy-Aktionen werden als typisierte, projektgebundene Bereitschaft im Backend-Readmodell abgeleitet. Nur aktive Profil- und Analyse-Revisionen werden angeboten; Baselineauswahl verlangt je Profilkontext genau einen Katalogtreffer. Partielle Quellen duerfen nur sichtbar als `review-only` weiterlaufen, fehlende oder mehrdeutige Quellen bleiben `blocked`; React sendet ausschliesslich die expliziten IDs an die weiterhin autoritativen, idempotenten Fachservices. | Eine UI-seitige Quellkombination koennte veraltete Revisionen, unpassende Baselines oder partielle Evidenz als freigegeben behandeln. Das Readmodell verbessert Bedienbarkeit, ersetzt aber keine Mutationvalidierung; dadurch bleiben Stale-Races und manipulierte Requests fail-closed oder hoechstens review-only. | | 2026-08-04 | Die projektgebundene Policy-Analyseansicht verwendet ein eigenes typisiertes Backend-Readmodell. React kombiniert weder Persistenzobjekte noch leitet es Severity, Wirksamkeit oder Finding-Status aus Diagnosecodes ab. Das Readmodell bewahrt einzelne historische Laeufe und kennzeichnet aggregierte Zaehler ausdruecklich als Laufhistorie. | Konflikt-, Luecken- und Factory-Diagnosen stammen aus mehreren unveraenderlichen Stufen. Eine UI-seitige Rekonstruktion wuerde Fachlogik und Vertrauensgrenzen duplizieren; eine unmarkierte Summierung historischer Reprocessings koennte dagegen einen aktuellen Kundenzustand vortaeuschen. | | 2026-08-04 | Policy-Findings werden nicht durch kuenstliche Scannerlaeufe oder Importdateien in `assessor_finding_occurrences` gepresst. Eine eigene unveraenderliche Policy-Occurrence referenziert die gemeinsame kanonische Finding-Definition und das Evaluationsergebnis; das Unified Result Model bleibt die einzige gemeinsame lesende Projektion. | Scanner- und Policy-Provenienz haben verschiedene Pflichtbeziehungen. Eine Scheindatei wuerde Herkunft erfinden, eine zweite kanonische Definitionstabelle wuerde Identitaeten duplizieren. Die getrennte Occurrence erhaelt beide Wahrheiten und erlaubt gemeinsame Filter, Bericht und Export ohne zweite Result-Haupttabelle. | | 2026-08-04 | Die stabile technische Policy-Identitaet bleibt von ADMX-/ADML-Katalogmetadaten getrennt. Jeder produktive Analyseversuch speichert Parser-, Reducer-, Identity-Resolver- und Katalogversionen an einem unveraenderlichen Run; ein Enginewechsel erzeugt einen deterministischen supersedierenden Run statt bestehende Ergebnisse umzuschreiben. | Registryziele muessen ueber Katalog- und Sprachrevisionen stabil bleiben. Versionierte Runs, optimistische Vorgaengerpruefung und deterministische Idempotenzschluessel machen Restart, Retry, Audit und reproduzierbares Reprocessing nachvollziehbar. | | 2026-08-04 | Eine stabile Registry-Policy-Identitaet wird aus Scope, Hive, kanonischem Registry-Schluessel und Wert- oder Schluesselziel gebildet. ADMX-Zielnamespace, Policy-Name und Element-ID sind eine optionale katalogversionierte Metadatenzuordnung; ADML-Anzeigetexte beeinflussen die Identitaet nie. | Registryziele bleiben ueber ADMX- und Sprachrevisionen vergleichbar. Fehlende Inbox-ADMX-Dateien fuehren zu `not-found`, mehrere technische Treffer zu `ambiguous`; beides darf weder einen Match noch einen Vergleich erfinden. | | 2026-08-04 | `Registry.pol` wird durch einen kleinen versionierten read-only In-Process-Parser verarbeitet; ein externer `LGPO.exe`-Adapter ist fuer den unterstuetzten Scope nicht erforderlich. REG_NONE wird ausschliesslich als leere Schluesselanlage akzeptiert, alle anderen nicht freigegebenen Typen bleiben fail-closed. | Die offizielle MS-GPREG-Struktur und Microsofts archivierte PowerShell-Referenz reichen fuer den benoetigten deterministischen Lesepfad aus. Dadurch entstehen weder Shell-/Prozessausfuehrung noch eine zusaetzliche Bibliotheks- oder Lizenzabhaengigkeit; der reale GPMC-Fall bleibt dennoch explizit regressionsgeprueft. | | 2026-08-04 | Microsoft-Security-Baselinepakete bilden einen globalen, unveraenderlichen Referenzdatenkatalog ausserhalb von Mandantenimporten. Automatische Auswahl verlangt genau eine Uebereinstimmung aus Produktfamilie, Produktversion, Rolle und Scope; kein oder mehrere Treffer liefern `no-match` beziehungsweise `ambiguous`. | Baselinepakete gelten mandantenuebergreifend. Dateinamen koennen Metadaten vorschlagen, duerfen aber weder Policy-Identitaet noch eine mehrdeutige fachliche Auswahl erfinden. | | 2026-08-04 | Eine Baselinepaket-Klassifikation ist eine unveraenderliche, detektorversionierte Revision. Ein Paket darf mehrere Produktkontexte enthalten; die Originalmetadaten des importierten Pakets werden bei verbesserter Erkennung nicht ueberschrieben. | Offizielle Microsoft-Pakete koennen Windows-Client und Windows-Server gemeinsam enthalten. Revisionen erhalten Provenienz und Reproduzierbarkeit, waehrend jede vollstaendig passende Kontextauswahl dasselbe Originalpaket referenziert. | | 2026-08-04 | GPO-Upload, Jobabschluss, Inventarisierung und PolicyObservation-Persistenz sind Verarbeitungszustaende und keine Scan- oder Baselinepruefberichte. Ein Eintrag in Linked Scan Reports setzt einen persistierten Baseline-Evaluation-Run mit fachlichen Ergebnissen voraus. | Die reine Existenz oder technische Analyse eines Backups belegt weder einen Vergleich noch ein Ergebnis. Die UI darf deshalb keinen fachlichen Bericht vortaeuschen, bevor die verbindliche Policy-Pipeline bis PolicyEvaluationResult durchlaufen wurde. | | 2026-08-04 | Ein ausgewaehlter GPO-Hauptordner bildet genau einen Mandanten-Backup-Snapshot. Seine erkannten GPO-Wurzeln sind Mitglieder desselben Sets und werden ueber eine gemeinsame Set-ID aggregiert; die oeffentliche Statussemantik nennt ihre Anzahl gpoCount. | Unterordner sind technische Backups einzelner GPOs, nicht mehrere Mandanten-Backups. Die Benutzerauswahl belegt nur selected-gpos, niemals Vollstaendigkeit, Verknuepfung oder Wirksamkeit; historische Datensaetze bleiben unveraendert und werden ueber ihr gemeinsames Quellartefakt lesekompatibel gruppiert. | | 2026-08-04 | Ein syntaktisch gueltiger GPMC-`BackupTime` ohne Zeitzonenoffset wird nicht als UTC interpretiert und blockiert nicht die separat belegten GPO-/Backup-IDs oder die Domaene. Der Zeitpunkt bleibt unbekannt und die Metadaten bleiben mit einem festen Diagnosecode `partial`; freie, gemischte oder widerspruechliche Zeitformate bleiben `invalid`. | Microsoft-GPMC-Backups liefern lokale Sicherungszeiten ohne Offset. Eine erfundene Zeitzone waere falsche Provenienz, das Verwerfen unabhaengiger technischer Identitaet dagegen unnoetiger Informationsverlust. | | 2026-08-02 | Clientbuild, Serverbuild und Tests besitzen getrennte Vite/Vitest-Konfigurationen, Cacheverzeichnisse und explizite npm-Skriptrouten. Der konventionelle Name `vite.config.ts` bleibt ausschließlich als dünner Alias auf die Clientkonfiguration bestehen. | Build- oder Testwerkzeuge von Codex, Claude Code, Gemini, IDEs und CI dürfen keine fremden Plugins, Outputs oder Testregeln aus einer gemeinsamen Konfiguration übernehmen. Der Alias hält generische Vite-Discovery kompatibel, ohne Server und Tests erneut an diese Datei zu koppeln. | | 2026-08-02 | `npm run dev` bezeichnet den vollständigen lokalen Entwicklungsstack und nicht mehr nur den Vite-Client. Ein vorhandenes gesundes Backend wird wiederverwendet; andernfalls wird der Server über seine dedizierte Konfiguration gebaut und lokal gestartet. Erst nach erfolgreichem Health-Check startet der Client fest auf `127.0.0.1:5173`. `npm run dev:client` ist der ausdrücklich benannte Client-only-Weg. | Ein erfolgreicher Frontend-Listener bei fehlendem Backend ist kein betriebsbereiter ASSESSOR-Zustand. Die Orchestrierung macht die notwendige Reihenfolge maschinenprüfbar und verhindert, dass Menschen oder Coding-Agenten beim Standardstart den API-Prozess vergessen. | | 2026-08-02 | Die Parkposition minimierter Results ist an die sichtbare Arbeitsfläche gebunden: 80 px vom rechten Viewportrand und 46 px unterhalb ihrer Oberkante. Dies ersetzt für neue Minimierungen die bisherige feste Höhe von 76 px ab Viewport-Oberkante. | Filter- und Statusband gehören nicht zur Fensterarbeitsfläche. Eine gemessene, inhaltsfreie Ankerkante hält die Parkposition auch bei veränderter Kopfgeometrie im Arbeitsbereich und bleibt an kurzen Viewports sicher begrenzt. | | 2026-08-02 | Alle funktionalen Richtungsanzeigen verwenden dieselbe gefüllte Dreiecksgeometrie als SVG beziehungsweise bei nativen Selects als identisches CSS-Hintergrundsymbol; Schriftzeichenpfeile und das frühere Result-Würfelsymbol sind für Navigation und Zustandswechsel nicht mehr zulässig. Result-Titelleisten färben das Dreieck mit dem individuellen Result-Ton und zeigen minimiert nach rechts, maximiert nach unten. | SVG-Geometrie ist unabhängig von Schriftart und Zeichenkodierung und verhindert sichtbare Mojibake-Zeichen. Richtung entsteht ausschließlich durch Rotation; Semantik, ARIA-Namen und native Select-Funktion bleiben erhalten. Spezifische Zustandsfarben dürfen deshalb nur die Hintergrundfarbe, nicht die CSS-Hintergrundgrafik eines Selects überschreiben. | | 2026-08-02 | Sichtbarkeit, Normalisierung und Hierarchie fachlicher Result-Belegtabellentitel sind optionale Präsentationshinweise des Werkzeugprofils. CIS-CAT setzt `showResultSheetTitles`, `resultSheetTitleRules` und `resultSectionListSheetTitles`. Markdown-Frameworküberschriften gruppieren ihre Tabellen einmalig; die Listenpunkte werden in Quellreihenfolge zu individuellen Tabellenüberschriften. Der ursprüngliche Abschnitt wird nur konsumiert, wenn jeder Listenpunkt vollständig zugeordnet wurde. | Das erhält die fachliche Beziehung zwischen Framework, Control und Tabelle ohne CIS-spezifische Analyse in React. Bei unvollständigen oder künftigen Berichten bleiben nicht zuordenbare Angaben sichtbar, statt durch eine partielle Umformung verloren zu gehen. | | 2026-08-02 | Fachlich hervorgehobene Zeilen verknüpfter Result-Tabellen werden über optionale `resultSheetHighlightedRowPatterns` des Werkzeugprofils bestimmt. CIS-CAT markiert damit exakt den Assessment-Hinweis `No matching system items were found.`; die Darstellung verwendet den bereits vorhandenen ausgewerteten Zeilenstatus. | Die fachliche Entscheidung bleibt im Profil, die generische React-Tabelle kennt weder CIS-CAT noch feste Hinweistexte. Vorhandene Design-Tokens liefern identische blaue Markierung ohne neue Sonderfarbe; andere Werkzeuge bleiben unbeeinflusst. | | 2026-08-02 | Ergebnisabschnitte im Results-Fenster besitzen keinen eigenen Rahmen, Hintergrund oder Innenabstand; Tabellen behalten ihre Zelllinien und Überschriften ihre Hierarchie. | Ein zusätzlicher Kasten um Überschrift und bereits umrandete Tabelle doppelt die visuelle Abgrenzung und verbraucht insbesondere bei vielen kurzen CIS-CAT-Belegen unnötig Höhe und Breite. Der gemeinsame Result-Block-Vertrag macht die kompakte Darstellung für alle Werkzeuge konsistent. | | 2026-08-02 | Die sichtbare Statusspalte wird über eine geordnete `presentation.statusHeaders`-Präferenz des Werkzeugprofils aufgelöst und von Reader, Datensatzkarte und Kachel gemeinsam verwendet. Optionale `statusDisplayRules` ändern ausschließlich die sichtbare Beschriftung. Purple Knight priorisiert `Status` vor `Result`, beschriftet `Pass` als `Passed` und `IOE Found` als `Failed`; fehlt `Status`, bleibt `Result` als kompatibler Rückfall erhalten. | In der kanonischen Purple-Knight-Projektion kann `Result` die SI-Kurzkennung wiederholen, während `Status` das eigentliche Ergebnis enthält. Eine bloße erste Regex-Übereinstimmung macht die Anzeige von der Feldreihenfolge abhängig; eine Änderung des gespeicherten Rohwerts würde dagegen Herkunft und Quelltreue verletzen. | | 2026-08-02 | Result-Detailblätter dürfen nur an Findings desselben explizit bekannten Werkzeugs gebunden werden; die unscharfe Verknüpfung akzeptiert ausschließlich Datei- oder stabile Regel-ID-Verweise. | Gemischte Projektansichten enthalten Blätter mehrerer Scanner. Freier Ergebnistext ist keine belastbare Identität und darf weder über gemeinsame Wörter noch über einen zufällig ähnlichen Namen Evidenz eines anderen Werkzeugs in ein Finding ziehen. Unbekannte beziehungsweise generische Metadaten bleiben kompatibel, ausdrücklich widersprüchliche toolIds werden fail-closed ausgeschlossen. | | 2026-08-02 | Die freie Kopfzeilenfläche eines Result-Fensters ist zusätzlich zum sichtbaren Button ein Doppelklick-Umschalter für Minimieren und Wiederherstellen; eingebettete Kopfzeilenaktionen sind davon ausgenommen. | Doppelklick ist ein schneller sekundärer Bedienweg, darf aber Bookmark, Navigation, Schließen oder den expliziten Umschaltbutton nicht mehrfach auslösen. Der sichtbare Button bleibt der eindeutige und tastaturbedienbare Primärweg. | | 2026-08-02 | Minimierte Cluster-Results bleiben im DOM und sichtbar, auch wenn ein Cluster- oder freies Result maximiert ist; sie werden als schmale farbige Reiter hinter dem aktiven Fenster dargestellt. | Das Ausblenden minimierter Fenster koppelt ihre wahrgenommene Position an das maximierte Fenster und nimmt den klaren Wiederherstellungsweg. Sichtbare Reiter bewahren den Clusterzustand und erlauben, ein maximiertes Result per Kopfzeilenziehen oder Größenänderung eindeutig zu lösen. | | 2026-08-02 | Die Mindesthöhe eines maximierten, angedockten Resultfensters entspricht der gemeinsamen 34-px-Stapelhöhe aller dahinterliegenden minimierten Results und wird am noch verfügbaren Viewport begrenzt. Stapelposition, Clusterhöhe und Abdeckung verwenden dieselbe exportierte Zeilenhöhe. | Ein inhaltsabhängig kurzes aktives Fenster kann sonst die unteren minimierten Kopfzeilen freilegen und den Eindruck mehrerer gleichrangig aktiver Fenster erzeugen. Eine gemeinsame Geometriekonstante verhindert Drift zwischen Positionierung, Viewport-Klemmung und Abdeckung; entkoppelte Fenster dürfen weiterhin frei dimensioniert bleiben. | | 2026-08-02 | Result-Fenster verwenden einen eindeutigen Unicode-Gedankenstrich als Trennzeichen; sie zeigen den Finding-Titel zusätzlich als Überschrift im Fensterkörper, unterdrücken dort aber Quellblattüberschriften. | Falsch dekodierte Trennzeichen erzeugen sichtbare Restzeichen im Titel. Die zusätzliche Finding-Überschrift ist eine bewusste Orientierung im Ergebnisinhalt; Quellnamen und ein nicht lesbarer Minimieren-Glyph konkurrieren dagegen mit dem eigentlichen Ergebnisinhalt. Der Doppelklick bleibt als vorhandener, konsistenter Umschaltweg erhalten. | | 2026-08-02 | Jeder Minimierungsvorgang setzt den Result-Cluster auf eine viewport-sichere Parkposition rechts oben zurück; eine anschließende Verschiebung bleibt möglich. Der Results-Button im Reader übernimmt im geöffneten Zustand die Farbe seines Fensters. | Minimierte Fenster sollen vorhersehbar auffindbar sein, ohne ihren frei beweglichen Charakter zu verlieren. Die Farbe muss denselben offenen Datensatz in Kachel, Fenster und Reader eindeutig zuordnen. | | 2026-08-02 | Maximierte Result-Fenster verlassen den Cluster als explizit entkoppelter UI-Zustand; nur Minimieren koppelt sie wieder ein. Innerhalb des Clusters bleibt ein maximiertes Fenster aktiv, herausgezogene Fenster können parallel maximiert bleiben. | Die Clusterzugehörigkeit darf nicht aus Position oder Größe abgeleitet werden: Weitere Öffnungs-, Wiederherstellungs-, Auswahl- und Ansichtswechsel müssen frei platzierte Arbeitsfenster erhalten. Eine kleine, plattformneutrale Zustandslogik hält diese Übergänge deterministisch und testbar. | | 2026-07-29 | Die Kopfsektion ist eine appweit gemeinsame Shell-Komponente (`.app-header-panel`): Work bündelt Werkzeugleiste, Filter und Status darin; Datahub, DB-Struktur, Result DB und Graph verwenden dieselbe Hülle, der Graph weiterhin über sein Portal. Kopf- und Inhaltscontainer teilen Hintergrundrolle und Rundung. | Die zuvor auf Topbar und Workspace-Platzhalter verteilte Sektion konnte je Bereich auseinanderlaufen und besaß keine eigene Fläche. Eine einzige `div`-Hülle hält Geometrie, Hintergrund und Radius konsistent, ohne Fachzustand oder Bereichskomponenten in die Shell zu verlagern. | | 2026-07-27 | „Abweichung" ist ein eigenes, versioniertes Praedikat (`src/domain/deviation-predicate.ts`, Version 1.0.0) und nicht gleichbedeutend mit `is_ioe`: `is_ioe OR outcome_normalized = 'warning'`. | `is_ioe` bleibt vertragsstreng an eine festgestellte Exposition gebunden (RESULT_CONTRACT), waehrend Ergebnisse ohne diese Feststellung fachlich relevant sein koennen. Maester meldet dafuer `Investigate`, das als Outcome `warning` normalisiert wird und sonst aus jeder Abweichungsansicht fiele. Das Praedikat liest ausschliesslich normalisierte Achsen und gilt damit unveraendert fuer kuenftige Werkzeuge. | | 2026-07-27 | Werkzeuggelieferte Textfelder werden ausgewertet dargestellt, nicht als Quelltext. Zustaendig ist ausschliesslich `RichTextValue` ueber `src/shared/markdown.ts`; kein Aufrufer formatiert selbst. | Mehrere Quellen schreiben Markdown in ihre Zellen. Ohne zentrale Auswertung entscheidet jede Ansicht neu, und `####`, `**` sowie Pipe-Tabellen landen woertlich in der Oberflaeche. Ein einziger Zustaendiger heisst: eine neue Quelle mit derselben Auszeichnung wird ohne weitere Aenderung richtig dargestellt. | | 2026-07-27 | Der Anzeigewert einer Zelle behaelt seine Zeilenstruktur (`cellText`), waehrend `clean` fuer Schluessel, Kopfzeilen und Vergleiche zustaendig bleibt. | Die Faltung jeder Leerraumfolge zu einem Leerzeichen war fuer Vergleiche richtig und fuer Inhalte falsch: eine mehrzeilige Tabelle liess sich danach nicht mehr von einem Satz unterscheiden. | | 2026-07-27 | Die Werkzeugherkunft eines Datensatzes wird in den Arbeitsansichten je Datensatz aufgeloest, nicht aus der Profil-ID des Datasets uebernommen. | Die Projektaggregation mischt alle Werkzeuge eines Mandanten und traegt deshalb `generic`. Ohne Aufloesung greifen die generischen Rueckfallregeln statt des deklarierten Werkzeugmappings, und Work weicht sichtbar von der Result DB ab. | | 2026-07-27 | Ein Outcome `warning` erhaelt keine eigene Severity-Stufe; die Severity des Funds bleibt unveraendert. | Severity und Outcome sind getrennte Dimensionen. Die betroffenen Maester-Funde tragen bereits eine belastbare Severity (`high`, `medium`); eine Stufe `warning` haette diese Priorisierung geloescht. Kenntlich gemacht wird `warning` stattdessen auf der Outcome-Achse mit Textfarbe und Glyph sowie ueber die Spalte und den Filter „Abweichung". | | 2026-07-27 | **Zurückgezogen:** die Entscheidungen und Protokolleinträge der zweiten Agentensitzung vom 2026-07-26 18:42 bis 2026-07-27 01:44 (neue Shell mit Topbar-Titel, Context Strip und Status Bar; kanonische Severity-Stufe `warning` samt Maester-Profil 1.1.0/1.2.0; getrennte Farbrollen für Primär- und Nebenfilter; Palette `#A68AF9`, `#85BFF2`, `#FFA825`; Work-Referenz aus Screenshots). Ihre Umsetzung wurde auf Nutzerwunsch vollständig zurückgenommen. Verbindlich bleiben die Designsprache in `.claude/skills/assessor-ui/` in ihrer ursprünglichen Fassung sowie die Schritte 1 und 2 ihrer Umsetzungsreihenfolge. | Die Einträge bleiben als Historie stehen, weil dieser Plan getroffene Entscheidungen nicht stillschweigend umschreibt. Sie dürfen aber nicht als geltender Stand gelesen werden: die zugehörigen Dateien tragen ihre Regeln nicht mehr, und ein späterer Leser würde sonst gegen einen Stand implementieren, den es nicht gibt. | | 2026-07-27 | Die beiden vom Nutzer gelieferten Work-Screenshots ersetzen den zuvor technisch konsolidierten Zwischenstand als verbindliche visuelle Strukturreferenz fuer Schritt 5: 144-px-Sidebar mit Darstellungsumschaltern unten, 34-px-Work-Topbar mit Zaehlern und direkten Werkzeugen, zweizeiliges Filterband, Masterliste `clamp(300px, 21vw, 420px)`, Reader mit 48-px-Inset und vier Bearbeitungsfeldern in einer Zeile sowie 132-px-Kacheln ab 210 px mit F/R oben rechts und allen Metadaten ohne `+n`. | Die Nutzerkorrektur betrifft Aufbau und Dichte, nicht die zuletzt abgenommenen semantischen Farben. Das neue gespiegelte Asset `assets/work-reference.css` plus Laufzeitkopie und `work-visual-contract.test.ts` machen die Struktur fuer kuenftige Erweiterungen verbindlich. Filterorange/-violett, Auswahlblau, Severitys, Warning und das Sechseck mit weissem Haken bleiben unveraendert. Bis zur visuellen Nutzerabnahme bleibt Schritt 5 in Arbeit. | | 2026-07-27 | Der von der Nutzerabnahme verworfene kontrastarme Zwischenstand ist keine finale Work-Referenz. Datenreiche Arbeitsansichten verwenden zentral `--surface-work-rail`, `--surface-work-item` und `--surface-work-item-hover`; Reader-Navigation, Titel und Bearbeitung bilden wieder eine kompakte Folge, und Tile-Badges bleiben einzeilig mit `+n`. Filter-, Auswahl- und Severity-Rollen bleiben unveraendert. | Die technisch konsolidierte Komponentenschicht hatte Grundflaeche und Arbeitsobjekte in Light zu wenig getrennt und im Reader zu grosse Leerraeume bewahrt. Die neuen Rollen leiten sich in beiden Themes ausschliesslich aus Grundflaeche und Struktur ab und sind in Skill, Laufzeit und Regressionstest gemeinsam verankert, sodass kuenftige datenreiche Erweiterungen dieselbe Hierarchie erhalten. | | 2026-07-27 | Die Nutzerpraezisierung ersetzt fuer Work die bisher breitere Filterfarbregel: Ausschliesslich Primaerfilter innerhalb des orange gerahmten Bereichs und der Filter-Reset verwenden die Filterrollen. Ungesetzte Primaerfilter bleiben `#FFA825`/`#262626`, gesetzte Primaerfilter wechseln auf `#A68AF9`/weiss. Nebenfilter ausserhalb des Rahmens bleiben in Grund- und Auswahlzustand neutral und tragen weder `.band__control` noch `.is-filtered`. Maester-Profil 1.2.0 ordnet das fachliche Outcome `warning` zugleich der kanonischen Severity `warning` und der Ergebnisgruppe `Abweichung` zu. | Die Nutzerbilder trennen die schnelle fachliche Filterzone eindeutig von Quellen- und Datensatzauswahl. Die gemeinsame Maester-Regel verhindert, dass Warnungen in der Standardarbeitsmenge fehlen oder weiter als Medium erscheinen. Originalwerte und Provenienz bleiben erhalten; die Work-Projektion kann bereits persistierte Maester-Outcomes ohne Datenmutation korrekt darstellen, waehrend neue Importe die Zuordnung versioniert persistieren. | | 2026-07-26 | Die aktuelle Nutzerabnahme ersetzt die frueheren Filterzustands- und Severity-Entscheidungen: Ungesetzte Command-Band-Filter bleiben `#FFA825` mit `#262626`; ein tatsaechlich gesetzter Filter wechselt auf `#A68AF9` mit weisser Tinte. Die kanonische Severity-Reihenfolge lautet `critical`, `high`, `medium`, `warning`, `low`, `info`, `unknown`; `warning` bewahrt seit Maester-Profil 1.1.0 ausschliesslich den nativen Maester-Wert `Warning` und verwendet in beiden Themes `#BFE5C7` mit der abgenommenen weissen Tinte. | Die Browsermarkierung unterscheidet den Grundzustand eines Filterfelds vom gesetzten Auswahlzustand. Eine gemeinsame werkzeuggebundene Severity-Normalisierung verhindert, dass Maester-Warning weiter als Medium kollabiert oder andere Werkzeuge pauschal umgedeutet werden. Skill, Laufzeit-Tokens, Filter-/Severity-Komponenten und Drift-Tests bilden dieselben Regeln ab; Originalwert und Provenienz bleiben erhalten. | | 2026-07-26 | Die Nutzerkorrektur ändert ausschließlich die Tinte der orangefarbenen Filtersektion: Filterrahmen, Filterfelder und Filter-Reset verwenden in Dark und Light weiterhin `#FFA825`, darauf jedoch das Design-Schwarz `#262626` statt Weiß. Primäraktionen und aktive Ansichten bleiben `#A68AF9` mit Weiß; Navigation, Auswahl, Information und Fokus bleiben `#85BFF2`. | Die eigene `--filter-on`-Rolle hält die Korrektur auf das Command Band begrenzt und macht sie für künftige Erweiterungen verbindlich. `#262626` auf `#FFA825` erreicht etwa 7,85:1; die bisherige Kontrastausnahme für Filterorange entfällt. | | 2026-07-26 | Die Nutzerpräzisierung trennt die Filtersektion wieder von der allgemeinen Interaktionsfarbe: Ausschließlich Filterrahmen, Filterfelder und Filter-Reset verwenden in Dark und Light `#FFA825` mit immer weißer Tinte. Primäraktionen und aktive Ansichten bleiben `#A68AF9` mit Weiß; aktive Navigation, Auswahl, Information und Fokus bleiben `#85BFF2`. Gesetzte Filter unterscheiden sich zusätzlich über Wert beziehungsweise Trefferzahl und stärkeres Schriftgewicht. | Das Referenzbild markiert die orange Filtersektion als eigene, stabile Arbeitszone. Eine eigene `--filter-surface`-/`--filter-on`-Rolle verhindert, dass Results-, Bookmark-, Datahub- oder andere Aktivzustände orange werden. Weiß auf `#FFA825` erreicht etwa 1,93:1 und ist auf ausdrücklichen Nutzerwunsch eine abgenommene Kontrastausnahme; feste Zone, Beschriftung, Wert und Gewicht codieren die Funktion redundant. | | 2026-07-26 | Die Nutzerpräzisierung ersetzt die beiden unmittelbar vorherigen Farbentscheidungen für aktuelle und künftige Oberflächen: Das Auswahlblau `#85BFF2` bleibt für aktive Navigation, Auswahl, Information und Fokus vollständig erhalten. Die separate Filterrolle `#677DBF` entfällt. Primäraktionen, aktive Ansichten und sämtliche Command-Band-Filter verwenden in Dark und Light `#A68AF9` mit immer weißer Tinte; gesetzte Filter bleiben zusätzlich über Wert beziehungsweise Trefferzahl und stärkeres Schriftgewicht erkennbar. | Die drei Browsermarkierungen trennen ausdrücklich das beizubehaltende Auswahlblau von der zu ersetzenden Filter-/Aktionsfarbe. Die gemeinsame Akzentrolle verhindert eine weitere lokale Filterfarbe und der Drift-Test sichert zugleich das unveränderte Blau sowie das Fehlen der alten Filtertokens. Weiß auf `#A68AF9` erreicht etwa 2,75:1 und ist daher eine ausdrücklich abgenommene Ausnahme, die durch Form, Position und Beschriftung redundant abgesichert wird. | | 2026-07-26 | Die frühere Zuordnung des Ockers `#A16207` wird ausschließlich für gesetzte Filter präzisiert: Primäraktionen, aktive Ansichten und ungefilterte Command-Band-Controls bleiben Ocker mit weißer Tinte. Ein gesetzter Filter verwendet in Dark und Light die eigene Rolle `#677DBF` mit `#0D0D10` als Tinte; Auswahl und Information bleiben `#85BFF2`, Medium bleibt Dark `#D9962A` und Light `#F29F05`. | Die zusätzliche Filterrolle trennt eine wirkende Filterbedingung sichtbar von einer Aktion, einer Objektselektion und einer Severity. Dunkle Tinte erreicht auf `#677DBF` 4,86:1; Weiß würde mit 3,99:1 die verbindliche Kontrastgrenze verfehlen. Filterwert beziehungsweise Trefferzahl bleibt als zweites, nicht farbabhängiges Signal sichtbar. | | 2026-07-26 | Aktive Filter, Ansichtsumschalter, Command-Band-Steuerungen und Primäraktionen verwenden in Dark und Light einheitlich `#A16207` mit weißer Tinte. Medium übernimmt themeabhängig die bisherigen Aktionswerte: Dark `#D9962A`, Light `#F29F05`; Beschriftung und Haken bleiben auf ausdrücklichen Nutzerwunsch weiß. Auswahl und Information bleiben davon getrennt und unverändert blau `#85BFF2`. | Der Nutzer meinte mit dem Tausch die im Work-Screenshot sichtbare orange aktive Steuerung, nicht die blaue Auswahlrolle. Die semantische Trennung verhindert, dass Filteraktivität, Objektselektion und Severity dieselbe Farbe verwenden. Die bewusst akzeptierte Medium-Kontrastausnahme wird durch das ausgeschriebene Label, die feste Sechseckform und Position redundant abgesichert. | | 2026-07-26 | Die Grundfläche ist die äußere Helligkeitsgrenze aller neutralen Oberflächen: Dark `#262626` ist am dunkelsten, Light `#F3F3F3` am hellsten. `#6E6C72` beziehungsweise `#B0B1B0` ist die Strukturgrenze für starke Linien und die Ableitung neutraler Zwischenstufen, nicht die großflächige Shell-Füllung. Shell, Panels, Eingaben, Hover, Aktiv und Overlays werden in beiden Themes mit denselben Anteilen zwischen `--surface-app` und `--structure` abgeleitet. | Die vorherige Zuordnung invertierte die Nutzerpalette: Dark-Panels lagen mit `#1A1A1E`/`#16161A` unter der dunkelsten Grundfläche, Light-Panels mit `#FFFFFF` über der hellsten; zugleich dominierte die Strukturfarbe die gesamte Shell. Eine gespiegelte semantische Staffelung erhält die beabsichtigten Extreme, macht beide Themes gleichwertig und lässt spätere Palettenkorrekturen automatisch in alle neutralen Flächen einfließen. | | 2026-07-26 | Für sichtbare Oberflächen ist der Projektskill `.claude/skills/assessor-ui/` die verbindliche Designquelle. Farbrollen, Severity-Palette und Komponenten werden zuerst dort gepflegt und anschließend in die Laufzeitkopien unter `src/styles/` gespiegelt; der Designprüfer vergleicht die Tokendeklarationen automatisch. Severity verwendet projektweit die fünf festgelegten Farben und immer weiße Beschriftung beziehungsweise einen weißen Haken im aufrechten Sechseck. Die gemeinsame Anwendungshülle besteht aus einer Topbar mit Seitentitel und globalen Theme-/Dichteaktionen, einer Navigation, einem dauerhaften Context Strip und einer dauerhaften Status Bar. | Die Regel macht spätere Korrekturen und Erweiterungen zu Änderungen am Gesamtsystem statt zu lokalen Sonderfällen. Die Severity-Tinte bleibt weiß; Critical, High, Low, Info und Unknown erreichen mindestens 4,92:1. Medium ist nach dem ausdrücklich gewünschten Rollentausch die einzige abgenommene Kontrastausnahme und wird zusätzlich durch Textlabel sowie feste Form/Position redundant codiert. Die gemeinsame Shell verhindert pro Ansicht auseinanderlaufende Kopf-, Kontext- und Statusbereiche. | | 2026-07-26 | Die verbindliche Designsprache liegt als Projektskill unter `.claude/skills/assessor-ui/`; seine beiden CSS-Dateien sind die Implementierungsbasis und werden als `src/styles/ui-tokens.css` und `src/styles/ui-components.css` in das Projekt gespiegelt (Änderungen zuerst am Skill, dann an der Kopie). Die Einführung erfolgt additiv statt als Ersetzung: Das Tokenset ist geladen, die Komponentenschicht noch nicht. Der Altbestand führt seine zehn abweichenden Maß- und Akzentwerte unter `--legacy-*` weiter; die sechs in beiden Systemen vorhandenen Klassennamen (`btn`, `icon-btn`, `input`, `select`, `tile-grid`, `is-bookmarked`) werden je Ansicht aufgelöst, beginnend mit `Work`. | Ein direktes Überschreiben von `tokens.css` und `components.css` hätte 33 aktiv referenzierte Tokens undefiniert gelassen und keine der 48 Altklassen bedient — der Designprüfer schlägt darauf zu Recht an. Umgekehrt genügt es nicht, die Komponentenschicht nur später zu laden: Cascade Layers verlieren lediglich bei gemeinsamen Eigenschaften, während zusätzliche Eigenschaften (`height`, `gap`, `justify-content`) sofort wirken und bestehende Ansichten still verändern — im Browser als 30px feste Höhe statt 24px Mindesthöhe an bestehenden Schaltflächen gemessen. Die additive Stufe hält deshalb genau die Zusage, die der Skill braucht (seine Tokens existieren im Build), ohne den bestehenden Zustand anzutasten. | | 2026-07-23 | Der extern gelieferte Datenvertrag RESULT_CONTRACT/CANONICAL_MODEL 1.0.0 wird additiv auf das bestehende Modell abgebildet (Pfad A): `result_type`, `is_ioe` und eine Asset-/Kantenschicht ergänzen `assessor_finding_occurrences` beziehungsweise neue additive Tabellen; es entsteht keine zweite, schreibbare `canonical_result`-Haupttabelle. `docs/CANONICAL_MODEL.md` bleibt der verbindliche implementierte Stand, der externe Vertragstext liegt unverändert unter `docs/RESULT_CONTRACT.md` und `docs/CANONICAL_MODEL_1.0.0.md`. | Eine zweite Resulttabelle oder ein zweites Importmodell würde die Entscheidung vom 2026-07-22 (Unified Result Model als ausschließlich lesende Projektion) unterlaufen und eine zweite Datenwahrheit erzeugen. Die drei fachlich neuen Zusagen des Vertrags lassen sich additiv realisieren, ohne die feiner geschnittenen Bestandsachsen (Outcome/Ausführung, Review) zu verlieren. | | 2026-07-23 | `result_state` aus RESULT_CONTRACT 1.0.0 wird nicht als eigene Spalte geführt, sondern per versionierter Regel (`RESULT_CONTRACT_MAPPING_VERSION`, `src/domain/result-contract-mapping.ts`) aus den bestehenden Achsen `outcome_normalized` und `technical_execution_state` projiziert. | Die Trennung von fachlichem Outcome und technischer Ausführung wurde am 2026-07-22 bewusst eingeführt, damit ein technischer Parser-/Toolfehler nicht als fachlich fehlgeschlagener Check erscheint. Eine kollabierte `result_state`-Spalte mit dem Wert `error` würde diese Unterscheidung wieder aufheben. | | 2026-07-22 | Nicht als Findings ausgewählte Quelltabellen dürfen ihre Originalzeilen optional im SourceTableRecord bewahren; Tabellen mit Finding-Vorkommen speichern diese Zeilen nicht zusätzlich. In Work erscheinen unterstützende Tabellen nach den fachlichen Finding-Ansichten und werden ausschließlich über explizite Result-Referenzen verknüpft. | Scanner-Workbooks wie PurpleKnight halten Ergebnisdetails in separaten Sheets. Tabellenmetadaten allein reichen nicht zur späteren Rekonstruktion; die begrenzte, additive Zeilenpersistenz verhindert Datenverlust und vermeidet zugleich Doppelhaltung der Finding-Haupttabelle. | | 2026-07-22 | PingCastle-Regelpunkte und Report-Scores bleiben getrennte dynamische Werte der jeweiligen Quelldatei. Statische Beschreibung, technische Erklärung, Lösung und Dokumentation dürfen für die Work-Darstellung nur aus einer im selben Projekt gespeicherten HTML-Begleitdatei mit identischem Dateistamm und identischer Rule ID ergänzt werden; die Katalogquelle wird angezeigt und die kanonischen Originalfelder werden nicht überschrieben. | Die PingCastle-XML serialisiert gematchte Regeln und berechnete Scores, aber nicht den vollständigen statischen Regelkatalog des HTML-Renderers. Eine explizite formatübergreifende Präsentationsanreicherung liefert den erwarteten Inhalt, ohne Scanwerte zu erfinden, Provenienz zu verlieren oder eine externe Laufzeitabhängigkeit einzuführen. | | 2026-07-22 | Nach einem erfolgreichen verbundenen Import wird Work aus dem erneut geladenen persistierten kanonischen Mandantenmodell aufgebaut; die rohe Parserprojektion bleibt ausschließlich der lokale Offline-Fallback. PingCastle priorisiert das fachliche Feld Title als Kartenüberschrift. | Persistenz und Darstellung dürfen nicht zwei semantische Wahrheiten zeigen. Insbesondere darf ein erkannter PingCastle-XML-Report nach dem Commit nicht als generischer Elementbaum erscheinen oder Kategorien statt Finding-Titeln hervorheben. | | 2026-07-22 | Native Finding-Vorkommen ohne `SourceTable` werden in der Work-Kompatibilitätsprojektion je Importdatei als eigene Unteransicht mit Werkzeug, Scandatum und technischem Dateiformat dargestellt. | Native Objekt- und Regelprovenienz darf nicht durch eine künstliche Tabelle verfälscht werden; gleichzeitig müssen vollständig persistierte Findings in Work gezielt nach Quelldatei beziehungsweise Format auswählbar bleiben. | | 2026-07-22 | Ein verknüpfter Scannerbericht wird als gesamter Scan Run innerhalb seines bestätigten Projekts gelöscht. Die Mutation invalidiert Vergleiche desselben Assessments, räumt nur verwaiste Definitionen und Fingerprints auf und entfernt ein Assessment nur dann, wenn kein Scan Run verbleibt. Mögliche Duplikate werden ausschließlich als nicht blockierende Heuristik für dasselbe bekannte Werkzeug und Dateizeitpunkte innerhalb von 60 Sekunden behandelt; exakte Hash-Dubletten bleiben davon getrennt. | Die Scan-Historie muss fachlich konsistent und mandantensicher löschbar sein, ohne gemeinsame Finding-Identitäten oder andere Läufe zu verlieren. Exportformate desselben Scans liegen typischerweise zeitlich eng beieinander, Dateizeitpunkte sind aber keine belastbare Identität und dürfen einen Import deshalb nur warnen, nicht sperren. | | 2026-07-22 | Native PingCastle-Findings werden durch einen werkzeugspezifischen Source Extractor aus bereinigtem HTML beziehungsweise der dekodierten `HealthcheckData/RiskRules`-XML-Hierarchie gewonnen. Dieselbe Rule ID bildet formatübergreifend dieselbe Finding-Definition; die Vorkommen und ihre Locators bleiben je Quelldatei getrennt. | PingCastle stellt Findings nicht verlässlich als generische Datentabelle bereit und rendert dieselbe Regel im HTML mehrfach. Stabile technische Rule IDs vermeiden falsche Titelidentitäten, während getrennte Vorkommen die absichtlich mehrfach hochgeladenen Exportformate und ihre Provenienz erhalten. | | 2026-07-22 | Die GPO-Submission-Vorstufe lässt den isolierten Worker weiterhin den gesamten Transportcontainer verifizieren, gibt aber nur die kompakte Containererkennung zurück; das vollständige Inventar bleibt in der Analysejob-/Parsergrenze. Workerfehler werden ausschließlich als sichere Codes und Namen diagnostiziert. | Ein vollständiges Inventar in Vorstufe, Hauptprozess und Analyseworker erzeugt bei großen entpackten Ordnern unnötige Speicherspitzen. Die kompakte Rückgabe erhält die Sicherheitsprüfung, ohne Quelldetails oder rohe Fehlermeldungen zu vervielfachen. | | 2026-07-22 | Scanner-Outcome und technischer Ausführungszustand werden getrennt persistiert; die historische Finding-Statusdimension bleibt nur als kompatible Quelle für Altdaten bestehen. Resultkategorien besitzen Namespace sowie Profil-ID/-Version und werden über eine mehrwertige Relation zu Occurrences gebunden. | Ein technischer Parser-/Toolfehler ist kein fachlich fehlgeschlagener Check. Namespace und Profilversion verhindern unbeabsichtigte Vermischung gleich benannter, aber semantisch verschiedener Toolkategorien. | | 2026-07-22 | Das Unified Result Model ist eine ausschließlich lesende Repository-Projektion. Der erste Vertikalschnitt projiziert Scanner-Vorkommen; GPO-Beobachtungen werden erst nach persistierter, versionierter Policy-Evaluation als eigene Source-Kind-Zeilen ergänzt. | Eine schreibbare Resulttabelle oder die direkte Umdeutung von PolicyObservation würde eine zweite Datenwahrheit beziehungsweise unbelegte Sicherheitsfindings erzeugen. Die gemeinsame Repositorygrenze hält Local, PostgreSQL, API und Browser synchron. | | 2026-07-22 | Der GPO-Persistenzworker verarbeitet Policyartefakte backupwurzelweise, reduziert jedes Dokument unmittelbar und hält keine vollständigen Parser-Zwischenmodelle oder Containerduplikate in seiner Rückgabe. Registry Preferences werden nach denselben Sicherheitsvorprüfungen mit dem lokal gebündelten `saxes` 6.0.0 ereignisbasiert statt als JSDOM-Baum geparst; Quellzeilen aller Preference-CSEs entstehen mit einem gemeinsamen linearen Scanner. | Der zuvor reproduzierte Workerheap-Peak bestand aus quadratischer Provenienzberechnung, gleichzeitig gehaltenen DOM-/Instruktionsmodellen und unnötiger Ergebnisklonung. Frühe Reduktion und SAX begrenzen den Speicher, ohne das Workerlimit anzuheben, semantische Provenienz zu verlieren oder aktive/externe XML-Funktionen zuzulassen. | | 2026-07-21 | Dead-Letter-GPO-Analysen werden ohne erneuten Upload projektgebunden zurück in die Queue gestellt. Das bewusste Löschen ist nur für vollständig fehlgeschlagene GPO-Artefakte nach exakter Bestätigung zulässig; relationale Historie und eine unabhängige Lösch-Outbox werden in einer Transaktion geschrieben, bevor die backendkontrollierte Dateikopie entfernt wird. Große Worker-Eingaben verwenden eine übertragene Kopie bei weiterhin harten Heapgrenzen. | Retry bewahrt das unveränderte Original und vermeidet unnötige Uploads. Die Outbox schließt das Absturzfenster zwischen Datenbankcommit und Dateilöschung, ohne die Quelldatei des Benutzers anzutasten; Transfer statt Structured Clone reduziert temporären Speicherbedarf, ohne die Ressourcengrenze aufzugeben. | | 2026-07-21 | GPO-Artefakt und initialer Analysejob werden atomar im Repository angelegt. Dateispeicher und Datenbank werden durch sofortiges Compensating Delete sowie eine periodische, 24 Stunden altersgesicherte und mengenbegrenzte Reconciliation abgeglichen. Der Mandantenstatus wird aus persistierten Artefakt-, Job- und Processing-Daten abgeleitet, nicht aus flüchtigem React-Zustand. | Dateisystem und PostgreSQL unterstützen keine gemeinsame Transaktion. Die Kombination schließt das normale Inkonsistenzfenster, schützt parallele Uploads durch Schonfrist und macht Queue-, Retry-, Dead-Letter- und Ergebniszustände nach Navigation oder Neustart nachvollziehbar. | | 2026-07-21 | Entpackte GPO-Backupordner werden im Chrome-Browser über relative `webkitdirectory`-Pfade eingelesen und als deterministischer unkomprimierter Transportumschlag an dieselbe projektgebundene ZIP-Ingestion übergeben. | Benutzer müssen kein Zwischenarchiv erzeugen; relative Struktur und Dateibytes bleiben erhalten. Eine einzige gehärtete Backend-Vertrauensgrenze inventarisiert sowohl direkte als auch browserseitig umschlossene Backups erneut. | | 2026-07-21 | Der ausgewählte Zielmandant ist dauerhafter Kontext des gesamten Importworkflows und muss bei jedem Phasenübergang einschließlich manueller Mappingfreigabe erhalten bleiben. | Vorschau und Bestätigung sind keine neue Importsitzung. Ein Verlust von `targetProjectId` würde einen fachlich falschen neuen Mandanten erzeugen und den Scan aus der erwarteten Mandantenhistorie entfernen. | | 2026-07-21 | Technische Importtabellen-Identitäten bestehen aus Quelldatei, Tabellenname und stabilem Tabellenindex; Kompatibilitätsprojektionen übernehmen diese Identität unverändert. | Anzeigenamen und Captions sind in HTML-Berichten nicht eindeutig. Der Index ist Bestandteil des Source Locators und verhindert, dass unterschiedliche Tabellen bei Recognition, Candidate-Mapping oder kanonischer Persistenz auf dieselbe ID kollabieren. | | 2026-07-21 | Drive Maps wird als eigener usergebundener Preference-CSE reduziert. Laufwerksbuchstabe, `useLetter` und C/D/R/U bestimmen gemeinsam den technischen Selektor; `thisDrive` und `allDrives` bleiben getrennt. UNC-Pfad, Persistenz, Label und optionaler Benutzername werden erhalten, ein Kennwort nur als `passwordAttributePresent`. | Microsoft definiert für `useLetter=0` abhängig von der Aktion Delete-Bereich, ersten freien Buchstaben oder erstes vorhandenes Mapping im Bereich. Eine Reduktion auf Buchstabe oder Endmapping würde diese Verarbeitung und die Sichtbarkeitspräzedenz verlieren; ohne Zielsystem und RSoP bleibt die Wirkung unbekannt. | | 2026-07-21 | Services wird als eigener computergebundener Preference-CSE reduziert. Die Preference-Instruktion heißt `configure`; Laufzeitaktion, Starttyp, Fehleraktionen und dokumentierte Zeitfelder bleiben getrennte Werte. Ein vorhandenes Dienstkontokennwort wird ausschließlich als `passwordAttributePresent` modelliert. | Services besitzt keine Registry-C/D/R/U-Aktion. `RESTART_IF_REQUIRED` hängt vom Starttyp und Clientzustand ab; ohne Zielsystem und RSoP darf daraus kein Endzustand abgeleitet werden. Zeitfelder werden nicht ohne Spezifikationseinheit umgerechnet und `cpassword` wird nicht weitergegeben. | | 2026-07-21 | Local Users and Groups wird als eigener Preference-CSE reduziert. Lokale Benutzer und Gruppen bleiben verschiedene Werttypen; bei Gruppen haben SIDs Vorrang vor Namen, Delete-all-Operationen bleiben vor der geordneten Add/Remove-Mitgliedsliste erhalten. Bei Benutzern wird ein Passwort ausschließlich als boolescher `passwordAttributePresent`-Indikator modelliert. | Benutzer-, Gruppen- und Mitgliedschaftsoperationen besitzen unterschiedliche Ziel- und Reihenfolgesemantik. Eine Mengenaggregation oder Speicherung von `cpassword` würde die tatsächliche Clientverarbeitung verfälschen beziehungsweise ein bekanntes Geheimnis unnötig weiterverbreiten. | | 2026-07-21 | Group Policy Preferences erhalten keinen universellen Key/Value-Reducer. Der erste unterstützte CSE-Typ ist Registry Preferences; jede Item-UID bleibt mit Verarbeitungsreihenfolge, Aktion, Deaktivierung, Remove-on-unapply, Apply-once und nicht ausgewertetem Item-Level-Targeting als Instruktion erhalten. Registry Policy und Registry Preference bleiben verschiedene Delivery-Mechanismen. | Microsoft definiert sequenzielle CSE-Verarbeitung und aktionsabhängige Create/Delete/Replace/Update-Semantik. Targeting und Persistenzverhalten können die tatsächliche Wirkung ändern; ein kollabierter Endwert oder eine Gleichsetzung mit `Registry.pol` würde diese Abhängigkeiten verlieren. | | 2026-07-21 | Advanced Audit Policy verwendet ausschließlich die technische Subcategory-GUID und den numerischen Auditflagwert 0 bis 3 als Identität und Wert. Anzeigenamen werden nicht semantisch verwendet, System- und benutzerspezifische Ziele nicht zusammengeführt und Advanced Audit bleibt von Legacy Audit getrennt. | Anzeigenamen und Ein-/Ausschlusstexte sind lokalisierbar. Eine Zusammenführung verschiedener Ziel- oder Auditmechanismen würde unterschiedliche Anwendungsebenen verschleiern; ohne RSoP darf eine Backupkonfiguration zudem nicht als effektiv behauptet werden. | | 2026-07-21 | Security Templates werden abschnittsspezifisch in rohe Instruktionen und anschließend durch einen eigenen versionierten Reducer in Policy-Beobachtungen überführt. Unterschiedliche Dubletten werden als Konflikt behalten; unbekannte Abschnitte bleiben unvollständig und effektive Anwendung bleibt `unknown`. | Security-Template-Abschnitte besitzen unterschiedliche Semantik. Eine universelle Key/Value- oder Last-write-wins-Logik würde insbesondere Principal-Mengen, Registry-Typen und widersprüchliche Instruktionen verfälschen und ohne RSoP unzulässig Wirksamkeit behaupten. | | 2026-07-21 | Ein GPO-Analysejob liest ausschließlich das projektgebundene backendkontrollierte Original mit erneuter Größen-/SHA-256-Prüfung. Processing Run und Backupinstanzen werden atomar und unveränderlich vor dem Jobabschluss gespeichert; deterministische IDs erkennen einen Crash-Retry exakt, abweichende Wiederholungen werden abgelehnt. | Ein Prozessabbruch zwischen Analyse und Queue-Abschluss darf weder Ergebnisse verlieren noch Historie duplizieren oder überschreiben. Die Datenbanktransaktion bildet die fachliche Commit-Grenze, der Lease-Job bleibt kontrolliert wiederholbar. | | 2026-07-21 | GPO-Uploads werden ausschließlich über eine projektgebundene Backend-Submission angenommen: Projektprüfung und begrenzte Worker-Vorprüfung erfolgen vor Speicherung; Originale erhalten `secret`-Sensitivität, der Webroot darf den Speicher nicht enthalten und die API gibt keine Speicherreferenz aus. Ein versionierter projektweit idempotenter Job trennt Annahme von Analyse. | Unvertrauenswürdige oder projektlose Bytes dürfen nicht aufbewahrt werden; Rohartefaktzugriff und Parserlast bleiben Backendaufgaben. Die Queuegrenze erlaubt reproduzierbare spätere Ausführung, ohne bereits Ergebnisvollständigkeit zu behaupten. | | 2026-07-20 | GPO-GUID und Backup-GUID werden ausschließlich aus unterstützten XML-Inhalten getrennt abgeleitet; Anzeigenamen und Ordnernamen sind niemals technische Identität. Erkannte ungültige oder widersprüchliche Identitäts-, Domänen- oder Zeitwerte blockieren die Ableitung vollständig. | Microsoft modelliert `GpoBackup.Id` als Backupinstanz getrennt von `GpoBackup.GpoId`; Namen sind nicht eindeutig. Fail-closed verhindert die scheinbar plausible Auswahl einzelner Werte aus widersprüchlichen Metadaten. | | 2026-07-20 | Rohartefakte werden über zufällige Backendschlüssel nach privatem Staging, Flush und tatsächlicher Hash-/Größenprüfung überschreibungsfrei veröffentlicht und beim Lesen erneut geprüft. Die Speicherimplementierung wird erst mit expliziter Root-, Projekt- und Autorisierungsbindung öffentlich angebunden. | Reprocessing benötigt unveränderte Bytes, während Dateinamen, Clientpfade und Webroot keine Speicher- oder Zugriffsautorität sein dürfen. | | 2026-07-20 | GPO-ZIPs werden in einem eigenen ressourcenbegrenzten Backend-Worker zweistufig verarbeitet: vollständige Struktur-, Pfad-, Kollisions-, Typ- und Bereichsprüfung vor Dekompression, danach begrenzte In-Memory-Prüfung von Ist-Größe, Kompressionsverhältnis, CRC und SHA-256. Archiveinträge werden nicht auf das Dateisystem ausgeschrieben. | Zentralverzeichnisangaben allein sind nicht vertrauenswürdig; die Trennung hält GPO-Containerlogik aus Browser und Scannerparsern heraus und begrenzt manipulierte oder komprimierte Eingaben anhand tatsächlich gelesener Daten. | | 2026-07-20 | GPO-Snapshots werden ausschließlich über Projekt, technisch belegte Domäne und expliziten Backupsatz gruppiert; Namen, Pfade und behauptete Zielbenutzer sind keine Gruppierungs- oder Scope-Evidenz. Historische oder nicht eindeutig zuordenbare Instanzen bleiben getrennt. | Nur technisch belegte Gleichzeitigkeit verhindert erfundene Konflikte und eine Vermischung verschiedener Domänen oder Erhebungsstände. | | 2026-07-20 | Aussagen über die Abwesenheit einer Einstellung innerhalb eines Backupsatzes sind nur für einen konsistenten, manifestgestützten vollständigen Domänenexport mit exakter erwarteter und beobachteter GPO-Anzahl sowie vollständig unterstützten Einzelinstanzen zulässig. | Setvollständigkeit und Instanzvollständigkeit sind unabhängig; Teilmengen, Parserlücken und unbekannte Artefakte dürfen keine negativen Gesamtaussagen erzeugen. | | 2026-07-20 | Relative Artefaktpfade werden vor jeder GPO-Verarbeitung NFC-normalisiert und gegen Traversal, absolute/UNC-/Laufwerkspfade, ADS, Windows-Gerätenamen, Steuer-/Bidi-Zeichen sowie Unicode-/Case-Kollisionen validiert. Skripte werden höchstens inventarisiert und niemals als unterstützter aktiver Inhalt behandelt. | Archivmetadaten und Dateinamen sind nicht vertrauenswürdig; plattformabhängige Aliasbildung darf weder Dateien überschreiben noch Sicherheitsentscheidungen umgehen. | | 2026-07-20 | Für neu verarbeitete Scannerdateien ist das bestätigte `CandidateMappingResult` die einzige semantische Quelle der kanonischen Persistenz; die direkte UI-Tabellenprojektion bleibt nur als Legacy-Fallback ohne vorhandenes Mapping. Native Candidate-Feldbestätigungen verwenden separat validierte Decision-IDs. | Vorschau, Benutzerfreigabe, Reprocessing und Persistenz müssen dieselben versionierten Entscheidungen und Originalwerte verwenden; native Objektprovenienz darf nicht durch eine Kompatibilitätstabelle ersetzt oder durch eine zweite Mappinglogik verfälscht werden. | | 2026-07-20 | Allgemeine Importartefakte und Processing Runs sind unveränderliche, projektgebundene Historienobjekte; persistente Ingestion Jobs werden projektweit idempotent, mit begrenzten Versuchen, Leases, Recovery und Dead Letter verarbeitet. | Reprocessing muss reproduzierbar bleiben, parallele Worker dürfen Aufträge nicht doppelt bearbeiten, und wiederholte Requests oder Leerlauf-Polls dürfen keine fachliche Änderung vortäuschen. | | 2026-07-20 | Vor Phase 14 werden Phase 13A für Ingestion 2.0 und Phase 13B für die deterministische GPO-/Baselineanalyse eingefügt; historische Phasen bleiben unverändert. | Die Querschnittsfunktion baut auf den abgeschlossenen Phasen 3 bis 13 auf, ist kein Firmenbetriebsthema und benötigt eine kontrollierte Erweiterung gemeinsamer Import- und Persistenzgrenzen. | | 2026-07-20 | Technisches Format, Quellwerkzeug, Reportvariante, fachliche Beobachtung und kanonisches Finding sind getrennte Ebenen mit eigenen Adapter-, Extractor- und Mappingverträgen. | Ein Format soll einmal sicher dekodiert werden, ohne Toolwissen in Parsern oder doppelte Businesslogik für jede Tool-Format-Kombination. | | 2026-07-20 | Die Batch-Werkzeugübertragung vom 2026-07-18 wird präzisiert: Sie darf nur die Scan-Lauf-Zuordnung und Anzeige einer generischen Begleitdatei bestimmen; Dateiprofil, Extraktion und Mapping benötigen weiterhin eigene strukturelle Validierung. | Ein fachlich zusammengehöriger Mehrdatei-Export soll gemeinsam angezeigt werden, ohne eine unbekannte Begleitdatei fälschlich mit werkzeugspezifischer Parsing- oder Finding-Logik zu verarbeiten. | | 2026-07-20 | Source Extractors sind ausschließlich statisch registrierte, versionierte Komponenten und erzeugen neutrale FindingCandidate-Quellobjekte; kanonische Rollen und Identitäten bleiben Aufgabe nachgelagerter Mappingprofile. | Reportstruktur und fachliche Semantik müssen getrennt bleiben; importierte Inhalte dürfen keinen Code registrieren, und ein Spezialextractor darf den generischen Fallback nur mit positiver struktureller Evidenz verdrängen. | | 2026-07-20 | Extraktionsvarianten und Mappingprofile werden unabhängig versioniert; Recognition und Candidate-Mapping verwenden eine gemeinsame Feldrollen-Evidenz, und bestätigte Overrides werden bei der Neuberechnung übernommen. | Reportstruktur darf die fachliche Semantik nicht fest verdrahten; Vorschau, Bestätigung und späteres Reprocessing müssen dieselbe reproduzierbare Mappingentscheidung verwenden. | | 2026-07-20 | Dauerhafte Finding-Identitäten entstehen nur aus stabilen werkzeuggebundenen Regel-IDs, eindeutigen technischen Framework-/Control-IDs oder explizit bestätigten lokalen Regeln; Titel und Merkmalskombinationen bleiben Reviewhinweise. | Gleichlautende oder ähnlich benannte Findings dürfen weder global zusammengeführt noch als persistent, neu, gelöst oder wiederaufgetreten klassifiziert werden, solange keine belastbare technische oder bestätigte lokale Identität vorliegt. | | 2026-07-20 | Parser werden zentral nach validierter Datei-/Containersignatur und Inhaltsstruktur gewählt; Dateiendung und Client-MIME sind nur schwache Evidenz. Generische ZIPs werden bis zur expliziten Containeradapterphase nicht als Excel oder Text verarbeitet. | Manipulierte oder falsch benannte Dateien dürfen weder formatbezogene Sicherheitslimits umgehen noch einen ungeeigneten Parser erzwingen; Containerunterstützung muss explizit und ressourcenbegrenzt eingeführt werden. | | 2026-07-20 | DecodedSourceDocument erweitert den bestehenden Importvertrag additiv um typisierte Sichten, Locator-Provenienz und Processing-States; ImportDocument bleibt vorerst ein Kompatibilitätsname und tabellarische Projektionen werden als solche gekennzeichnet. | Native Objekt-, Hierarchie- und Textstrukturen dürfen nicht durch eine künstliche Tabelle ersetzt werden, während UI und bestehende Recognition bis zur kontrollierten Migration weiter funktionieren müssen. | | 2026-07-20 | Bestätigungsbedürftige Erkennungsentscheidungen werden nicht automatisch beim Importabschluss bestätigt; der Client überträgt explizite Overrides und das Backend validiert und appliziert sie auf seine unveränderte Vorschau. | Clientanzeige und persistiertes kanonisches Modell müssen dieselbe nachvollziehbare Entscheidung verwenden; manipulierte oder veraltete Zuordnungen dürfen die serverseitige Vertrauensgrenze nicht umgehen. | | 2026-07-20 | GPO-Backups verwenden den gemeinsamen Ingestion-Unterbau, erzeugen aber `PolicyObservation` statt `FindingCandidate` und werden erst nach semantischer Reduktion, Aggregation und Evaluation mit dem Finding-Modell verbunden. | GPO-Artefakte enthalten Konfigurationsinstruktionen mit CSE-spezifischer Reihenfolge, Targeting-, Override- und Persistenzsemantik und sind keine Scannerfindings. | | 2026-07-20 | Eine GPO wird nicht als Ganzes einem Zielsystem zugeordnet; jede Policy wird gegen alle vollständig geprüften technisch plausiblen Kontexte eines Environment Profiles bewertet. | GPO-Namen und manuelle Zielzuordnungen sind unzuverlässig; belastbare Aussagen entstehen aus technischer Identität und Baseline-Consensus. | | 2026-07-20 | Ein normales GPO-Finding bestätigt eine konfigurierte Abweichung im untersuchten Snapshot, nicht die effektive Anwendung in der Umgebung. | Links, Reihenfolge, Vererbung, Enforced, Block Inheritance, Security-/WMI-Filter, Loopback und RSoP fehlen in einem Backupsatz ganz oder teilweise. | | 2026-07-20 | GPO- und Baselineoriginale werden für reproduzierbares Reprocessing unverändert über eine backendkontrollierte Artefaktspeichergrenze aufbewahrt; mögliche Geheimnisse werden nicht entschlüsselt und maskiert. | Neue Parser- und Regelversionen müssen dieselben Eingaben verwenden können, ohne sensible Inhalte über Webroot, UI, Logs oder Exporte offenzulegen. | | 2026-08-04 | EnvironmentProfile wird als unveraenderliche Revisionskette gespeichert; eine Snapshotaggregation referenziert eine konkrete Profilrevision und eine explizite, eindeutige Menge versionierter Identity-Analysis-Runs. Die Aggregation persistiert nur beobachtete technische Zustaende und Reviewhinweise, setzt Wirksamkeit auf unknown und darf keine Findings erzeugen. | Profilwahl, Quellanalysen und Engineversion muessen fuer Reprocessing reproduzierbar bleiben. Ohne GPO-Link-/Praezedenz-, Targeting- und RSoP-Evidenz waere jede Effektivitaets- oder Findingaussage in dieser Stufe unbelegt. | | 2026-08-04 | Comparator-, Risiko- und Dependency-Semantik wird ausschliesslich aus einem unveraenderlichen freigegebenen, setting- und kontextspezifischen Policy-Evaluation-Regelkatalog bezogen. Der vollstaendige Katalogsnapshot gehoert zum Evaluation Run und dessen Idempotenzschluessel. Fehlt genau eine passende Regel, bleibt das Ergebnis Katalogluecke und Review; es gibt keinen generischen Equality-Fallback. Prerequisite und Override koennen nur bei vollstaendigem abwesenheitsfaehigem Snapshot Nichtanwendbarkeit belegen, Mutual Exclusion erzeugt ohne dokumentierte Praezedenz Review. | Typisierte Comparatorfunktionen allein belegen keine fachliche Vergleichsordnung. Ein leerer freigegebener Produktionskatalog ist sicherer als heuristische Regeln und erlaubt schrittweise fachliche Freigaben, ohne alte Runs umzuschreiben oder unvollstaendige Evidenz in Findings umzuwandeln. | | 2026-08-04 | PolicyEvaluation wird als eigene versionierte, idempotente Stufe nach der Snapshotaggregation gespeichert. Ein Run bindet genau einen Aggregationslauf, dessen Environment-Profile-Revision und pro Kontext genau eine Baselineanalyse; nur vollstaendige, eindeutige und konsistente Evidenz darf eine bestaetigte konfigurierte Abweichung als finding-berechtigt klassifizieren. Die Stufe erzeugt dennoch keine Findings, setzt Wirksamkeit immer auf unknown und haelt projectedFindingCount relational bei null. | Bewertung, Finding-Erzeugung und Wirksamkeit bleiben getrennte Vertrauensgrenzen. Damit koennen partielle Kataloge, Konflikte, nicht aufgeloeste Identitaeten oder unfreigegebene Vergleichssemantik weder durch Retry noch durch API- oder Repositoryfehler zu einem Finding werden. | | 2026-07-20 | Historische GPO-Backupinstanzen, Domänen und Erhebungszeitpunkte werden vor der Aggregation in Analysesnapshots getrennt. | Mehrere Sicherungen derselben GPO oder gemischte Erhebungen sind keine gleichzeitig wirksame Konfiguration. | | 2026-07-20 | Baselinevergleiche verwenden nur freigegebene typisierte Comparatoren sowie versionierte Dependency-, Override- und Risikoregeln. | Nicht jede Abweichung besitzt eine Ordnung schwächer/stärker, und komplexe Einstellungen benötigen ihre dokumentierte Anwendungssemantik. | | 2026-07-18 | Die Entscheidung „Open lädt das neueste Assessment“ wird ersetzt: Open lädt alle gespeicherten Assessments und Scan-Läufe des Mandanten und führt sie in Work mit einem Gesamtblatt sowie getrennten Quellansichten zusammen. | Ein Mandant ist die Klammer über seine vollständige Importhistorie; eine Beschränkung auf den neuesten Lauf blendet ältere Excel- oder andere Scanberichte fälschlich aus. | | 2026-07-18 | Open lädt über die Backend-API das neueste Assessment-Modell des gewählten Mandanten und rekonstruiert daraus die Work-Datenansicht. | Ein aktiver Mandantenkontext ohne geladene persistierte Findings erfüllt die Bedeutung von Open nicht und lässt Work fälschlich leer. | | 2026-07-18 | Ein gemeinsam hochgeladener Dateisatz wird im Datahub als ein Scan-Lauf dargestellt; ist darin genau ein nicht-generisches Werkzeug erkannt, wird es auf generische Begleitdateien dieses Laufs übertragen. | Mehrdatei-Exporte eines Scanners sind ein fachlicher Bericht und dürfen weder als einzelne Berichte noch überwiegend als „Tabellendaten“ erscheinen. | | 2026-07-18 | Eine erfolgreiche Mandanten-Speichermeldung benötigt nach dem bestätigten Projekt-Upsert einen zweiten Lesezugriff und den Feldabgleich mit dem gespeicherten Datenbankstand. | Die Oberfläche darf Erfolg erst melden, wenn der persistierte Stand tatsächlich wieder aus dem Repository gelesen wurde. | | 2026-07-17 | Work benötigt einen explizit im Datahub geöffneten Mandanten; Stammdaten und Dateiimport bleiben in einer nicht-modalen Datahub-Bearbeitungsansicht. | Arbeitskontext und Datenpflege sind eindeutig getrennt, und Dateien erhalten immer eine sichtbare Mandantenzuordnung. | | 2026-07-17 | Zielzustand ist eine interne Browseranwendung mit Backend. | Mehrere Mitarbeitende sollen ASSESSOR ohne lokale Installation verwenden können. | | 2026-07-17 | PostgreSQL ist die Zieldatenbank. | Der Firmenbetrieb benötigt zentrale, transaktionale und mehrbenutzerfähige Speicherung. | | 2026-07-17 | SQLite ist höchstens eine Übergangslösung, nicht das Ziel. | Eine frühe SQLite-Kopplung würde spätere Migration und Mehrbenutzerbetrieb erschweren. | | 2026-07-17 | Die Parsing- und Normalisierungsengine bleibt deterministisch. | Kernimporte müssen nachvollziehbar, testbar und ohne externe KI funktionieren. | | 2026-07-17 | Tauri bleibt vorerst erhalten, darf aber keine neue fachliche Abhängigkeit erzeugen. | Die aktuelle lokale Anwendung soll nutzbar bleiben und zugleich serverfähig werden. | | 2026-07-17 | Originalwerte und normalisierte Werte werden getrennt gespeichert. | Vergleiche benötigen Normalisierung, Audits benötigen unveränderte Quelldaten. | | 2026-07-17 | Bekannte Scanner werden über Profile integriert. | Die Kernpipeline soll nicht aus werkzeugspezifischen Sonderfällen bestehen. | | 2026-07-17 | Finding-Definition und Finding-Vorkommen sind getrennte Fachobjekte. | Dieselbe Regel soll über mehrere Scan-Läufe vergleichbar bleiben, ohne Definitionen zu duplizieren. | | 2026-07-17 | Reviews werden getrennt von importierten Vorkommen gespeichert. | Benutzerarbeit darf Original- und Mappingdaten nicht verändern. | | 2026-07-17 | Das kanonische Modell ist noch kein Datenbankschema. | Persistenzdetails werden erst nach Import-Zwischenmodell und Plattformtrennung festgelegt. | | 2026-07-17 | Alle Formatparser liefern ein gemeinsames, versioniertes Import-Zwischenmodell. | Dateidekodierung, semantische Erkennung und bestehende UI-Kompatibilität bleiben dadurch getrennte Schichten. | | 2026-07-17 | Die Importengine erhält Bytequellen und injizierbare Laufzeitadapter. | Derselbe Engine-Einstieg kann heute im Browser und später mit serverseitigen Datei-, Text- und Markupadaptern verwendet werden. | | 2026-07-17 | Automatische Erkennung verwendet vier Konfidenzklassen und bewahrt unsichere Felder als Zusatzdaten. | Niedrige oder unbekannte Zuordnungen dürfen keine Quelldaten verändern oder verwerfen und bleiben explizit korrigierbar. | | 2026-07-17 | Werkzeugwissen wird in versionierten ToolProfileDefinition-Objekten gepflegt. | Erkennung, Mapping, Normalisierung, Präsentation und Vergleichsschlüssel können erweitert werden, ohne Parser oder React-Komponenten zu ändern. | | 2026-07-17 | Facetten werden aus Rollen, Datentypen und realen Wertverteilungen abgeleitet. | Die Oberfläche bleibt werkzeugunabhängig und erzeugt nur Filter, die im aktuellen Datenbestand sinnvoll nutzbar sind. | | 2026-07-17 | Nur eindeutige Schlüssel oder bestätigte lokale Regeln erzeugen automatische Finding-Identitäten. | Ähnlichkeit ist ein Reviewvorschlag; mehrdeutige Kandidaten dürfen Vergleiche und spätere Persistenz nicht verfälschen. | | 2026-07-17 | AssessorRepository ist die fachliche Persistenzgrenze; ein Import entspricht einer atomaren Scan-Lauf-Transaktion. | Backend, PostgreSQL und lokale Referenzimplementierungen können ausgetauscht werden, ohne Import-, Vergleichs- oder React-Logik an Speichertechnologien zu koppeln. | | 2026-07-17 | Das lokale Backend verwendet Node.js-Bordmittel und eine versionierte Same-Origin-API unter /api/v1. | Die Entwicklungsarchitektur bleibt abhängigkeitsarm, browserfähig und kann später hinter internem HTTPS betrieben werden. | | 2026-07-17 | Serverseitige HTML-/XML-Verarbeitung verwendet jsdom als nicht skriptausführenden Markupadapter. | Browser- und Serverbetrieb nutzen dieselbe plattformneutrale Importengine, ohne importierte aktive Inhalte auszuführen. | | 2026-07-17 | PostgreSQL speichert relationale Identitäten und Beziehungen sowie das vollständige Fachobjekt zusätzlich als JSONB. | Integritätsregeln bleiben datenbankseitig erzwingbar, während neue Scannerfelder ohne verlustreiche oder vorschnelle Schemaänderung aufgenommen werden können. | | 2026-07-17 | Datenbankmigrationen sind unveränderliche, nummerierte SQL-Dateien mit SHA-256-Prüfsumme und Advisory-Lock. | Mehrere Backendstarts können sicher koordiniert werden; veränderte bereits angewandte Migrationen werden erkannt und abgewiesen. | | 2026-07-17 | Eine konfigurierte, aber nicht erreichbare PostgreSQL-Datenbank darf nicht still auf In-Memory zurückfallen. | Ein Konfigurationsfehler darf keine scheinbar erfolgreichen, aber flüchtigen Importe erzeugen. | | 2026-07-17 | Bestätigte Batchimporte werden serverseitig aus der unveränderten Vorschau in ein kanonisches Modell überführt und gemeinsam mit Fingerprints atomar gespeichert. | Vorschau, Benutzerfreigabe und dauerhafte Daten müssen nachweisbar zusammengehören; ein Fehler darf weder Teil-Findings noch isolierte Dubletteneinträge hinterlassen. | | 2026-07-17 | Nicht vertrauenswürdige Importe werden durch eine zentrale Inhaltsrichtlinie und isolierte, begrenzte Serverworker verarbeitet. | Formate teilen dieselben überprüfbaren Grenzen; zeit- oder speicherintensive Parser dürfen den Backendprozess nicht unkontrolliert blockieren. | | 2026-07-17 | Reine Finding-Auswahl löst keine Vollfilterung aus; geschlossene verknüpfte Result-Bereiche rendern keine Tabellen. | Navigation bleibt auch bei umfangreichen Ergebnis-Sheets reaktionsfähig, ohne Daten oder Funktionen zu entfernen. | | 2026-07-17 | Lokale Review-Persistenz erfolgt nach dem sichtbaren UI-Update in einer begrenzten Idle-Phase. | Bookmark- und Review-Aktionen reagieren sofort; die lokale Speicherung bleibt automatisch und wird bei weiteren Änderungen neu eingeplant. | | 2026-08-23 | Profil-, Mapping-, Normalisierungs- und Darstellungsstand werden getrennt persistiert und über einen append-only kanonischen Kompatibilitätsschlüssel bewertet. Unbekannte oder semantisch inkompatible Stände desselben Werkzeugs blockieren Timeslot-Mischung und Lifecycle-Vergleich; historische Daten werden nicht umgeschrieben. | Eine gleiche sichtbare Profilnummer belegt keine gleiche fachliche Semantik. Explizite Verträge verhindern stille Umdeutung, falsche Neu-/Gelöst-Aussagen und nicht reproduzierbare Teilreimporte. | | 2026-08-23 | Die Processing-Readiness einer Datahub-Mandantenkachel bezieht sich auf den neuesten scannergebundenen und ueber `Open` erreichbaren Timeslot: `Current` und `Compatible older` sind gruen, `Reimport recommended`, `Incompatible` und `Unknown` rot; ohne Scannerstand erscheint kein Punkt. | Die Uebersicht soll den unmittelbar nutzbaren Bewertungsstand anzeigen. Ein historischer Altstand darf einen aktuell korrekt verarbeiteten Mandanten nicht dauerhaft rot markieren; GPO-only-Gruppen besitzen keinen Scanner-Processingvertrag. | | 2026-08-23 | Processing-Readiness unterscheidet in Datahub-Kachel und Mandantendetail drei semantische Stufen: `Current`/`Compatible older` gruen, `Reimport recommended` gelb und nur `Incompatible`/`Unknown` rot. Bei Update oder Fehler bleibt `Manage` auch ohne Kartenauswahl sichtbar; beim Oeffnen werden alle betroffenen Timeslots automatisch aufgeklappt. | Ein weiterhin nutzbarer Scan mit neuerem ASSESSOR-Profilstand ist ein Wartungshinweis und kein Fehler. Die unmittelbare Aktion und das automatische Offenlegen der Erklaerung vermeiden Sucharbeit, waehrend Rot fuer unsichere Verarbeitungsvertraege reserviert bleibt. | | 2026-08-23 | Der Processing-Readiness-Punkt ist fuer beide Zustaende ein 14-px-Eckindikator mit 4 px Abstand zur oberen und linken Kartenkante. | Die gemeinsame Geometrie setzt Rot und Gruen gleichwertig in die 8-px-Rundung der Mandantenkachel, bleibt mit minimalem Abstand innerhalb der Kontur und veraendert weder Statuslogik noch Bedienung. | | 2026-08-23 | Scanner-Reimport ersetzt einen aktiven ScanRun revisionssicher durch einen neuen Lauf im selben Assessment: Der neue Lauf referenziert den Vorgaenger, der Vorgaenger den Nachfolger. Alte Quelldaten, Findings und Vergleiche bleiben intern erhalten, waehrend aktive Datahub-, Work-, Result- und Environment-Projektionen supersedierte Laeufe ausblenden. | Ein Reimport darf weder einen manuellen Loeschschritt noch eine riskante Delete-then-Import-Luecke erzeugen. Die Supersession bleibt auditierbar und der alte Lauf bleibt bei jedem Fehler aktiv; normale Scanneroriginale werden weiterhin nicht aufbewahrt und muessen deshalb erneut ausgewaehlt werden. | | 2026-08-23 | Ein exakter Dateitreffer wird im explizit zielgebundenen Reimport nicht als `Duplicate`, sondern als positiver Status `Expected replacement source` dargestellt und bleibt vorausgewaehlt. `Duplicate` bleibt ausschliesslich die Warnung des normalen Importwegs; die Reimportaktion heisst `Reimport and replace`. Das vorgelagerte Panel benennt ausdruecklich das neue interne ASSESSOR-Verarbeitungsprofil samt Versionspfeil und stellt klar, dass der Scannerbericht selbst unveraendert ist. | Dieselben Bytes sind beim normalen Import ein moeglicher Bedienfehler, beim Reimport aber der erwartete und sicherste Ersatznachweis. Kontextabhaengige Sprache verhindert, dass Nutzer eine korrekte Datei aus Angst vor einer Dublette abwaehlen oder die Profilaktualisierung faelschlich dem Scannerhersteller zuschreiben, ohne die technische Hashpruefung oder den sicheren Ersatzvertrag abzuschwaechen. | | 2026-08-23 | Ein Reimport-Backend muss das exakte Ersatz-Ziel bereits in der Vorschau zurueckspiegeln und nach dem Commit erneut bestaetigen. Ein bereits durch einen alten Server als normaler Import angelegter neuer Lauf kann explizit als Ersatz eines aelteren aktiven Laufs desselben Werkzeugs im selben Timeslot uebernommen werden. | Ein laufender veralteter Backendprozess darf neue Frontendfelder nicht still ignorieren und dadurch Dubletten erzeugen. Die kontrollierte Reparatur verknuepft vorhandene Laeufe atomar, loescht keine Daten und bleibt durch Werkzeug-, Timeslot-, Aktivitaets- und Zeitfolgepruefung begrenzt. | | 2026-08-23 | Der lokale Standardstarter besitzt den Backendprozess selbst und fuehrt fuer jede erfolgreich gebaute Serverrevision einen kontrollierten Prozesswechsel aus. Health meldet SHA-256-Release- und Entwicklungsinstanzkennung; ein zuvor verwalteter verwaister Prozess darf nur bei Uebereinstimmung mit der lokalen Laufzeitdatei uebernommen werden. | Frontend-HMR und ein dauerhaft alter Backendprozess duerfen im Entwicklungsbetrieb nicht erneut auseinanderlaufen. Ein fehlerhafter Rebuild laesst den letzten gesunden Server aktiv; ein fremder Prozess auf Port 4173 wird niemals pauschal beendet oder still als kompatibel akzeptiert. | | 2026-08-24 | Die im Kopfbereich dauerhaft sichtbare ASSESSOR-Version bezeichnet den globalen ASSESSOR-Verarbeitungsvertrag und wird unter dem Markennamen ausschliesslich als Zahlenfolge dargestellt. | Die fachlich relevante Processing-Version darf nicht mit der technischen npm-Paketversion verwechselt werden; die Oberflaeche verwendet dieselbe zentrale Processing-Konstante wie der Verarbeitungsvertrag. | | 2026-08-24 | Die Processing-Readiness einer Datahub-Mandantenkachel umfasst alle aktiven scannergebundenen Timeslots des Mandanten. Ein Reimportbedarf in irgendeinem Timeslot setzt die Kachel gelb und macht `Manage` dauerhaft sichtbar; Fehlervertraege setzen sie rot. `Open` bleibt unabhaengig davon auf den neuesten scannergebundenen Timeslot gerichtet. | Lifecycle-Vergleiche zwischen Timeslots sind nur verlaesslich, wenn alle beteiligten Staende den aktuellen ASSESSOR-Verarbeitungsvertrag verwenden. Ein aktueller neuester Timeslot darf einen aelteren, noch aktiven und spaeter vergleichbaren Altstand nicht als gruen ueberdecken. | | 2026-08-24 | Ein zielgebundener Scanner-Reimport verlangt die exakte Gleichheit des vollstaendigen SHA-256-Multisets aller Importdateien des zu ersetzenden ScanRuns mit der erneut ausgewaehlten und final bestaetigten Dateimenge. Dateiname, Datum, Werkzeug oder Aehnlichkeit genuegen nicht; fehlende Originalhashes werden fail closed behandelt. | Nur Byte-Identitaet schliesst aus, dass ein anderer Bericht, ein anderer Erfassungszeitpunkt oder ein unvollstaendiger Mehrdatei-Report denselben Timeslot ersetzt. Die Pruefung in Vorschau, Abschluss und Repository schuetzt Vergleichbarkeit, Provenienz und den aktiven Bestand auch gegen veraltete oder manipulierte Clients. | ### Verbindlicher Verarbeitungsversionsvertrag (Nachhärtung Phasen 5, 6, 8, 9, 12 und 13A) Status: umgesetzt und mit synthetischen Vertrags-, Import-, Vergleichs- und Read-Model-Tests verifiziert (2026-08-23). Diese Regeln sind für jede künftige Profil-, Mapping-, Normalisierungs- oder Darstellungsänderung verbindlich: 1. Profil-, Mapping-, Normalisierungs- und Darstellungsstand werden getrennt versioniert und gemeinsam mit einem stabilen kanonischen Kompatibilitätsschlüssel persistiert. Ein Profil-Release darf die anderen Stände nicht implizit mit erhöhen. 2. Jeder freigegebene historische und aktuelle Profilstand erhält vor seiner Verwendung einen append-only Manifest-Eintrag mit Änderungsklasse (`presentation-only`, `compatible`, `semantic-breaking`), betroffenen Dimensionen und Reimportbedarf. Historische Provenienz wird niemals still umgeschrieben oder neu interpretiert. 3. Unbekannte Verträge und unterschiedliche kanonische Kompatibilitätsschlüssel desselben Werkzeugs werden fail closed behandelt. Sie dürfen weder in einem Timeslot vermischt noch für Lifecycle-Aussagen wie neu, persistent oder gelöst verwendet werden. 4. Der Batchabschluss sowie Local- und PostgreSQL-Repository prüfen den vollständigen Assessment-/Timeslot-Scope vor dem Commit. Bei Inkompatibilität ist ein neuer Timeslot oder ein vollständiger Reimport aller betroffenen Quellen erforderlich; Teilreimporte in einen fachlich gemischten Stand sind unzulässig. 5. Vergleiche prüfen den Vertrag beider persistierter Läufe vor dem Matching. Bei unbekanntem oder inkompatiblem Stand werden alle betroffenen Vorkommen ausschließlich als `not-comparable` mit sicherer Diagnose ausgegeben. 6. Die Result DB zeigt einen verständlichen Processing-Status (`Current`, `Compatible older`, `Reimport recommended`, `Incompatible`, `Unknown`). Die getrennten technischen Versionsstände bleiben in der aufgeklappten Provenienz sichtbar, werden aber nicht als zwei gleich wirkende Hauptfilter angeboten. 7. Reprocessing verwendet nur eine erneut per SHA-256 geprüfte Originalquelle. Ist ein normales Scanneroriginal nicht aufbewahrt, darf kein stiller Reimport aus normalisierten Daten erfolgen; die UI weist auf den erforderlichen erneuten Upload hin. 8. Jede Änderung am Processingvertrag benötigt mindestens: Manifestvertragstest, Profil-/Mapping-Trennungstest, kanonischen Persistenztest, Timeslot-Kompatibilitätstest, Fail-closed-Vergleichstest, Readiness-/Facettentest, `npm test` sowie vollständigen Client-/Serverbuild. Bei semantischen Änderungen kommen synthetische Vorher-/Nachher-Fixtures für alle betroffenen Dimensionen hinzu. Abnahme 2026-08-23: 677 Standardtests bestanden, 8 optionale PostgreSQL-Integrationstests übersprungen; Local-only-Sicherheitsprüfung und vollständiger Client-/Server-Produktionsbuild erfolgreich. Der globale Designcheck bleibt ausschließlich wegen der bereits dokumentierten Schattenregeln in `src/styles/datahub-redesign.css` Zeilen 39 und 42 rot; die Processingänderung berührt diese Datei nicht. Eine reale PostgreSQL-Integration sowie ein Reimport realer Scanneroriginale wurden in diesem Schritt nicht ausgeführt. ## 10. Offene Entscheidungen Report-Vormerkung 2026-09-30 (Nutzerwunsch, Phase 7; noch keine Umsetzung): „Sicherheit kann nicht verbessert werden, indem man Symptome bekämpft“. Den Satz fuer eine spaetere Aufnahme in Reports vormerken. Der Nutzer arbeitet daran mit Claude; weder Report-Inhalte noch Vorlagen jetzt deswegen aendern. Platzierung und Verwendung bleiben offen. Report Engine 2026-09-30 (Phase 7): Am 2026-09-30 entschieden und damit nicht mehr offen. Die Ablage in `src/reporting/`, das serverseitige unveraenderliche Reportarchiv und die vier Grenzen stehen in Phase 7 unter "Report Engine als eigenstaendiger Nur-Lese-Baustein". Autonome Client-Datenbanken 2026-09-26: Das Zielbild "eine fachliche Datenbank pro Client" und die autarke Wiederherstellung einschliesslich verwendeter Referenzstaende sind entschieden; Implementierung und Migration sind nicht beauftragt. Vor einer Umsetzung sind Client-Routing und Autorisierung, Ort und Lebenszyklus des zentralen Katalogs, Bindung und Pruefsummen der Referenzartefakte, Backup-/Restore-Paketformat, Lizenz-/Bezugsgrenzen der Microsoft-Pakete, clientindividuelle Overrides, Update-/Rollback-Ablauf und Migration des bestehenden kanonischen Bestands zu spezifizieren und mit synthetischen Isolation-, Historien- und Offline-Restore-Tests abzusichern. Die genaue SSO-, Rollen- und Betriebsplattform bleibt offen. Bericht A/B 2026-09-23: Die Nutzeranforderung beauftragt die HTML-Erzeugung direkt aus Client Info und ordnet die UI-Anbindung Phase 7 zu. Die veroeffentlichten Report-Inhalte bleiben durch `docs/REPORT_STRATEGY.md` gebunden. Offen ist die endgueltige Vollstaendigkeitsabnahme des Technical Reports ueber alle Quellformate und Reimport-/Diagnostic-Klassen; sie wird nicht aus dem Vorhandensein des Buttons abgeleitet. Timeslotvergleich 2026-09-11: P0/P1 muessen pro Scanner/Format/GPO die belastbaren Objekt-/Scopefelder, Vergleichsgranularitaet und Negativnachweisfaehigkeit sowie die konkrete Reimportbetroffenheit bestimmen. Speicher-/API-Vertrag und Uebergang fuer offene Verpflichtungen und auditierte Scopeentscheidungen sind vor Migration festzulegen. Native Teilpopulationen duerfen nur mit separat belegten Beitraegen verglichen werden; ein zusaetzlicher risikogewichteter Expositionsindex ist nicht freigegeben. Siehe Detailentscheidungen in [TIMESLOT_COMPARISON_PLAN.md](TIMESLOT_COMPARISON_PLAN.md). Accepted-Risk-Entscheidung 2026-09-10: Der Nutzer hat keine bestehenden Freigaberegeln und beauftragt einen Best-Practice-Ausgangspunkt. Getrennter Risk Owner/Genehmiger, belegte externe Zustimmung, Befristung und Wiedervorlage sind Pflicht fuer eine Annahme. Es wird keine unbelegte allgemeingueltige Hoechstlaufzeit vorgegeben. Die lokale Ablage erfolgt additiv in `assessor_reviews.data.riskAcceptance` mit append-only Versionssnapshots. Fuer Phase 14 sind SSO-gebundene Akteure, kundengebundene Rollen, normalisierte Entscheidungs-/Versions-/Freigabe-/Evidenztabellen, manipulationsnachweisbare Aufbewahrung und serverseitige Fristenueberwachung vorgesehen; Umsetzungskriterien stehen in `docs/RISK_ACCEPTANCE.md`. Keine organisatorische Freigabe oder rechtliche Wirksamkeit wird aus einem ausgefuellten Formular abgeleitet. Festgelegte Versionsentscheidung vom 2026-09-06: Die sichtbare ASSESSOR-Version ist die eigenstaendige Produktversion und wird nicht aus Parser-, Mapping-, Processing- oder GPO-Evaluatorversionen abgeleitet. `2.5.1` bezeichnet den aktuellen Produktstand; technische Komponentenstaende bleiben im About-Popup und in der Ergebnisprovenienz getrennt sichtbar. Produktversionen folgen Semantic Versioning: Patch fuer kompatible Korrekturen, Minor fuer neue kompatible Funktionen, Major fuer bewusst inkompatible Produkt- oder Datenvertragswechsel. Festgelegte Fachentscheidung vom 2026-09-06: Ein GPO-Benchmark darf nur dann `Passed` oder `Failed` liefern, wenn die passend ausgewaehlte Microsoft-Security-Baseline einen vorhandenen und technisch vergleichbaren Sollwert vorgibt. Kundenwerte ohne Microsoft-Sollwert werden nicht als Abweichung gewertet; leere Sollwerte entfallen, nicht unterstuetzte Sollwerte bleiben Review/Warning. Die spaetere optionale Darstellung reiner Kundenkonfigurationen als Info bleibt offen. - Aufbewahrung oder bewusster Verzicht auf vollständige Originaldateien normaler Scannerimporte; für GPO- und Baseline-Reprocessing ist die unveränderte Aufbewahrung beschlossen - Verschlüsselung der Datenbank beziehungsweise Anforderungen an Datenträgerverschlüsselung - Verschlüsselung, Speicherort, Zugriffsschutz und Löschfristen des GPO-/Baseline-Artefaktspeichers - Freigabeverfahren fuer einen optionalen externen LGPO.exe-Adapter, falls spaetere nicht unterstuetzte Registry.pol-Varianten ihn erfordern - Bezugs-, Lizenz- und Freigabeverfahren für versionierte Microsoft-Baselines und ADMX-/ADML-Metadatenkataloge - optionaler Import von `Get-GPOReport`-, Group-Policy-Results-, `gpresult`- oder anderer RSoP-Evidenz in einer späteren Ausbaustufe - genaue SSO-Integration im Unternehmensnetz - SSO-gebundene Rollen, Berechtigungen und Client-Routing innerhalb des entschiedenen Eine-Datenbank-pro-Client-Zielbilds - Aufbewahrungs- und Löschfristen - betriebliche Anpassung der festgelegten Importgrenzen an die Firmeninfrastruktur - Umgang mit manuell bestätigten Mappings zwischen Projekten - Deployment-, Monitoring- und Backup-Plattform Diese Entscheidungen werden erst getroffen, wenn die jeweilige Phase ansteht oder eine frühere Phase sie zwingend benötigt. ## 11. Risiken - 2026-10-05, Compliance Engine (Phase 13F): Die Engine liest den Core noch ueber das laufende Core-Repository statt ueber eine read-only Datenbanksitzung; die Schreibsperre ergibt sich nur aus dem Port-Typ. Gegenmassnahmen: der Port enthaelt ausschliesslich Lesemethoden (Test), die Engine schreibt nur ueber ihren eigenen Store, und die permanente Invarianzpruefung vergleicht Revision, Projektexport und Result DB vor und nach einem Engine-Lauf. Ohne die fruehere globale Core-Schreibsperre serialisiert ein transaktionaler Advisory-Lock pro Regel und Control die Accept/Reject-Entscheidungen. - 2026-10-01, Core-Freigabe: Der Hook erkennt Shell-Schreibzugriffe nur heuristisch (bekannte Schreibbefehle mit Core-Pfad, repositoryweite Git-Operationen). Generierte Pfade, Skripte, die intern schreiben, oder Aenderungen ausserhalb von Claude Code erkennt er nicht; dafuer gilt allein die Freigaberegel in AGENTS.md. Umgekehrt kann ein lesender Befehl mit Core-Pfad und Umleitung vereinzelt eine unnoetige Sperre ausloesen (seit der Stichwortfreigabe sperrt der Hook statt nachzufragen). Ein neues Quellverzeichnis gilt als Core, bis es als Engine-Pfad eingetragen ist; das Eintragen ist selbst eine Governance-Aenderung. ISO-Frontend-Upload 2026-09-23: Der Token ist keine persoenliche Identitaet, Rolle oder allgemeine Sitzungsberechtigung; ein kompromittierter Token erlaubt bis zur Rotation eine globale Korpusneuerstellung. Der serverseitige Worker, Groessenlimits, private Quelle, keine Download-API und die Aktivierung nach erfolgreichem Ingest begrenzen die technische Wirkung. Der Embedding-Gateway erhaelt lizenzierten Kontrolltext und unterliegt seiner freigegebenen Aufbewahrungspraxis. Ein Prozessabbruch markiert den Job nach Neustart als fehlgeschlagen und entfernt temporaere PDFs; ein teilweise geschriebener neuer Qdrant-Index bleibt abgeleitet und kann per erneutem Frontend-Upload repariert werden. Der Betrieb mit mehreren gleichzeitig schreibenden App-Instanzen ist durch diesen Dateistatus nicht abgesichert; der aktuelle Compose-Stack startet genau eine. Reale DIN-PDFs, Gateway und Ziel-Qdrant wurden in dieser Implementierung nicht beruehrt. - 2026-09-30, Reportarchiv (Phase 7): Das Archiv enthaelt mit `projection.json` vollstaendige technische Kundendaten ausserhalb der Datenbank. Gegenmassnahmen: Speicherort ausserhalb von Repository und OneDrive, Loeschung zusammen mit dem Client, Kennzeichnung als sensibler lokaler Speicher in `SECURITY.md` bei der Umsetzung und nie gemeinsame Auslieferung mit Report A. - 2026-09-30, Kontext-Layer (Phase 13E): Kontextaussagen koennten als zweites Urteil oder als bestaetigter Angriffsweg gelesen werden. Gegenmassnahmen: kein eigenes Verdict, Kennzeichnung `Kontext` mit Quelle und Version, `beguenstigt`-Formulierung, sichtbare unbekannte Bedingungen und der dauerhafte An/Aus-Gleichheitstest. Der Katalog ist die fachliche Hauptlast; eine unbelegte Regel wuerde eine erfundene Aussage erzeugen und ist deshalb ohne Quelle unzulaessig. - 2026-09-26, autonome Client-Datenbanken: Eine getrennte Datenbank allein garantiert keine Autarkie, wenn Baseline-/MITRE-Versionen oder GPO-/Baseline-Originale nur zentral verfuegbar sind. Backup, Restore und Loeschung muessen Datenbank und private Artefakte gemeinsam behandeln. Zentrale Referenzupdates duerfen historische Urteile nicht still neu berechnen und ein Clientwechsel darf keine Datenbank oder Artefakte eines anderen Clients erreichen. Die bisher globale Baseline-Liste und der serverweite MITRE-Katalog sind noch nicht clientgebunden; ihre blosse Verschiebung in der UI waere keine Isolation. Ein Migrationskonzept mit verifiziertem Backup ist vor jeder Bestandsaenderung erforderlich. Diese Risiken sind als Planungsaufgaben offen; keine Implementierung oder Abnahme wird behauptet. - 2026-09-23, HTML-Reports: Die Management-Datei darf keine internen Source-IDs, Assets oder technischen Rohwerte enthalten, auch wenn beide Renderings dieselbe interne Projektion nutzen. Separate Dateien und ein synthetischer Leckagetest sichern die Grenze. Der Technical Report kann nur gespeicherte Originalfelder und GPO-Anweisungen zeigen; fehlende Ist-/Sollstruktur, Source-Evidence oder Parserdiagnose wird nicht erfunden. Ein umfassender Vollstaendigkeits- und Theme-Test im freigegebenen Dummy ist noch offen; bis dahin gilt die A/B-Abnahme nicht als abgeschlossen. - 2026-09-23, Environment-Unterabschnitte: Ein generischer Tabellenname und eine darueber stehende Abschnittsueberschrift beweisen nicht dieselbe fachliche Gruppe. Nur ein eindeutiger, exakt quellengebundener Unterabschnitt benennt die Tabelle neu; bei Konflikten bleibt ihr nativer Name stehen. Eine aus dem ersten Unterabschnitt uebernommene breite Abschnittsbeschriftung darf nicht andere Tabellen falsch vereinnahmen. Die synthetischen Regressionen sichern den Klickpfad, Dateiscope und Konfliktfall; realer Kundenscope wurde nicht gelesen. Schmale Fenster behalten interne horizontale Tabellenbewegung ohne Abschneiden von Spalten. - 2026-09-23, vertiefte Environment-Results: Ein Scannerabschnitt kann mehreren fachlichen Kacheln dienen oder nicht eindeutig zuordenbar sein. Mehrfachsicht ist erlaubt; unbekannte Abschnitte bleiben garantiert in Source Overview statt unter einer erfundenen Kategorie. Tabellen-/Abschnitts-/Beobachtungsseiten werden nur im geoeffneten Fenster aufgebaut und schrittweise erweitert, ohne Originalwerte zu kuerzen. Die Ansicht ist intern und uebernimmt keine Freigabegrenze der LLM-faehigen Result DB. Datenfehler oder fehlender Snapshot werden sichtbar gemeldet. Mit synthetischen Daten und Design-Tokens verifiziert; eine reale Light-/Dark-Abnahme darf nur im freigegebenen Dummy erfolgen und ist noch offen. - 2026-09-23, Environment-Detail-Results: Mehr Buttons duerfen in schmalen Kacheln weder Titel noch Aktionen abschneiden. Gemeinsame Header-/Action-Wrap-Regeln und die vorhandene interne Kachelscrollflaeche halten die Bedienung erreichbar; synthetische Interaktion und Designcheck sind bestanden, eine Live-Light-/Dark-Abnahme im freigegebenen Dummy steht noch aus. Der Fensterinhalt dupliziert nur die aktuelle Leseprojektion und darf keine zusaetzlichen Kundenattribute nachladen. - 2026-09-23, PingCastle-Berichtspaarung: Derselbe Dateistamm und dasselbe Berichtsdatum koennen theoretisch mehrere Importe umfassen. Widerspruechliche gleichrangige Titel werden deshalb nicht vereinheitlicht; ohne passende oeffentliche Regel-ID bleibt die Result-DB-ID aus Datenschutzgruenden leer. Die synthetischen Tests decken die HTML-Auswahl mit gepaartem XML sowie unpassende und widerspruechliche Berichte ab. Eine Abnahme im gemeldeten Kundenscope ist ausdruecklich nicht erfolgt. - 2026-09-23, gemeinsame Finding-Ueberschrift: Ein kanonischer Definitionstitel kann von einer konkreten Scannerdatei abweichen oder dort zusaetzliche vorkommnisspezifische Zahlen enthalten. Work verwendet ihn bewusst als gemeinsame fachliche Ueberschrift, darf den nativen Quelltitel aber nicht verlieren oder als kanonische Identitaet behandeln. Die synthetische Regression prueft deshalb beide normalen Work-Projektionen, die sichtbare native Ueberschrift und das unveraenderte Originalfeld. Datenschutzbedingte Result-DB-Redaktion bleibt eine separate Ausgabeschicht; Work uebernimmt den kanonischen Titel, nicht die externe Disclosure-Projektion. | Ein flaechenfuellender Mengenbalken kann in Domainnamen hineinwachsen, hinter unterschiedlich breiten Zahlen enden oder durch eine vom Overall Score abweichende Farbe eine zweite Bedeutung suggerieren. Eine Maximalwert-Normalisierung wuerde zudem keine Anteile an der Gesamtverteilung zeigen. | Ein gemeinsames Vier-Spalten-Subgrid fuer Score, laengsten Namen, Balken und breiteste Zahl verwenden. Balken bleiben mit gemeinsamem Abstand ausschliesslich in ihrer dritten Spalte, erben den am Posture-Bereich gesetzten Overall-Tone und werden gegen die Summe der angezeigten Domainmengen skaliert. Exakte Zahlen bleiben rechtsbuendig sichtbar und autoritativ; `aria-hidden`, synthetische 75/25-Regression sowie Light-/Dark-, Donutfarb-, Kanten- und Ueberlaufpruefung sichern die Grenze. | - 2026-09-20, Lesetypografie: Groessere 14-/16-px-Rollen koennen bei langen Werten mehr Zeilen und vertikalen Scrollbedarf erzeugen. Inhalte duerfen deshalb umbrechen oder in den bereits dafuer vorgesehenen Kacheln scrollen, aber niemals gekuerzt, ellipsiert oder wieder auf kleinere Schrift reduziert werden. Kompakte Metadatenrollen bleiben nur fuer tatsaechlich sekundaere technische Angaben zulaessig; ihre Verwendung fuer Primaerinformation waere eine Regression. - 2026-09-20, PingCastle-OS-Zustaende: Active/Inactive und Enabled/Disabled sind getrennte Quellachsen und muessen nicht dieselbe Verteilung ausdruecken. ASSESSOR zeigt deshalb alle vier Werte unveraendert und behauptet weder eine Partition noch eine Konsistenzbeziehung zu `Devices`. Mehrere PingCastle-Berichte koennen dieselben Systeme ueberlappend inventarisieren; sie bleiben getrennte `Inventory n`-Zeilen ohne Summierung. Schmalere oder umfangreichere Tabellen duerfen innerhalb der bereits scrollbaren Kachel scrollen, aber keine Spalte abschneiden oder Werte aus Platzgruenden entfernen. - 2026-09-20, gemischte Data-Hub-Metrikprojektion: Das vollstaendige Projektblatt kann bei grossen Timeslots merklich spaeter als die Mandantenliste bereitstehen, weil aktuelle Policy-Evaluationen und ihre autoritative Rollup-Projektion einbezogen werden. Die Statuszeile bleibt deshalb waehrend des Ladens `aria-busy`, verwirft verspätete Antworten nach einem weiteren Auswahlwechsel und zeigt niemals die vorherige Mandantenkennzahl weiter. Eine kuenftige Beschleunigung darf nur cachen oder denselben serverseitigen Projektionsvertrag bereitstellen; ein Rueckfall auf Scanner-only-Zaehlen waere fachlich falsch. Die aktuelle Live-Abnahme belegt Dummy und LSW, nicht jede denkbare Datenmenge. - 2026-09-18, Client-Info-Designangleichung: synthetisch visuell und interaktiv in beiden Themes verifiziert, nicht als Abnahme jedes realen Datenumfangs auszugeben. Sehr lange Quellwerte muessen weiterhin umbrechen; aufklappbare Inhalte duerfen nicht zu Verlust oder Umdeutung von Evidenz fuehren. Der bestehende schmale Stapelmodus zeichnet keine waagerechten Kurven. Keine produktiven Daten oder laufenden App-/Backendprozesse wurden fuer diese Abnahme angefasst. - 2026-09-20, Client-Info-Breitenkorrektur: Die breite Dummy-Ansicht und der gestapelte 700-px-Fallback sind verifiziert. Gleiche Zeilenhoehen koennen innerhalb der kuerzeren Kachel bewusst freie Flaeche erzeugen; ein Hoehenversatz ist jedoch ausdruecklich verboten und darf nicht erneut als Deadspace-Loesung verwendet werden. Sehr lange Accepted-Risk-Titel oder eine deutlich groessere Risikoliste koennen die linke Rail weiterhin vertikal verlaengern; Inhalte duerfen deshalb weder gekuerzt noch durch eine kleinere Schrift in die feste Breite gezwungen werden. Die Aenderung ist reine Praesentation und nimmt keine Score-, Risiko- oder Persistenzmutation vor. Designkonsistenz (2026-09-18): Historische assessor-ui-Assets und Archetyp-/Abnahmeskizzen enthalten ueberholte Farben, Schriftgroessen und Layoutvorschlaege. Ihre ausdrueckliche Unterordnung unter die freigegebenen Referenzen sowie das Entfernen der Kopieranleitung verhindert, dass sie erneut als aktuelle Implementierungsbasis behandelt werden. Die Verankerung allein korrigiert noch keine bestehende Client-Info-Darstellung. Deren spaetere Umsetzung benoetigt einen direkten Referenzabgleich bei normalem Zoom und eine Light-/Dark-Abnahme mit synthetischen Daten; generierte Mockups sind kein Nachweis fuer richtige Kennzahlen, Runtime-Verhalten oder bereits implementiertes Design. Security-Domain-Filter (2026-09-18): Die vollstaendige Auswahlliste behauptet keine vorhandenen Befunde in jeder Domain. Eine Domain mit null Treffern ergibt bewusst eine leere Ansicht; bestehende Quellen-, Status-, Such- und sonstige Filter muessen bei Bedarf vom Nutzer entfernt werden. Reine GPO-Datensaetze bleiben ausschliesslich GPO & Baseline zugeordnet. Review-only- und Einzelbefundpfade behalten ihre explizite Datensatzeinschraenkung; diese sind nicht mit dem jetzt frei wechselbaren Domain-Deviation-Drilldown gleichzusetzen. GPO-Zaehlerabgleich (2026-09-18): Unterschiedliche Zaehlobjekte bleiben beabsichtigt; bei unveraendertem Dummy entsprechen 127 Vergleiche genau 25 Einstellungen. Bereits geladene Ansichten koennen bis zum erneuten Laden ihren vorherigen Ergebnisbestand halten. Laufabdeckung bleibt eine Darstellungsauswahl und kein Nachweis von Baseline-Anwendbarkeit oder Endgeraetewirksamkeit. Die Gesamtsuite enthaelt eine fachfremde bestehende XML-Testannahme, die code-Tags im gesamten Reader verbietet und am vorhandenen Policy-Analyzer-Suchschluessel anschlaegt; dieser Fix veraendert weder den Reader noch diesen Test. Result-DB-Statusfilter (2026-09-18): Widerspruechliche explizite Kombinationen wie Passed mit Deviation Yes liefern bewusst null Treffer; beide Auswahlen bleiben sichtbar und koennen entfernt werden. Die Statusfacette zaehlt erreichbare Alternativen unter allen anderen Filtern, daher sind ihre Werte bei aktiver eigener Mehrfachauswahl keine additive Aufteilung der angezeigten Treffer. Result DB und Work behalten unterschiedliche Zaehlobjekte. Die synthetische Abnahme benoetigt keine Kundendaten. - Work-Baseline-Rollup (2026-09-18): Unterschiedliche fruehere lokale Bearbeitungsnotizen benoetigen eine bewusste Entscheidung fuer die gemeinsame Zeile; sie bleiben im Reader lesbar. Risikoakzeptanzen bleiben an ihrer Originalidentitaet. Der Fix ist ausschliesslich synthetisch geprueft; auf ausdruecklichen Nutzerwunsch wurden keine Kundendaten zur Laufzeit geoeffnet. Result DB behaelt absichtlich die einzelnen Paketvergleiche als Evidenz. Work-Listen- und Pfadtitel-Restgrenze 2026-09-18: Die Liste nutzt weiterhin eine geschaetzte Zeilenhoehe fuer die begrenzte Virtualisierung, waehrend sehr lange Titel hoeher umbrechen koennen. Der Overscan haelt die sichtbaren Knoten bereit; die beseitigten konkurrierenden Animationen und die reservierte Scrollbarspur verhindern den konkret beobachteten Auswahlversatz, sind aber noch kein gemessener variabel hoher Virtualizer. Bei kuenftig nachweisbarem Versatz waehrend rein manuellen Scrollens ist eine gemessene Hoehenkarte mit Ankerkorrektur erforderlich, ohne die verbindliche Begrenzung montierter Zeilen aufzugeben. Technische Pfade duerfen an beliebigen Zeichen umbrechen, werden jedoch nicht gekuerzt oder inhaltlich normalisiert. Der konkrete `Registry Values · MACHINE\\...`-Fall ist synthetisch im gerenderten Reader abgesichert; eine zusaetzliche Windows-UI-Sichtpruefung war in dieser Sitzung nicht verfuegbar. GPO-Quellverfuegbarkeit 2026-09-17: Der am selben Tag dokumentierte Drei-Versuche-/Dead-Letter-Nebenbefund ist fuer GPO-Quelldateien durch Livepruefung, Enqueue-Sperren und pruefsummengebundene Wiederherstellung adressiert. Die Statuspruefung belegt Erreichbarkeit, nicht Inhaltsintegritaet; die vollstaendige Hashpruefung bleibt am Lesen und Wiederherstellen. Ein Ordnerupload muss dasselbe unveraenderte Transportpaket reproduzieren; abweichende Bytes werden bewusst abgewiesen. Der Speicher kann zwischen Pruefung und Lesen verschwinden; deshalb bleibt der erste fehlgeschlagene Job als technischer Verlauf gespeichert, die UI zeigt Upload required. Zugriffsfehler werden nicht als Datenverlust bezeichnet. Keine automatische Suche in alternativen Speicherorten und kein Wechsel des konfigurierten Stores; PostgreSQL-Ausfuehrung hier synthetisch auf Transaktionsebene geprueft, kein Live-Datenbanktest oder Backendneustart. GPO-Policy-Rollup 2026-09-16: Ein konservatives Policy-Fail darf nicht mit der Behauptung verwechselt werden, ein bestimmter Server oder Client sei effektiv verwundbar; GPO-Backups belegen ohne RSoP/Effective State keine konkrete Anwendung. Umgekehrt darf ein Conflict-/Duplicate-Label keinen belegten Mitglieds-Fail verdecken. Die kuenftige Umsetzung muss Verdict und Diagnoseflags getrennt persistieren/projizieren, je technischer Policy-Identitaet exakt einmal zaehlen und mehrdeutige Anwendbarkeit als Review required halten. Bis diese Kriterien versioniert und synthetisch verifiziert sind, gilt die neue Regel als bindender Vertrag, nicht als abgenommene Laufzeitfunktion. GPO-Misconfiguration-Scope 2026-09-16: Der score-neutrale Ausschluss nicht konfigurierter Empfehlungen verhindert eine unbeherrschbare Baseline-Rolloutliste, bedeutet aber bewusst, dass der GPO-Score keine Aussage ueber vollstaendige Microsoft-Baseline-Abdeckung trifft. Diese Grenze muss in jeder Scoreanzeige und jedem Export sichtbar bleiben. Die Einzel-Fail-Ausnahme in Conflict-/Duplicate-Containern darf erst implementiert werden, wenn technische Identitaet und Ergebnisbeitrag dedupliziert sind; sonst koennten gleiche Quellwerte mehrfach zaehlen oder mehrdeutige Konflikte faelschlich als Fail erscheinen. Historische Evaluationen duerfen nach einer kuenftigen semantischen Umsetzung nicht ohne neue Vertragsversion und explizite Neuauswertung umgedeutet werden. Gemischter Work-Filterkontext 2026-09-16: GPO-spezifische Felder bleiben in den unveraenderten Datensaetzen des All-Records-Blatts vorhanden, werden bei Source All aber bewusst nicht als Facetten angeboten. Sie sind nach eindeutiger GPO-Auswahl vollstaendig verfuegbar. Neue GPO-Facetten muessen deshalb sowohl in den GPO-Vertrag als auch in die Liste der kontextgebundenen Facetten aufgenommen werden; ein fehlender Eintrag koennte sie im Mischkontext erneut sichtbar machen oder im GPO-Kontext ausblenden. Permanente Wechselregressionen begrenzen dieses Risiko. Work-Snapshots 2026-09-16: Gespeicherte Finding-IDs sind an den exakten Work-/Timeslot-Scope gebunden. Werden Ergebnisse in einem spaeter geladenen Verarbeitungsstand ersetzt, kann ein alter lokaler Snapshot auf nicht mehr vorhandene IDs zeigen und dadurch eine leere Ansicht ergeben; der Fix ordnet IDs nicht heuristisch neuen Findings zu. Die bestehende Scopebindung verhindert eine Anwendung auf einen anderen Timeslot. Eine kuenftige ueber Reimport stabile Snapshotmigration benoetigt eine ausdrueckliche Identitaets- und Konfliktregel. GPO-Varianten 2026-09-14: Pass/Fail gilt nur fuer die beruecksichtigte Baselineauswahl und importierte Backup-Konfiguration, nicht fuer einen unbekannten Geraetezielbestand oder effektive Sicherheit. Unvollstaendige Kandidatenerfassung und unbekannte strukturelle Teilanalysen verhindern belastbare Einigkeit. Bekannte wertunabhaengige ADMX-/Baseline-Domaenen-/Zeitmetadatenluecken bleiben diagnostiziert, blockieren aber technisch lesbare Werte nicht. Vor einer Aenderung bei unterschiedlichen Empfehlungen ist die passende Vorlage festzulegen. Historische Ergebnisse benoetigen nach Backendwechsel eine explizite Neuauswertung; keine reale Bestandsauswertung oder PostgreSQL-Integrationsabnahme in diesem Auftrag. Timeslotvergleich 2026-09-11: Der bisherige Zweilaufadapter kann Quellenidentitaet und Processingpruefungen umgehen; Regelmatches sind nicht objektgenau, und Abwesenheit wird teilweise als Behebung gewertet. Die Score-Pruefpopulation erkennt Assetwechsel nicht ausdruecklich. Teilweise Folgescans koennen alte Verpflichtungen aus der Anzeige verdraengen, ohne Originaldatensaetze zu loeschen. Deshalb keine Abnahme als belastbarer A/B-Bericht und keine blosse UI-Verdrahtung vor P2-P4. Das neue offene Arbeitspaket dokumentiert die Schutzregeln und Gegenbeispiele; alte Abschluss-/Testnotizen ersetzen diese Abnahme nicht. Accepted Risk 2026-09-10: Deklarierte Namen und Nachweisreferenzen sind keine authentifizierten Signaturen oder geprueften Berechtigungen. Bestehende Projektloeschung und Datenbankadministration begrenzen den Schutz der JSONB-Historie. Es gibt noch keinen unabhaengigen Archivierungs-/Legal-Hold-Vertrag und keinen Fristenbenachrichtigungsdienst. Diese Grenzen sind im Dialog und in `SECURITY.md` dokumentiert; der Ausbau bleibt Teil von Phase 14. Synthetische Repository-/SQL-Transaktionstests ersetzen keine freigegebene PostgreSQL-Integrationsabnahme. Regulatory RAG 2026-09-15: Regulatorische Texte koennen urheber-, lizenz- oder versionsgebunden sein; ein technisch lesbarer Korpus ist deshalb noch kein freigegebener Produktkorpus. Lokale llama.cpp-Embeddings bleiben auf Loopback, waehrend minimierte Querytexte bei einem spaeteren Work-LiteLLM-Vergleich die ASSESSOR-Prozessgrenze verlassen. Gegenmassnahmen sind ein autorisierter versionierter Korpus, explizite Modell-/Dimensionsbindung, Backend-only Secrets, Remote-HTTPS, begrenzte Requests und der implementierte fail-closed Public-Signal-Query-Builder; organisatorische Datenschutzfreigabe bleibt fuer externe Ziele erforderlich. Dense Similarity ist nur Kandidatenranking und weder Kontrollzuordnung noch Confidence; vor automatischer Nutzung sind reale sprachuebergreifende Evaluation, Hybrid-/Reranker-Vergleich, Schwellenkalibrierung und Human Review erforderlich. Qdrant-Dokumentersatz ist nicht transaktional mit einem Embeddingdienst; Fehler koennen einen unvollstaendigen abgeleiteten Index hinterlassen, der aus dem unveraenderten Korpus neu aufgebaut werden muss. Das Volume ist Betriebsbeschleunigung, keine fachliche Sicherung. Der autorisiert geloeschte alte Qdrant ist entfernt und 1.19.1 belegt kanonisch Port 6333; das alte Volume bleibt vorsorglich erhalten. Der lokale BGE-M3-End-to-End-Smoke-Test war mit drei klar getrennten Themen perfekt, ist statistisch und fachlich aber nicht repraesentativ. Ein kuratierter lizenzierter Korpus, schwierigere Negativ-/Mehrfachkontrollfaelle, unabhaengige Labels und der LiteLLM-Vergleich bleiben offen. Work-LiteLLM 2026-09-14: Der Unternehmensgateway ist eine ausdruecklich freigegebene externe Vertrauensgrenze und kann Requests gemaess eigener Betriebsrichtlinie routen oder protokollieren; ASSESSOR kann diese Aufbewahrung nicht kontrollieren. Die API sendet deshalb nur den vorhandenen Privacy-Safe-Export nach explizitem Nutzerklick, nie Rohdateien, Reviews, Quelltabellen oder Storage Keys. Gatewayausfall, Modellwechsel oder ungueltige JSON-Ausgabe lassen den bisherigen erfolgreichen Run unveraendert und erfordern eine bewusste neue Generierung. Der synthetische Workstation-Connectivitycheck erreichte die konfigurierte URL, erhielt aber HTTP 401; Keyaktivierung, Berechtigung oder Gatewaykonfiguration muessen betrieblich geklaert werden, ohne Secrets oder Providerbody offenzulegen. Migration 024 ist in diesem Lauf mangels Docker weder auf den kanonischen lokalen Datastore angewandt noch per PostgreSQL-Integration verifiziert; vor Anwendung bleiben verifiziertes Backup und erfolgreicher synthetischer Workstation-/Server-Liveaufruf verpflichtend. Purple-Knight-Begleitdateien 2026-09-10: Alte Importe koennen den nativen Wert noch nicht als Kontextbeobachtung enthalten. Dann kann die neue Leseprojektion ihn nicht nachtraeglich aus Rohtext erfinden und die betroffenen Summary-/Findings-Dateien muessen gemeinsam neu importiert werden. Mehrere unterschiedliche Ergebnisberichte in demselben Scanlauf werden bewusst nicht automatisch mit einem einzelnen Summarywert verbunden. Weitere Scanner 2026-09-10: Unbekannte Formate und anders skalierte oder mehrdeutige Kennzahlen benoetigen eine belegte Profilzuordnung; beliebige Scorefelder werden nicht automatisch als Gesamtwert interpretiert. Pflichtdeklaration und synthetische Regressionen sichern den Vorrang unterstuetzter nativer Werte, ersetzen aber keine fachliche Pruefung neuer Herstellerformate. Scoring 2026-09-10: Der hybride Index ist nicht empirisch zwischen Herstellern kalibriert. Unbekannte Ziel-/Laufidentitaet, fehlende Quellversionen, hybride native Berichte sowie unvollstaendige Pruefpopulationen begrenzen Deduplikation und Vergleich; die Oberflaeche kennzeichnet diese Faelle. Historischer Scorevergleich fuehrt offene Scannerreferenzen nur read-only fort; persistierte Workflow-Fortschreibung, GPO-Historie und auditierter Scope-Austritt bleiben im separaten Phase-8-Arbeitspaket. Historische Kontextlesefehler sperren Fortschrittsaussagen, nicht das Oeffnen des aktuellen Workspace. HTML-Timeout-Restgrenze 2026-09-09: Die konkrete Datei aus dem Screenshot wurde aus Datenschutzgruenden nicht geoeffnet. Reproduziert und behoben ist ein gleichartiger Timeout bei langen wertlosen Attributen, zusaetzlich wurden wiederholte Verweissuchen reduziert. Damit ist noch keine erfolgreiche Verarbeitung dieser konkreten Datei belegt; bei erneutem Fehler sind eine synthetische strukturgleiche Reproduktion oder eine ausdruecklich freigegebene minimale Inhaltspruefung erforderlich. Laufzeiten sind lokale Beobachtungen, keine CI-Millisekundengarantie. Fachliche Extraktion und Profile bleiben kompatibel; bestehende erfolgreiche Importe muessen wegen dieser Performancekorrektur nicht umgeschrieben werden, fehlgeschlagene Vorschauen muessen erneut gestartet werden. Keine SQL-/API-/Persistenzaenderung. Der globale Local-only-Check bleibt trotz 1.131 bestandener Tests an der fremden GPO-DisplayName-Aenderung offen; der HTML-Fix ist deshalb nicht als vollstaendig gruene npm-test-Gesamtkette ausgewiesen. PurpleKnight-Importgrenzen 2026-09-09 (Phase 13A/13C): Verifiziert sind die freigegebenen CSV-/XLSX-/HTML-Exporte und synthetische Varianten, nicht jede kuenftige Toolversion. Ohne deklarierte Summen ist kein vollstaendiger rechnerischer Bilanznachweis moeglich. Die statische Datengrammatik ist kein allgemeiner JavaScript-Interpreter; neue dynamische Exportvarianten benoetigen eine begrenzte Erweiterung, keine Ausfuehrung. Mehrfachvorkommen und Widersprueche bleiben sichtbar statt heuristisch zusammengefuehrt zu werden. Die gelieferten CSVs und HTML/XLSX stammen aus unterschiedlichen Scanzeitpunkten und duerfen nicht auf identische Statussummen gezwungen werden. Bestehende Importe bleiben unveraendert und benoetigen Reimport fuer neue Erfassungsdaten. AD-Domaenen-Begleitdateien bleiben als Rohquellen erhalten; die neue typisierte HTML-Domaenenliste ersetzt keine allgemeine Inventarmodellierung. Keine Persistenzmigration, optionale PostgreSQL-Integration nicht aktiviert; bestehender Client-Bundlegroessenhinweis bleibt offen. Purple-Knight-Entra-Risiko 2026-09-22: Ein Tenantname, der nur in einer alten generisch importierten Summary existiert, darf nicht aus Dateinamen, Findingtiteln oder AAD-Regelkennungen geraten werden. Profil 1.4.0 liest ihn ausschliesslich aus der nativen `Entra ID: tenant`-Zeile und speichert deren Quellposition. Fehlen Originaldateien fuer einen historischen 1.3.0-Lauf, bleibt Client Info unbekannt; ein stiller Bestandsumbau aus praesentativen Tabellen ist unzulaessig. AD- und Entra-Scores bleiben getrennt, auch wenn beide denselben numerischen Wert besitzen. PingCastle-Importgrenzen 2026-09-09 (Phase 13A/13C): Verifiziert sind das freigegebene Dummy-Paar und synthetische Varianten, nicht jede PingCastle-Version. Ohne native Zaehler kann kein rechnerischer Vollstaendigkeitsnachweis erfolgen. Doppelte IDs werden diagnostiziert, bleiben aber gemaess bisheriger Entscheidung ein Finding mit erster Darstellung; es findet keine automatische Zusammenfuehrung widerspruechlicher Darstellungen statt. Der bekannte fehlende HTML-Anker und die XML-Results-Einschraenkung bleiben sichtbare Warnungen. Generische XML-Attribute sind keine automatische Assetklassifikation; semantisches XML-Mapping und Control-Path-JSON bleiben offen. Alte Importe benoetigen Reimport. Keine Schema-/Datenmigration, optionale PostgreSQL-Integration nicht aktiviert; vorhandene Client-Bundlegroessenwarnung bleibt bestehen. Maester-Importgrenzen 2026-09-09 (Phase 13A/13C): Die statische Datengrammatik und der lexikalische Zuweisungsfinder sind kein allgemeiner JavaScript-Parser. Neue dynamische Exportvarianten benoetigen eine ausdrueckliche Erweiterung mit synthetischen Ablehnungs- und Vollstaendigkeitstests; ihre Ausfuehrung bleibt verboten. Verifiziert sind die bereitgestellten Dummy-Dateien und synthetische Varianten, nicht pauschal jede Maester-Version. Bekannte Zaehlerabweichungen markieren die Verarbeitung mit Warnungen, obwohl saemtliche Einzeltests erhalten bleiben. Bereits gespeicherte Importe erhalten weder die korrigierte Evidenzabbildung noch neuen HTML-Kontext automatisch. Excel und HTML bleiben eigenstaendige Quellen mit eigener Provenienz; gleichzeitiger Import beider Dateien erzeugt weiterhin separate Vorkommen und keine automatische dateiuebergreifende Deduplizierung. Der Maester-Laufzeitrechner darf nicht als bewertetes Zielsystem in die Assetzaehlung gelangen. Keine Persistenz- oder Schemaaenderung; optionale PostgreSQL-Integrationstests wurden nicht aktiviert. Die bestehende Client-Bundlegroessenwarnung bleibt offen. Navigationsperformance 2026-09-09 (Phase 7): Die Selektoren setzen unveraenderliche Quellrecords, Blaetter und Eingaben voraus; fachliche Aenderungen brauchen neue Objektidentitaeten. Wiederverwendung und Invalidierung sind getestet, Varianten je Blatt auf vier begrenzt. Zeitwerte haengen von Datenbreite, Browser und konkurrierender Last ab; CI sichert Verhalten und Operationen statt harter Millisekundenlimits. Notwendiger Kalt-/Neuaufbau bleibt teurer: nach Filterreset im Dummy rund eine Sekunde fuer Pathfinder beziehungsweise Client Info. Result DB, DB Structure und Datahub erreichten 34/44/109 ms bis zum dritten Frame; asynchrone Datenbereitstellung ist darin nicht enthalten. Die vorhandene Client-Bundlegroessenwarnung bleibt offen. Vollstaendige Einzelmessungen und Grenzen sind im Performance-Dokument festgehalten. GPO-Quellenrisiko 2026-09-08: Bei erneuter Evaluation kann die referenzierte Backupteilmenge wachsen, ohne dass ein neuer Import vorliegt. Die Auswahl ueber autoritative aktuelle Evaluationen und die stabile Aggregations-ID verhindert dadurch erzeugte Doppelzaehlungen. Ohne belegbaren Importzeitpunkt bleibt `Imported` leer und die Quellenbezeichnung neutral `GPOs`; der Laufzeitpunkt wird nicht als Importdatum erfunden. Der zusaetzliche projektgebundene Read-Aufruf darf bei einem Fehler nicht still auf Historie zurueckfallen. Synthetische Regressionen sichern 2-zu-3-Backup-Abdeckung, Supersession, getrennte echte Importe, Timeslotgrenzen, fehlende Kundenwerte, Konsistenzzeilen und unveraenderte Scannerzeilen. Keine automatische Reconciliation wird fuer diese reine Leseaenderung ausgeloest. Security-Template-Risiko 2026-09-08: Ein partiell verarbeitetes INF darf nicht als vollstaendig interpretiert werden; ausgelassene Eintraege sind keine belegte Abwesenheit. Diagnosecodes, `partial` und `inventory-only` bleiben deshalb entlang der Pipeline sichtbar. Vorhandene Baselineanalysen werden bis zur versionierten Neuanalyse nicht durch den Parserfix korrigiert; vorhandene Evaluationen benoetigen danach einen neuen Lauf. Die vom Nutzer genannten 109/109 beziehungsweise 107 Deviations plus 2 Review sind eine noch zu verifizierende Erwartung; wiederhergestellte Baselinevarianten koennen weitere Consensus-Konflikte aufdecken. Die bestehende Job-Reconciliation plant bei einer neuen GPO-Analyserversion projektuebergreifend veraltete Quellen neu ein. Beim ersten Neustart entstand dadurch unbeabsichtigt ein zusaetzlicher Evaluationslauf ausserhalb des freigegebenen Dummy-Scope; Originale und Historie blieben erhalten, Backend wurde angehalten und keine weiteren aktiven Jobs festgestellt. Dieser automatische Versionspfad ist bei kuenftigen projektbegrenzten Betriebsaktionen vor einem Neustart explizit zu beruecksichtigen. Inhaltspruefungen ausschliesslich synthetisch, Livekontrollen nur mit anonymisierten technischen Zaehlern. Festgelegtes Client-Info-Darstellungs- und Bewertungsrisiko vom 2026-09-07: Eine globale Sondergestaltung koennte andere Ansichten veraendern; native Tool-Scores koennten mit dem ASSESSOR Overall Score vermischt werden; heuristische Domain-Linsen koennten ueberlappende Findings wie unabhaengige Populationen erscheinen lassen; fehlende Environment-Fakten koennten als Null fehlinterpretiert werden. Gegenmassnahme: alle Sonderfarben und Geometrien ausschliesslich unter `.client-command-center` und `--client-info-*` kapseln, den Overall Score nur aus vergleichbaren ASSESSOR-Quellenscores bilden, native Metriken nur beschriftet in Source Overview zeigen, Domainzuordnung als rein praesentative Multi-Label-Linse ohne Einfluss auf Overall Score behandeln und unbekannte Fakten konsequent als Gedankenstrich anzeigen. Synthetische Regressionen pruefen Scoreaggregation, acht Domains, Source-Komposition und fehlende Werte; Live-Sichtpruefung bleibt auf den freigegebenen Dummy begrenzt. Festgelegtes Workspace-Navigationsrisiko vom 2026-09-07: Ein aus dem aktiven Fachblatt abgeleiteter oder gegen dessen Treffer nachgezaehlter Source-Filter kann alle anderen Scanner ausblenden; ein blosser Fremdwertfilter auf dem GPO-Blatt wuerde wiederum eine leere Ansicht statt des gewuenschten Scans erzeugen. Gegenmassnahme: Optionsliste ausschliesslich aus dem vorhandenen projektweiten Aggregat bilden, die stabile Provenienz-ID von Spaltenindizes entkoppeln, ihre Werte von lokaler Nachzaehlung ausnehmen und bei einer Auswahl aus einem Fachblatt zuerst auf dasselbe Aggregat wechseln. Regressionen pruefen drei unterschiedliche Scans, unveraenderte globale Optionen und das Navigationsziel. Festgelegtes GPO-Kontextregressionsrisiko vom 2026-09-14: Eine GPO-Auswahl ueber den workspaceweiten Source-Filter kann auf dem All-Records-Blatt zwar die Datensaetze reduzieren, aber weiterhin das zusammengefuehrte Multiple-Tools-Profil und dessen bereits begrenzte Facetten anzeigen. Dadurch erscheinen fachfremde Statuswerte und Scannerfilter; ausgeblendete Altfilter koennen unbemerkt weiterwirken. Ein profilweiter Wertvergleich ueber alle Felder kann zudem `Pass` aus Comparison oder Historical result als aktuellen Passed-Status missverstehen. Gegenmassnahme: den eindeutigen Quellwert ueber Datensatzprovenienz als Werkzeugkontext aufloesen, den GPO-Facetten- und Statusvertrag vor Priorisierung und Limit anwenden, GPO-Status ausschliesslich aus dem aktuellen Statusfeld bestimmen, inkompatible gesetzte Facetten entfernen und den exakten Source-Auswahlweg samt fremdem Pass-Wert und Rueckkehr zum Mischkontext dauerhaft synthetisch pruefen. Festgelegtes Facettenrisiko vom 2026-09-07: Die allgemeine Einwertigkeitspruefung oder ein kuenftiges Facettenlimit koennte `Source: Scan` erneut aus GPO- oder anderen Ansichten entfernen; flexible Gruppenbreite koennte den Filter ausserdem optisch zwischen Fachfacetten statt stabil ganz rechts platzieren. Gegenmassnahme: Source-Scan fachlich explizit erkennen beziehungsweise aus vorhandener Provenienz ableiten, von der Nuetzlichkeitsunterdrueckung ausnehmen, nach dem begrenzten Fachfacettensatz als letztes Element anfuegen und per eigener CSS-Klasse mit automatischem linken Rand an die rechte Kante setzen. Synthetische Tests pruefen GPO-Vollreihenfolge, Fallback, Klasse und Endposition. Festgelegtes GPO-Quellenpfadrisiko vom 2026-09-07: Source-Locators koennen lokale Laufwerke, Backupordner, Artefaktnamen oder kundenirrelevante Importstruktur vor der eigentlichen GPO-GUID enthalten; eine tolerante Teilanzeige koennte diese Informationen offenlegen. Gegenmassnahme: zentraler reiner Presenter mit geschlossener GUID-/`DomainSysvol/GPO`-Erkennung, Anzeige ausschliesslich ab dem erkannten internen Anker und fail-closed Platzhalter fuer jede andere Form. Originalprovenienz bleibt unveraendert gespeichert und wird nicht zur Navigation oder Dateiaufloesung verwendet. Festgelegtes Duplicate-Praesentationsrisiko vom 2026-09-07: Eine vereinfachte Duplicate-Anzeige koennte Quellenredundanz faelschlich als Deviation darstellen oder umgekehrt eine zusaetzliche echte Baselineabweichung als unkritisch erscheinen lassen. Gegenmassnahme: ausschliesslich die identische Mehrquellenbelegung beschreiben, explizit `A duplicate alone is not a baseline deviation` formulieren, keine Pass-/Failfarbe verwenden und Duplicate-/Baselineklassifikation im Domainmodell weiterhin als getrennte Aussagen behandeln. Festgelegtes Tabellenrisiko vom 2026-09-07: Mehrere Varianten, lange Pfade oder grosse Wertstrings koennen die gemeinsame Vergleichstabelle unlesbar verbreitern oder Inhalte abschneiden. Gegenmassnahme: semantische Mindestbreiten nur innerhalb eines eigenen horizontal rollbaren Tabellencontainers verwenden, alle Zellen an beliebigen sicheren Stellen umbrechen lassen, keine Clamps/Ellipsen einsetzen, Quellen pro Variante bedarfsgesteuert expandieren und die vollstaendige technische Provenienz in der nachgelagerten Detailstufe erhalten. Festgelegtes Praesentationsrisiko vom 2026-09-07: Eine vereinfachte Konfliktansicht koennte leere/Whitespace-Werte normalisieren, technische Provenienz verlieren oder durch Farb- und Sprachwahl faelschlich eine wirksame beziehungsweise bevorzugte Variante behaupten. Gegenmassnahme: Karten ausschliesslich aus dem vollstaendig validierten begrenzten Evidence-Envelope ableiten, Originalzellwerte unveraendert erhalten, leere und Whitespace-Werte explizit kennzeichnen, alle Quellen/IDs unter technischen Details bewahren, nur den neutralen Warning-Akzent verwenden und bei jeder Mehrdeutigkeit auf die bestehende inerte Tabellenprojektion zurueckfallen. | Die Produktversion bleibt trotz funktionaler Aenderungen unveraendert oder wird mit einer technischen Komponentenfassung verwechselt; Frontend und Backend koennen zudem unterschiedliche Builds ausliefern. | Produktversion zentral aus dem Paket beziehen, im Markenblock zeigen, Buildzeit und Backend-Release im About-Popup ausweisen und die Backend-Produktversion ueber Health melden. Releaseprozess und Tests muessen die bewusste SemVer-Aenderung pruefen. | | Leere oder technisch nicht normalisierbare Microsoft-Baselinewerte koennten als Abweichung erscheinen und die Work-Liste mit nicht belastbaren Findings aufblasen. | Baselinezeilen ohne Sollwert vor der Evaluation ausschliessen; Pass/Fail nur bei vorhandenem vergleichbarem Baselinewert zulassen; nicht unterstuetzte Werte als Review/Warning fuehren und synthetisch sowie per inhaltsfreier Zaehlerpruefung absichern. | Festgelegtes Vergleichsrisiko vom 2026-09-06: Wenn eine im Folgetimeslot fehlende Quelle still als nicht mehr vorhanden gilt, erscheinen offene Risiken faelschlich behoben und Score sowie Fortschritt lassen sich durch weniger Evidenz verbessern. Gegenmassnahme: erwartete Quellen explizit zustandsbehaftet fuehren, nur aktuell beidseitig beobachtete Quellen fuer gemessenen Fortschritt verwenden, offene letzte Findings separat und scorewirksam fortschreiben sowie Coverage/Freshness sichtbar ausweisen. Rohbeobachtungen duerfen dabei nicht als aktuelle Messung dupliziert werden. Festgelegtes Review-Persistenzrisiko vom 2026-09-06: Dieselbe Finding-Occurrence kann in mehreren Work-Blaettern unterschiedliche Anzeige-IDs besitzen; eine rein an diese IDs gebundene Browserablage kann Owner, Termine und Massnahmen auseinanderlaufen oder bei Browserwechsel verloren gehen. Gegenmassnahme: kanonische Occurrence-/Definition-IDs in die Projektion tragen, alle Projektionen synchronisieren, ueber die Same-Origin-API optimistisch versioniert speichern und die lokale Ablage nur als Rueckfall/Migrationsquelle behandeln. Festgelegtes Datenschutzrisiko vom 2026-09-06: Scanner-Zusatzinformationen und rohe Policy-Beobachtungen koennen Personen-, Konto-, Domain-, Host-, GPO-, Pfad- oder andere kundenidentifizierende Werte enthalten. Gegenmassnahme: Die Result-DB-Projektion arbeitet fail-closed mit einer versionierten Allowlist und engen Wertvalidatoren, verwendet kontrollierte Metadaten statt Quelllabels und entfernt Identitaeten, Originalwerte, Attribute und Locator. Der JSONL-Export prueft die Klassifikation erneut. Neue Tools liefern weiterhin kanonische Findings, aber keine ungeprueften Zusatzfelder; deren Freigabe erfordert eine synthetisch regressionsgepruefte Policy-Erweiterung. Festgelegtes Result-DB-/LLM-Risiko vom 2026-09-22: Selbst nach Musterredaktion koennen freie Titel, Beschreibungen, Kategorien, Baselinebezeichnungen oder scheinbar technische Werte unbekannte Personen- oder Firmennamen tragen; Regex-Sanitisierung ist deshalb keine ausreichende Datenschutzgrenze. Gegenmassnahme: Keine importierte Freitextzeichenkette wird in der normalen Result DB repariert oder teilweise freigegeben. Sichtbare Texte werden ausschliesslich aus kontrollierten Konstanten und katalogeigenen oeffentlichen IDs neu aufgebaut, Kundenwerte komplett verworfen und unbekannte Quellen generisch benannt. Suche und Facetten arbeiten auf derselben bereits reduzierten Projektion. Jede kuenftige fachliche Erweiterung muss einen synthetischen Leckagetest fuer UI/API und JSONL ergaenzen. Restrisiko: Auch anonymisierte Findings beschreiben den Sicherheitszustand des ausgewaehlten Unternehmensscopes; wer keinerlei Unternehmenssicherheitsdaten an ein externes LLM uebermitteln darf, darf auch diesen Export nicht verwenden. Risikokorrektur 2026-09-22: Die vorstehende vollstaendige Freitextsperre schuetzte zwar maximal, zerstoerte aber den beabsichtigten LLM-Nutzen und ist fuer bekannte Scannerprofile durch Policy 2.1.0 ersetzt. Regelprosa wird nur bei explizit bekannten Profilen freigegeben und zuvor aus privaten Begleitfeldern sowie festen Identifierklassen redigiert; unbekannte/generische Quellen bleiben gesperrt. Restrisiko bleibt, dass ein nicht als Identifier erkennbarer Eigenname ohne Rechtsformsuffix ausschliesslich in der Regelprosa stehen kann. Deshalb ist der Export eine technische Datenminimierung, keine automatische rechtliche Freigabe fuer beliebige externe LLMs; neue Profile benoetigen synthetische Leckage- und Nutzbarkeitstests. Risikokorrektur 2026-09-23 fuer GPO-Vergleiche: Der Nutzer hat die vollstaendige Pseudonymisierung technischer GPO-Werte als fachlich unbrauchbar verworfen. Disclosure Policy 2.2.0 gibt deshalb im internen Result-DB-Scope und im bewusst ausgeloesten JSONL-Export konkrete konfigurierte und erwartete GPO-Werte einschliesslich technischer Principals/SIDs frei. Projekt-, Assessment-, Run-, Artefakt-, Locator-, Review- und automatisch erzeugte Hashidentitaeten bleiben entfernt. Diese technische Evidenz kann kundenidentifizierend sein; Export oder Uebermittlung an externe LLMs ist keine automatische Datenschutzfreigabe und darf nur innerhalb der jeweils zulaessigen Vertrauensgrenze erfolgen. Die App erfindet keine GPO-Anwendung oder effektive Endpunktwirkung. Offen 2026-09-06 (Phase 13B): Die automatische Kontextableitung unterstuetzt derzeit belegte DC-Betriebssysteme; umfassende Member-/Client-/Produktableitung und kontextspezifische Baseline-Teilpakete sind nicht abgeschlossen. Ausgewaehlte/unvollstaendige Backups bleiben nach der bestehenden Bewertungsgrenze Review; ein neutraler Teilmengenvergleich ohne Vollstaendigkeitsaussage ist separat zu entwerfen. Fehlende Baselineoriginale verhindern Reprocessing aus Originalbytes, auch wenn alte Analysen noch lesbar sind. Erforderlich sind Wiederbereitstellung der identischen Originale oder ein neuer expliziter Import; keine Ersatzdaten und kein stiller Speicher-/Datenbankwechsel. Festgelegtes Betriebsrisiko vom 2026-09-06: Verzeichnisabhaengige Compose-Projektnamen oder spontane Portausweichungen koennen mehrere auseinanderlaufende ASSESSOR-Datenbanken erzeugen und die App unbemerkt mit einem anderen Datenstand verbinden. Gegenmassnahme: `assessor-2_0` und `assessor-2_0_assessor-postgres-data` sind in Compose und `AGENTS.md` kanonisch gebunden; das Volume ist extern, Port `5432` verbindlich, alternative ASSESSOR-Datenbanken und Fallbackports sind untersagt. Vor Persistenzmigrationen oder destruktiven Eingriffen ist ein verifiziertes Backup erforderlich; fremde Docker-Bestaende bleiben unberuehrt. | Risiko | Gegenmaßnahme | | Eine spaetere Kartenrefaktorierung kann wieder alle Client-Info-Karten standardmaessig oeffnen und damit die vereinbarte kompakte Startansicht verlieren. | Den Startzustand an jeder konkreten Karteninstanz explizit setzen und statisch pruefen: neun `initiallyExpanded={false}` sowie genau ein nicht minimierter `Assessment Status`; die gemeinsame Komponente bleibt fuer gezielte Wiederverwendung konfigurierbar. | | Eine minimierte Client-Info-Karte kann durch intrinsische Flexbreite schmaler als ihre Spalte werden; werkzeugspezifische Provenienz kann ausserdem erneut in einen fachlichen Verzeichnisueberblick geraten. | Collapsed-Karten explizit auf `width: 100%` setzen und diese Geometrie regressionspruefen. `directoryFacts` auf fachliche Directory-Felder begrenzen; Scanner-Engine-Versionen bleiben in der Quellprovenienz statt in `Directory Overview`. | | Client-Info-Karten koennen beim Ein-/Ausklappen zwischen Spalten wechseln und dadurch die erlernte Position verlieren; unterschiedlich hohe Kopfbereiche koennen ausserdem eine grosse Leerstelle vor der Inhaltsmatrix erzeugen. | Karten statisch in drei semantische Spalten mit der Zuordnung 3/2/2 gruppieren und innerhalb jeder Spalte per Flex-Stack anordnen. Keine dichte Auto-Platzierung oder laufzeitbasierte Spannenberechnung verwenden. KPI-Matrix und Assessment-Status in derselben gestreckten Kopfzeile fuehren; an schmalen Breakpoints kontrolliert stapeln. Spaltenzahl, Karteninstanzen, Reihenfolge und Collapse regressionspruefen. | | Ein lokal bereitgestellter Policy-Regelkatalog kann nach fachlicher Freigabe unbemerkt veraendert, nur teilweise konfiguriert, als Symlink umgebogen oder mit ungueltigen Runtime-Strukturen geladen werden und dadurch andere Findings erzeugen. | Pfad und SHA-256 als untrennbares Konfigurationspaar verlangen, nur regulaere Nicht-Symlink-Dateien bis 5 MiB lesen, Hash vor UTF-8-/JSON-Parsing vergleichen und danach den geschlossenen Katalogvertrag fail-closed validieren. Bei jedem Fehler vor Repository- und Serverstart abbrechen; Evaluation Runs bewahren weiterhin den vollstaendigen tatsaechlich verwendeten Katalog. | | Historische GPO-Reprocessing-Ketten koennen alte Konflikte, Reviewhinweise, Abweichungen und Findings mehrfach als aktuellen Zustand erscheinen lassen; wenn UI und Aktionsableitung unterschiedliche Auswahlregeln verwenden, bleiben ausserdem veraltete Evaluationen bedienbar. | Aktive Profile und nicht ersetzte Identity-Analysen je Artefakt als Wurzel einer gemeinsamen deterministischen Aktivkette verwenden; nur dazu passende Aggregationen, jeweils neueste Evaluationen und Finding-Runs in die aktuelle Sicht aufnehmen. Historie getrennt erhalten und dieselbe Auswahlfunktion fuer Summary, Review Queue sowie Evaluate-/Finding-Aktionen regressionspruefen. | |---|---| | Scannertexte koennen `U+0000` enthalten: Browser und In-Memory-Vorschau akzeptieren den Wert, PostgreSQL `jsonb` weist ihn beim Abschluss ab. Eine nur an der Datenbank vorgenommene Bereinigung wuerde ausserdem Vorschau und gespeichertes Modell auseinanderlaufen lassen. | Das Zeichen einmal an der gemeinsamen kanonischen Importgrenze in die explizite Darstellung `\\u0000` ueberfuehren, Anzahl und Repraesentation diagnostizieren und Hash/Locator unveraendert erhalten. Maester-XLSX und kompletter Preview-/Complete-HTTP-Pfad bleiben permanente Regressionen; Abschlussfehler duerfen die erfolgreiche Vorschau nicht mehr verwerfen. | | Unterschiedlich hohe oder geschlossene Client-Info-Karten koennen in einem regulaeren Zeilenraster grosse Leerraeume hinterlassen; eine unbedingte JS-Masonry-Aktivierung koennte ohne Mess-API dagegen Karten ueberlagern. | Mit dem normalen Raster starten, Kartenhoehen inklusive gemeinsamem Segmentabstand messen und erst danach 1-px-Spannen mit `grid-auto-flow: row dense` aktivieren. Raster und jede Karte beobachten, nur geaenderte Spannen schreiben und bei fehlendem ResizeObserver im sicheren Standardraster bleiben. Synthetische DOM-Hoehen und Collapse werden regressionsgeprueft. | | Infrastruktur-Fakten koennten bei einer spaeteren Dashboardverdichtung erneut mit Risiko-Mengenwerten in einer ueberlangen Mischkarte zusammengefuehrt oder zwischen beiden Karten doppelt dargestellt werden. | `Infrastructure & Resilience` ausschliesslich mit `risk.slice(1)` speisen und den vollstaendigen Faktenblock genau einmal in `Infrastructure Details` rendern. Instanzzahl, beide Titel, Trennung und vollstaendige Snapshot-Faktenliste statisch regressionspruefen; beide Karten ueber den gemeinsamen Collapse-Test absichern. | | Maester-Fehlertexte koennen PowerShell-Kontext, HTTP-Antwort und verschachteltes JSON in einer langen Zeile mischen; eine aggressive Umformatierung koennte dabei Diagnosewerte verlieren oder normale Ergebnisprosa faelschlich als Fehler behandeln. | Nur die eindeutige Kombination aus Maester, Ausfuehrungsfehlerformulierung und `Invoke-MgGraphRequest` strukturiert parsen. Die Primaermeldung und bekannte technische Felder additiv extrahieren, den unveraenderten Rohtext stets einklappbar erhalten und bei jeder Nichterkennung auf den generischen Renderer zurueckfallen. Parser und Darstellung mit synthetischen Fehlern regressionspruefen. | | Eine Client-Info-Kachel koennte einen Plus-/Minus-Schalter anzeigen, ohne ihren gesamten Inhalt zu minimieren, in einer hohen Rasterzeile als leere Vollhoehenkarte stehen bleiben oder zwischen Donut- und Faktenkarten unterschiedliche Zustandslogik verwenden. | Beide gemeinsamen Informationskartenkomponenten rendern im minimierten Zustand strukturell nur die Kopfzeile, verwenden dort intrinsische statt gestreckter Rasterhoehe und binden denselben `aria-expanded`-/`aria-controls`-Schalter an den vollstaendigen Inhaltscontainer. Interaktionstests decken beide Kartentypen ab; der Layouttest prueft alle neun konkreten Instanzen, Titel und die Collapsed-Geometrie. | | Eine feste Rasterspan-Anzahl kann bei wechselnder Dashboardbreite und unterschiedlich langen Environment-Werten erneut Leerraum oder Ueberlauf erzeugen; rein automatische Tracks ohne Mindestmass koennten dagegen die quadratische Grundgeometrie aufloesen. | Die responsive Spaltenzahl weiterhin in eine gemeinsame Mindest-Rastereinheit uebersetzen, `grid-auto-rows` jedoch als `minmax(Mindestmass, auto)` definieren. Inhaltskarten erhalten `min-content` als Untergrenze; nur die datenreiche Resilience-Kachel hebt ihr bevorzugtes Quadratverhaeltnis auf. | | Client-Info-Infopanels koennten in minimierter Ansicht erneut Balken oder weitere Inhalte zeigen, expandiert zu kompakte Zeilen verwenden oder fuer Assessment und Severity wieder auf eine abweichende Diagrammgeometrie zurueckfallen. | Minimiert strukturell nur Kopfzeile und Plus rendern. Den gemeinsamen expandierten Mengenvertrag mit 120-px-Zeilen, 72-px-Tracks, responsive gestapelter Schmalansicht und vollstaendig wachsenden Fakten anwenden. Alle neun Panelinstanzen sowie die Abwesenheit minimierter Balken und Client-Info-Donuts regressionspruefen. | | Eine spaetere Progressive-Disclosure-Aenderung koennte die im Zielbild permanent sichtbaren Mengenzeilen erneut ausblenden oder die beiden Verteilungen aus der rechten Donutspalte entfernen. | Kerninhalt und optionale Zusatzdetails als getrennte DOM-Bereiche rendern; nur den Zusatzbereich an `aria-expanded` binden. Hauptmatrix, rechte Rail, zwei Donutkarten und sichtbaren Kerninhalt im Pluszustand gemeinsam regressionspruefen. | | Eine getrennte volle Kennzahlenzeile koennte `Assessment Status` erneut in eine zweite Reihe zwingen oder bei schmalen Viewports zu kleine quadratische Zahlenkacheln erzeugen. | Kopfzone als 3:1-Raster aus Zahlenmatrix und Assessment-Donut aufbauen; bei 1100 px stapeln und die Zahlenmatrix danach auf drei beziehungsweise zwei Spalten reduzieren. Vorhandene Quadrat- und Kachelvertraege regressionspruefen. | | Der Client-Open-Ablauf koennte bei spaeteren Data-Hub-Aenderungen wieder implizit in Work landen oder den gewaehlten Timeslot-Scope verlieren. | Zielbereich und `openProject(project.id, scanRunIds)` gemeinsam am zentralen `onProjectSelected`-Callback halten und durch eine Quellregression auf `dashboard` sowie die unveraenderte ScanRun-Uebergabe absichern. | | Ein expandiertes Infopanel koennte trotz breiter interner Balkenspalte auf der kompakten Zwei-Spalten-Kartenbreite verbleiben; Inhalte wuerden dann aus der Kachel herausragen und Nachbarkacheln ueberdecken. | Expandierte Karten auf sechs Rasterspalten setzen und an 800-/560-px-Breakpoints auf die jeweils gesamte Rasterbreite reduzieren. Desktop- und Breakpoint-Spans statisch regressionspruefen; minimierte Kartenbreite nicht veraendern. | | Progressive Detailkarten koennten Informationen versehentlich dauerhaft verbergen, unzugaengliche Symbolschalter verwenden oder mit erfundenen Zeitreihen eine nicht vorhandene Entwicklung suggerieren. Unterschiedliche expandierte Inhaltshoehen koennten erneut ueberlappen. | Jede Karte behaelt eine sichtbare Primaermenge mit echtem proportionalem Mengenbalken und rendert den unveraenderten vollstaendigen Inhalt ueber einen beschrifteten `aria-expanded`-/`aria-controls`-Schalter. Keine Sparklines ohne historische Daten erzeugen. Inhaltsbasierte Rastertracks und eine echte Klickregression sichern Ein-/Ausblenden, Balkenwert und ueberlauffreies Wachstum. | | Dynamische OS-Aufzaehlungen koennen die feste 2-x-2-Quadratflaeche der Infrastructure-&-Resilience-Kachel ueberschreiten und darunterliegende Dashboardbereiche ueberdecken; eine globale Kartenvergroesserung wuerde dagegen das gesamte dichte Raster aufblaehen. | Nur die betroffene inhaltsreiche Kachel drei Rasterzeilen belegen und dort `aspect-ratio` aufheben. Vollstaendige Werte und normale Wortumbrueche beibehalten; die Ausnahme sowie die unveraenderte Faktenmatrix statisch regressionspruefen. | | Feste Finding-Kachelbreiten koennen an schmalen Viewports weniger Spalten ergeben; lange Titel oder zusaetzliche Kategorien koennten bei einer zugleich festgeschriebenen Hoehe abgeschnitten werden. Eine globale Badge-Regel koennte ausserdem kompakte Pathfinder-Karten unbeabsichtigt vergroessern. | Nur die Breite und Mindesthoehe der regulaeren Work-Kachel zentral festschreiben, Zeilenhoehen fuer Virtualisierung daraus ableiten und Inhalt nach unten wachsen lassen. Die semantische Badge-Matrix strikt auf direkte Work-Rasterkacheln begrenzen; Pathfinder bleibt durch fokussierte Regressionen separat abgesichert. | | Ein Result-DB-Export koennte nur die aktuell geladenen 50 Zeilen statt aller Filtertreffer enthalten oder bei paralleler Datenmutation Seiten aus unterschiedlichen Ergebnisstaenden vermischen. | Exportseiten mit identischem projekt-/timeslotgebundenem Filterquery deterministisch nachladen, die erwartete Gesamtzahl ueber alle Seiten konstant pruefen und bei Aenderung oder vorzeitig leerer Seite ohne Download abbrechen. Manifest und Ergebnisanzahl gemeinsam regressionspruefen. | | Optionale Statushinweise oder unterschiedlich lange Zahlen-/Einheitentexte koennen die Balkenbreite und Zeilenhoehe einzelner Client-Info-Karten erneut verschieben; globale Balkenregeln koennen zugleich die kompakte Resilience-Karte ueberlagern. | Statusplatz in jeder Standardzeile reservieren, Label/Track/Wert ueber feste semantische Gridspalten ausrichten und Zahlen samt Einheit ohne Umbruch gruppieren. Die Resilience-Ausnahme setzt Zeilen und Platzierung explizit zurueck; beide Geometrien werden gemeinsam regressionsgeprueft. | | Ein formal als `released` markierter Policy-Regelkatalog enthaelt unbekannte Runtime-Enumwerte, ueberlappende Kontextselektoren, mehrdeutige Regeln oder widerspruechlich wiederverwendete Risiko-/Abhaengigkeits-IDs und erzeugt dadurch nicht reproduzierbare beziehungsweise fachlich falsche Evaluationen oder Findings. | Die zentrale Katalogvalidierung prueft Auslieferungsmechanismen, Dispositionen, Comparatorvarianten und -modi, Severity, Kontextueberlappung sowie katalogweite ID-Definitionen geschlossen und fail-closed. Jede spaetere fachliche Katalogerweiterung benoetigt positive und negative synthetische Freigaberegressionen; der produktive Katalog bleibt bis zur fachlichen Kuratierung leer. | | Ein LLM zaehlt Findings anders als die Anwendung, erfindet Referenzen oder liefert ein fuer das Dashboard ungueltiges beziehungsweise prompt-injiziertes Ergebnis. | Summarywerte vor dem Modellaufruf deterministisch in der Anwendung berechnen, Eingabedaten als untrusted behandeln, ausschliesslich vorhandene temporaere IDs erlauben, ein versioniertes exaktes JSON-Ausgabeformat verlangen und die spaetere Dashboardaufnahme gegen dieses Schema validieren. | | Auswahl, Fokus und fachlicher Status koennen erneut farblich vermischt werden, wenn Komponenten direkt Akzent-, Fokus- oder Severitytokens fuer eine persistente Markierung verwenden. | Persistente Auswahl ausschliesslich an `--marking-color` binden und in beiden Themes auf denselben Gelbwert regressionspruefen. `--focus-ring` bleibt nur fuer Tastaturfokus; Online-, Fehler-, Workflow- und Severityfarben bleiben fachlich getrennt. | | Einzelansichten koennten trotz flacher gemeinsamer Tokens im Hover erneut dekorative Konturen setzen oder den Standard mit lokalen Radien und Schatten umgehen. | Appweite Projektregel und Regression an die flachen `--tile-*`-Tokens binden; normale und Hover-Zustaende getrennt von Fokus, Auswahl und Statusakzenten pruefen. Lokale Kachelgeometrie bleibt unzulaessig. | | Kontur- und schattenlose Client-Info-Kacheln koennen bei spaeteren Themeaenderungen ihren Flaechenkontrast zum Dashboardgrund verlieren; interaktive Kacheln koennten ohne eigene Zustandsmarkierung schwer erkennbar werden. | Karten- und Grundflaeche ueber die bestehenden Theme-Tokens getrennt halten, Hover weiterhin ueber die Hoverflaeche zeigen und Fokus sowie Auswahl mit den vorhandenen farbigen Konturen sichern. Die Dashboardregression prueft den flachen Normalzustand getrennt von diesen Funktionszustaenden. | | Quadratische Dashboardkarten koennen bei schmalen Breakpoints zu klein fuer vollstaendige Fakten-, Legenden- oder Balkeninhalte werden oder durch getrennte Raster erneut ungenutzte Flaechen erzeugen. | Kennzahlen und Inhaltskarten in demselben dichten Raster halten, Inhaltskarten ueber zwei Spalten und Zeilen skalieren, responsive gerade Spaltenzahlen verwenden und Quadratverhaeltnis, Rasterspans sowie das Fehlen fester Mindesthoehen regressionspruefen. Inhalte duerfen weiterhin weder geklemmt noch abgeschnitten werden. | | Eine kompakte UI-Skala koennte versehentlich auch kontinuierlichen Finding- oder Reporttext verkleinern; umgekehrt koennte eine spaetere Body-Token-Aenderung Tabellen erneut auf Prosegroesse anheben. | Kontinuierlichen Lesetext fest an `--type-body-size` mit 16 px und strukturierte Daten an den getrennten 14-px-Token `--type-table-body-size` binden. Grid, Raw Data, allgemeine Tabellenzellen und die semantische Rollenskala gemeinsam regressionspruefen. | | Die Compose-Konfiguration benennt den PostgreSQL-Dienst korrekt, waehrend das Backend den Host ignoriert und innerhalb des App-Containers gegen `127.0.0.1` verbindet; Build und Datenbank-Health bleiben dabei gruen, aber die App wird unhealthy. | `ASSESSOR_POSTGRES_HOST` in den Repository-Umgebungsvertrag und die Verbindungszeichenfolge aufnehmen, Loopback nur als lokalen Fallback verwenden und Docker-Hostname sowie lokalen Standard durch einen reinen Unit-Test absichern. | | Lokale Kartenraster koennen Kacheln wieder auf Restbreite strecken; lange Titel, Werte, Labels, Zusatztexte, Medien oder Aktionen koennen abgeschnitten, ellipsiert oder verborgen werden, aus einer Kachel herausragen, Nachbarkacheln ueberdecken oder durch aggressive Umbruchregeln mitten im Wort getrennt werden. | Gemeinsame Segment-/Kacheltokens, feste Startausrichtung und eine zuletzt geladene Kachel-Vertragsschicht verwenden. Woerter nur an Wortgrenzen umbrechen und Zahlen zusammenhalten. Bei Platzmangel Inhalt intern neu anordnen oder die Kachel verbreitern beziehungsweise responsiv neu anordnen; Clipping, Clamp, Ellipse und Truncation sind keine zulaessigen Rueckfaelle. Statische Regressionen sichern Vertrag, relevante Ansichten und Kaskadenreihenfolge. | | Trefferlistentitel und geoeffneter Finding-Titel koennen trotz unterschiedlicher Informationshierarchie optisch gleich laut oder in der falschen Reihenfolge erscheinen. | Trefferliste auf 16 px/400 und geoeffneten Detailtitel auf 20 px/600 ueber eigene zentrale Tokens binden; Finding-Abschnitt und Matrixkacheln getrennt regressionspruefen. | | Finding-Badges und Outcome-Texte koennen bei derselben Groesse wie regulaere Labels eine lange Titelzeile optisch ueberladen und MITRE-Zuordnungen unnoetig umbrechen. | Fuer Finding-Zustandszeilen ausschliesslich den zentralen 12-px-Badgetoken verwenden; Farbe, Glyph, Rahmen und feste Dimensionsreihenfolge bleiben als zusaetzliche Bedeutungstraeger erhalten. | | Lange Finding-Titel koennen bei Verwendung der globalen H2- oder allgemeinen Heading-Rolle Reader, Trefferlisten und Matrixkacheln visuell dominieren und Statusinformationen aus dem sichtbaren Bereich druecken. | Finding-spezifische Titelrollen regressionspruefen: Reader 18 px, Listen- und Matrixkacheln 16 px; Fliesstext bleibt mindestens 16 px. Globale Seitentitel und Pathfinder-Micro-Cards nicht ueber lokale Work-Regeln mitveraendern. | | Unabhaengige Donutimplementierungen koennen erneut in offene 270-Grad-Gauges, abweichende Ringspuren, runde Bogenenden oder unterschiedlich platzierte Prozentwerte auseinanderlaufen; mehrteilige Verteilungen koennten den gemeinsamen Standard umgehen. | Vollkreis, Startposition, flache Enden, neutrale Spur, Strichstaerke und zentrale Wertebehandlung ueber gemeinsame Donuttokens und Regressionen fuer Datahub-Karten, Sidebar, Dashboardstatus und mehrteilige Risiko-Verteilung absichern. Neue Donuts muessen denselben Vertrag verwenden. | | Lokale Systemschriften, konkurrierende Font-Stacks oder frei gesetzte Schriftgroessen koennen zwischen Betriebssystemen und Ansichten unterschiedliche Laufweiten, Zeilenumbrueche und Hierarchien erzeugen. | Inter als lokale WOFF2-Abhaengigkeit ohne CDN laden, den Font-Stack und alle semantischen Schriftrollen zentral tokenisieren und Import, Hierarchie, Mindestgroesse, erlaubte Grossschreibung sowie das Fehlen abweichender Display-Schriften regressionspruefen. | | Mittelgrosse, strukturell komplexe Scanner-HTML-Berichte koennen vor der groessenbasierten DOM-Umschaltung die isolierte 30-Sekunden-Parsergrenze erreichen; ein pauschal hoeheres Timeout wuerde problematische Eingaben nur laenger binden. | Berichte oberhalb von 1 MiB frueh in den bestehenden begrenzten lexikalischen Extraktor routen, Workerzeit-, Speicher-, Tabellen- und Zeilengrenzen beibehalten und den 1,6-MiB-PingCastle-Pfad mit synthetischer Tabelle sowie `html-bounded-extraction`-Diagnose regressionspruefen. | | Eine Anzeige der technischen Paketversion koennte faelschlich als aktueller fachlicher Verarbeitungsstand verstanden werden; eine lokal im React-Code hartcodierte Zahl koennte ausserdem vom Processingvertrag abweichen. | Die zentrale Konstante `CURRENT_ASSESSOR_PROCESSING_VERSION` aus dem Processingvertrag im Markenblock rendern, weder `v` noch `Version` voranstellen und Quelle, Wert, Position sowie kompakte Metadaten-Typografie regressionspruefen. | | Ein Scanner-Reimport koennte den alten Lauf vor erfolgreicher Validierung loeschen, den falschen Timeslot beziehungsweise ein anderes Werkzeug ersetzen oder alte und neue Ergebnisse gleichzeitig in Work und Result DB anzeigen. | Vorschau und Abschluss kryptografisch an dasselbe Projekt-, Assessment- und ScanRun-Ziel binden, das erkannte Werkzeug gegen den aktiven Vorgaenger pruefen und Supersession samt neuem kanonischem Lauf in einer Repositorymutation committen. Den alten Lauf nicht loeschen; aktive Read-Modelle filtern `supersededByScanRunId`, waehrend der Projektexport beide Laeufe und ihre Beziehung erhaelt. | | Ein Bericht desselben Werkzeugs mit gleichem Dateinamen oder Datum koennte faelschlich als Reimport akzeptiert werden; bei Mehrdatei-Reports koennte eine Teilmenge oder eine zusaetzliche Datei den falschen Bestand ersetzen. Ein Client koennte ausserdem eine reine Vorschaupruefung umgehen. | Anzahl und vollstaendiges SHA-256-Multiset der Originaldateien in Preview und Complete vergleichen und dieselbe Invariante in Local- und PostgreSQL-Repository sowie beim Uebernehmen bereits importierter Ersatzlaeufe erzwingen. Fehlende Originalhashes, Offline-Fallback und jede Abweichung fail closed ablehnen; der bestehende Scan bleibt aktiv. | | Ein erwarteter Hash-Treffer kann im Reimport als gelbe Dublette erscheinen, automatisch abgewaehlt sein oder im Abschlussbericht erneut als Fehlerzaehler auftauchen. Eine generische Zeile `current profile` kann ausserdem den Eindruck erwecken, PingCastle selbst habe den Bericht oder sein Format geaendert. Nutzer koennten dadurch die richtige Ersatzdatei abwaehlen oder den sicheren Vorgang abbrechen. | Darstellung und Vorauswahl am expliziten `replacesScanRunId`-Kontext ausrichten: erwartete Ersatzquelle positiv benennen und auswaehlen, den Bestandsschutz bis zum erfolgreichen Abschluss erklaeren und den Abschlussbutton eindeutig `Reimport and replace` nennen. Im Panel `ASSESSOR processing profile`, Alt-/Neuversion und den unveraenderten Scannerbericht explizit nennen. Die normale Import-Dublettenwarnung unveraendert getrennt halten und beide Wege regressionspruefen. | | Ein veralteter, bereits laufender Backendprozess kann einen neuen optionalen Reimportparameter ignorieren und den Upload als normalen zusaetzlichen Scan speichern. | Das Ersatz-Ziel muss vor jeder dauerhaften Mutation in der Servervorschau exakt zurueckgespiegelt werden; fehlt die Bestaetigung, bricht der Client vor dem Batchabschluss ab. Fuer bereits entstandene Doppelstaende darf nur eine explizite, atomare Uebernahme eines neueren aktiven Scans desselben Werkzeugs und Timeslots angeboten werden. | | Frontend-HMR kann neue API-Aufrufe laden, waehrend ein alter lokaler Backendprozess weiterhin gesund auf Port 4173 antwortet; ein blosser Health-Status erkennt diesen Vertragsversatz nicht. | Lokale Serverbundles nach erfolgreichem Watch-Build ueber ihren SHA-256-Releasewert aktivieren, Backend und Starter ueber eine zufaellige Entwicklungsinstanz binden und vor Clientfreigabe beide Werte im Health-Endpunkt pruefen. Nur eindeutig verwaltete verwaiste Prozesse zurueckfordern; unbekannte Portbelegung fail closed melden. | | Eine nur auf den neuesten Timeslot bezogene Processing-Ampel koennte einen aelteren aktiven Altstand verdecken und dadurch spaetere Lifecycle-Vergleiche auf unterschiedlich verarbeiteten Daten zulaessig erscheinen lassen. Farbe allein waere ausserdem fuer assistive Technik nicht eindeutig; ein empfohlenes Profilupdate in Fehlerrot wuerde einen weiterhin nutzbaren Scan faelschlich als defekt darstellen. | Alle aktiven scannergebundenen Timeslots der Mandantenkachel zusammenfassen; `Reimport recommended` gelb, nur `Incompatible`/`Unknown` fail closed rot und ausschliesslich vollstaendig aktuelle beziehungsweise kompatible Staende gruen anzeigen. Update-/Fehlerkarten erhalten eine dauerhafte Manage-Aktion, alle betroffenen Timeslots oeffnen sich im Detail automatisch, und ARIA-Label sowie Tooltip benennen den mandantenweiten Zustand. Supersedierte Laeufe bleiben ausserhalb der aktiven Gruppen. | | Globale TileCard-, Typografie- oder Radiusregeln koennen Pathfinder-Knoteninformationen vergroessern und dadurch Knoten, Kanten oder Nachbarkarten verdecken; lokale Rohwerte und `!important` wuerden die Darstellung zwar kurzfristig halten, aber Build- und Designvertraege brechen. | `PathfinderMicroCard` als eigenen wrapperfreien Vertrag mit festen Finding-, Relation- und Category-Massen, gemeinsamem Skalierungsfaktor und Pathfinder-spezifischen Typografie-, Farb- und Radius-Tokens fuehren. Regressionen pruefen beide Varianten, exakte Werte, gemeinsame Skalierung, fehlende Rohfarben/`!important` und unveraenderte regulaere TileCard-Tests. | | Ein neuer PingCastle-Abschnitt oder eine geaenderte Tabellenueberschrift kann bei ausschliesslich festen Feldmappings unbemerkt verloren gehen; umgekehrt kann eine leere Tabelle faelschlich als nicht geprueft interpretiert werden. | Jeden Abschnitt, jede direkte Tabelle und jede Zelle zunaechst quellengetreu persistieren, stabile Schluessel nur als zusaetzliche Projektion erzeugen und `observed`, `explicitly-absent`, `empty`, `access-denied`, `license-restricted`, `unsupported`, `parse-failed` und `unknown` getrennt speichern. Synthetische Layout- und Zustandsregressionen sowie versionsgebundene Extractorprovenienz beibehalten. | | Environment-Daten koennten in der gemeinsamen Result DB als scheinbare Findings erscheinen oder durch Severity-, IOE-, Abweichungs- und Reviewfacetten fachlich falsch bewertet werden; eine zweite Ergebniskopie koennte zudem von der Environment-Persistenz abweichen. | Einen eigenen `environment-observation`-SourceKind mit separaten Property-, Subject- und Zustandsfacetten verwenden, Finding-spezifische Dimensionen in der UI als nicht anwendbar darstellen und die Zeilen ausschliesslich als abgeleitete Projektion aus den persistierten EnvironmentObservations erzeugen. Originalwert, Normalwert, Locator, Profil- und Mappingstand muessen in Listen- und Einzel-API regressionsgeprueft bleiben. | | Eine neue Erfassungsfaehigkeit kann unter einer bereits verwendeten Profilversion ausgerollt werden; contextlose Altimporte und vollstaendige Neuimporte waeren dann im Processingvertrag ununterscheidbar und koennten beide gruen erscheinen. | Jede persistenzrelevante neue Erfassungsdimension erfordert vor dem Rollout einen neuen append-only Profilstand. Der aktuelle Manifeststand muss Altversionen gezielt auf `reimport-recommended` setzen; synthetische Tests pruefen Altstand, aktuellen Stand, Datahub-Erklaerung und die im kanonischen Import gespeicherte Profilversion gemeinsam. | | Feste halbe Badgebreiten und eine starre 40-px-Badgeleiste koennen laengere Pathfinder-Labels wie `Maester/Intune` abschneiden, obwohl unterhalb noch freie Kachelflaeche vorhanden ist. | Pathfinder-Badges auf den kompakten 11-px-Standardtoken `--fs-micro`, inhaltsabhaengige Breite und flexiblen Zeilenumbruch in den verbleibenden vertikalen Raum umstellen; Kachelgroesse und 16-px-Findingtitel bleiben unveraendert. Browsergeometrie prueft fuer die konkreten Dummy-Maester/Intune-Findings Textbreite und Kachelgrenzen. | | Karten koennen in einer gemeinsamen Knotenebene von spaeteren Punkten uebermalt werden; viewportabhaengiges Klemmen und Neuverteilen kann sie beim Sidebar-Wechsel vom zugehoerigen Punkt wegschieben. Unbegrenzt viele beziehungsweise breite Badges koennen trotz passender Aussenflaeche den Kachelinhalt ueberfuellen. | Karten als letzte SVG-Ebene rendern und ihre Seite, X-/Y-Position sowie Kollisionsausweichung ausschliesslich deterministisch im Graphkoordinatensystem aus Knotenlage und Pin-Reihenfolge ableiten. Keine Kamera-, Viewport- oder Panelbreite darf die Platzierung beeinflussen; ausserhalb des Ausschnitts liegende Karten bleiben durch Pan/Zoom erreichbar. Pro Finding hoechstens vier sichtbare Badges rendern, weitere Werte mit einem getesteten `+N` kennzeichnen und die sichtbaren Badges mit Inhaltsbreite in den verbleibenden Raum umbrechen. | | Eine zu kleine logische Findingflaeche kann beim Hineinzoomen zwar insgesamt wachsen, intern aber Titel, Badges und Aktionen in ein unpassendes Seitenverhaeltnis zwingen; zoomabhaengige Layoutkorrekturen wuerden wiederum die Bildmetapher brechen. | Eine feste 240-mal-176-px-Findingvorlage mit fuenf Titelzeilen, flexiblem Badge-Restbereich und allen Aktionen verwenden, sie nur einmal konstant mit 0,4 in Graphkoordinaten abbilden und danach keinerlei kameraabhaengige Innenformatierung anwenden. Browsergeometrie muss null ausserhalb liegende Kindelemente und identische Zoomfaktoren fuer Kachel, Titel, Badges und Aktion bestaetigen. | | Eine rein farbliche und stark reduzierte Verbindungsanzeige kann fuer Farbfehlsichtige oder assistive Technik uneindeutig sein; eine abweichende Platzierung in Work und den uebrigen Bereichen koennte den Clientkontext wieder trennen. | Beide farblich fest codierten Quadrate mit unterschiedlicher Aktivopazitaet zeigen, am Container zustandsbezogenes ARIA-Label und Tooltip fuehren und denselben JSX-Baustein in Work sowie allen anderen Bereichsheadern unmittelbar vor dem Clientnamen einsetzen. | | Interne Kamera-Gegentransformationen koennen Text, Symbole und Badges anders als die Kachelflaeche skalieren; redundante CIS-Hierarchie-Badges koennen die feste 148-mal-72-px-Flaeche seitlich verlassen. | Keine inverse Transformation innerhalb der Kachel verwenden und die komplette Komposition im SVG-Koordinatensystem belassen. CIS-Kategorien in Work, Reader, Filter und Graphknoten erhalten, aber aus der redundanten Pathfinder-Kachel auslassen; per Browsergeometrie alle gerenderten Kindelemente innerhalb der Kachel sowie identische Zoomverhaeltnisse von Flaeche, Titel und Symbol pruefen. | | Lokale oder responsive Paddingwerte koennen die Inhaltskante einzelner Hauptbereiche erneut von Work abweichen lassen; pauschales Padding auf Root und Split-Pane kann den Abstand doppeln. | Den 20-px-Wert ausschliesslich ueber `--panel-content-inset`/`--panel-inset` beziehen, genau einen Root-Container je Ansicht verantwortlich machen und Work, Datahub, Client-Detail sowie Pathfinder per statischem Vertrag absichern. | | Eine nur nominell gleiche CSS-Schriftgroesse kann innerhalb der SVG-Kamera am Bildschirm stark vergroessert erscheinen; isoliert verkleinerte Schrift wuerde Symbole, Labels und Abstaende unverhaeltnismaessig lassen. | Einen gemeinsamen inversen Kamerafaktor an Finding- und Rollenkacheln geben, deren gesamte UI samt Layoutflaeche transformieren und die proportionale aeussere Kachelflaeche unveraendert lassen. | | Ein global aus dem Workzustand gelesener Clientname kann im Data-Hub-Detail einen anderen gerade verwalteten Client falsch auszeichnen; lange Namen koennen ausserdem die Headerwerkzeuge verdraengen. | Den Detailnamen separat und mit Vorrang fuehren, den Callback stabil halten und den reinen Text flexibel begrenzen, rechts ausrichten und mit Ellipsis kuerzen. | | Eine auf Rollenkachelgroesse reduzierte Finding-Kachel kann Inhalt und Aktionen ueberlaufen lassen oder unbeabsichtigt auch die regulaere Matrix verkleinern. | Die Verdichtung strikt unter `.obsidian-node-matrix-card` kapseln, feste 148-mal-72-px-Graphmasse verwenden, Titel und Badgeleiste begrenzen und per Produktionsbuild sowie Pathfinder-Vertragstest absichern. | | Zu schmale Rollenkacheln koennen kurze Kategorien mitten im Wort umbrechen; eine pauschale Einzeilenregel wuerde hingegen lange fachliche Bezeichnungen abschneiden. | Rollenkachel moderat verbreitern, beliebige Worttrennung deaktivieren und die vorhandene zwei- beziehungsweise dreizeilige Begrenzung fuer regulaere Wortgrenzen beibehalten. | | Ein Bereichswechsel kann durch Unmount oder pauschales Auto-Fit den verlassenen Pathfinder-Zustand verlieren; ein Path Snapshot koennte faelschlich dauerhafte Workspace- oder Reviewmarkierungen setzen. | Den Pathfinder verborgen montiert halten, Auto-Fit an Aktivitaet und Graphsignatur koppeln und Path-Snapshot-Findings ueber einen separaten, bei Kontextwechseln geloeschten ID-Scope in die bestehende Filterpipeline einspeisen. | | Eine inverse Zoomkompensation kann ausgewaehlte Kacheln beim Herauszoomen unverhaeltnismaessig gross halten; eine zu kleine feste `foreignObject`-Hoehe kann gleichzeitig die letzte Badgezeile intern abschneiden. | Kacheln direkt im kameraskalierten Knotengruppenraum rendern, nur Punkttexte invers skalieren und die Finding-Grundhoehe anhand des vollstaendigen TileCard-Inhalts auf 176 px anheben. Synthetische Vertrage verhindern die inverse Kacheltransformation; Dummy-Messungen pruefen Fit-Overflow und minimale Rendergroesse. | | Das pauschale Umfaerben aller Graphpunkte koennte Severity-Signale der Findings zerstoeren oder nur Ring und Punkt, nicht aber die bei Auswahl sichtbare Rollenkachel, auseinanderlaufen lassen. | Den neuen Farbtoken ausschliesslich an die fuenf ringmarkierten Nicht-Finding-Klassen und ihre Rollenkachel-Hexagone binden; Finding-Severityselektoren unveraendert lassen. Beide Themes, alle Rollenklassen und eine konkrete Severityfarbe werden per Vertrag beziehungsweise Dummy-Messung abgesichert. | | Eine separat gepflegte Kopfzeilenliste koennte andere Werte, eine andere Reihenfolge oder ausgeblendete technische Facetten zeigen als das Pathfinder-Panel; viele lange Auswahlwerte koennten zudem Titel oder Verbindungsstatus verdraengen. | Die Spur rein aus `deriveDynamicFacets` und dem bestehenden AppProvider-Zustand ableiten, dieselbe Hidden-Liste wie das Panel verwenden, graphinternen Status auslassen und den flexiblen Spurbereich mit Ellipsis begrenzen. Leerer, einfacher, mehrfacher, Mehrfachwert- und Wertebereichszustand werden synthetisch getestet; Ausrichtung und Farben werden im Dummy gemessen. | | Ein gemeinsamer oder missverstaendlich benannter Graphschalter koennte Punkttexte und aktivierte Kacheln zugleich ausblenden und dadurch Detailauswahl mit Netzlesbarkeit koppeln. | Zwei explizite lokale Zustaende mit sichtbarem On-/Off-Text verwenden, `Labels` nur an Karten und `Text` nur an Punktbeschriftungen binden sowie Default und alle vier Umschaltwirkungen synthetisch und im Dummy regressionspruefen. | | Gleichzeitige Anzeige von Quellblatt und `Source: Scan` koennte widerspruechliche Grundmengen erzeugen oder Nutzern technische CIS-CAT-Detailtabellen als eigenstaendige Scannerquelle darstellen. | Im Pathfinder den Blattselector vollstaendig entfernen, `Source: Scan` aus der Hidden-Liste nehmen und die Facette unveraendert ueber `SearchFilterBar`/AppProvider anwenden; Sichtbarkeit und Filterwirkung im gemischten Dummy-Aggregat regressionspruefen. | | Eine vollstaendige technische Umbenennung von `graph` in `pathfinder` koennte Bereichszustand, Selektoren und gespeicherte UI-Verweise ohne fachlichen Nutzen brechen. | Ausschliesslich die zwei sichtbaren Labels aendern und den stabilen internen Schluessel sowie alle technischen Komponentenbezeichnungen unveraendert lassen; beide sichtbaren Stellen regressionspruefen. | | Das Wort `Criterion` oder ein generischer Highlight-Marker kann in anderen Werkzeugen eine andere Bedeutung besitzen; eine globale Farbregel wuerde Soll, Verstoss und reine Information vermischen. | Criterion-Muster und roten Ton ausschliesslich im CIS-CAT-Profil deklarieren, in der gemeinsamen Results-Komponente nur abstrakte Rollen rendern und den separaten blauen Informationshinweis regressionspruefen. Farbe zusaetzlich durch Fettschrift absichern. | | Ein gespeicherter Graphpfad kann nach Filter-, Mapping- oder Datenstandswechsel Knoten-IDs enthalten, die im aktuellen Graph nicht mehr existieren; blindes Wiederherstellen koennte falsche oder leere Beziehungen vortaeuschen. | Path Snapshots an denselben Client-/Timeslot-Scope wie normale Snapshots binden, aktive und Nachbar-IDs beim Lesen streng validieren, den gespeicherten View-Zustand zuerst anwenden und anschliessend ausschliesslich noch vorhandene aktive Knoten restaurieren. Beziehungen immer neu aus dem aktuellen Graph ableiten. | | Ein in Work gespeicherter View-Bookmark enthaelt auch View- und Statuswerte, die im deviation-festen Graphen keine eigene Bedeutung besitzen; eine Graph-Sonderkopie koennte diese Werte anders anwenden oder den Speicher-Scope verlieren. | Den bestehenden `ViewBookmarks`-Baustein unveraendert wiederverwenden. Gemeinsame Suche, Quelle, Facetten und `actionOnly` werden angewendet; die Graphprojektion behaelt ihren expliziten Deviation-Override und den vorhandenen client-/timeslotgebundenen `workScopeId`. | | Gleiche numerische CIS-Pfade koennen in unterschiedlichen Benchmarkprodukten oder Versionen andere Abschnittsbedeutungen besitzen; erfundene Klartextnamen oder eine persistierte globale Kategorie wuerden dadurch eine falsche fachliche Gleichheit behaupten. | Die Hierarchie ausschliesslich fuer als CIS-CAT erkannte Findings aus der unveraenderten Rule ID beziehungsweise dem Benchmark Item ableiten, nur numerische `CIS`-Labels anzeigen, die vollstaendige Regelnummer nicht als Kategorie wiederholen und keine Import-, Normalisierungs- oder Persistenzwerte schreiben. Source-/Timeslotfilter bleiben die Grenze fuer konkrete Benchmarkstaende; synthetische Mischprofiltests sichern, dass Nicht-CIS-Findings keine CIS-Kategorien erhalten. | | Eine in SVG nachgebaute Finding-Kachel koennte von der Matrixdarstellung abweichen; eine inverse Zoomtransformation wuerde zudem die ausdruecklich gewuenschte proportionale Groessenaenderung verhindern. Interaktive Kachelbuttons koennten mit Knotendrag und Pin-Toggle doppelt ausloesen. | Den bestehenden React-`TileCard` innerhalb eines `foreignObject` wiederverwenden, fuer Findings keine inverse Kameraskalierung anwenden und Pointer-Down an der Kachel vom Knotendrag trennen. Der Kachel-Open-Handler steuert den Pin, Bookmark und Results verwenden dieselben vorhandenen App-Aktionen. Synthetische Vertrage sowie eine Dummy-Messung von Titel, zwei Aktionen und exakt 1,2-facher Breiten-/Hoehenskalierung sichern das Verhalten. | | Eine rote Nachbarschaftsmarkierung koennte indirekte Pfade faelschlich als direkt darstellen oder bei gleichzeitigem Hover und Pin zwei Teilnetze hervorheben; graue beziehungsweise frei erfundene Punktfarben koennten die Severity-Semantik verfaelschen. | Den aktiven Pfadknoten deterministisch als Hover vor Pin bestimmen und die rote Klasse ausschliesslich auf Kanten anwenden, deren Quelle oder Ziel exakt dessen ID ist. Bekannte Severitys verwenden die zentralen Produkttokens; nur `unknown` erhaelt einen eigenen klar getrennten Graph-Token. Synthetische CSS-/Rendervertraege und eine Dummy-Pruefung der Drei-Kanten-Nachbarschaft sichern das Verhalten. | | Vollstaendige Kategorie-, ATT&CK- und D3FEND-Mehrfachbeziehungen koennen bei langen Findingtiteln zu dichten Kantenbuendeln, abgeschnittenen Knoten oder unlesbaren Beschriftungen fuehren; eine kleinere Schrift wuerde die verbindliche 16-px-Inhaltsgrenze verletzen. | Beziehungen deterministisch auf einen grossen Rollenring und nach Beziehungssignatur verteilte Findings projizieren, Labels bei 44 Zeichen nur praesentativ kuerzen, links beziehungsweise rechts vom Knoten ankern und ihre 16-px-Rechtecke kollisionsbewusst vertikal versetzen. Fit reserviert zusaetzlichen Rand; synthetische Projektionstests und die freigegebene Dummy-Browserpruefung sichern Knotenabdeckung, Linkanzahl, Sidebar-Zustand und Labelkollisionen. | | Ein fehlender aktiver ScanRun-Scope koennte als projektweiter Aggregatwunsch interpretiert werden und dadurch Result DB oder Graph unbemerkt mit Findings aller Timeslots fuellen. Ein Import oder Delete am aktiven Client koennte denselben Scope versehentlich verlieren. | Client-Arbeitsansichten ohne ScanRun-Menge fail closed rendern, den Work-Selector automatisch auf einen konkreten Timeslot setzen und bei projektgebundenen Datenaktualisierungen die aktive ScanRun-Menge weiterreichen. Struktur-, API-, Domain- und Repositorytests sichern die Grenze durchgaengig. | | Filterlisten koennten projektweite oder ungefilterte Werte mit 0 Treffern anzeigen; beim Ausblenden koennte umgekehrt ein gesetzter, inzwischen unmoeglicher Wert als unsichtbarer Restfilter bestehen bleiben. | Jede Facette gegen Suche, Timeslot, Blatt, Status und alle anderen Facetten neu zaehlen, den eigenen Filter fuer Alternativen ausnehmen und nur positive Werte ausgeben. Nicht mehr vorhandene Work-Auswahlen und Statusfilter automatisch entfernen; gemeinsame Domainlogik sichert dieselbe Nullwertregel fuer die Result-DB. | | Ein Client-Open aus der Uebersicht koennte nur den Client setzen und dadurch alle Timeslots mischen, oder bei einem leeren neuesten Assessment einen nicht nutzbaren Stand oeffnen. | Den chronologisch ersten tatsaechlich scannergebundenen Timeslot aus den bestehenden Gruppen waehlen und dessen vollstaendige ScanRun-Menge an `onProjectSelected` weiterreichen. Ohne solchen Stand die sichtbare Aktion deaktivieren; Manage bleibt als separater Pflegeweg erhalten. | | Lange Dateinamen, Hashes oder Dublettenquellen koennten den Importdialog verbreitern, horizontal scrollbar machen oder ausserhalb einer Dateikarte abschneiden; eine zu starke visuelle Reduktion koennte zugleich Auswahl und Warnung unklar machen. | Alle variablen Texte innerhalb einer `minmax(0, 1fr)`-Spalte umbrechen, horizontalen Listenoverflow unterbinden und nur vertikales Scrollen zulassen. Checkbox, lesbare Statusfarbe, `Duplicate found`-Ueberschrift und Footeraktionen als nicht rahmengebundene Orientierung erhalten. | | Result-DB oder eine spaetere LLM-Anreicherung koennte trotz sichtbarer Timeslot-Auswahl projektweit abfragen und Findings verschiedener Staende vermischen. Policy-Evaluationsergebnisse besitzen derzeit zudem keine ScanRun-Zuordnung und duerfen nicht still einem Scanner-Timeslot zugerechnet werden. | Den aktiven Scope explizit als Client-ID plus eindeutige ScanRun-Menge durch UI, API und Repository fuehren und Resultzeilen wie Facetten identisch filtern. Ergebnisse ohne passende ScanRun-ID bei aktivem Timeslot konservativ ausschliessen; eine spaetere Policy-/LLM-Anbindung muss zuerst denselben Assessment-/Timeslot-Kontext fachlich modellieren. | | Snapshot- oder Workspace-Zustand eines Timeslots koennte in einem anderen Stand desselben Clients erscheinen; ein werkzeugspezifischer Statusfilter koennte beim Wechsel als unsichtbarer oder fachlich ungueltiger Restfilter aktiv bleiben. Ein gemischter Stand koennte umgekehrt nur generische Filter zeigen und werkzeugspezifische Werte verlieren. | Einen deterministischen Work-Scope aus Client und sortierter eindeutiger ScanRun-Menge verwenden, Reviews vor Scopewechsel sichern und den neuen Scope getrennt laden. Bei jedem Timeslot- und Blattwechsel Status-, Such- und Facettenzustand neu initialisieren; im Aggregat deklarierte Statusfilter der enthaltenen Profile dedupliziert vereinigen, waehrend Einzelblaetter ihr exaktes Profil behalten. Fokussierte Tests sichern Scopeunterschiede, Profildefault-Wechsel und Maester-/Purple-Knight-Mischung. | | Mehrere gleichzeitig rote Quadrate oder eine rein dekorative Animation ohne zugänglichen Status koennten den Fortschritt unklar machen; dauernde Bewegung kann zudem die reduzierte Systemeinstellung missachten. | Vier feste Positionen mit phasenversetzten diskreten Animationszustaenden verwenden, den vorhandenen `role="status"`-Text erhalten und die Animation unter `prefers-reduced-motion` abschalten. Ein Strukturvertrag sichert Quadratanzahl, Rotzustand, fehlenden Kreis-Spinner und Reduced-Motion-Fallback. | | Eine Work-Timeslot-Auswahl koennte einen Stichtag nur optisch markieren, waehrend weiterhin alle ScanRuns geladen bleiben, oder nach Mandantenwechsel veraltete Run-IDs anzeigen. | Optionen ausschliesslich aus der projektgebundenen Assessment-Historie ableiten, die Run-Menge mengenidentisch gegen den aktiven Scope vergleichen und jede Auswahl ueber den bestehenden projektpruefenden `openProject(projectId, scanRunIds)`-Pfad laden. Bei Projektwechsel, Backendausfall und Datahub-Aenderung die Optionsliste neu ableiten. | | Eine kompakte maximierte Tabelle koennte lange Zellwerte umbrechen oder bei Ueberbreite unsichtbar abschneiden; eine spaetere Inhaltsregel koennte zudem manuell gesetzte Breiten ueberschreiben. | Die kompakte Regel nur vor `has-custom-column-widths` anwenden, Kopf- und Datenzellen dort auf `nowrap` setzen und den bestehenden horizontalen Scrollcontainer erhalten. Strukturtests sichern Inhaltsbreite, Umbruchfreiheit, Nutzerbreiten-Vorrang und Overflowpfad gemeinsam. | | Eine nur an `maximized` oder nur an `detached` gebundene Freigabe koennte normale frei stehende Graph-Results aussperren oder umgekehrt das eingereihte aktive Cluster-Result veraenderbar machen. | Die Freigabe aus der tatsaechlichen Stapelgeometrie `minimized || isStackedCluster` ableiten: Nur diese beiden Zustaende sperren die Tabellenresizer. Komponentenregressionen pruefen Cluster, Detached, frei stehendes Standardfenster, Maximierung und minimierten Slot getrennt. | | Beim Verschieben von `Open`, `Edit` und `Delete client` koennten Aktionen doppelt, in der falschen Spalte oder gleichzeitig als Edit und Save erscheinen; ein neben Save verbleibendes Delete erhoeht zudem das Fehlklickrisiko. | Die Aktionen an ihren fachlichen Container binden, Edit/Delete und Save als gegenseitig ausschliessende Zustaende rendern, alle drei Client-Aktionen gleich breit halten und Bleistift sowie alten Delete-Footer strukturell entfernen. Ein fokussierter Vertrag prueft Sichtbarkeit, Position, Breite und ausgeschlossene Altselektoren. | | Das Entfernen des rechten Namensfelds koennte die Namensbearbeitung oder HTML-Formvalidierung unbemerkt verlieren, weil das sichtbare Feld ausserhalb des rechten Formularcontainers liegt. | Das linke Namensfeld im Edit-/Create-Modus explizit ueber `form="tenant-editor-form"` und `required` an denselben Submit binden; Save bleibt von `form.name.trim()` abhaengig. Fokustest und Browserpruefung sichern Lesetitel, Editfeld und Save gemeinsam. | | Der Shelltitel koennte nach `Back` oder beim Wechsel in einen anderen Bereich irrtuemlich auf `Client` stehen bleiben. | Den Titel ausschliesslich aus dem gemeldeten Detail-Formzustand ableiten, beim Unmount explizit `false` melden und den kompletten Hin-/Rueckwechsel per fokussiertem Test und inhaltsfreier Browserpruefung absichern. | | Ein Status koennte faelschlich bereits den erfolgreichen Upload oder eine Dateiformaterkennung als in Work darstellbar bezeichnen; umgekehrt koennte ein Statusabruf temporär fehlschlagen und wie ein fachlicher Importfehler aussehen. | Readiness ausschliesslich aus persistiertem ScanRun plus kanonischen Occurrences ableiten, spezifische und generische Werkzeugerkennung getrennt benennen und Abruffehler als `Unavailable` statt `Not viewable` darstellen. Nur tatsaechlich darstellbare Zustaende fuer `Open` freigeben und die Grenzfaelle synthetisch testen. | | Aeltere allgemeine Formularregeln koennen die spaetere Readerdarstellung unbemerkt wieder zweispaltig machen oder Label ueber `justify-self` und Akzentfarbe verschieben. | Im Detailkontext Raster, Labelausrichtung und Farbe mit hoeherer kontextbezogener Spezifitaet explizit festlegen; der Lesemodus rendert Textwerte statt Inputs. Strukturtest und inhaltsfreie Browsergeometrie pruefen drei untereinanderliegende Abschnitte und neutrale berechnete Farben. | | Auto-Fit auf sehr lange ungebrochene Zellwerte kann Result-Tabellen unkontrolliert verbreitern; direkte DOM-Manipulation koennte zudem React-Zustand und Tabellen aus unterschiedlichen Ergebnisquellen auseinanderlaufen lassen. | Breiten in einem gemeinsamen deklarativen React-Baustein fuehren, den ungebrochenen Inhalt nur kurzzeitig und ohne Logging messen, auf 72 bis 720 px begrenzen und den vorhandenen horizontalen Scrollcontainer erhalten. Synthetische Interaktionstests pruefen Doppelklick, Pointer-Ziehen, Tastatur und die Beschraenkung auf maximierte Results. | | Unterschiedlich viele dynamische Filter koennen die davon fachlich unabhaengige erste Work-Kopfzeile indirekt in einen ungetesteten Schrumpfzustand bringen; verstecktes `overflow` schneidet dann Buttontext oder die letzte Tabkante ab. | Direkte Aktionsgruppen mit `flex: 0 0 auto` und einzeiligen Beschriftungen schuetzen, fuer echte Unterbreite einen horizontal erreichbaren Rueckfall an der Werkzeugzeile anbieten und mit einem CSS-/Strukturvertrag zugleich sichern, dass `SearchFilterBar` und seine profilabhaengige Facettenableitung unveraendert bleiben. | | Eine generische Regel fuer direkte `label > span`-Kinder kann Stammdatenwerte wieder an den rechten Rand schieben, verkleinern oder typografisch wie Metadaten behandeln. | Den Wertselektor im Mandantendetail kontextbezogen spezifischer setzen und `justify-self: start`, linke Textausrichtung sowie mindestens 16 px festschreiben. Die inhaltsfreie Browserpruefung vergleicht fuer alle drei Zeilen linke Kante, vertikale Reihenfolge und berechnete 14/16-px-Hierarchie. | | Eine feste Desktop-Navigatorbreite oder ein unbegrenzt breites Informationspanel koennte auf kleinen Viewports Inhalt verdraengen beziehungsweise auf grossen Viewports Werte optisch auseinanderreissen. | Dieselbe responsive `clamp`-Breite wie Work/Reports verwenden, unter 1050 px auf die vorhandene Stapelansicht wechseln und das Informationssheet auf 794 px begrenzen. Inhaltsfreie Browsermessungen pruefen Navigator-, Sheet- und Leeraumbreite sowie die unabhaengige Scrollgrenze. | | Eine lokale ScanRun-Abwahl koennte beim Wechsel des Timeslots unbemerkt weiterwirken, neue Importe ausschliessen oder bei Mehrfachauswahl die bestehende Vergleichsschnittmenge umgehen. | Ausschliesslich ausgeschlossene Run-IDs lokal speichern, den Zustand beim Mandanten-/Timeslot-Neueinstieg und nach Loeschungen bereinigen und neue Runs dadurch standardmaessig einschliessen. Fuer `Open` zuerst je Timeslot die lokale Auswahl projizieren und erst danach unveraendert die sichere gemeinsame Werkzeugmenge berechnen; ohne verwertbaren Run bleibt `Open` gesperrt. | | Work und Graph koennten bei getrennten lokalen Filterzustaenden unterschiedliche Findingmengen zeigen oder werkzeugspezifische Facetten unvollstaendig abbilden. | Beide Ansichten ausschliesslich aus dem gemeinsamen AppProvider-Zustand und `useFilteredRecords()` speisen; im Graph dieselben Search-/Sheet-/Facet-Controls wiederverwenden und lokale Graphfilter durch Strukturtests ausschliessen. Nur rein praesentative Graphzustaende lokal halten. | | Ein dichter Netzwerkgraph kann bei vielen Findings durch zu viele Labels, Kanten oder unkontrollierte Layoutberechnungen unlesbar beziehungsweise traege werden; die gepunktete Graphflaeche kann im Lightmode zu dominant wirken. | Deterministisches lineares Clustering statt quadratischer Laufzeit verwenden, Clusterabstaende und Karten kompakt begrenzen, Labels standardmaessig auf Auswahl/Hover reduzieren, Fit/Zoom bereitstellen und Graphdaten rein aus der bestehenden gefilterten Projektion ableiten. Punktfarbe und Knotenrollen ausschliesslich ueber semantische Dark-/Light-Tokens steuern und das Muster strikt auf die Graphansicht begrenzen. | | Ein einzelnes GPO-Delete koennte waehrend der Verarbeitung mit dem Worker konkurrieren oder nach einer bereits erfolgten Evaluation verwaiste Snapshot-/Finding-Derivate hinterlassen. | Queue-/Running-Jobs an der Repository-Grenze blockieren. Vor dem Artefaktdelete jede Snapshotaggregation entfernen, die eine Identity-Analyse dieses Artefakts verwendet; relationale Cascades beziehungsweise die identische lokale Projektion entfernen Evaluationen und Findings. Timeslot, andere Imports und Environment Profile erhalten und die Dateikopie ueber die persistente Outbox entfernen. | | Ein in der Timeslot-Zeile platzierter Delete-Button koennte versehentlich den gesamten Mandanten oder nur sichtbare Scanzeilen loeschen und GPO-/Evidenzreste hinterlassen. | Mandanten- und Timeslot-Loeschung strikt trennen. Timeslot-Delete verlangt Projekt- und Assessment-ID plus Cascade-Bestaetigung an der Repository-Grenze und entfernt den Assessment-Teilbaum; der Dialog nennt den betroffenen Stichtag und bestaetigt ausdruecklich, dass Mandant und andere Timeslots erhalten bleiben. | | Mehrere Timeslots besitzen unterschiedliche Scanner- oder GPO-Abdeckung; ein ungefiltertes Oeffnen wuerde fehlende Quellen als fachliche Veraenderung interpretieren und Aepfel mit Birnen vergleichen. | Vor der Mehrfachprojektion pro Timeslot die sicher erkannte Quellenmenge bilden und nur deren Schnittmenge weiterreichen. Generische, unbekannte oder gemischte Werkzeugidentitaeten nicht automatisch gleichsetzen; GPO separat als Assessment-Quelle behandeln und fehlende beziehungsweise ausgeschlossene Quellen sichtbar nennen. | | Ein Delete-Button koennte eine bereits fuer Policy-Evaluationen verwendete Microsoft-Baseline oder nur deren sichtbare Tabellenzeile entfernen und dadurch Evidenz beziehungsweise Artefakte inkonsistent hinterlassen. | Expliziten Bestaetigungsdialog und bestaetigungspflichtigen DELETE-Vertrag verwenden; Referenzen in Local- und PostgreSQL-Persistenz vor der Mutation blockieren, abhaengige Klassifikationen und Analysen atomar mit dem Katalogeintrag entfernen und das danach unreferenzierte private Speicherobjekt best-effort bereinigen. | | Importaktionen werden bei einem leeren Mandanten ausgeblendet, weil noch keine Assessment-ID existiert; der Nutzer kann dadurch den ersten Timeslot oder das erste GPO-Backup nicht anlegen. | Die Aktionen an die vorhandene Mandanten-ID binden und die Assessment-ID nur optional weiterreichen. Beide Zustaende synthetisch absichern und die Aktionsverfuegbarkeit in allen vorhandenen Mandantenansichten inhaltsarm pruefen. | | Frei editierbare bestehende Mandantenstammdaten koennen durch einen unbeabsichtigten Tastendruck geleert oder ueberschrieben werden. | Vorhandene Felder standardmaessig als Lesewerte rendern, Bearbeitung und Speicheraktion nur ueber den eindeutig beschrifteten `Edit`-Textbutton freigeben, programmatische Submits ohne aktiven Bearbeitungsmodus ablehnen und den Modus nach Speichern oder Verlassen zuruecksetzen; Neuanlagen bleiben bewusst sofort editierbar. | | Ein importierter PingCastle-HTML-Bericht kann zyklische, fehlende, doppelte oder extrem tiefe Fragmentziele enthalten; ungefiltertes Folgen koennte falsche Tabellen zuordnen oder Ressourcen erschoepfen. Ein XML-Import koennte umgekehrt den Eindruck vollstaendiger Results erwecken, obwohl seine RiskRules keine expliziten HTML-Evidence-Beziehungen tragen. | Nur strikt lokale Fragment-IDs aus erlaubten Attributen vor der Sanitisierung als inerte Marker bewahren, niemals HTML/JavaScript ausfuehren oder externe Ziele laden, Zielcontainer strukturell und dateilokal aufloesen, Kindcontainer im Elterninhalt maskieren, Zyklen per `visited` verhindern und Tiefe, Ziel- sowie Tabellenzahl begrenzen. Fehlende, mehrdeutige und limitierte Aufloesungen diagnostizieren. XML separat halten, keine HTML-Anreicherung vornehmen und die fehlende Results-Faehigkeit beim Import sichtbar melden. | | PingCastle-Details koennen strukturierte Belegtabellen in abgeflachter Textform wiederholen und dadurch sehr lang werden; eine erneute pauschale Ausblendung wuerde sie dagegen wieder als schwer lesbare Zusatzinformation behandeln. | Den unveraenderten Detailwert in der normalen Reader-Lesetypografie direkt nach der technischen Erklaerung anzeigen, strukturierte Tabellen weiterhin nur im Results-Fenster rendern und die eindeutige Zuordnung mit synthetischen Auswahl-, Render- und Browserregressionen sichern. | | Automatische Navigation koennte den bewusst gesetzten Result-Status zuruecksetzen oder Arbeitsdiagramme und Filter koennten verschiedene Grundmengen zaehlen; eine Uebertragung auf den Datahub wuerde dessen Gesamtstatistik verfaelschen. | Result-Status bei Projekt-, Blatt- und Viewwechseln bewahren, Severitys aus derselben dynamischen Facettennachzaehlung ableiten und die Datahub-Metriken weiterhin ausschliesslich aus den vollstaendigen Timeslot-Zahlen speisen. Synthetische Filter-, Komponenten-, Profil- und Datahub-Grenztests sichern die Trennung. | | Mehrere aktive Severity-Diagramme koennten sich gegenseitig ersetzen, als UND statt ODER ausgewertet werden oder in wechselnder Klickreihenfolge unlesbar im Filterfeld erscheinen. | Die bestehende Kategorie-Facette mit einer kanonisch sortierten Werteliste verwenden, Klicks als Toggle behandeln, bei leerer Liste den Filter entfernen und die Mehrfachauswahl mit festen Kurzbezeichnungen darstellen. Synthetische Toggle-, Render- und Facettenregressionen sichern das Verhalten. | | Kuenftige Ansichten koennten neue Donuts lokal zeichnen oder Dark- und Lightmode unterschiedlich strukturieren und dadurch die bindende Referenz schleichend aufweichen. | Ausschliesslich DonutMetricCard und .donut-metric-rack verwenden; Struktur, Tokens, beide Themes, Breakpoints und Ausnahmegrenzen im Komponentenvertrag sowie in statischen und gerenderten Regressionstests sichern. | | Die fuenf Teilkategorien der Statusdiagramme koennen fachlich ueberlappen oder weitere kanonische Zustaende nicht abbilden; ihre Prozentwerte koennten daher faelschlich als geschlossene Verteilung gelesen werden. | Results All bleibt die explizite 100-Prozent-Referenz. Jeder weitere Bogen wird einzeln gegen All berechnet und beschriftet; Tests sichern Kategoriezuordnung, Prozentberechnung und die fehlende Summenannahme. | | Bei zwei ausgewaehlten Vergleichsstaenden koennte unklar sein, welcher Stand die vier Statuszahlen speist; bei einem einzigen Stand duerfen die Werte nicht leer bleiben. | Die Regler folgen deterministisch dem zuletzt angewählten Timeslot. Beim Laden wird der neueste vorhandene Stand vorselektiert; Tests sichern Ein- und Mehr-Run-Aggregation sowie die getrennten kanonischen Kategorien. | | Das starre achtspaltige Referenzraster ist breiter als kleine Viewports; rein visuelle Regler koennten als Bedienfunktionen verstanden werden. | Nur `.datahub-history-scroll` darf horizontal scrollen, waehrend alle aeusseren Racks auf `min(1180px, 100%)` begrenzt bleiben. Regler bleiben `aria-hidden`, ohne Ereignisse oder Fachwerte; statische und inhaltsfreie Browserregressionen sichern Breite, Zaehler und fehlenden Seiten-Overflow. | | Ohne sichtbare Timeslot-Auswahl koennte ein Import bei mehreren Bewertungsstaenden dem falschen Zielstand zugeordnet werden; rein dekorative Regler koennten als Fachfunktionen missverstanden werden. | Den bestehenden neuesten projektgebundenen Assessment-Timeslot als Importziel verwenden und die serverseitige Projekt-/Assessment-Pruefung beibehalten. Regler ohne Ereignisse, Formularwerte oder ARIA-Control-Rollen rendern. Eine spaetere Aenderung des Importziels darf nur mit einer ausdruecklich freigegebenen Funktion erfolgen, weil die aktuelle Mandantendetail-Referenz keine Timeslot-Auswahl vorsieht. | | Visuelle `Empty`-Mandantenslots koennten irrtuemlich als persistierte Mandanten behandelt werden; eine starre Achtspaltenmatrix koennte auf kleinen Viewports Inhalte abschneiden oder Vergleichsauswahl und Oeffnen vermischen. | Platzhalter ausschliesslich lokal rendern und ohne IDs, Ereignisse oder API-Aufrufe halten. Die Matrix in einem horizontal scrollbar begrenzten Container fuehren, aktive echte Projekte separat markieren und die Dreiecksflaeche nur zur Auswahl sowie den Datumsklick nur zum Oeffnen verdrahten. Responsive Reglerumbrueche und statische Layoutvertraege beibehalten. | | Eine auf Inhaltsbreite zentrierte Mandantenmatrix kann bei vielen Mandanten oder schmalen Viewports aus der Arbeitsflaeche laufen; flexible Donutspalten koennten erneut unkontrolliert Leerraum aufnehmen. | Historie und Statusblock mit `max-width: 100%` begrenzen, die Historie innerhalb des Rackmoduls horizontal scrollbar halten, Mandanten- und Donutspalten explizit dimensionieren und die bestehenden Breakpoints fuer zwei beziehungsweise eine Donutspalte beibehalten. Ein statischer Layoutvertrag verbietet die fruehere Vollbreiten-Ueberschreibung. | | Legacy-Scannerimporte besitzen noch keinen expliziten Timeslot-Stichtag; eine rein technische Gruppierung koennte einen fachlichen Stand vervielfachen oder zwei tatsaechlich getrennte gleichdatierte Durchgaenge verbinden. Ein nicht zugeordneter historischer GPO-Snapshot koennte bei mehreren Staenden falsch erscheinen. | Nur Legacy-Daten ohne Assessment.effectiveAt nach dem Quellkalendertag kompatibel zusammenfuehren. Neue Staende immer explizit anlegen und jede Scanner-/GPO-Submission mit projektgepruefter argetAssessmentId binden. Einen ungebundenen Legacy-GPO-Snapshot nur bei genau einem vorhandenen Timeslot zuordnen; bei mehreren Staenden keine Zuordnung raten. Synthetische Regressionen pruefen den 22.07-Sammelstand, spaetere Uploadzeitpunkte und getrennte explizite Stichtage. | | Scanstaende aus getrennten Assessments werden trotz fehlender gemeinsamer Vergleichsidentitaet automatisch verbunden oder ein Mandantenwechsel vermischt die Auswahl. | Nur Modelle mit exakt derselben Projekt-ID read-only zusammenfuehren, Quellen unveraendert lassen, die ausgewaehlten Runs chronologisch ordnen und beim Mandantenwechsel die Auswahl ersetzen. Sichere kanonische Identitaeten bleiben automatisch; textaehnliche Restkandidaten bleiben als `possibly-identical` bestaetigungspflichtig. Synthetische Regressionen pruefen Mandantentrennung, Nichtmutation, behoben/neu/persistent und die gezielte Work-Projektion eines einzelnen ScanRuns. | | Zwischen dem Laden einer angebotenen Policy-Aktion und ihrer Ausfuehrung aendert sich Profil-, Processing- oder Baselinezustand. | GPO-Reprocessing uebergibt den erwarteten letzten Processing Run und scheitert bei Stale State; Aggregation, Evaluation und Finding Factory bleiben deterministisch idempotent und pruefen Projekt-, Profil-, Analyse- und Evidenzreferenzen serverseitig erneut. Versionierte explizite Altquellen koennen hoechstens einen nachvollziehbaren Review-Lauf erzeugen, niemals durch die Bereitschaftsanzeige allein ein Finding. | | Historische oder neu verarbeitete Policy-Laeufe werden in einer Gesamtzahl als aktueller, deduplizierter Kundenzustand missverstanden und dadurch doppelt gezaehlt. | Das Readmodell bewahrt jeden Lauf separat, die UI bezeichnet Summen als persistierte Laufhistorie und zeigt den Environment-Profile-Kontext je Evaluation. Eine spaetere aktuelle Kundensicht darf erst mit expliziter Profilwahl, aktiver Revisions-/Supersession-Auswahl und snapshotbezogener Deduplizierung entstehen. | | Eine konservative Snapshotaggregation wird als effektive Kundensicht oder bereits als Baselinebewertung missverstanden; unbekannte GPO-Reihenfolge, Targeting oder Vorzustaende koennten dadurch scheinbar eindeutige Werte erzeugen. | Aggregationslaeufe getrennt von Evaluation Runs halten, effectiveState = unknown und permitsFindingGeneration = false vertraglich sowie relational erzwingen, widerspruechliche GPO-Werte als Konflikt und nicht aufloesbare Semantik als indeterminate mit festen Reviewhinweisen persistieren. | | Ein technisch vorhandener Comparator wird als automatisch freigegeben missverstanden oder ein nachtraeglich veraenderter Regelkatalog macht historische Runs nicht reproduzierbar. | Ohne exakt passende freigegebene setting- und kontextspezifische Regel immer Katalogluecke/Review liefern; den vollstaendigen Katalogsnapshot am Run und in dessen Idempotenzschluessel speichern, Katalog-ID/-Version sowie Regel-/Dependency-/Risiko-IDs relational ablegen und den aktiven Katalog read-only ueber die Referenzdaten-API ausweisen. Der produktive Katalog bleibt bis fachlicher Kuratierung leer. | | Ein manipuliertes oder historisch unvollstaendiges Evaluationsergebnis traegt irrtuemlich `eligible` und wird trotz fehlender Mehrquellen-Evidenz als Finding projiziert. | Die Finding Factory validiert die Evaluation nicht nur formal, sondern gleicht fuer jeden Kandidaten alle erwarteten Observation-, Backup-, Baseline-Setting-, Baseline-Analysis- und Kontextquellen exakt gegen persistierte Evidenz ab. Abweichungen werden als versionierte Ablehnung gespeichert; relationale Checks halten Scope unbekannt, Wirksamkeit nicht verifiziert und Klassifikation auf bestaetigte konfigurierte Abweichung begrenzt. | | Ein generischer Comparator oder eine implizite Ordnung wird ohne setting-spezifische Katalogfreigabe verwendet und klassifiziert eine fachlich unvergleichbare Abweichung als bestaetigt. | Comparatoren als geschlossene versionierte Bibliothek fuehren, ihre produktive Bindung nur durch explizite Katalogregeln zulassen und bis dahin Equality verwenden; fehlende, mehrdeutige oder unvergleichbare Zuordnungen immer review-required und finding-ineligible speichern. Finding-Erzeugung und Unified-Result-Projektion bleiben eine nachgelagerte eigene Stufe. | | PostgreSQL-Paritaet der neuen Policy- und Baseline-Analysetabellen bleibt ungeprueft, wenn keine isolierte frische Instanz verfuegbar ist. | Einen ausschliesslich synthetischen Fresh-Database-Integrationstest fuer Migration 013, atomare GPO-Identitaetspersistenz und Baselinekataloge vorhalten; ihn vor Milestone-Abnahme gegen eine kurzlebige PostgreSQL-16-Instanz ausfuehren und niemals ersatzweise reale Mandantendaten inspizieren. | | Microsoft-Baselinepakete enthalten erwartungsgemaess XLSX-Dateien und damit opake eingebettete ZIP-Signaturen; pauschales rekursives Oeffnen erzeugt Angriffsflaeche, pauschales Ablehnen blockiert offizielle Pakete. | Nicht ausgewaehlte Dokumente, Skripte und Binaerdateien niemals entpacken oder interpretieren. Nur Backup.xml, Registry.pol, ADMX und ADML selektieren; fuer den Gesamtcontainer Pfade, Typen und deklarierte Ressourcenlimits und fuer jeden ausgewaehlten Inhalt zusaetzlich lokale Header, tatsaechliche Groesse, Kompressionsverhaeltnis, CRC und SHA-256 pruefen. | | Eine reale `Registry.pol`-Datei verwendet zusaetzliche oder missgebildete Registrytypen und wird versehentlich als normale Policy interpretiert. | Nur die dokumentierten MS-GPREG-Typen sowie REG_NONE als exakt leere Schluesselanlage zulassen; Typ-, Groessen-, Struktur- und Abschlusspruefungen fail-closed anwenden, Byteoffset-Provenienz bewahren und reale Kompatibilitaet ausschliesslich ueber technische Zaehl- und Integritaetssignale pruefen. | | Ein Baselinepaket wird allein wegen eines aehnlichen Dateinamens fuer die GPO-Pruefung verwendet oder ein gespeichertes Original wird von der Artefakt-Reconciliation als verwaist geloescht. | Produkt, Version, Rolle und Scope separat speichern; nur genau einen vollstaendigen Treffer automatisch auswaehlen, sonst fail-closed. Baseline-Storage-Keys in dieselbe referenzgesicherte Reconciliation aufnehmen und Hash/Dateigroesse beim privaten Speichern pruefen. | | Ein kombiniertes Microsoft-Baselinepaket wird auf den ersten erkannten Produktnamen oder die erste Zahl reduziert und dadurch fuer den zweiten Produktkontext falsch oder gar nicht ausgewaehlt. | Mehrere typisierte Produktkontexte pro Paket speichern, Detektorversion und Klassifikationsrevision persistieren, Originalmetadaten unveraendert lassen und kombinierte Client-/Server-Pakete sowie Microsoft-365-Versionen regressionspruefen. | | Ein inventarisiertes oder teilweise analysiertes GPO-Backup erscheint bereits als Ergebnisbericht und suggeriert dadurch einen noch nicht ausgefuehrten Baselinevergleich. | Ingestion-, Job-, Inventar- und Parserstatus ausschliesslich in GPO Processing anzeigen; Berichtzaehler und Linked Scan Reports nur aus echten Scan-Runs beziehungsweise persistierten Baseline-Evaluation-Runs bilden. | | Unterordner eines gemeinsam hochgeladenen GPO-Hauptordners werden als mehrere unabhaengige Mandanten-Backups oder Snapshots behandelt. | Den Upload als ein Backup-Set mit gemeinsamer quellartefaktbasierter Set-ID modellieren, Unterordner als einzelne enthaltene GPOs zaehlen und aggregieren; ohne Manifest nur selected-gpos annehmen und keine Vollstaendigkeits- oder Wirksamkeitsaussage erlauben. | | Der atomare GPO-Artefaktspeicher liegt auf einem synchronisierten oder virtuellen Dateisystem ohne Hardlink-Unterstuetzung; die Vorpruefung gelingt, aber die unveraenderliche Veroeffentlichung scheitert. | `ASSESSOR_ARTIFACT_ROOT` auf einen privaten lokalen Datentraeger ausserhalb des Webroots legen, Roottrennung beim Start erzwingen und Put/Hash/Read praktisch verifizieren. Fuer den lokalen Windows-Betrieb ist ein NTFS-Pfad unter LocalAppData konfiguriert; Firmenbetrieb und Backupkonzept bleiben Teil von Phase 14. | | Freier Result-Text oder eine zufällig ähnliche ID verknüpft in einem gemischten Projekt ein Detailblatt eines anderen Scanners, etwa CIS-CAT-Evidenz mit einem Maester-Finding. | Werkzeugherkunft je Datensatz aus Source: Scan beziehungsweise dem aktiven Blatt auflösen, explizit abweichende Blatt-toolIds bei direkten und unscharfen Links ausschließen und Fuzzy-Matching auf erkennbare Datei- oder stabile Regel-ID-Verweise begrenzen; Maester/CIS-CAT-Kreuzfälle synthetisch regressionsprüfen. | | Ein Doppelklick auf eine Kopfzeilenaktion löst zusätzlich Minimieren beziehungsweise Wiederherstellen aus oder ersetzt den zugänglichen Einzelklick-Button. | Doppelklick nur auf der freien Kopfzeilenfläche behandeln, Ziele innerhalb von Schaltflächen ausschließen und beide Umschaltrichtungen sowie die Button-Ausnahme in einem synthetischen DOM-Test prüfen; den sichtbaren Button unverändert beibehalten. | | Result-Fenster werden durch weitere Clusteraktionen erneut minimiert, minimierte Reiter verschwinden hinter einem maximierten Fenster oder Fenster ragen nach Verschieben, Skalieren beziehungsweise Viewport-Änderung aus der Anzeige. | Entkopplung als eigenen Zustand führen und ausschließlich beim Minimieren löschen; Clusterfokus nur auf nicht entkoppelte Fenster anwenden. Minimierte Fenster stets gemountet als schmale Farbreiter rendern sowie Reiterstapel, Position, Breite und Höhe gegen die aktuelle Viewport-Geometrie begrenzen; Übergänge und gerenderte Grenzen synthetisch regressionsprüfen. | | Falsch kodierte UI-Trennzeichen oder wiederholte Quellüberschriften verdecken den Finding-Titel beziehungsweise den Ergebnisinhalt. | Fenstertitel über einen eindeutigen Unicode-Trenner zerlegen, den Finding-Titel zusätzlich im Ergebnisinhalt anzeigen, Blattüberschriften für Result-Fenster gezielt unterdrücken und die gerenderte Ausgabe synthetisch regressionsprüfen. | | Minimierte Fenster öffnen an einer zufälligen früheren Position oder der Reader-Button zeigt nicht den zugehörigen Result-Fensterton. | Parkposition bei jeder Minimierung explizit zurücksetzen, Viewport-Grenzen beibehalten, Clusterverschiebung unverändert weiterreichen und die Fensterfarbe als CSS-Variable an den geöffneten Reader-Button binden; beides synthetisch regressionsprüfen. | | Kopfwerkzeuge, Filter oder Graphsteuerungen wachsen über die gemeinsame Kopfhöhe hinaus oder einzelne Bereiche umgehen die Hülle erneut. | Bereichsspezifischen Zustand in den Komponenten belassen, aber sämtliche Kopfbedienung ausschließlich in `.app-header-panel` beziehungsweise das bestehende Graph-Portal rendern; Containeranzahl, Überlagerungsfreiheit und berechnete Geometrie inhaltsfrei im Browser prüfen. | | Ein technisch konsolidierter UI-Zwischenstand wird erneut als visuell final behandelt oder der exakt abgenommene Work-Aufbau driftet bei spaeteren Erweiterungen. | Die Nutzer-Screenshots sind die Strukturreferenz; `work-reference.css` wird zwischen Skill und Laufzeit exakt gespiegelt und der Vertragstest sichert Topbar, zweizeiliges Filterband, Masterbreite, Reader-Inset, vier Bearbeitungsfelder, Tile-Masse, F/R-Kopfposition und vollstaendige Metadaten. Schritt 5 bleibt bis zur visuellen Nutzerabnahme in Arbeit. | | Bereits persistierte Maester-Vorkommen vor Profil 1.2.0 koennen ausserhalb der Work-Kompatibilitaetsprojektion weiterhin die alte Severity `medium` tragen, obwohl ihr Outcome `warning` ist; oder Nebenfilter erhalten bei spaeteren Umbauten erneut Band-/Aktivklassen. | Work projiziert Maester-Outcome `warning` deterministisch als Severity `warning`, ohne Originalfelder zu veraendern; fuer eine dauerhaft aktualisierte kanonische Severity in allen Projektionen ist ein bewusster Reimport erforderlich. Der Komponenten-Regressionscheck erzwingt `.band__control`/`.is-filtered` nur innerhalb der Primaergruppe, und der UI-Skill schreibt neutrale Nebenfilter verbindlich vor. | | Bereits importierte Maester-Laeufe behalten vor Profil 1.1.0 den normalisierten Wert `medium`, obwohl der Originalwert `Warning` lautet. | Profil- und Mappingversion je Vorkommen bewahren; neue Importe normalisieren werkzeuggebunden auf `warning`. Bestehende Laeufe nur durch einen bewussten Reimport aktualisieren, nicht durch eine stille Datenmigration. | | Grundzustand und gesetzter Zustand der Filter werden erneut vermischt oder das Auswahlblau faerbt fachliche Filter. | `--filter-surface`/`--filter-on` ausschliesslich fuer Filterrahmen, ungesetzte Filterfelder und Reset verwenden; `.is-filtered` wechselt zentral und in der Work-Leiste auf `--accent`/`--accent-on`. Navigation und Objektauswahl bleiben blau. Wert, Trefferzahl und Schriftgewicht bleiben als nicht farbabhaengige Signale sichtbar; der Designpruefer erzwingt beide Zustandsregeln. | | Eine spätere lokale Panel- oder Shellfarbe unterschreitet im Darkmode die Grundfläche beziehungsweise überschreitet sie im Lightmode und kehrt damit die Palette erneut um. | Neutralflächen ausschließlich aus `--surface-app` und `--structure` ableiten. Der Designprüfer vergleicht nun sämtliche Tokendeklarationen beider Theme-Blöcke in Reihenfolge und erzwingt die sieben neutralen Ableitungen sowie die drei Grundrollen; Dark und Light zusätzlich über inhaltsfreie berechnete Browserwerte prüfen. | | Skill-Quelle und Laufzeitkopien der Design-Tokens laufen auseinander, oder neue Ansichten umgehen die gemeinsame Shell und zentrale Komponenten. | `AGENTS.md` verpflichtet jede sichtbare Aenderung auf den UI-Skill; der Designpruefer vergleicht Skill- und Laufzeit-Tokens, und Erweiterungen verwenden die gemeinsame Shell sowie global importierte `ui-components.css`. Medium und Maester-Warning sind ausdruecklich abgenommene Ausnahmen mit weisser Severity-Tinte; Textlabel, feste Reihenfolge, aufrechtes Sechseck und identische Hakenposition sichern die Bedeutung redundant ab. | | PingCastle-XML enthält keine statischen Herstellertexte; ein beliebiger oder versionsabweichender Regelkatalog könnte falsche Erklärung beziehungsweise Lösung an ein Finding hängen. | Nur projektlokale HTML-Begleitberichte mit identischem Dateistamm und stabiler Rule ID verwenden, die Quelle sichtbar ausweisen, dynamische Punkte/Details nie übernehmen und ohne exakten Begleiter unverändert bei den XML-Originalfeldern bleiben. | | Nach erfolgreichem Serverimport verbleibt die rohe Parserprojektion im UI und weicht von den persistierten Findings ab; strukturierte XML-Metadaten erscheinen dadurch als Findings. | Die Abschlussantwort des Servers als Projektidentität verwenden, alle Assessmentmodelle erneut über die kanonische Projektionsgrenze laden und diesen Pfad mit einer synthetischen PingCastle-XML-Regression sowie einer inhaltsarmen Browserprüfung absichern. | | Dateizeitpunkte fehlen, wurden beim Kopieren verändert oder liegen bei zwei unabhängigen Läufen desselben Werkzeugs zufällig eng zusammen; dadurch kann die mögliche Dublettenmarkierung fehlen oder zu viel warnen. | Nur bekannte identische Werkzeug-IDs vergleichen, die Heuristik auf 60 Sekunden begrenzen, Gruppen desselben Scan Runs nicht gegeneinander prüfen, den Hinweis ausdrücklich als „Mögliches Duplikat“ darstellen und die Auswahl weiterhin erlauben; exakte Gleichheit separat über SHA-256 behandeln. | | Bereits importierte Scannerdateien wurden vor der nativen PingCastle-Extraktion ohne Findings persistiert und ihre Originalbytes stehen für automatisches Reprocessing nicht mehr zur Verfügung. | Betroffene PingCastle-HTML-/XML-Exporte im selben Mandanten erneut importieren; neue Importe vereinigen ihre Definition über die Rule ID, bewahren aber je Datei ein eigenes Vorkommen und ihre Provenienz. Künftige Reprocessing-Fähigkeit nur über die allgemeine Artefaktaufbewahrung ergänzen. | | Die Unified-Result-PostgreSQL-Projektion lädt Scannerzeilen vor Review-, Lifecycle- und Kategorienfiltern weiterhin in den Anwendungsspeicher; die neuen relationalen Outcome-/Execution-Spalten und Kategoriezuordnungen werden noch nicht vollständig vom Querypfad genutzt. | Projekt-, Assessment-, Scan- und Toolfilter bereits in SQL anwenden, API-Limits beibehalten und im nächsten Queryschnitt die Migration-007-Spalten sowie Kategoriejoins für Filter, Facetten und Pagination nutzen; bis dahin projektgebundene Abfragen bevorzugen. | | Große Group-Policy-Preference-Dateien erschöpfen trotz zulässiger Datei- und Itemgrenzen den Workerheap durch quadratische Provenienz, vollständige DOM-Bäume, gleichzeitig gehaltene Zwischenmodelle oder geklonte Containerdaten. | Lineare Quellzeilenberechnung, backupwurzelweise Sofortreduktion, keine Parser-Zwischenmodelle beziehungsweise Containerduplikate im Workerresultat und ereignisbasiertes Registry-Parsing verwenden; denselben Produktionsworker mit 45.000 Beobachtungen bei 512 MB synthetisch regressionsprüfen und die isolierte Speichergrenze beibehalten. | | Ein großer zulässiger GPO-Transport überschreitet beim Workerstart durch Byte-Duplizierung den Heap; ein manueller Retry erfordert erneut sensible Quelldaten; ein Absturz nach relationaler Löschung lässt eine nicht mehr referenzierte Dateikopie zurück. | Worker-Kopie per Transferliste statt Structured Clone übergeben, weiterhin konfigurierbare harte Heap-/Zeit-/Eingabegrenzen anwenden, Dead-Letter-Jobs projektgebunden ohne Reupload zurücksetzen und Löschabsicht vor dem Objektzugriff atomar in einer unabhängigen Outbox persistieren, die beim Start und periodisch wiederaufgenommen wird. | | Ein Abbruch zwischen Dateispeicher, Artefaktanlage und Jobanlage hinterlässt verwaiste Objekte oder ein GPO-Artefakt ohne Analyseauftrag; flüchtiger UI-Zustand verschleiert Queue-, Retry- oder Dead-Letter-Zustände. | Artefakt und Job in einer Repository-Transaktion committen, neue Objekte bei Commitfehler sofort kompensierend löschen, fehlende Jobs periodisch idempotent reparieren, nur alte reguläre nicht referenzierte Objekte bei vorhandenem vertrauenswürdigem Referenzbestand begrenzt entfernen und den Mandantenstatus projektgebunden aus persistierten Daten pollen. | | Manipulierte relative Browserpfade, Unicode-/Case-Kollisionen oder große Ordnerauswahlen umgehen beim GPO-Ordnerimport die Containergrenzen beziehungsweise erschöpfen Clientspeicher. | Pfade vor dem Dateilesen kanonisieren, Kollisionen fail-closed ablehnen, gemeinsame Eintrags-/Datei-/Gesamtgrenzen anwenden, Dateien sequenziell lesen, ohne Kompression deterministisch umschließen und den vollständigen Umschlag im Backend unabhängig revalidieren. | | Ein bestätigungspflichtiger Import verliert beim Vorschauübergang den Zielmandanten und erzeugt beim Abschluss einen neuen Mandanten. | Importworkflow-Zustände über eine kontexterhaltende Transition wechseln, `targetProjectId` bis zum Commit bewahren und den Übergang mit einer synthetischen Regression prüfen. | | Mehrere Tabellen eines Scannerberichts besitzen denselben Caption- oder Anzeigenamen und kollidieren dadurch bei Recognition oder kanonischer Persistenz. | Tabellenidentität zusätzlich an den stabilen Quellindex binden, dieselbe ID durch Zwischenmodell und Dataset-Projektion tragen und wiederholte Namen mit synthetischen Mehrtabellenregressionen prüfen. | | Drive Maps werden auf einen einzelnen Buchstaben oder ein Endmapping reduziert, Computer-Scope wird akzeptiert, `thisDrive`/`allDrives` werden kollabiert oder `cpassword` gelangt in Beobachtung beziehungsweise Export. | User-Scope erzwingen; Aktion, `useLetter`, Startbuchstabe und Auswahlmodus gemeinsam erhalten; Sichtbarkeitsfelder getrennt bewahren; UNC und optionale NETBIOS-Anmeldung validieren; unbekannte Felder `partial`, fehlerhafte unterstützte Felder fail-closed und Kennwörter nur als Vorhandenheitsindikator behandeln. | | Services werden wie Registry-Preferences als C/D/R/U behandelt, User-Scope wird akzeptiert, Zeitfelder werden erfunden umgerechnet oder `cPassword` gelangt in Beobachtung beziehungsweise Export. | Eigenen Services-CSE mit `configure`, separaten typisierten Dienst-/Start-/Fehleraktionen, unveränderten nichtnegativen Zeitwerten und Computer-Scope verwenden; unbekannte Felder `partial`, ungültige unterstützte Felder fail-closed und Kennwörter nur als Vorhandenheitsindikator behandeln. | | Local-Group-Mitgliedschaften werden als ungeordnete Menge behandelt, Namen überschreiben vorhandene SIDs oder `cpassword` gelangt in Beobachtung, Diagnose oder Export. | SID als technischen Selektor priorisieren, Delete-all und geordnete Add/Remove-Instruktionen getrennt erhalten, lokale Benutzer und Gruppen nicht verschmelzen und für Passwörter ausschließlich einen booleschen Vorhandenheitsindikator ausgeben. | | Group Policy Preferences werden CSE-übergreifend vereinheitlicht, Aktionen überschrieben oder vorhandenes Item-Level-Targeting als wirksam beziehungsweise unwirksam geraten. | Preference-Typen einzeln anhand ihrer technischen CLSID-/Schema-Semantik reduzieren; UID, Reihenfolge, Aktion und Common Options erhalten, Targeting bis zu passender Umgebungsevidenz als `unknown` binden, unbekannte CSEs `partial` lassen und `cpassword` niemals entschlüsseln oder ausgeben. | | Lokalisierte Advanced-Audit-Anzeigenamen oder eine Vermischung mit Legacy Audit beziehungsweise benutzerspezifischen Overrides erzeugen falsche Identitäten und Wirkungsannahmen. | Nur technische Subcategory-GUID und numerische Flags auswerten, Delivery-Mechanismen und Zieltypen getrennt halten, benutzerspezifische Ziele bis zu einem eigenen Modell `partial` lassen und effektive Anwendung ohne RSoP als `unknown` bewahren. | | Security-Template-Abschnitte oder doppelte INF-Schlüssel werden durch eine universelle Skalar- oder Last-write-wins-Logik verfälscht. | Unterstützte Abschnitte getrennt typisieren, rohe Werte und Quellzeilen erhalten, abweichende Dubletten als Konflikt modellieren, unbekannte Abschnitte als `partial` bewahren und ohne spätere Scope-/RSoP-Evidenz keine effektive Anwendung behaupten. | | Der GPO-Worker bricht nach Ergebnispersistenz, aber vor Jobabschluss ab und erzeugt beim Retry Duplikate oder überschreibt Historie. | Processing Run und Backupinstanzen in einer Transaktion speichern, IDs aus Job und Prozessorversion deterministisch ableiten, exakte Wiederholung revisionsneutral akzeptieren, abweichende Wiederholung ablehnen und den Job erst nach erfolgreichem Commit abschließen. | | Manipulierte ZIP-Header, Symlinks, Pfadkollisionen oder hohe tatsächliche Dekompression umgehen deklarative Vorprüfungen. | Gesamte ZIP-Struktur vor Inflation validieren, lokale und zentrale Header abgleichen, Links/Spezialdateien/Nesting blockieren und tatsächliche Größen, Einzel-/Gesamtquoten, CRC und Hash im begrenzten Worker prüfen; bei jedem Konflikt atomar abbrechen. | | Teil-, Alt- oder gemischte GPO-Backups erzeugen scheinbar vollständige Snapshots oder negative Aussagen. | Technische Domänen- und Setevidenz, getrennte Einzel-/Setvollständigkeit, manifestgestützte Soll-/Ist-Zählung, Zeitspannengrenzen sowie fail-closed Status für Duplikate, Konflikte, unbekannte Abschnitte und nicht unterstützte Artefakte. | | UI-Tabellenprojektion und Candidate-Mapping erzeugen unterschiedliche Findinganzahlen oder semantische Werte. | Candidate-Mapping als einzige Persistenzquelle für neue Importe, identische Vorschauzählung, Diagnose nicht ausgewählter Tabellen, validierte Bestätigungs-IDs, Legacy-Fallback nur ohne Mapping sowie format- und scannerübergreifende Paritätsregressionen. | | Persistente Ingestion Jobs werden doppelt ausgeführt, bleiben nach Worker-Abbruch hängen oder erzeugen durch Wiederholungen falsche Änderungsstände. | Projektweit eindeutige Idempotenzschlüssel, atomare `SKIP LOCKED`-Claims, zeitlich begrenzte Leases, begrenzte Versuche, kontrollierte Lease-Recovery, Dead Letter und revisionsneutrale Wiederholungen beziehungsweise Leerlauf-Polls. | | Unbekannte Berichtslayouts werden falsch erkannt. | Konfidenzen, generischer Fallback, Importvorschau und bestätigbare Mappings. | | PingCastle benennt oder strukturiert bekannte Environment-Abschnitte, H2-Unterpunkte oder Tabellen kuenftig anders und eine Subject-Klassifikation greift nicht mehr oder zu breit. | Section-Key, unmittelbar vorangehenden sichtbaren H2-Titel, Tabellenrolle und Header kombinieren; Row Count/Presence fuer leere Tabellen und quellentreue Heading-Presence fuer tabellenlose Unterpunkte bewahren. Finding-Regeldetailabschnitte ausschliessen, unbekannte Strukturen als `pingcastle-table-row` erhalten und die vollstaendige sichtbare Environment-Hierarchie sowie negative Fallback-/Rule-Detail-Faelle synthetisch regressionspruefen. | | Quelltools ändern ihre Exportformate. | Versionierte Profile, Fixture-Tests und Erkennung über mehrere Signale. | | Ähnliche oder gleich betitelte Findings werden falsch zusammengeführt. | Importlokale unresolved Identitäten, automatische Zuordnung nur über stabile technische IDs, Eindeutigkeitsprüfung pro Stufe und Titelähnlichkeit ausschließlich als bestätigungspflichtiger Reviewvorschlag. | | Große oder manipulierte Dateien blockieren die Anwendung. | Ressourcenlimits, sichere Parserkonfiguration, Belastungstests, gecachte Result-Verknüpfungen, memoierte Datensatznavigation, lazy gerenderte Result-Tabellen und verzögerte lokale Review-Persistenz. | | Frühe Datenbankentscheidungen verfestigen ein falsches Modell. | Kanonisches Domänenmodell und Persistenzschnittstelle vor PostgreSQL. | | Tauri-spezifische Logik erschwert den Browserbetrieb. | Plattformadapter und keine neue Fachlogik in Tauri-Kommandos. | | Plan und tatsächlicher Code driften auseinander. | Planabgleich über `AGENTS.md` und Aktualisierung nach verifizierten Meilensteinen. | | Toolwissen oder Reportselektoren wandern erneut in generische Formatadapter. | Architekturtests, getrennte Adapter-/Extractor-/Mappingverträge und explizite Registries ohne dynamischen Code. | | Batchassoziation oder Benutzerauswahl führt zu einem falschen Dateiprofil. | Batchzugehörigkeit separat speichern und Mapping nur nach struktureller Profilvalidierung anwenden. | | Ein Source Extractor wählt falsche Kandidatengrenzen oder vervielfacht während der Migration bereits vorhandene UI-Daten. | Extractorwahl evidenzbasiert und deterministisch halten, Originalwerte und Locator bewahren, Kandidaten bis zur Scanner-Migration in Schritt 9 nicht als kanonische Persistenzquelle verwenden und bestehende Ressourcenlimits beibehalten. | | Recognition und Candidate-Mapping driften bei Profilwechseln oder Bestätigungen auseinander. | Gemeinsame Evidenzkomponente verwenden, Profile und Extractors getrennt versionieren, nur explizit bestätigte Feldentscheidungen übernehmen und das Mapping nach Profilbestätigung deterministisch neu berechnen. | | Heuristische Inhaltsmerkmale liefern bei Fragmenten oder polyglotten Dateien widersprüchliche Formatkandidaten. | Kandidaten und Evidenz deterministisch speichern, Signaturen und starke Struktur priorisieren, schwache Fälle durch den sicheren Parser validieren, Konflikte diagnostizieren und unbekannte Binär-/Containerformate ablehnen. | | Native Sicht und tabellarische Kompatibilitätsprojektion vergrößern während der Migration Arbeitsspeicher und Vorschauantworten. | Projektionen explizit als verlustbehaftete Kompatibilität markieren, bestehende Ressourcenlimits beibehalten, keine zusätzliche Persistenz einführen und nach Einführung der Extractor-Registry schrittweise auf referenzierte native Sichten umstellen. | | Quelltabellen-Metadaten werden ohne ihre nicht als Findings erkannten Zeilen persistiert; Results-Verweise zeigen nach dem Neuladen ins Leere. | Nicht ausgewählte Tabellenzeilen begrenzt und mit Originalfeldern im kanonischen SourceTable speichern, Finding-Tabellen von Doppelhaltung ausnehmen sowie Import-, Projektions- und Linkerregressionen verwenden. | | Gemeinsam genutzte PingCastle-Results-Blaetter erscheinen nach globaler Dataset-Reihenfolge statt nach dem Detailspfad des aktuell geoeffneten Findings; Linktexte oder Modal-Bedienelemente koennen zudem als irrefuehrende Tabellenpreambles erscheinen. | Results-Blaetter strikt nach den finding-spezifischen Section-IDs aufloesen, rekursive Zielabschnitte nach ihrer HTML-Definition ordnen, fachliche Prosa getrennt am Blatt bewahren und reine Titel-/`Close`-Artefakte vor der Darstellung entfernen. Synthetische Tests verdrehen absichtlich globale Blatt- und Triggerreihenfolge. | | PingCastle-Details erscheinen nach der strukturierten Results-Projektion doppelt im Popup und im Reader; ein pauschales Ausblenden koennte dagegen bei historischen Importen ohne Results Informationen verbergen. | `Details` nur dann aus Reader-Zusammenfassung und Additional Information entfernen, wenn fuer das konkrete Finding mindestens ein strukturiertes Result-Blatt aufgeloest wurde. Einen synthetischen Ohne-Results-Fallbacktest beibehalten. | | Client und Backend persistieren unterschiedliche Profil- oder Mappingentscheidungen. | Unveränderte serverseitige Vorschau als Basis, explizite Recognition Overrides, Laufzeitvalidierung gegen registrierte Profile und reale Tabellen/Felder sowie Ablehnung offener Bestätigungen. | | Historische oder unvollständige GPO-Backups werden als aktuelle Gesamtumgebung interpretiert. | Backupinstanz, Snapshot, Domäne, Erhebungszeitpunkt sowie Einzel- und Setvollständigkeit explizit modellieren. | | Unterschiedliche GPO-Client-Side-Extensions werden mit universeller Wertlogik verglichen. | CSE-spezifische Reducer, Delivery-Semantik, typisierte Comparatoren und Dependency-/Override-Regeln. | | Baseline-Consensus entsteht trotz fehlender oder nicht unterstützter Kontexte. | Nichtanwendbarkeit, fehlende Empfehlung, Katalog-/Parserlücke und unaufgelöste Identität getrennt speichern; Findings nur nach vollständigem Consensus-Gate. | | GPO-Ergebnisse behaupten ohne Scope- oder RSoP-Daten tatsächliche Wirksamkeit. | `confirmed_configured_deviation`, getrennte Scope Confidence und Effective State sowie feste Qualifikation und Prüfhinweise. | | Dateisystemobjekt und relationale Artefakt-/Jobreferenz driften bei Prozess- oder Datenbankfehler auseinander. | Veröffentlichung und Repositoryanlage eng sequenzieren, idempotente Artefakt-/Job-IDs verwenden und vor Firmenbetrieb eine referenzgeprüfte Orphan-Reconciliation mit Aufbewahrungsfrist implementieren. | | Der Rohartefaktspeicher wird versehentlich im Webroot oder ohne Projektprüfung angebunden. | Betriebsroot explizit außerhalb statischer Assets konfigurieren und validieren; Lesen und Reprocessing nur über projektgebundene autorisierte Backenddienste, niemals per statischer URL. | | GPO-Artefakte enthalten entschlüsselbare Kennwörter oder sensible Werte. | Secret-Erkennung ohne Entschlüsselung, Maskierung, geschützter Artefaktspeicher und minimale Zugriffsrechte. | | Parserworker werden fälschlich als Sicherheits-Sandbox betrachtet. | Worker nur als Ressourcengrenze behandeln; externe Werkzeuge separat, niedrig privilegiert, ohne Shell/Netzwerk und mit Pfad-, Hash-, Zeit- und Ausgabelimits ausführen. | | Reprocessing überschreibt ältere Beobachtungen, Regeln oder Findings. | Unveränderliche Rohartefakte und Katalogversionen, neue Processing-/Evaluation-Runs, Supersession und deterministische Idempotenzschlüssel. | | Funktionale Pfeile driften zwischen Navigation, Aufklappern, Result-Zuständen und nativen Auswahlfeldern auseinander oder werden durch Zeichenkodierung beziehungsweise spezifischere `background`-Kurzschreibweisen beschädigt. | Eine zentrale SVG-Dreiecksgeometrie für React-Controls, dieselbe Geometrie als CSS-Selectindikator, ausschließlich `background-color` für Select-Zustandsfarben, richtungsabhängige Rotation und synthetische Render-/CSS-Regressionsverträge verwenden. | | Eine getrennte Control-Mappings-Liste lässt bei mehreren Controls nicht erkennen, welche Belegtabelle zu welchem Listenpunkt gehört. Eine rein positionsbasierte Teilzuordnung könnte bei fehlenden Tabellen außerdem falsche Titel erzeugen oder Angaben verschlucken. | Profilkonfigurierte Markdown-Gruppen mit den normalisierten Framework-Blatttiteln abgleichen, Listenpunkte innerhalb jeder Gruppe in Quellreihenfolge zuordnen und den Textabschnitt nur dann ausblenden, wenn alle seine Listenpunkte Tabellen erhalten haben. Synthetische Verträge prüfen mehrere Controls derselben Version, zukünftige Frameworks und den unvollständigen Rückfall. | | Ein globaler Inhaltsvergleich für Hinweiszeilen könnte denselben Satz bei anderen Werkzeugen unbeabsichtigt als ausgewertete Evidence markieren. | Markierung ausschließlich über das aufgelöste Finding-Werkzeugprofil anwenden und mit einem Negativvertrag für andere Profile absichern; importierte Werte und der persistierte `highlighted`-Status bleiben unverändert. | | Außenrahmen und Innenabstand jedes Result-Blocks können bei vielen Belegtabellen einen erheblichen Teil der nutzbaren Fensterfläche verbrauchen; ein vollständiges Entfernen aller Linien würde dagegen die Tabellenlesbarkeit schwächen. | Nur den äußeren `.result-block` auf `padding: 0`, `border: 0` und transparenten Hintergrund setzen; die eigenständigen Tabellenzelllinien unverändert erhalten und dies mit einem CSS-Vertrag schützen. | | Ein kurzes maximiertes Result im Cluster verdeckt nur einen Teil des minimierten Stapels; bei vielen offenen Results können darunterliegende Titelleisten wieder sichtbar werden. Eine unbeschränkte Mindesthöhe könnte umgekehrt aus dem Viewport laufen. | Für angedockte maximierte Fenster die Zahl der dahinterliegenden Results mit der zentralen 34-px-Stapelhöhe multiplizieren und am sichtbaren Cluster-Viewport begrenzen. Reine Layout- und Renderregressionen prüfen normalen Stapel, kurzen Inhalt und den Viewport-Grenzfall. | | Mandantenumrandung, `Show`-Aktion und Diagramme koennten auf unterschiedliche Mandanten oder Timeslots zeigen; leere Platzhalter koennten zudem wie reale Mandanten wirken. | Einen einzigen `DatahubTimeslotSelection.projectId` als Auswahlquelle verwenden, bei Mandantenklick genau den neuesten scannergebundenen Timeslot setzen, `aria-pressed` und `Show` aus derselben Projekt-ID ableiten und keine Placeholder-Projekte rendern. Synthetische Rendervertraege und eine inhaltsarme Browserpruefung sichern Auswahlanzahl, Aktion, Plus-Kachel und Diagrammwechsel. | | Ein auf Viewportgroesse maximiertes Result koennte den statischen Header ueberdecken, nach Viewportaenderungen aus dem sichtbaren Bereich laufen oder beim Zurueckschalten die Nutzergroesse verlieren. | Die Header-Unterkante zur Laufzeit als obere Arbeitsflaechengrenze messen, rundum einen festen Innenabstand erhalten, maximierte Geometrie nur praesentativ ueber die normale Position und Groesse legen und den Zustand bei Minimierung zuruecksetzen. Synthetische Doppelklickregressionen sichern Maximierung, Wiederherstellung und Aktionsausschluss. | | Ein generischer Statusfinder kann bei Purple Knight das kanonische `Result` mit einer SI-Kurzkennung für den fachlichen Ausgang halten oder den Rohstatus `IOE Found` anzeigen, obwohl die Kopfzeile die eindeutige `Passed`/`Failed`-Semantik verlangt. | Statusheader im Werkzeugprofil geordnet priorisieren, sichtbare Beschriftungen über quellenwertschonende Profilregeln ableiten und sowohl `Status`-vor-`Result`, `IOE Found` zu `Failed`, `Pass` zu `Passed` als auch den `Result`-only-Rückfall synthetisch in Reader, Datensatzkarte und Kachel prüfen. | | Gemeinsame oder implizit entdeckte Vite-Konfigurationen koppeln Client, Server und Tests erneut und führen bei parallelen Agenten-/IDE-Läufen zu Syntax-, Cache- oder Outputkonflikten. | Dedizierte Konfigurationen und Cachepfade verwenden, npm-Skripte immer mit --config routen, den Defaultnamen auf einen unveränderlich schmalen Clientalias begrenzen und die Trennung als Architekturvertrag testen. | | Ein unbeschraenkter Vitest-Fork-Pool liest auf einem synchronisierten Windows-Projektlaufwerk viele Module gleichzeitig, laesst den Grossteil der Suites scheinbar dauerhaft `queued` oder bricht mit einem Node-Dateilesefehler ab. | Dateiparallelitaet und Isolation beibehalten, den lokalen `forks`-Pool anhand kontrollierter Gesamtlaeufe auf vier Worker begrenzen und vor jeder kuenftigen Erhoehung erneut benchmarken. Der Config-Separation-Test prueft nur die Trennung, nicht eine konkrete Workerzahl. Lifecycle-Fehler weiterhin mit fokussierten Tests und dem `hanging-process`-Reporter untersuchen; keine Exit-Erzwingung einfuehren. | | Der Entwicklungsclient wird ohne erreichbares lokales Backend gestartet und zeigt trotz erreichbarer Oberfläche dauerhaft „Backend is unreachable“. | Den Standardbefehl als Health-gesteuerten Stack-Starter ausführen: Backend auf `127.0.0.1:4173` prüfen beziehungsweise lokal bauen/starten, erst danach den Client auf `127.0.0.1:5173` öffnen und den Client-only-Befehl eindeutig separat benennen. | | Im Graph ausgeblendete gemeinsame Facetten koennen weiterhin in Work gesetzt sein und dadurch die Graphmenge begrenzen, ohne im Graph-Panel selbst editierbar zu sein. | Die gemeinsame Filtersemantik bewusst beibehalten, die sichtbare Suche, Quellblattauswahl und Reset-Aktion im Graph erhalten und den Darstellungsvertrag synthetisch absichern; weitergehende Entkopplung nur als ausdrueckliche Fachentscheidung vornehmen. | | Globale Zustandsselektoren fuer die Hauptnavigation erfassen versehentlich verschachtelte semantische `aside`-Bereiche in Fachansichten und blenden dadurch Controls aus. | Sichtbarkeitsregeln auf das direkte `aside` unter `main` begrenzen und den Graph-Vertrag gegen erneut zu breite Nachfahrenselektoren absichern. | | 2026-08-04 | Phase-13B-Schritt-9/11 um den freigegebenen Policy-Evaluation-Regelkatalog nachgehaertet. Der implizite Equality-Fallback ist entfernt; nur eine exakte Policy-/Delivery-/Produkt-/Versions-/Rollen-/Scope-Regel darf Comparator und Risikoregel aktivieren. Ausdrueckliche Empfehlung, ausdrueckliche Nichtanwendbarkeit, keine Empfehlung und Katalogluecke werden getrennt gespeichert. Prerequisite-, Mutual-Exclusion- und Override-Regeln sind versioniert und konservativ an Snapshotvollstaendigkeit gebunden. Migration 016 persistiert Katalog-, Baselinezustands-, Regel-, Dependency- und Risikoprovenienz relational; die read-only Referenzdaten-API zeigt den aktiven Katalog. Der produktive Katalog 1.0.0 ist bis fachlicher Regelkuratierung bewusst leer und damit review-only. Synthetische Tests pruefen Minimum, Katalogluecke, Nichtanwendbarkeit, keine Empfehlung, Prerequisite, Mutual Exclusion und Override. `npm test`: 573 bestanden, 8 optionale PostgreSQL-Tests uebersprungen; Local-only-, Designpruefung und Produktionsbuild erfolgreich. Die komplette PostgreSQL-Suite lief gegen eine frische PostgreSQL-16-Instanz mit 8 von 8 Tests erfolgreich; Migrationen 001 bis 016 und die relationalen Sicherheitsgrenzen wurden verifiziert, Container und synthetische Testdaten entfernt. Finding Factory, Unified-Result-Projektion, UI und reale Regelkuratierung bleiben offen; Phase 13B bleibt in Arbeit. | | Ein neuer Profilstand könnte ohne Manifestregistrierung importiert werden, kompatible Darstellungsänderungen könnten fälschlich semantische Vergleiche sperren oder semantische Änderungen könnten alte und neue Findings als gleich behandeln. Fehlende Scanneroriginale könnten außerdem einen behaupteten Reimport unmöglich machen. | Neue Verträge fail closed registrieren, Änderungsklasse und betroffene Dimensionen explizit testen, Timeslot- und Vergleichsgrenzen auf den kanonischen Kompatibilitätsschlüssel stützen und Reprocessing ausschließlich aus hashgeprüften Originalbytes erlauben. Bei `not-retained` ist ein erneuter Upload erforderlich. | ## 12. Änderungsprotokoll 2026-10-08 - Phase 13F / Fehlerbehebung: fruehere ISO-Entscheidung nach Neuzuordnung ablehnbar (Nutzermeldung; nur Engine-Code): Eine Neuzuordnung mit unveraenderten Pipelineversionen ueberschreibt den einzigen Lauf der Regel (deterministische Mapping-ID). Schlug das Modell eine frueher akzeptierte Kontrolle nicht mehr vor, lag sie in keinem gespeicherten Lauf mehr, und Ablehnen scheiterte mit `Decision control was not a grounded candidate.` Beide Engine-Stores (PostgreSQL, Speicher) erlauben eine Entscheidung jetzt auch, wenn fuer Regel und Kontrolle bereits eine Entscheidung besteht; die Kette `previousDecisionId` fuehrt zum begruendenden Lauf zurueck. Eine nie vorgeschlagene Kontrolle bleibt abgelehnt. Keine Migration. Regressionstest der genauen Interaktion (zuordnen, neu zuordnen, frueher akzeptierte Kontrolle ablehnen) gegen den echten Speicher-Store; alle Testdateien bestanden, beide Builds erfolgreich. 2026-10-08 - Phase 13F / Client-Info-Tab `Compliance`: Uebersichtszeile `Mapping coverage` und `Annex A footprint` (Nutzerauftrag nach Mockup-Freigabe; nur Engine-Code, keine Core-Freigabe): Neue Zeile ueber den Frameworkkacheln mit Umschaltung ISO/BSI (BSI: Kernel footprint, in der Kachel die zwei Praktiken mit den meisten Befunden, `Show all` mit allen 901 Anforderungen), Details in Abschnitt 7, Phase 13F. Die Kontrolluebersicht liefert zusaetzlich `coverage` und `bsiFootprint` (Zahlen sowie IDs, Titel und Erreichbarkeit der BSI-Anforderungen). Alle Testdateien bestanden (373, 7 uebersprungen); Local-only-, Designpruefung und beide Builds erfolgreich. Produktversion vorerst unveraendert, weil `package.json` zum Core-Bereich Platform gehoert; Anhebung auf 2.23.0 (neue Faehigkeit) nach Core-Freigabe Platform. 2026-10-08 - Phase 13F / Client-Info-Tab `Compliance` mit `Last mapping` (Nutzerauftrag; Core-Freigabe Presentation, Governance, Platform, Core Tests; Produktversion 2.21.0): Die Compliance-Zeile ist aus der Overview in einen eigenen Client-Info-Tab `Compliance` gewandert (nach Overview und Microsoft Defender for IoT, vor `AI Overview`; sichtbar bei aktiver Engine, verbundenem Backend und gewaehltem Timeslot). Die Rahmenwerkskachel und ihr `Results`-Fenster bleiben auf Nutzerwunsch unveraendert, damit weitere Regelwerke als Kacheln folgen koennen. Neu ist der Button `Last mapping: · Automatic|Manual` (ohne Lauf `No mapping yet`), der in einem Fenster die letzten zehn Batches des Timeslots mit Start, Ausloeser, Status und den inhaltsfreien Zaehlern Findings, Sent to model, Reused, Succeeded und Failed zeigt. Die Engine liefert diese Zusammenfassungen nur in der Client-Info-Uebersicht (`mappingBatches`), ohne Scope, Filter oder Schluessel; Automatic erkennt sie an den gemeinsamen Schluesselpraefixen `auto:`/`auto-gpo:` des Watchers. Waehrend ein Batch laeuft, aktualisiert sich der Tab alle 5 s ohne Gedankenstrich-Rueckfall. Core-Aenderung (Presentation): `DashboardPanel.tsx` fuehrt den Tab und zieht `jump` vor die Tab-Rueckgaben. `AGENTS.md` haelt die Entscheidung fest. Synthetische Tests: Tab-Platzierung und Drilldowns, Last-mapping-Button und Fenster, leerer Zustand, Aktualisierung waehrend eines Laufs, Batch-Zusammenfassung im Service. `npm test` mit 2.143 bestandenen und 18 uebersprungenen Tests, beide Produktionsbuilds erfolgreich. Versionsentscheidung: neue rueckwaertskompatible Faehigkeit, Minor 2.20.0 -> 2.21.0. Darstellung in beiden Themes nicht live geprueft, weil die laufende Anwendung reale Daten enthaelt. Kein Reimport. Nachtrag desselben Tages (Nutzerrueckmeldung "laedt jedes Mal neu", nur Engine-Code): Der Tab wird beim Wechsel ausgehaengt und begann deshalb jedes Mal mit Gedankenstrichen. Die Engine merkt sich die letzte Uebersicht je Kunde und Timeslot im Speicher (hoechstens acht Timeslots, nur Laufzeit), zeigt sie beim Zurueckkehren sofort und fordert bei jedem Besuch, jeder Entscheidung und waehrend eines Laufs trotzdem eine frische Uebersicht an, die sie ersetzt; ein fehlgeschlagenes Auffrischen laesst die gezeigten Werte stehen. Synthetischer Test fuer Verlassen und Zurueckkehren (sofort Werte, Hintergrundabfrage, Ersetzung). `npm test` 2.144 bestanden; ein lastbedingter Zeitfehler in `sheet-selection-cost` besteht einzeln; beide Produktionsbuilds erfolgreich; Version bleibt 2.21.0. Zweiter Nachtrag (Nutzerrueckmeldung "zeigt nur Batches, nicht die Einzelzuordnungen", nur Engine-Code): Jeder Zuordnungslauf speichert jetzt seinen Ausloeser (`trigger: single | batch`, im JSON des Engine-Laufs, keine Migration). Das Fenster `ISO mapping history` zeigt neben den Batches die Einzelzuordnungen (`Single finding`) der Regeln mit Abweichungen im Timeslot, gemeinsam nach Startzeit sortiert, hoechstens zehn Eintraege; Zaehler je Einzelzuordnung: Findings des Timeslots zu dieser Regel, 1 an das Modell, Erfolg oder Fehler. Einzelzuordnungen sind global je Regel und koennen deshalb aus einem anderen Kunden stammen. Laeufe vor 2.21.0 tragen keinen Ausloeser und erscheinen nicht als Einzelzuordnung, weil sie nicht von Batch-Laeufen zu unterscheiden sind. Behoben: Die Ausloeserspalte erschien in 16 px, weil die gemeinsame Tabelle ihre zweite Spalte als Wert formatiert; die Verlaufstabelle haelt 14 px. `npm test` 2.144 bestanden, beide Produktionsbuilds erfolgreich. Offen: `AGENTS.md` nennt noch "die letzten zehn Batches" und schliesst Einzelzuordnungen aus (Governance nicht freigegeben). Dritter Nachtrag (Nutzerentscheidung 2026-10-08 "Zuordnungen sind global, also zeigt der Verlauf alles"; Auswahl "Everything, all clients" und 50 Eintraege): Der Verlauf listet jetzt jeden Batch aller Kunden und jede Einzelzuordnung, gemeinsam nach Startzeit, hoechstens 50. Eine neue Spalte `Scope` sagt `This timeslot`, `Other timeslot` (Batch eines anderen Kunden oder Timeslots) oder `All clients` (Einzelzuordnung); der Button `Last mapping` zeigt den neuesten Eintrag global und nennt den Scope, wenn es nicht dieser Timeslot ist. Einzelzuordnungen haben keine eigene Findingzahl (Gedankenstrich); Batches anderer Kunden zeigen ihre eigenen Zaehler. Eintraege bleiben inhaltsfrei (Zeit, Ausloeser, Scope-Markierung, Zaehler; kein Kunde, keine Regel, keine Scope-IDs). `npm test` 2.145 bestanden, beide Produktionsbuilds erfolgreich. Offen wie zuvor: `AGENTS.md`-Wortlaut (Governance). Vierter Nachtrag (Core-Freigabe Governance): `AGENTS.md` haelt den globalen Verlauf (alle Batches aller Kunden und alle Einzelzuordnungen, hoechstens 50, Spalte Scope, Ausloeser je Lauf ab 2.21.0) und den begrenzten Speicher beim Zurueckkehren zum Tab als spaetere Nutzerentscheidung desselben Tages fest; die offenen Punkte zum Wortlaut sind erledigt. Fuenfter Nachtrag (Core-Freigabe Core Tests): Der in den vorigen Laeufen lastbedingt fehlschlagende Test `tests/features/sheet-selection-cost.test.tsx` erzeugte 2.537 synthetische Arbeitsblaetter und damit zweimal Tausende jsdom-Optionen (allein rund 2,4 s, unter Parallellast ueber dem 5-s-Limit). Weil der Sheet-Selektor seine Optionen unabhaengig von der Anzahl zurueckhaelt, prueft er jetzt dasselbe Verhalten mit 300 Blaettern (162 ms); alle Zusicherungen bleiben (eine Option bis Fokus, alle nach Fokus und Pointer, Auswahl erhalten). Drei aufeinanderfolgende vollstaendige `npm test`-Laeufe mit je 2.145 bestandenen und 18 uebersprungenen Tests ohne Fehler. Sechster Nachtrag (Nutzerkorrektur "Scope soll sagen, woher die Zuordnung kam", nur Engine-Code): Die Spalte `Scope` nennt jetzt die Herkunft relativ zum gezeigten Timeslot: `This timeslot`, `Other timeslot` (derselbe Kunde), `Other client` oder `Unknown`. Batches tragen Kunde und Timeslot bereits. Eine Einzelzuordnung sendet aus dem Finding Reader den gezeigten Timeslot mit; der Server prueft ihn gegen den Kunden und speichert nur SHA-256-Merkmale von Kunde, Assessment und Scanlauf (`origin`), weil Zuordnungslaeufe global sind und mit jedem Kundenexport ausgeliefert werden; ein ungueltiger Timeslot hinterlaesst nur den Kunden. Einzelzuordnungen ohne gespeicherte Herkunft (vor dieser Aenderung) erscheinen als `Unknown`. Synthetische Tests: alle vier Herkunftsfaelle fuer Batches und Einzelzuordnungen, keine Klar-IDs im gespeicherten Lauf, ungueltiger Timeslot, Finding Reader sendet den Timeslot. `npm test` 2.147 bestanden, beide Produktionsbuilds erfolgreich. Offen: `AGENTS.md` nennt noch `Other timeslot` fuer jeden anderen Batch und `All clients` fuer Einzelzuordnungen (Governance nicht freigegeben). Siebter Nachtrag (Core-Freigabe Governance): `AGENTS.md` haelt die Herkunftsspalte (`This timeslot`, `Other timeslot`, `Other client`, `Unknown`) und die gehashte Herkunft der Einzelzuordnungen als Nutzerkorrektur fest; der offene Punkt ist erledigt. 2026-10-08 - Phase 13F / Automatische ISO-Zuordnung neuer Uploads (Nutzerauftrag; Engine-Code, dazu Core-Freigabe Platform, Core Tests; Produktversion 2.20.0): Die Compliance Engine ordnet neu hochgeladene Scans und GPO-Auswertungen automatisch ISO-Kontrollen zu, solange der neue Schalter `Map new scans automatically` in der Data-Hub-Kachel `ISO Control Corpus` aktiv ist (Standard aus). `server/compliance/regulatory-auto-mapping.ts` liest den Core ausschliesslich ueber `ComplianceReadPort`: alle 10 s die Projekt-, Timeslot- und Scanlauflisten sowie je Timeslot die GPO-Abweichungszeilen als gefilterte Result-DB-Seiten (`audience: result-db`, `sourceKind: policy-evaluation`, `deviation: true`), weil GPO-Backups keinen Scanlauf erzeugen. Je neuem, nicht abgeloesten Scanlauf startet der bestehende Batch ueber dessen Abweichungen; je Timeslot mit neuen GPO-Abweichungszeilen ein Batch ueber dessen GPO-Abweichungen. Bereits zugeordnete Regeln werden wiederverwendet, sodass nur neue Regeln das Modell erreichen; die vorlaeufige automatische Annahme der ersten zwei Vorschlaege gilt unveraendert. Was beim Start oder Einschalten existiert, ist die Basislinie und wird nicht nachtraeglich zugeordnet; ohne aktiven Korpus warten neue Uploads, bis die Zuordnung verfuegbar ist. Idempotenzschluessel je Scanlauf bzw. je Menge neuer GPO-Zeilen verhindern doppelte Batches. Der Schalter liegt in der Engine-eigenen Datei `regulatory-corpora/auto-mapping.json` (keine Tabelle, keine Migration) und wird im Corpus-Status als `autoMapping` geliefert. Core-Aenderungen (Platform): Route `PUT /reference-data/iso-corpus/auto-mapping` und Methode `setIsoAutoMapping` im API-Client. Synthetische Tests: Watcher (Standard aus ohne Core-Lesezugriff, Basislinie, neuer Scan, neue GPO-Zeilen mit getrennten Batches, abgeloeste Laeufe, Warten auf Verfuegbarkeit, Persistenz und Ausschalten), HTTP-Route und Klickinteraktion der Kachel. `npm test` mit 2.138 bestandenen und 18 uebersprungenen Tests, beide Produktionsbuilds erfolgreich. Versionsentscheidung: rueckwaertskompatible neue Faehigkeit, Minor 2.19.1 -> 2.20.0. Offen: Der Engine-Abschnitt in `AGENTS.md` nennt den Schalter noch nicht (Governance nicht freigegeben); Darstellung in beiden Themes nicht live geprueft, weil die laufende Anwendung reale Daten enthaelt. Kein Phasenstatus geaendert, kein Reimport. Nachtrag desselben Tages (Nutzerauftrag mit Core-Freigabe Presentation): Das Abschalten der Compliance Engine im Engines-Popup schaltet die automatische Zuordnung serverseitig aus. `src/app/engine-preferences.ts` exportiert dafuer `subscribeEnginePreferences`; das Engine-Modul `src/compliance/ui/auto-mapping-engine-link.ts` wird mit der Data-Hub-Kachel beim App-Start geladen und sendet beim Wechsel von an nach aus einmal `setIsoAutoMapping(false)`. Erneutes Einschalten laesst die Zuordnung aus; laufende Batches werden nicht abgebrochen. Die lokale Engine-Wahl wirkt damit auf eine serverweite Einstellung (bei gemeinsamem Server fuer alle Nutzer). Dauerhafter Interaktionstest ueber das Engines-Popup (aus sendet einmal, an sendet nichts, andere Engine sendet nichts); `npm test` mit 2.140 bestandenen und 18 uebersprungenen Tests, beide Produktionsbuilds erfolgreich; Version bleibt 2.20.0 (derselbe noch nicht festgeschriebene Stand). Zweiter Nachtrag (Core-Freigabe Governance): `AGENTS.md` haelt Schalter, Watcher, Basislinie, Wiederverwendung und die Kopplung an das Abschalten der Compliance Engine als Nutzerentscheidung vom 2026-10-08 fest; der offene Punkt dazu ist erledigt. 2026-10-07 - Ingest / PingCastle-HTML-Gesamtstruktur aus Configuration-DN (Nutzerentscheidung Option 2; Core-Freigabe Ingest, Normalization, Core Tests; Produktversion 2.19.1): Der PingCastle-HTML-Bericht enthaelt kein Feld fuer den Gesamtstrukturnamen, nur die Gesamtstruktur-Funktionsebene. Vollstaendige DNs `CN=Configuration,DC=...` stehen nur in PingCastles eingebetteten Graphdaten (`