ci: consolidate platform pipelines and test prerequisites on macOS support
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

This commit is contained in:
dh committed 2026-10-06 09:02:19 +02:00
1 parent 1b19b08f2e
commit 728e66dd72
76 files changed
+7477 -239

No files matched your search

@@ -0,0 +1,52 @@
# 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.
@@ -0,0 +1,44 @@
# KISS review — Ticket 01 / macOS communication prerequisite
Reviewer: independent KISS agent. Date: 2026-10-03. Final status: clean for the current 52-file candidate; KISS-01 resolved by a bounded specification repair.
## Initial candidate identity
- Git root: `/private/tmp/meeting-ticket01-closeout`.
- Base/checkout HEAD: `1b19b08f2e62398661dc24692ce4b776e90e715f`.
- Scoped diff: `/private/tmp/meeting-ticket01-review-final.diff`, SHA-256 `40c69e017e5047b0d59348d22ec879122a9f6d02f4f232843847e8fdefe98dac`.
- 51-file substantive-content manifest: `/private/tmp/meeting-ticket01-reviewed-content.sha256`, SHA-256 `b411b6ddffc6ca4e7c2a76c37ff48a49253073e0382abd0ccb213bc531be2a82`; every listed file verified against the checkout.
- Generated evidence documents and the 295-file assurance manifest are supplementary evidence, outside that 51-file binding identity. Unrelated future-owner parity work remains excluded.
## Resolved finding
**KISS-01 — [P2] Reconcile the obsolete active approval scenario**
Binding repository rule: `AGENTS.md` makes active OpenSpec requirements an authoritative behavior source; the communication change also explicitly promises this reconciliation in `openspec/changes/add-macos-user-communication/design.md:28`.
Nearby context `openspec/changes/add-macos-desktop-controls/specs/meeting-session/spec.md:30-34` still says unavailable approval notifications cause immediate decline and a direct automatic prompt reports a platform limitation. The reviewed new `desktop-user-requests` capability, implementation and operational documentation instead retain requests in the menu when notification permission/presentation is unavailable and open valid approved prompts independently. The prerequisite therefore leaves contradictory active requirements and its design claims an adjustment absent from the candidate. A subsequent maintainer could reinstate the removed behavior or assess acceptance against the wrong contract.
Expected change: include only the communication-specific scenario correction from the mixed owner file, preserving unrelated future parity work. Describe an unanswered/canceled/expired decision as granting no approval and notification dismissal as preserving the pending menu request. No production change was requested. The final bounded refresh below verifies that repair.
## Unaffected coverage
- KISS naming/readability/minimal structure: production request store, prompt adapters, request endpoints, independent session routing, AppKit/UserNotifications host/state, packaging, test-host isolation, test target composition and artifact verifier inspected with adjacent production interfaces/view-model/service composition. No actionable implementation finding or speculative abstraction recommendation.
- Required lifecycle/concurrency state supports current once-only responses, original lifetimes, menu fallback and independent conversations; the lazy session factory has the documented dependency-cycle reason. The verifier remains a small standard-library C# file-based app. Managed feature logic stays in .NET; Swift/embedded JavaScript are the existing required native/UI bindings.
- Tests use public behavior boundaries and explicit native capability skips; deterministic clocks, blockers and synthetic TRX fixtures support the requirements without introducing an unnecessary framework. Synthetic fixtures are clearly distinguished from actual Windows evidence.
- README, configuration/workflow guides, platform verification entry points and CI/Wine command paths are coherent. Helper purpose, invocation, .NET 10 dependency and read-only side effects are documented. CI retains separate portable/Windows evidence and requires verifier success.
- Existing active changes own the requested work; task annotations preserve the open Windows/UI acceptance boundaries. Historical communication evidence remains dated and current totals have their own evidence. No live application restart, deployment, cleanup or unrelated work mutation occurred in this review.
- Tooling results reused from the current verification packet: portable suite 641 cases (639 passed, 2 reasoned Windows skips, 0 failed); seven native groups; HTTP subset 21 passes; Linux subset 22 cases (15 passes, 7 skips); 38 verifier fixtures; normal unsuppressed Windows application/test cross-builds with 0 errors; strict OpenSpec, workflow syntax and diff-check receipts. No tests repeated by this reviewer.
## Limits and authority
Actual Windows/Wine discovery/assertion execution, CI artifact upload and native notification/menu UI acceptance remain unverified. Their tasks remain open. Review grants no commit, push, merge, archive, tracker closure or live-service action authority.
## Final bounded refresh
Performed after the requirements delta addendum and the same DRY then SOLID reviewers' current bounded refresh receipts were complete. 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`. Both hashes and all 52 current file entries matched. Generated evidence updates remain outside this binding identity. Initial unaffected coverage carries forward.
The additional five-line owner-spec replacement at `openspec/changes/add-macos-desktop-controls/specs/meeting-session/spec.md:30` now describes an unanswered pending request expiring or canceling without opening/changing an agent conversation. Hiding or dismissing the native notification does not approve it. Corrected spec SHA-256: `7dde9acdcbf2b0917e91e82d1078cb1405d715379eb98f68ea5eff09c48697de`. This removes the obsolete notification-unavailability/unsupported-prompt rule and coheres with the communication capability's independent pending-menu lifecycle and explicit valid consent. Surrounding existing desktop scenarios are retained; unrelated future owner requirements remain excluded. The wording is concise and requires no added abstraction or implementation.
Reviewed the requirements addendum in `artifacts/tests/ticket01/closeout/receipt.md` and the actual Passed TRX record extract `contract-delta-proof.txt`. Existing deadline, origin-cancellation, approval expiry/cancellation, workflow denial/expiration/shutdown and unapproved/stale association tests support the revised contract. Native dismissal/default-action handling and passed state self-tests support its code-level presentation rule; actual native dismissal clicks remain unverified. Corrected owner strict validation passed. No test was repeated, source changed, or application started by this reviewer.
**KISS-01: resolved. Final KISS outcome: clean, with no outstanding binding-rule violation or material heuristic finding in the reviewed 52-file scope.** Windows runtime/CI and native UI acceptance limits, and all delivery-authorization boundaries, remain unchanged.
@@ -0,0 +1,29 @@
# SOLID review receipt — Ticket 01
Reviewer: independent `/root/review_solid`; read-only review on 2026-10-03. No candidate edits, application starts, live-service actions or repeated test runs.
Repository: `/private/tmp/meeting-ticket01-closeout`. Fixed base: `1b19b08f2e62398661dc24692ce4b776e90e715f` (`fork/codex/macos-support`, resolved from refs and confirmed by coordinator).
Candidate identity:
- Diff: `/private/tmp/meeting-ticket01-review-final.diff`, SHA-256 `40c69e017e5047b0d59348d22ec879122a9f6d02f4f232843847e8fdefe98dac`.
- Scoped current-content manifest: `/private/tmp/meeting-ticket01-reviewed-content.sha256`, SHA-256 `b411b6ddffc6ca4e7c2a76c37ff48a49253073e0382abd0ccb213bc531be2a82` (51 code, spec, config and documentation files). All 51 current file checksums match. Generated evidence/hash records are outside this identity.
- Scope: existing macOS communication prerequisite plus Ticket 01 test-target, isolation, verifier and CI changes; future parity-owner implementations excluded.
Result: **clean; no actionable binding-rule violation or material SOLID heuristic finding**.
Coverage: inspected the diff and surrounding production/test code against repository AGENTS.md, README, relevant OpenSpec requirements/design/tasks, and the current Windows assurance evidence. Checked coherent request-lifecycle ownership, existing prompt interface substitution, validation and failure contracts, original callback lifetimes, shutdown/duplicate/expired response behavior, native transport versus managed business ownership, independent session lifetime and prompt startup, lazy dependency resolution, matching application/test TFMs, Windows/native helper isolation, fixture-only hosted-service suppression with explicit re-enablement, and CI/verifier fail-closed evidence contracts. C#/.NET preference is satisfied by the standalone verifier; Swift is confined to the existing Apple-framework helper boundary. Source/CI ownership stays in this repository; no deployment or active-meeting action is introduced by closeout.
Requirements evidence reviewed and reused: 641 portable results (639 passed, 2 reasoned Windows skips); 22 Linux focused cases (15 passed, 7 reasoned skips); 21 HTTP checks; 38 synthetic verifier fixture cases; seven actual native helper groups. Current normal Windows application and test builds pass with zero errors and no resource suppression after the existing core tray-package correction. Coordinator confirmed the refreshed portable suite used the unchanged candidate inputs.
Unverified boundaries remain explicit: real Windows-TFM discovery/assertion execution, CI runner execution/artifact publication, native notification/menu UI acceptance and later parity-ticket operations. An exit-zero discovery with testhost error and no cases is rejected, not counted as evidence. OpenSpec Task 1.1 and original communication Tasks 4.2/4.4 remain unchecked. This receipt grants no commit, push, merge, archive or ticket-close authority.
## Bounded refresh after KISS-01
Current identity: `/private/tmp/meeting-ticket01-reviewed-content-v2.sha256`, SHA-256 `147f83cfe076e27aa5ff29eedc8e9084e2b2e9ee39f9c7ab8a5d834100a0928d` (52 files); `/private/tmp/meeting-ticket01-review-final-v2.diff`, SHA-256 `6a9e70bb5dcf0e20f19dd029bdd251f14e528d03037a0a35140254b03066a28b`. Both identity hashes and all 52 current file checksums matched. Original 51-file coverage above remains valid without reopening unchanged implementation.
Only additional binding delta reviewed: five lines in `openspec/changes/add-macos-desktop-controls/specs/meeting-session/spec.md` correct the existing owner's automatic-approval scenario. Unanswered pending workflow/project requests expire or cancel without mutating an agent conversation; notification hiding/dismissal cannot approve them. Spec SHA-256: `7dde9acdcbf2b0917e91e82d1078cb1405d715379eb98f68ea5eff09c48697de`.
Result: **clean; no new SOLID finding**. The corrected owner scenario is coherent with the managed request lifetime, explicit-Yes adapter contract, workflow owner's guarded window creation, public project-association refusal path, and native delegate's ignored dismiss/default actions. It places the fallback rule with its existing desktop owner and introduces no dependency, responsibility or substitution conflict. Unrelated future parity requirements remain excluded.
Reused actual requirements evidence from `artifacts/tests/ticket01/closeout/receipt.md` and its `contract-delta-proof.txt`: current TRX Passed records for deadline/origin cancellation, both approval expiry/cancellation cases, workflow denied/expired/shutdown, and all four unapproved/stale project-association cases; corrected owner strict validation passed. No test repetition or source edits were performed. Prior Windows runtime/CI and real native UI acceptance limitations are unchanged.