Skip to content

Add same-Mac comparison and side-by-side source evidence - #18

Draft
hideouts-io wants to merge 16 commits into
mainfrom
codex/evidence-navigation-and-explanations
Draft

hideouts-io wants to merge 16 commits into
mainfrom
codex/evidence-navigation-and-explanations

Conversation

@hideouts-io

@hideouts-io hideouts-io commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Summary

Make same-Mac before/after comparisons traceable to both parsed evidence and retained original input, while preserving the snapshot-history and optional explanation improvements in this draft.

Dependency: this draft PR includes and depends on open PR #14. Its current head is 9b1369fb0cbf73cde9c71fe02edcad67bb01488b, which is an ancestor of this PR. Resolve that review/integration relationship before merging. This delivery does not merge either PR, mark this draft ready, release, deploy, or change repository settings.

  • Check existing Hardware overview identifiers. Conflicts block comparison; missing usable common identifiers require confirmation and a persistent Same Mac not verified warning. Matching metadata does not authenticate report contents. No additional identifiers are collected.
  • Keep the change list visible alongside baseline/current evidence. Show types, typed addresses, reconstructed JSON, exact retained UTF-8 excerpts and byte ranges, with surrounding record context on demand. Missing fields, null, source errors and unavailable source remain distinct.
  • Retain owned input bytes in session memory only. Inspection never reopens source files. Original bytes and capture identity are not added to stored reports, snapshots, caches, logs or model requests. Source-less snapshots still provide structured evidence and show Original source unavailable.
  • Keep ambiguous record groups unresolved instead of guessing pairings or rejecting independent findings. Both candidate lists retain original addresses; unresolved subtrees are excluded from confirmed totals.
  • Show all confirmed differences by default. Explicit search/kind filters report visible, matching, total and hidden counts; unresolved groups remain accessible independently of filters.
  • Retain explicit snapshot-history loading/failure/unreadable states, direct file selection, and refresh that preserves the selected report/comparison. Redacted baselines remain ineligible.
  • Retain optional on-device guidance limited to maintained field context, PDF emoji shaping, Camera identifier redaction, uninterpreted network values, synthetic compatibility fixtures, older-Intel guidance and the Open Layers branding already included in this draft.

Cross-Mac comparison, manual pairing and persistent original-byte storage remain deferred. Existing collection scope, serialization formats, workflows, dependencies, security policy and permissions are unchanged.

Reviewed fixes delivered

Candidate: e774fe3c0cfe150fcea0c048d9160318161533b5 — hideouts/pr18: harden sample privacy and report evidence.

  • Anonymized sample privacy: rule registration alone no longer preserves arbitrary free text. Bluetooth types/batteries require recognized valid values before generic token/Boolean handling; service lists require every token to be recognized. Other free text needs an actual non-unknown interpretation. Existing generic Boolean/enumeration conventions remain. Raw/full private values stay exact.
  • Ambiguous JSON identity: raw imports, collected JSON, report files and loaded snapshots reject duplicate object keys before conflicting occurrences can be discarded. Validation reuses the existing bounded, cancellable walker. Supported UTF-8/16/32 byte orders stay accepted; validation-only transcoding never replaces retained source bytes. Snapshot decode and validation use one owned input copy.
  • APFS interpretation: Apple_APFS describes a container with shared volume space, not assumed macOS contents or startup role. Finding status/confidence are preserved across NVMe, Serial ATA and card-reader paths.

Thirteen reviewed source/test/README files changed. The complete committed diff exactly matches the previously reviewed patch. No instruction, workflow, dependency, signing or release changes are included.

