Commit b824dae8ea

b824dae8ea16d20d75136687a7c59bc7b01afe27

parent: cc1cb343b1

Unsigned

cmc <hello@cleberg.net> · 2026-07-25 16:39 UTC

docs: polish repo documentation after the v5.0.0 work

Brings the docs in line with the shipped v5.0.0 state and fixes staleness that
accumulated across the release.

- README: add a Tests section documenting the DomainDigTests unit net and that
  the scheme's test action runs both it and the accessibility audit; reword the
  roadmap pointer (v5.0.0 shipped, no longer "planned"); align the contact
  address to hello@zerolabs.sh (was cleberg.net, inconsistent with SECURITY.md).
- ARCHITECTURE: drop the stale "v4.4.1" from the title; note DomainReportExporter
  also renders Markdown and PDF; describe the DomainViewModel concern extensions
  and the ContentView split (SettingsViews / ResultSectionViews); record that
  v5.0.0 stabilized the Local API contract with links to local-api.md and
  data-migration.md; add a Testing section covering both test targets.
- SECURITY: bump the supported-versions table from 4.x to 5.x.

ACCESSIBILITY.md, local-api.md, and data-migration.md were already current and
are unchanged. Docs-only; no code changes.

Layout: unified · split

Docs/ARCHITECTURE.md +14 −5
@@ -1,4 +1,4 @@
1# DomainDig v4.4.1 Architecture 1# DomainDig Architecture
2 2
3## Overview 3## Overview
4 4
@@ -19,9 +19,9 @@ Inspection flow:
19- `LookupRuntime`: orchestrates section services for a single inspection. 19- `LookupRuntime`: orchestrates section services for a single inspection.
20- `DomainInspectionService`: builds inspection snapshots with provenance, cache state, and failure metadata. 20- `DomainInspectionService`: builds inspection snapshots with provenance, cache state, and failure metadata.
21- `DomainReportBuilder`: assembles summaries, insights, risk scoring, workflow context, and report metadata. 21- `DomainReportBuilder`: assembles summaries, insights, risk scoring, workflow context, and report metadata.
22- `DomainReportExporter`: renders TXT, CSV, and JSON output for app and local API use. 22- `DomainReportExporter`: renders TXT, CSV, JSON, Markdown, and PDF output for app and local API use.
23- `DomainViewModel`: coordinates SwiftUI state, persistence, audit sessions, monitoring, workflows, batch operations, imports, and exports. 23- `DomainViewModel`: coordinates SwiftUI state, persistence, audit sessions, monitoring, workflows, batch operations, imports, and exports. Its surface is split by concern across `DomainViewModel+Audit`, `+Monitoring`, `+Export`, `+Workflows`, `+History`, and `+Widget` extensions; the core type keeps the stored state and the inspection pipeline.
24- SwiftUI views: render screens and invoke view-model actions. 24- SwiftUI views: render screens and invoke view-model actions. The largest view file was decomposed too — Settings screens live in `SettingsViews.swift` and the result detail sections in `ResultSectionViews.swift`.
25 25
26## Audit Mode 26## Audit Mode
27 27
@@ -76,7 +76,16 @@ The app remains local-first. Purchase and entitlement code is local app infrastr
76- `DomainReportExporter` 76- `DomainReportExporter`
77- `LocalAPIModels` 77- `LocalAPIModels`
78 78
79The major-version roadmap calls for a stronger compatibility promise around this local API contract in `v5.0.0`. 79`v5.0.0` stabilized this contract: `LocalAPIContract` is the single source of truth for the `v1` wire version and JSON encoder, the response envelope and payloads are documented, and the shape is regression-locked by `LocalAPIContractTests`. See [local-api.md](local-api.md) for the endpoint and compatibility reference, and [data-migration.md](data-migration.md) for how the persisted store is versioned across app updates.
80
81## Testing
82
83Two test targets run from the `DomainDig` scheme's test action:
84
85- `DomainDigTests` — unit coverage of the deterministic core: `DomainReportBuilder`, `DomainReportExporter`, `DiffService`, `DomainDataPortabilityService` (merge/replace dedup), the store-migration runner, and the Local API contract. `SnapshotFixture` builds the deep `LookupSnapshot`/`DomainReport` models through the real builder so tests construct inputs without wiring every field.
86- `DomainDigUITests` — Apple's `performAccessibilityAudit()` over every primary screen at default and largest Dynamic Type, plus metadata and screenshot assertions. See [ACCESSIBILITY.md](ACCESSIBILITY.md).
87
88A plain `xcodebuild test` (and CI) runs both. The unit net went in first in `v5.0.0` and is what made the god-file decomposition safe to attempt.
80 89
81## Xcode Project Structure 90## Xcode Project Structure
82 91
README.md +12 −2
@@ -53,6 +53,16 @@ xcodebuild -project DomainDig.xcodeproj -scheme DomainDig -destination 'platform
53 53
54The app and local API share the canonical report pipeline through `DomainInspectionService`, `DomainReportBuilder`, and `DomainReportExporter`. The Local API's endpoints, response envelope, and `v1` compatibility policy are documented in [Docs/local-api.md](Docs/local-api.md). How the on-device store evolves across app versions is documented in [Docs/data-migration.md](Docs/data-migration.md). 54The app and local API share the canonical report pipeline through `DomainInspectionService`, `DomainReportBuilder`, and `DomainReportExporter`. The Local API's endpoints, response envelope, and `v1` compatibility policy are documented in [Docs/local-api.md](Docs/local-api.md). How the on-device store evolves across app versions is documented in [Docs/data-migration.md](Docs/data-migration.md).
55 55
56### Tests
57
58Unit coverage of the deterministic core — `DomainReportBuilder`, `DomainReportExporter`, `DiffService`, `DomainDataPortabilityService` (merge/replace dedup), the migration runner, and the Local API contract — lives in the `DomainDigTests` target:
59
60```sh
61xcodebuild test -project DomainDig.xcodeproj -scheme DomainDig -destination 'platform=iOS Simulator,name=iPhone 16' -only-testing:DomainDigTests
62```
63
64The `DomainDig` scheme's test action runs both `DomainDigTests` and the `DomainDigUITests` accessibility audit, so a plain `xcodebuild test` (and CI) exercises both.
65
56### Accessibility Audit 66### Accessibility Audit
57 67
58`DomainDigUITests` runs `performAccessibilityAudit()` over every primary screen, 68`DomainDigUITests` runs `performAccessibilityAudit()` over every primary screen,
@@ -79,7 +89,7 @@ between this script and CI.
79 89
80## Release Planning 90## Release Planning
81 91
82See `RELEASE_ROADMAP.md` for the semver release plan from `v4.4.1` through the planned `v5.0.0` stabilization milestone. 92See `RELEASE_ROADMAP.md` for the semver release history from `v4.4.1` through the `v5.0.0` contract-stabilization milestone.
83 93
84## Contributing 94## Contributing
85 95
@@ -95,4 +105,4 @@ This project is licensed under the MIT License. See `LICENSE`.
95 105
96## Contact 106## Contact
97 107
98Questions or feedback: hello@cleberg.net 108Questions or feedback: hello@zerolabs.sh
SECURITY.md +2 −2
@@ -4,8 +4,8 @@
4 4
5|Version|Supported| 5|Version|Supported|
6|-------|---------| 6|-------|---------|
7| 4.x | ✅ Yes | 7| 5.x | ✅ Yes |
8| < 4.0 | ❌ No | 8| < 5.0 | ❌ No |
9 9
10--- 10---
11 11