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,30 @@
# Ticket 02 structural review receipt — DRY
Reviewer: independent delegated agent `/root/ticket02_dry_review`; first pass in DRY → SOLID → KISS. Date: 2026-10-06. Repository: `/Users/dh/Documents/DanielsVault/_ops/meeting-assistant`.
## Identity and provenance
- Fixed Git base: `1164c26846686c1912fd1816cd06de80352e9504`, plus the recorded pre-Ticket02 dirty baseline under `/private/tmp/meeting-ticket02-closeout/baseline`.
- Review delta: `/private/tmp/meeting-ticket02-closeout/review.diff`; SHA-256 `59806cc2bfafe2713a1d26ea493dc94562ae41a240c038e1579c4d92a5c10fd2` (independently verified).
- Current 15-file manifest: `/private/tmp/meeting-ticket02-closeout/reviewed-content.sha256`; SHA-256 `b22cf4a6fafd308bdd5537844794a2c9007268ad215fb52b452fe0612de3fb3b` (independently verified). `shasum -a 256 -c` matched every listed current file.
- Assigned criteria: `/Users/dh/.codex/skills/code-review/references/review-criteria.md` DRY brief. Sources read: vault navigation index, repository AGENTS and README, platform-parity-verification specification, Ticket02, closeout requirements evidence, changed sources/procedures/evidence, neighboring Outlook verifier gate, PNG/WAV utilities, Windows crop contract and native Mac crop context.
## Properties checked
Repeated acceptance knowledge and predicates, fixture recipes versus generated references, independent test oracles, adjacent utilities and native crop contracts were compared for shared meaning and change reasons. The generator follows the C#/.NET file-based application preference and keeps its preparation slice together. Reusing CLI tools `say`/`afconvert` fits their actual native synthesis dependency.
## Findings
**DRY-01 — P3 heuristic: share the named Windows pass gate.** `tools/VerifyPlatformTests.cs:148–157` copies the existing Outlook loop at lines 138–147: find the exact test record, require one discovery and exactly one Passed record, then append the named pass line. The sole semantic difference is the group label in the diagnostic. These two groups implement the same fail-closed acceptance rule and will need the same fixes whenever that rule changes. Use one small private method taking the names and diagnostic label, invoked for Outlook and Windows crop; preserve current labels/order and public behavior. Benefit: one authoritative predicate for the required named Windows assertions. Material risk addressed: a later verifier correction being applied to one group while the other retains weaker acceptance. This is a maintenance suggestion, not a present correctness defect or a binding-rule violation; no broader framework or shared runtime abstraction is warranted.
No other actionable DRY finding. Keep literal case names in synthetic tests independent from verifier-owned case lists so an accidental removed requirement cannot silently update the oracle. Keep the new per-coordinate opaque native image distinct from `PngTestFixture` solid images, which cannot detect a shifted crop origin. The standalone fixed PCM helper and existing runtime WAV writers have different dependency/usage boundaries; moving fixture generation into the application would add coupling. The generated WAV/JSON records and their evidence hashes are intentional immutable references, not a second editable implementation.
## Result and limits
No binding DRY violation or discovered behavior defect. One bounded heuristic improvement, DRY-01, is suitable for the authorized refactoring pass. No source edits, tests, backend requests, service operations, remote operations or archive actions were performed. Only this review receipt was written. Original Windows runtime/native/backend/CI acceptance remains UNVERIFIED; this review does not supply that evidence. Any implementation repair changes the reviewed content identity and needs a focused DRY follow-up before treating this receipt as covering that repair.
## Bounded follow-up disposition — 2026-10-06
The implementing coordinator consciously defers DRY-01 at the accepted preparation closeout. The short explicit groups retain separately named diagnostics and independently tested fail-closed behavior. Extracting the predicate now would change the exact compiled/tested source identity without satisfying any currently missing Windows runtime/native/backend/CI acceptance criterion. This is a bounded maintenance tradeoff; the suggestion remains useful if this verifier predicate next changes.
Independent reassessment: deferral leaves no binding DRY violation and introduces no material unresolved current risk. The present predicates agree, their behavior has explicit synthetic coverage, and no present correctness defect was found. The remaining risk is future inconsistent maintenance, already described in DRY-01; it does not prevent closure of the accepted preparation scope. Rechecking both packet digests and all 15 manifest entries confirmed unchanged reviewed content identity (`59806cc2bfafe2713a1d26ea493dc94562ae41a240c038e1579c4d92a5c10fd2` diff; `b22cf4a6fafd308bdd5537844794a2c9007268ad215fb52b452fe0612de3fb3b` manifest). No repository content was changed. DRY pass disposition: complete with DRY-01 consciously deferred; SOLID may proceed on this same candidate.
@@ -0,0 +1,32 @@
# Ticket 02 KISS review receipt — 2026-10-06
Outcome: **clean for the accepted preparation scope**. No actionable binding violation, heuristic simplification finding, or newly discovered behavioral defect. This is an independent third sequential structural pass; the DRY/SOLID conclusions were not read or used as a desired result.
## Pinned candidate and scope
- Repository: `/Users/dh/Documents/DanielsVault/_ops/meeting-assistant`.
- Base: HEAD `1164c26846686c1912fd1816cd06de80352e9504`, plus the recorded pre-Ticket02 dirty baseline. This candidate has no identifying commit yet.
- Diff: `/private/tmp/meeting-ticket02-closeout/review.diff`; SHA-256 `59806cc2bfafe2713a1d26ea493dc94562ae41a240c038e1579c4d92a5c10fd2`.
- Reviewed-content manifest: `/private/tmp/meeting-ticket02-closeout/reviewed-content.sha256`; SHA-256 `b22cf4a6fafd308bdd5537844794a2c9007268ad215fb52b452fe0612de3fb3b`.
- Both identity hashes were checked. All 15 files in the `current/` snapshot passed the manifest check. The diff's text changes and corresponding snapshot contents were inspected; the two WAV binary additions were identified by their checked hashes and source-reference manifests.
- Adjacent crop implementation, crop interface, production registration/ASR endpoints, isolated factory, WindowsFact, test project, and macOS native crop test were read only as relevant context. Their hashes match the candidate's platform input manifest. Newer closure bookkeeping was excluded.
The requirements/verification packet expressly scopes acceptance to crop-test preparation, fail-closed verifier behavior, known fixture/generator preparation, procedures and honest evidence. Actual Windows/Wine assertions, Windows backend inventory/results and current-content external CI remain unverified. A clean structural result does not close those original operational criteria or authorize OpenSpec archive.
## Assigned standards and properties
| ID | Standard/property | Evidence and assessment |
| --- | --- | --- |
| KISS-C01 | Current smallest clear design; meaningful naming | `MeetingAssistant.Tests/WindowsScreenshotImageCropperTests.cs:13` exposes the three required named cases. Its local fixture and shared valid-crop assertion keep preparation, invocation, verification and disposal close together. Names distinguish origin, pixel preservation and rejection. The every-pixel assertions and ten invalid cases are meaningful contract coverage, without a new framework or production seam. |
| KISS-C02 | Public behavior tests; genuine platform boundaries | Crop tests use the registered public `IScreenshotImageCropper` and assert the required real implementation. `#if WINDOWS` plus `WindowsFact` reflect target and compatible-runtime requirements. The existing isolated factory suppresses background work while preserving registrations; creating its client starts that test composition. Existing macOS native crop and common pipeline tests are preserved. No early successful return substitutes for native assertions. |
| KISS-C03 | Understandable verifier logic and test scope | `tools/VerifyPlatformTests.cs:46` adds an explicit set of three required names to the existing small checker. Required passed records and portable class exclusion are direct decisions. `MeetingAssistant.Tests/PlatformTestVerificationTests.cs:146` covers missing discovery/execution, reasoned native skips, and class contamination on two reported hosts through the public verifier. Synthetic XML data stays labeled as checker fixtures. No speculative configurable evidence engine is needed. |
| KISS-C04 | Personal C#/.NET, file-app and vertical-slice preferences | `tools/CreateBackendSpeechFixtures.cs:1` is a .NET 10 file-based C# app. Its complete use case remains in one file: fixed recipes, native clips/conversion, checked mono PCM, WAV/manifest output and temporary cleanup. Two recipe/source records describe actual inputs; the small native-process and PCM helpers express real technical work. Native macOS tools are documented dependencies. There is no new separate project, unnecessary layer, or language deviation. |
| KISS-C05 | Delivered CLI purpose, entry point, invocation, dependencies and side effects | `docs/fixtures/backend-acceptance/README.md:18` documents the generator's purpose, exact entry point/command, .NET/native tools/voices, output/temp effects, existing-output refusal and exit codes, and synthesis variability. `docs/platform-test-verification.md:52` documents the existing verifier's corresponding contract and read-only artifact behavior. The helper implementations agree with these descriptions. |
| KISS-C06 | Source/evidence clarity and native-vs-synthetic separation | `docs/windows-platform-acceptance.md:17` separates cross-compilation, native crop execution and synthetic checker coverage. The fixture README and both JSON manifests consistently identify synthetic source voices and frame-derived whole-clip intervals, rather than natural-human or forced-alignment accuracy. The evidence document identifies actual macOS host/target counts, compiled-symbol-only Windows preparation, unknown Windows process settings, unavailable CI proof, and finalizer/live-fallback limits. No generated WAV or transported response is represented as native Windows backend acceptance. |
| KISS-C07 | Remaining manually checked repository rules | Relevant OpenSpec ownership is retained; `tasks.md` records preparation while leaving original runtime tasks unchecked. Ticket 01 and communication 4.2/4.4 are referenced without scope/history rewrites. Source/test ownership remains in this repository; no deployment ownership or workflow-engine behavior is changed, so the workflow reference update rule is not triggered. Procedures respect active recording/finalization and restrict credential evidence to availability. |
## Verification and findings
Compilation, actual artifact/fixture checks, TDD receipts, strict OpenSpec validation and whitespace checks are assigned to the preceding requirements verification; their recorded results were reused. No tests, live requests, remote actions, source changes or repository cleanup were performed by this reviewer. Only this receipt was written.
Binding findings: none. Heuristic suggestions: none. No material maintenance or regression risk justifies a simplification change to the pinned preparation. Remaining material uncertainty is the already declared Windows/Wine/backend/CI execution gap, outside this accepted bounded scope.
@@ -0,0 +1,20 @@
# Ticket 02 — independent SOLID receipt
Reviewer: `/root/ticket02_solid_review`; date: 2026-10-06. Second sequential structural pass, SOLID only. Review basis: repository AGENTS.md, `code-review` skill and SOLID criteria, and the actual verification in `requirements.md`. No prior reviewer findings were read to guide the result.
Repository: `/Users/dh/Documents/DanielsVault/_ops/meeting-assistant`. Fixed base: `1164c26846686c1912fd1816cd06de80352e9504` plus the recorded pre-Ticket02 dirty baseline. Candidate: the 15 fixed files in `current/`, compared with `baseline/`; no commit identifies it. Diff SHA-256: `59806cc2bfafe2713a1d26ea493dc94562ae41a240c038e1579c4d92a5c10fd2`. Content-manifest SHA-256: `b22cf4a6fafd308bdd5537844794a2c9007268ad215fb52b452fe0612de3fb3b`. Both packet hashes and all 15 current-file hashes matched during this review. Later ticket-closeout editorial bookkeeping is outside this fixed candidate.
## Assigned standards and inspected boundaries
- Public crop interface and Windows host composition: `WindowsScreenshotImageCropperTests.cs:24–79`, production `IScreenshotImageCropper`, Windows registration in `Program.cs`, `WindowsScreenshotImageCropper.Windows.cs`, `IsolatedApplicationFactory`, `TestTargetCompositionTests`, `WindowsFactAttribute` and test-project target/reference composition. Tests exercise the registered interface without replacing the crop implementation; the concrete type assertion establishes the native-backend requirement. The existing factory removes background activities while retaining this registration.
- Fixture responsibilities, dependencies and error handling: `CreateBackendSpeechFixtures.cs`, fixture README and both reference manifests, with adjacent `SpeakerCompositeWav`, `PcmWavAudioChunkReader` and `SampleWavFixtureTests` as context. The file-based helper owns one coherent generation use case; native process invocation and PCM validation have bounded functions. Standard-library code plus required native speech/conversion tools avoids importing the application or its NAudio/backend dependencies. CLI prerequisites, non-overwrite validation and native/conversion failures are explicit for the supported invocation.
- Verifier artifact interface and fail-closed integrity: `VerifyPlatformTests.cs:54–215`, its narrow diff and `PlatformTestVerificationTests`. The verification method accepts supplied discovery/XML independently of CLI file access. Existing matching-name, duplicate, outcome, host/target, skip-reason and counter checks remain intact. Added native crop evidence requires each named Passed result, and portable evidence excludes the entire native class, including a portable run on Windows.
- Honest host/backend evidence contracts: platform-verification documentation, Windows procedure, fixture metadata, active-change evidence and issue/task annotations. Source-clip timing and synthetic voices are qualified; native execution, current external CI, actual Windows process/profile configuration and real backend/finalizer results remain separate from compilation and synthetic artifact tests. No interface or evidence contract silently supplies Windows acceptance from the portable suite.
## Result
Binding-rule violations: none found in the assigned scope. Actionable SOLID heuristic findings: none. Responsibilities and dependency seams fit the finite prepared slice; adding replaceable synthesis/provider abstractions or splitting this verifier into a framework has no demonstrated maintenance benefit for the current requirements.
## Limits
This is static review of the fixed candidate and nearby relevant context, with identity checks only. No source edits, new tests, live requests, remote changes or service actions were performed. Existing requirement-verification evidence was reused: native Windows crop/runtime assertions, actual Windows backend inventory/results and current-content external CI remain unverified. The result supports the accepted bounded preparation, not full original Windows operational acceptance or OpenSpec archival.