forked from Manuel/meeting-assistant
70 lines
13 KiB
Markdown
70 lines
13 KiB
Markdown
# Ticket 02 — Windows platform acceptance evidence
|
||
|
||
Implementation evidence date: 2026-10-03; closeout update: 2026-10-06. Current status: **prepared slice accepted and local Ticket 02 closed; actual Windows verification incomplete; local commit pending prerequisite inclusion decision**. No Windows criterion is marked passed from a portable run or cross-build. Ticket 01, its comments/completion evidence and the original communication Tasks 4.2/4.4 are preserved.
|
||
|
||
The implementation observations below retain their original date and scope. The user's later acceptance explicitly closes the local ticket for this preparation without claiming original operational acceptance. Requirements verification, sequential structural reviews, cleanup and separate delivery status are recorded in [windows-platform-acceptance-completion.md](windows-platform-acceptance-completion.md).
|
||
|
||
## Ownership, routing and content
|
||
|
||
Owning Git root: `meeting-assistant`. Current and intended delivery branch: `codex/macos-support`; initial/current HEAD: `1164c26846686c1912fd1816cd06de80352e9504`, with extensive pre-existing uncommitted work. Changes were prepared and checked in an isolated source copy before transfer. Existing files were verified against the initial baseline before transfer. No commit, push, merge, deployment, live restart or ticket closure is part of this implementation request.
|
||
|
||
`openspec list --json`, `openspec status` and `openspec instructions apply` select the active `complete-macos-feature-parity` change and its `platform-parity-verification` contracts. The repository-local `openspec-apply-change` and `tdd` skills were used. No new proposal is needed: the accepted Ticket 02 and this active change already define the crop, target and backend verification scope. No production API, persistence, backend-selection or rejection semantics were changed.
|
||
|
||
The [platform input manifest](windows-platform-acceptance-content.sha256) identifies the application, native, test, fixture, build, CI and verifier inputs used by the current platform checks. Manifest SHA-256: `aae730c74a8b5f2dd7f4c4596b34459e116578b094c226caeba6c761a1a0a3dd`. The separately developed speech-fixture generator is outside the platform project inputs and has its own final fixture/source manifest under `artifacts/tests/ticket02/`. Its final file-based app setting was corrected while the project checks were running; all platform-project input hashes still match after the checks.
|
||
|
||
## Actual implementation and observed preparation checks
|
||
|
||
- Three Windows-only public-interface tests resolve the actual registered `WindowsScreenshotImageCropper` from the application composition and verify every expected pixel/dimension at origins (0,0) and (1,1), plus ten invalid-bound cases with no output file. Tests log actual host, architecture, runtime and registration. They are excluded from portable compilation.
|
||
- The existing C# artifact verifier requires those three names in matching Windows discovery/TRX with exactly one passed result each. Omitted, skipped and failed native cases cannot produce a pass. Portable artifacts reject the Windows crop class even when their runtime marker says Windows. Existing Outlook and runtime guards remain required.
|
||
- Known German/English two-source WAV files, reference manifests, a .NET 10 file-based generator and the [Windows acceptance procedure](../../../docs/windows-platform-acceptance.md) are prepared. Each fixture contains six fixed utterances alternating two known synthetic voices, with its own SHA-256, 16-kHz mono 16-bit PCM format, exact duration and frame-derived reference intervals. This supplies inputs for later real backend execution.
|
||
|
||
Artifact paths below are relative to the repository root, under ignored `artifacts/tests/ticket02/`; they are local evidence, not an external CI upload.
|
||
|
||
| Check | Actual host/target | Observed result | Evidence |
|
||
| --- | --- | --- | --- |
|
||
| Verifier TDD, missing crop slice | macOS arm64; portable synthetic artifact tests | Old verifier accepted missing native crop evidence: 3 expected failures, then 41 passes | `verifier/verifier-red-missing-crop.trx`, `verifier/verifier-green-missing-crop.trx` |
|
||
| Verifier TDD, portable contamination slice | Same host; synthetic Linux/Windows runtime markers | Old verifier accepted crop class in portable evidence: 2 expected failures, then 43 passes | `verifier/verifier-red-portable-crop.trx`, `verifier/verifier-green-portable-crop.trx` |
|
||
| Final focused verifier coverage | macOS arm64; `net10.0` | 52 passed, 0 skipped, 0 failed; synthetic checker coverage only | `verifier/verifier-final.trx` |
|
||
| Normal portable Release build | macOS 26.6.2 arm64; SDK 10.0.203; `net10.0` | 0 errors; native Swift helpers built/signed and seven desktop helper self-tests passed | `portable-build.log` |
|
||
| Full current portable discovery/execution | macOS arm64; .NET runtime 10.0.7; `net10.0` | **655 discovered/results, 653 passed, 2 reasoned Windows skips, 0 failed**; CLI checker passes | `portable-discovery.txt`, `portable/portable.trx`, `portable-execution.log`, `portable-verification.txt` |
|
||
| Normal Windows test/application cross-build | macOS arm64; SDK 10.0.203; Windows TFM; `win-x64` | 0 errors; normal resource generation, no suppression; new crop methods compiled | `windows-restore.log`, `windows-tests-build.log`, `windows-compiled-test-symbols.txt` |
|
||
| Known speech fixture preparation | macOS native speech plus .NET generator | Two checked WAV/reference inputs; **no ASR/finalizer request submitted** | `fixture-manifest-validation.txt`, `fixture-generator-verification.md`, `fixture-source-content.sha256` |
|
||
| Actual available service inventory | Installed macOS portable application, .NET 10.0.7 | Healthy/idle; actual default and english profiles select Azure, de-DE/en-US; process Azure key present, value excluded; Windows context unknown | `backend-inventory.md`, safe `backend-live-*` receipts |
|
||
|
||
Two NU1900 warnings in the portable build reflect unavailable vulnerability-feed access; restore used cached packages. Windows restore was cache-only with auditing disabled and its build has four existing NAudio deprecation warnings. Initial local test-harness attempts hit denied Swift cache/TCP access; redirected temporary native caches and scoped test execution resolved those harness limits. A Release `--no-build` attempt before its assembly existed executed no tests; the subsequent normal Release build and the single full executed suite provide the actual evidence.
|
||
|
||
The new crop cases could not run here because no compatible Windows runtime is available. Compiled method names are **compiled-symbol evidence**, not Windows discovery or assertion execution. The existing native macOS crop and common screenshot pipeline tests remain in the successful portable suite. Historical 602-pass and 639-pass portable baselines remain in their original dated records and are not reused as current totals.
|
||
|
||
## Windows acceptance matrix
|
||
|
||
There is no observed Windows process/host/architecture/runtime/profile/model context in this session. `Windows — unknown` below means those fields remain unobserved, not a claim of a provisioned host. The cross-build's x64 RID is documented above and does not populate an execution row. The inventory must expand backend rows into each actual profile/backend/model combination once a Windows process is accessible.
|
||
|
||
| Row | Actual host / target / runtime | Profile/backend/model and prerequisites | Input/result evidence | Acceptance state |
|
||
| --- | --- | --- | --- | --- |
|
||
| W01 | Windows — unknown; required Windows TFM | Compatible Windows Desktop/.NET or demonstrated Wine runtime absent locally | Composition test prepared/cross-built; no Windows execution | **open — not executed: compatible runtime unavailable** |
|
||
| W02 | Windows — unknown; same required TFM | Five Outlook cases remain mandatory in verifier | Compiled existing methods only; no actual Windows discovery/TRX | **open — not executed: compatible runtime unavailable** |
|
||
| W03 | Windows — unknown | Windows per-user environment API | Current portable result is a reasoned skip; no Windows assertion result | **open — not executed: compatible runtime unavailable** |
|
||
| W04 | Windows — unknown | Native bitmap/glyph rendering | Current portable result is a reasoned skip; no Windows assertion result | **open — not executed: compatible runtime unavailable** |
|
||
| W05 | External CI — current candidate unobserved | Exact candidate revision, explicit portable/Windows jobs, artifact access required | External observation receipt discussed below | **open — no current-content external run/artifact proof** |
|
||
| W06 | Windows — unknown; required Windows composition | Real registered Windows cropper | Known 4×3 pixels; two tests cross-built, neither executed on Windows | **open — not executed: compatible runtime unavailable** |
|
||
| W07 | Windows — unknown; required Windows composition | Existing invalid-bound contract | Ten rejection cases cross-built, no native execution | **open — not executed: compatible runtime unavailable** |
|
||
| W-ASR-Azure | Windows — unknown | Effective profiles/languages/models and actual-process key availability unknown | Known WAVs prepared; no Windows request/result | **open — inventory and compatible Windows host required** |
|
||
| W-ASR-FunASR | Windows — unknown | Effective profiles/models, service, Docker architecture/model access unknown | Known de/en inputs; a Mandarin-only model also needs a suitable known fixture | **open — inventory and compatible Windows host required** |
|
||
| W-ASR-Whisper | Windows — unknown | Effective profile/model file/runtime unknown | Known WAVs prepared; no Windows request/result | **open — inventory and compatible Windows host required** |
|
||
| W-DIAR-FunASR | Windows — unknown | Effective finalizer activation/model/service unknown | Known alternating source/time references; no final Windows result | **open — inventory and compatible Windows host required** |
|
||
| W-DIAR-Pyannote | Windows — unknown | Effective finalizer activation/model/token/Docker unknown | Known references; require actual finalizer runtime proof beyond HTTP 200/live fallback | **open — inventory and compatible Windows host required** |
|
||
| W-BACKEND-weitere | Windows — unknown | Other effective combinations unknown until actual process inventory | No omitted combination is implicitly passed or disabled | **open — Windows inventory required** |
|
||
| W-RES | Windows — unknown | Actual Resemblyzer activation/Python/encoder/model unknown | Mac Resemblyzer state or Ticket 12 is not a Windows encoder result | **open — Windows activation and compatible encoder evidence required if enabled** |
|
||
|
||
W-R00 remains the valid historical normal cross-build from Ticket 01; this session additionally compiled changed test inputs normally. W-R05/W-C07 evidence separation is maintained, but it is not a whole-ticket pass. W-B01–W-B09 remain unaccepted for Windows. No unknown Windows backend is classified disabled from the Mac configuration, and no stub/provider replacement or transported Mac answer is substituted.
|
||
|
||
## Operational boundaries and external CI
|
||
|
||
The actual available service is a portable macOS process. Its effective process/configuration was inspected read-only and credential **presence** recorded without values. Its enabled FunASR/Whisper capability flags do not mean those providers are selected by its available profiles; Resemblyzer is disabled in that Mac process only. Docker 29.4.3 serves Linux arm64, Python is 3.14.8, and no compatible Wine/Windows executable or running guest was found. These are Mac-host observations, not Windows prerequisites.
|
||
|
||
External current-candidate CI execution and artifact publication remain unverified. The candidate includes pre-existing uncommitted prerequisites; a prior remote revision cannot prove these current explicit targets or crop cases. Read-only observation findings, accessed revision and any access limitation are retained in `ci-observation.md`. No workflow dispatch or publication was performed solely to manufacture an observed result.
|
||
|
||
The final-diarization procedure requires proof that the selected finalizer actually ran. Existing Whisper/pyannote behavior can keep live segments when no final turns are returned; a missing token can therefore leave an HTTP-success response without a finalizer pass. That source-derived limitation is explicitly documented; it is not an observed Windows failure or a newly changed fallback contract.
|
||
|
||
No Windows functional failure was observed because no Windows execution occurred. Ticket 02's Windows runtime/crop/backend acceptance and external CI row remain open. Tasks 1.1, 1.2 and the Windows portion of 3.2 remain unchecked. This evidence supplements their existing owners without rewriting the closed Ticket 01 or communication history. The prepared implementation is ready for user acceptance of its bounded scope, with the concrete missing Windows host/process and current-content CI evidence recorded above.
|