Current validation

  • Fresh Xcode 27.2/build 27B52 arm64 build test: 312 total, 310 passed, 2 intentional skips, 0 failures, 0 xcresult runtime warnings.
  • Fresh framework-free x86_64 build test: 311 total, 309 passed, 2 intentional skips, 0 failures, 0 xcresult runtime warnings. Executed through Rosetta on Apple silicon, not physical Intel hardware.
  • Review-stage failing reproductions were verified using actual xcresult counts, not merely a TEST SUCCEEDED line. The first zero-test method-filter probe was discarded; subsequent suite filters exercised the tests.
  • Review-stage focused import/loading/comparison: 64 passed; export/sample/fixture suites: 15 passed; APFS/catalog/presentation: 39 passed. These sources are unchanged in this commit.
  • Synthetic integration tests exercise sample encode/decode/reimport and full-value preservation; duplicate serial/UUID/escaped/root keys through six supported encodings; raw/collected/report-file/snapshot ingress; unchanged source-byte and storage contracts.
  • Native stable-ID/keyboard review smoke refused invented duplicate-identity input with a specific error, then successfully imported a selected unique synthetic report. Earlier same-Mac smoke covered side-by-side evidence, candidate context, counted filters, confirmation/cancellation, persistent warning and conflict blocking; it is not claimed as newly rerun during this delivery.
  • Independent fix review verified the snapshot owned-input correction and reported no remaining actionable high-confidence findings in that scope. Exact snapshot mutation between decoding and validation was source-reviewed, not deterministically reproduced; the existing real shared-mapping test covers the ownership helper.
  • Fresh locked branding install with lifecycle scripts disabled, branding TypeScript check, publication boundary, project plist and complete staged-diff/privacy checks passed.

The two skips are the opt-in installed-model test and optional private-report performance fixture. The existing FoundationModels initializer deprecation and AppIntents/linkd system-log warnings remain explicit. No model generation or distribution packaging was rerun.

Fresh push CI and PR CI passed for this candidate on Xcode 26.4.1/build 17E202; each ran 312 total tests, 2 intentional skips, 0 failures. The PR test merge is b3c6d43c038f50f7d170a01f55fca90665ae026c, combining this head with main at eba926097f4bd3bccbab974a693d11f4772bde6b.

The fresh three-language CodeQL run passed all three analyses, all three processed uploads and the aggregate results gate. Code Scanning API analyses 2157834394 (Swift), 2157834443 (JavaScript/TypeScript) and 2157834538 (Actions) are bound to test merge b3c6d43c038f50f7d170a01f55fca90665ae026c, each with zero query results and an empty processing error. Fresh SARIF reports successful execution for every language; Actions and JavaScript/TypeScript have no extraction-error notification category. The Swift extraction build also ran all 312 tests with the same two intentional skips and no failures. Earlier-head results are not substituted for this candidate's evidence.

Swift extraction is still limited, not repaired. Inspection across every execution/configuration notification level found 113 extraction diagnostics, all level: none: 54 SDK compiler-branch mismatches, 54 failed precompiled SDK module emissions, 3 Swift module/compiler mismatches and 2 accessibility ambiguity messages. The earlier head had 112, including one accessibility message; the additional occurrence repeats the same no-location NSAccessibilityElement ambiguity. This delivery does not establish the cause of that multiplicity change. Located success entries exactly match all 107 Git-tracked Swift paths, with nine further success notices lacking locations; file inclusion and zero query findings do not prove complete imported-module semantics or absence of vulnerabilities. CLI version is 2.27.2; PR file-coverage metrics are unavailable under the Action's default policy. The separate PR #17 extraction/toolchain scope remains unchanged. No diagnostic, query, gate, source exclusion or workflow permission is weakened here.

Remaining validation boundaries

  • Physical older-Intel/macOS 13–15 runtime, spoken VoiceOver and full-resolution layout review remain unverified.
  • Source-less stored reports are integration-tested; the unavailable label was not exercised in an isolated native snapshot account. Shared-account snapshots were not modified.
  • Formatting-only source replacement during active async preparation, active mid-walk cancellation and exact nesting-limit boundaries were not directly exercised. Supported UTF-16/32 byte-order cases now have integration coverage; that is not exhaustive encoding coverage.
  • Large/private-source performance, additional actual model-availability states, Developer ID signing, Gatekeeper distribution approval and notarization remain outside verified scope.

Privacy and publication review

  • No real profiler report, private snapshot, actual identifier, installed-software inventory, user path, private log, screenshot, build cache or local test artifact is committed or attached.
  • Native checks used invented data; source bytes remain local session state and collection stays read-only.
  • No merge, release, deployment, protected publication, visibility, permission or device operation was performed.

Serial ATA drives and cards in a card reader report the same drive and
volume fields as NVMe drives and the Storage section, but only got the
general section text. SMART status, partition map, file system,
writable, partition content, and removable and detachable media are now
explained there too, and Windows_FAT_32, the partition type of a FAT32
memory card, is new. The spellings come from the published macOS
samples in glpi-agent.

