Files
meeting-assistant/openspec/changes/complete-macos-feature-parity/review-receipts/dry.md
T
dh 728e66dd72
PR and Push Build/Test / windows-build-and-test (push) Failing after 38m25s
PR and Push Build/Test / portable-build-and-test (push) Successful in 8m9s
PR and Push Build/Test / macos-native-full (push) Skipped
ci: consolidate platform pipelines and test prerequisites on macOS support
2026-10-06 09:02:19 +02:00

7.1 KiB

DRY review receipt — Ticket 01

Reviewer: independent /root/review_dry; read-only review, 2026-10-03.

Scope identity

  • Repository: /private/tmp/meeting-ticket01-closeout (Git root confirmed).
  • Base: 1b19b08f2e62398661dc24692ce4b776e90e715f.
  • Fixed initial diff: /private/tmp/meeting-ticket01-review.diff, SHA-256 af701f7d01f0a7191d27bbd5c6ab614650a9915f2e496da3b295371c86590ffa.
  • Scoped paths: /private/tmp/meeting-ticket01-review-files.txt, SHA-256 f59d9c9c6d1905b25d9b2ccfd1845eef03501dccbc0f275d5351bd816bce2eea.
  • Final candidate: /private/tmp/meeting-ticket01-review-final.diff, SHA-256 40c69e017e5047b0d59348d22ec879122a9f6d02f4f232843847e8fdefe98dac.
  • Current content manifest: /private/tmp/meeting-ticket01-reviewed-content.sha256, SHA-256 b411b6ddffc6ca4e7c2a76c37ff48a49253073e0382abd0ccb213bc531be2a82; all 51 scoped file hashes matched the working files at review refresh.
  • Scope includes the existing macOS communication prerequisite, Ticket 01 code/test/spec work and the final CI/README/Wine-documentation integration. Future parity-owner changes remain excluded.

Inputs and assigned coverage

Read code-review skill and review criteria, repository README/AGENTS/config, communication request and parity verification requirements, active change designs/tasks/proposals, and Ticket 01 evidence. Inspected the fixed diff plus adjacent implementations and tests.

DRY coverage: shared request lifecycle; adapter decisions and lifetimes; native notification/menu transport and window construction; platform-test target/skip knowledge; HTTP fixture isolation; verifier code and synthetic fixtures; requirement ownership and evidence references. Repository DRY surrounding-context rule was applied. The final old-to-new delta was inspected separately; unchanged initial coverage carried forward. Behavioral verification was reused, not rerun.

Result

Final DRY outcome: clean for the pinned 51-file candidate. No actionable binding or heuristic DRY finding, and no material behavioral defect found.

  • The request store owns common decision/deadline/cancellation handling; adapters retain distinct approval, inactivity and calendar semantics. Native notification and menu decisions share response construction; ordinary and approved native windows share construction.
  • IsolatedApplicationFactory consolidates background isolation while fixtures opt into the activity they test. The verifier is linked into test compilation, so its implementation has one owner.
  • Exact expected case names, target markers and totals in verifier fixtures are an independent test oracle. Sharing them directly with the checker would weaken regression detection. Explicit project target declarations are guarded by the public composition test.
  • Small repeated request-completion statements, notification identifier spelling and test setup do not presently justify a new abstraction: no inconsistent behavior or separate maintenance policy was found.
  • Supplementary parity evidence references the original communication acceptance tasks and preserves their historical result/limits; the two changes retain distinct ownership.
  • CI's repeated commands serve distinct Wine and portable setup/runtime boundaries. Both jobs invoke the same C# artifact verifier. Native Windows, Wine and portable documentation has distinct invocation purposes and links the common verification requirements; no inconsistent maintenance decision was found.

Verification and closeout limits

Coordinator supplied the initial critical-requirements receipt: 295 original content hashes verified; actual portable suite 641 results / 639 passed / 2 reasoned skips; Linux subset 22 / 15 passed / 7 reasoned skips; focused HTTP 21 passed; verifier synthetic fixtures 38 passed. Portable sources and the portable conditional package graph are unchanged by the Windows-only H.NotifyIcon core-package correction, so that portable evidence carries forward. The subsequent actual full portable rerun also passed with 641 results / 639 passed / 2 reasoned Windows skips / 0 failed and all seven native helper self-test groups; its evidence is recorded in artifacts/tests/ticket01/closeout/receipt.md.

The coordinator's refreshed current-graph check reports normal, unsuppressed Windows application and test-target cross-builds on macOS with zero errors; the direct H.NotifyIcon graph has no Windows App SDK/MSIX/PRI dependency. This supersedes the old package graph's limited-compile/MakePRI failure as current build evidence. Actual Windows/Wine runtime discovery and assertions remain unavailable, and current remote CI plus native UI acceptance remain unverified. Tasks 1.1 and original communication 4.2/4.4 remain open as recorded; their closure is not inferred from cross-compilation.

This is a final structural DRY receipt for the supplied limited-implementation scope, not full original acceptance or technical completion. It grants no delivery or prerequisite-commit authorization.

Bounded communication-owner requirement refresh

The earlier outcome above applies to the original 51-file candidate. A later five-line replacement in openspec/changes/add-macos-desktop-controls/specs/meeting-session/spec.md:30 is reviewed here only for DRY requirement knowledge and ownership; unchanged coverage carries forward. No runtime implementation, test or configuration changed, and no future-parity owner plan was added to the review.

  • Current diff: /private/tmp/meeting-ticket01-review-final-v2.diff, SHA-256 6a9e70bb5dcf0e20f19dd029bdd251f14e528d03037a0a35140254b03066a28b.
  • Current 52-file manifest: /private/tmp/meeting-ticket01-reviewed-content-v2.sha256, SHA-256 147f83cfe076e27aa5ff29eedc8e9084e2b2e9ee39f9c7ab8a5d834100a0928d; all 52 current hashes verified.
  • Corrected owner spec SHA-256: 7dde9acdcbf2b0917e91e82d1078cb1405d715379eb98f68ea5eff09c48697de.

Delta outcome: clean. The desktop-owner scenario now describes an unanswered pending approval expiring or canceling without opening/changing the agent conversation. The communication capability continues to own the shared managed lifecycle, explicit consent, notification/menu independence and approved independent sessions. The owner scenario expresses the desktop outcome of that contract without duplicating deadlines, callback rules or transport implementation. Hiding/dismissal does not grant consent in either requirement; no inconsistent or competing maintenance rule remains. No actionable binding or heuristic DRY finding.

Read the current closeout requirements addendum and its expected-versus-observed contract mapping. Existing actual Passed deadline/cancellation, workflow-denial and stale-project-association tests support this narrow requirement; the native delegate's ignored dismiss/default actions and passed self-tests support its presentation rule. No tests were rerun for this review. Actual notification dismissal clicks, Windows/Wine runtime discovery/assertions and current CI remain the existing acceptance limits.

Current DRY outcome: clean for the 52-file identity through carried-forward 51-file coverage plus this bounded owner-spec refresh. This does not assert full original acceptance or delivery authority.