<feed xmlns='http://www.w3.org/2005/Atom'>
<title>domain-dig.git/DomainDig/DomainViewModel+Audit.swift, branch chore/owner-record-id-reveal</title>
<subtitle>local-first ios domain inspection toolkit. dns, tls, rdap, audit.
</subtitle>
<id>http://git.krz.sh/krz/domain-dig.git/atom?h=chore%2Fowner-record-id-reveal</id>
<link rel='self' href='http://git.krz.sh/krz/domain-dig.git/atom?h=chore%2Fowner-record-id-reveal'/>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/domain-dig.git/'/>
<updated>2026-07-25T05:00:29+00:00</updated>
<entry>
<title>refactor: extract audit surface into DomainViewModel+Audit (v5 step 4, 1/n)</title>
<updated>2026-07-25T05:00:29+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-25T04:45:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/domain-dig.git/commit/?id=e597cdf5b7084634e300af39b622c8552c9cc5e8'/>
<id>urn:sha1:e597cdf5b7084634e300af39b622c8552c9cc5e8</id>
<content type='text'>
First slice of the v5.0.0 god-file decomposition. DomainViewModel.swift is a
single ~4.9k-line class body; this begins splitting it into focused
`DomainViewModel+&lt;Concern&gt;.swift` extensions, one cohesive concern at a time,
with each move behavior-preserving and verified by build + the test net.

- Moves the audit read/CRUD/export surface (audits/auditSession/auditTimeline,
  updateAuditStatus/Notes, toggleAuditChecklistItem, add/update/remove
  AuditFinding, exportAuditData) into DomainViewModel+Audit.swift as an
  extension. Pure move — no logic changes.
- `startAudit(for:)` intentionally stays on the main type: it drives a live
  inspection to seed the session, so it belongs with the inspection pipeline
  until that is extracted. `persistAuditSessions()` is promoted from private to
  internal so both files can call it (its only cross-file dependency).

No project.pbxproj change is needed — DomainDig/ is a file-system-synchronized
group, so the new file is picked up automatically.

DomainViewModel.swift: 4864 -&gt; 4761 lines. App builds clean; unit suite 58/58.
</content>
</entry>
</feed>
