Add macOS parity reference evidence for the Partial ledger rows - #500
Merged
Merged
Conversation
The Windows parity ledger has 35 `Partial` rows, and most of them were blocked on not knowing precisely what the shipping macOS app does. This adds the captured answer so Windows work has an authoritative comparison target. Produced by running the existing investigation/macos-parity-evidence-agent-prompt.md on a macOS host against GraphCode 0.1.76 (299), built from 717240c -- the exact commit this branch targets. Contents are a row-by-row report for all 35 Partial rows plus 26 unaltered window captures. Every claim is marked as inspected source, test source, or direct observation of the running app, and the report carries an explicit Not verified list: terminal VT, IME, clipboard, Codespaces and a real update were deliberately not exercised and are recorded as unobserved, not absent. This is macOS evidence only. It does not validate any Windows code path, and no ledger row changes status here. Two observed macOS behaviors are recorded as defects rather than parity targets: nested Main Rename does not open its alert, and the edge cycle-guard form clips its labels. Captures are unaltered and unannotated, from disposable Alpha/Beta fixtures with an isolated bundle ID and a temporary unregistered daemon. No real project, account, provider or release was opened. The worktree sweeper's full-window capture was withheld because it renders a local path. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Colin Neilens <coneilen@microsoft.com>
coneilen
force-pushed
the
coneilen-microsoft-macos-parity-evidence
branch
from
September 28, 2026 21:07
538c9ed to
10173c9
Compare
This was referenced Sep 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The Windows parity ledger has 35
Partialrows, and a large share of them werestuck for the same reason: nobody had recorded precisely what the shipping macOS
app actually does. Windows sessions were implementing against prose in the
ledger rather than against observed macOS behavior — and at least one of those
sentences turns out to be misleading (see below).
What this adds
investigation/macos-parity-evidence/— the captured answer, produced by runningthe existing
investigation/macos-parity-evidence-agent-prompt.mdon a macOShost against GraphCode 0.1.76 (299), built from
717240cdb373a2c00644842c429f06e520d15f51, which is the exact commit thisbranch targets.
macos-parity-evidence-report.md— row-by-row findings for all 35Partialrows, verified requirements, Windows implementation candidates W1–W7,
prerequisites/blockers, an explicit Not verified list, and an artifact index.
evidence/— 26 unaltered window captures, mapped to ledger surfaces.README.md— provenance and, importantly, the trust boundary.Why it is trustworthy
Every claim in the report is marked
S(inspected source),T(test source) orR(direct observation of the running app), and confidence is rated on thebounded finding rather than on blanket platform equivalence. Ten Swift
suites were executed once: 113 passed, 0 failed, 0 skipped. The report states
plainly that this is focused automated evidence, not a full
make test.It is equally explicit about what it did not establish. Terminal VT output,
IME, clipboard, Codespaces and a real update were deliberately not exercised and
are recorded as unobserved, not absent.
What it does not do
It does not validate any Windows code path, and no ledger row changes status
in this PR. A row still needs its own Windows runtime evidence to leave
Partial. I deliberately left the ledger untouched so this does not collidewith the parity sessions currently editing individual rows.
Two observed macOS behaviors are recorded as defects, not parity targets, so
Windows does not copy them: nested Main
Rename…is offered but never opens itsalert (root-only lookup in
ProjectFeature.swift), and the edge cycle-guard formvisibly clips its labels. macOS accessibility sample buttons were also found
unlabeled; Windows UIA should be fixed on its own merits.
Already load-bearing
One finding is immediately actionable and corrects the ledger. The
Worktree notice chiprow currently reads as though macOS excludes prunable worktreesfrom its count. It does not:
The 7/8 notice boundary was observed live and is captured in
eight-worktree-notice-original.pngandseven-worktrees-no-notice-original.png.That row's owning session is correcting the text and its implementation
separately.
Privacy
investigation/**is covered by the always-onInvestigation privacy scan.Captures contain only disposable
Alpha/Betafixtures, an isolated bundle IDand a temporary unregistered daemon — no real project, account, provider,
Codespace or release. The worktree sweeper's full-window capture was withheld by
the capturing agent because it renders a local path. I re-verified independently:
no NTFS alternate data streams, no local paths, no usernames or emails.
Size
This adds ~17 MB of PNGs, which is far larger than the existing
investigation/visual-baseline(~195 KB). I am flagging it rather than buryingit. I kept the files byte-for-byte as captured: recompressing or downscaling
would break the "unaltered original" property the report's evidentiary value
rests on. If reviewers would rather these live outside git history, say so and I
will move them — the report alone is 51 KB and carries most of the value.
Test plan
Documentation/evidence only; no product code changes. The privacy gate is the
real guard here, so I proved it actually fires rather than assuming it.
RED: planted
$env:USERPROFILE+GraphCode-worktreesinto a probe file under investigation/, thenpwsh -NoProfile -File Tools\windows\validate.ps1 -Task privacy-> exit 1, "Environment-specific content matched 'C:\Users\coneilen'" (behavioral failure, not a compile error; probe then deleted)GREEN:
pwsh -NoProfile -File Tools\windows\validate.ps1 -Task privacyagainst the committed evidence -> "Privacy checks passed", exit 0REGRESSION:
pwsh -NoProfile -File Tools\windows\validate.ps1 -Task visual-baseline-> "VisualBaseline.Tests.ps1: PASS", exit 0;pwsh -NoProfile -File Tools\windows\validate.ps1 -Task tdd-evidence-> "TDD evidence: PASS", "TddEvidence.Tests.ps1: PASS", exit 0;git diff --check origin/main...HEAD-> no output, exit 0Limits of this test plan
These runs validate repository hygiene and contract tests only. They establish
nothing about macOS or Windows runtime behavior. The macOS evidence in this PR
was captured on a separate host and is reproduced here as an artifact; CI does
not re-run it.
Correction. An earlier version of this description predicted the Windows and
macOS jobs would skip by path gating because this PR touches only
investigation/**. That was wrong, and the live run disproved it:windows-shell,windows-spikes,macosandLinux buildall ran.The cause is correct fail-safe behavior, not a bug.
Tools/ci/classify-changes.shtreats
*.mdas docs-only, but.pngmatches no suite pattern and no docs-onlypattern, so each capture falls through to the final
unclassified pathbranch andcalls
all(). Reproduced locally against this PR's own file list:git show --name-only --format= 10173c9f | bash Tools/ci/classify-changes.sh --event pull_request --stdin->classify-changes: unclassified path '...evidence/alpha-composite-empty-original.png'; running every suite.(one line per capture), thenwindows=true macos=true linux=trueI am leaving the classifier alone. Running everything on an unrecognized path is
the safe default, and widening it to cover
.pngwould be a separate change to CIpolicy that this evidence PR should not carry. Recording it so the behavior is
understood rather than rediscovered.
Checklist