Free space stays on the Storage section, so a shortage isn't reported
twice for the same volume.
Covers the drive's medium type, the controller's physical interconnect,
the port and negotiated SATA link speeds, Native Command Queuing, and
the PCI Express link speed and width Apple's SSD controller reports. A
link slower than its port is explained as information, with what it
means for an SSD. PCI as the interconnect is marked as an inference,
with its reasons.
Covers how fully macOS supports burning with the drive, an empty drive,
DVD reading, the drive's connection, the CD and DVD formats it can
write, and its burn strategies. Format and strategy lists are spelled
out, and a list with an unfamiliar entry is shown as not yet explained
rather than partly explained. The support levels and connections other
than the published ones are Disc Recording constants whose spelling in
system_profiler output is unconfirmed.

Adds englishList so lists in explanations read the same in every
system language.
Most Macs have a paired keyboard, mouse, trackpad, or headphones, but
the inventory Mac had none connected, so these values had no
explanation. Covers the accessory type, the battery level of the
accessory, each earbud, and the charging case (nearly empty is worth a
look, low is information), and the services an accessory or this Mac's
Bluetooth supports. A service the app doesn't know is named as such,
and AACP is marked as an inference because Apple doesn't document it.

Adds short field explanations for the battery and service fields.
docs/value-explanations.md now lists the Serial ATA, disc burning, and
Bluetooth accessory values with their sources and spellings, and marks
the storage spellings the published samples confirm (MS-DOS FAT32, Not
Supported, the MBR partition map, and the EFI, Apple_HFS, Apple_Boot,
and Apple_CoreStorage partition types).

The list of values that need a scan on a real Mac lived in PLAN.md,
which was removed, so the docs pointed at a missing file. The list is
now the last section of docs/value-explanations.md, updated with this
branch's unconfirmed values.
The plan tracked this branch's steps and doesn't belong in the project.
The list of values that need a scan now lives in
docs/value-explanations.md.
Reject malformed Bluetooth percentages, service masks and PCI lane counts. Keep CD and DVD format interpretation medium-specific and preserve unsupported raw values without inference.

Validate import/search/export preservation and value boundaries. Native macOS build/test passed with the optional private fixture unavailable; synthetic accessory and optical cases do not establish live hardware coverage.
Harden nested matching and cancellation, add exact baseline/current raw evidence, preserve Unicode PDF pagination, and close Camera identifier export privacy edges. Include synthetic fixtures and older-Mac verification guidance; no release assets or private evidence.

Normal tests: 277 passed, one optional private-fixture skip. Framework-free: 276 passed, the same skip. Universal and framework-free Release builds and publication/branding checks pass locally. Physical older Intel runtime and fresh hosted CodeQL extraction remain unverified.
@hideouts-io hideouts-io self-assigned this Oct 14, 2026
Preserve greedy sampling, nil temperature, the response-token bound, and optional on-device privacy behavior. The supported legacy argument label also builds on the newer SDK, which emits its expected deprecation warning.

Local native validation: 277 passed plus one optional private-fixture skip; framework-free 276 passed plus the same skip. Both Release builds, publication/diff checks, and locked branding typecheck pass. Hosted compatibility and candidate Swift extraction are verified separately after push.
Keep unavailable and unreadable snapshot history distinct from empty history. Add explicit refresh and direct file selection when no compatible full baseline is available; preserve the selected report and comparison across refreshes.

Validation: native build/test passed (278 passed, 2 intentional skips, 0 failures), focused review workflow tests passed, native synthetic import/comparison/refresh verified, branding TypeScript and publication boundary checks passed.
@hideouts-io hideouts-io changed the title Improve comparison evidence, optional field guidance, and safe exports Improve report comparison, snapshot history, and optional field guidance Oct 19, 2026
@hideouts-io hideouts-io changed the title Improve report comparison, snapshot history, and optional field guidance Add same-Mac comparison and side-by-side source evidence Oct 21, 2026
Validate anonymized sample strings instead of trusting rule registration, reject duplicate JSON keys before report comparison or storage, and describe APFS containers without inferring a startup role. Decode and validate snapshots from one owned input copy. Preserve original private values and serialization formats, and add importer-to-presentation and export behavior coverage.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant