Repository navigation
diagnostics: run Claude enhanced protocol independently alongside Codex #120
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
| name: Windows coverage persistent I/O diagnostic | |
| on: | |
| push: | |
| branches: | |
| - acceptance/context-recovery/** | |
| paths: | |
| - lib/proxy/context-compaction-envelope.js | |
| - lib/proxy/context-compaction-byte-budget.js | |
| - lib/proxy/context-evidence-utf8.js | |
| - test/context-compaction-envelope.test.js | |
| - test/** | |
| - scripts/run-unit-tests.js | |
| - scripts/run-unit-test-shards.js | |
| - lib/test-discovery.js | |
| - lib/test-sharding.js | |
| - lib/test-runtime.js | |
| - package.json | |
| - package-lock.json | |
| - scripts/prepare-context-recovery-native.js | |
| - lib/proxy/context-recovery-key-dpapi.js | |
| - lib/proxy/context-recovery-key-contract.js | |
| - lib/proxy/context-recovery-anchor-wire.js | |
| - lib/proxy/context-recovery-anchor.js | |
| - test/context-recovery-anchor-wire.test.js | |
| - lib/proxy/context-recovery-anchor-contract.js | |
| - lib/proxy/context-recovery-anchor-admission.js | |
| - lib/proxy/context-recovery-storage-owner.js | |
| - lib/proxy/context-recovery-startup-sql-progress.js | |
| - lib/proxy/context-recovery-storage-paths.js | |
| - lib/proxy/context-recovery-private-path.js | |
| - lib/proxy/private-path-native.js | |
| - lib/proxy/secure-files.js | |
| - lib/proxy/context-recovery-storage-progress.js | |
| - lib/proxy/context-recovery-anchor-channel.js | |
| - lib/proxy/context-recovery-anchor-protocol.js | |
| - lib/proxy/context-recovery-storage-worker.js | |
| - lib/proxy/context-recovery-storage.js | |
| - lib/proxy/context-recovery-storage-inventory.js | |
| - lib/proxy/context-recovery-storage-opening.js | |
| - lib/proxy/context-recovery-root-storage.js | |
| - lib/proxy/context-recovery-root-loading.js | |
| - lib/proxy/context-recovery-sessions.js | |
| - lib/proxy/context-recovery-storage-failure.js | |
| - lib/proxy/context-recovery-storage-serial.js | |
| - lib/proxy/context-recovery-storage-idle.js | |
| - test/context-recovery-anchor-clock.test.js | |
| - native/context-recovery-key/** | |
| - test/helpers/recovery-owner-stage-probe.js | |
| - test/helpers/recovery-anchor-stage-probe.js | |
| - test/recovery-anchor-stage-probe.test.js | |
| - test/recovery-owner-stage-probe.test.js | |
| - .github/workflows/windows-persistent-io-coverage.yml | |
| - scripts/capture-persistent-io.ps1 | |
| - scripts/check-coverage-io-receipt.cjs | |
| - scripts/lib/coverage-io-capture.js | |
| - scripts/lib/coverage-io-recorder-failure.js | |
| - scripts/lib/coverage-io-windows.js | |
| - scripts/lib/persistent-io-recording.psm1 | |
| - scripts/lib/persistent-io-binary.psm1 | |
| - scripts/lib/persistent-io-summary.js | |
| - scripts/lib/persistent-io-association.js | |
| - scripts/lib/persistent-io-association.psm1 | |
| - test/persistent-io-association.test.js | |
| - test/persistent-io-association-powershell.test.js | |
| - scripts/lib/persistent-io-windows.js | |
| - test/persistent-io-windows.test.js | |
| - scripts/lib/persistent-io-scheduling.js | |
| - scripts/lib/persistent-io-scheduling.psm1 | |
| - test/persistent-io-scheduling.test.js | |
| - scripts/lib/persistent-io-operation-summary.js | |
| - test/persistent-io-operations.test.js | |
| - scripts/summarize-persistent-io.cjs | |
| - scripts/fixtures/persistent-file-io.wprp | |
| - lib/proxy/context-recovery-read-settlement.js | |
| - lib/proxy/context-recovery-storage-sqlite.js | |
| - lib/proxy/context-recovery-storage-blobs.js | |
| - test/context-recovery-read-settlement.test.js | |
| - test/client-context-target.test.js | |
| - test/coverage-io-capture.test.js | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| coverage-file-flush: | |
| runs-on: windows-latest | |
| timeout-minutes: 45 | |
| defaults: | |
| run: | |
| shell: pwsh | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - name: Prepare the original locked coverage prerequisites | |
| run: | | |
| $ErrorActionPreference = 'Stop' | |
| npm ci | |
| if ($LASTEXITCODE -ne 0) { throw 'Dependency preparation failed.' } | |
| npm ci --prefix plugins/hpm-local-evidence --ignore-scripts | |
| if ($LASTEXITCODE -ne 0) { throw 'Fixture preparation failed.' } | |
| rustup default stable | |
| if ($LASTEXITCODE -ne 0) { throw 'Toolchain preparation failed.' } | |
| - name: Execute complete original coverage commands with owned file recording windows | |
| env: | |
| HPM_COVERAGE_IO: ${{ github.sha }} | |
| run: | | |
| $ErrorActionPreference = 'Stop' | |
| $PSNativeCommandUseErrorActionPreference = $false | |
| if (Test-Path Env:\HPM_COVERAGE_IO_PROXY_WINDOW) { Remove-Item Env:\HPM_COVERAGE_IO_PROXY_WINDOW } | |
| $env:HPM_COVERAGE_IO_STAGE = 'proxy' | |
| npm run test:coverage | |
| $coverageExit = $LASTEXITCODE | |
| if ($coverageExit -ne 0) { [Console]::Error.WriteLine('coverage_original_stage_failed:stage=' + $env:HPM_COVERAGE_IO_STAGE) } | |
| node scripts/check-coverage-io-receipt.cjs | |
| if ($LASTEXITCODE -ne 0) { throw 'Coverage I/O observation was not completed safely.' } | |
| if ($coverageExit -ne 0) { throw 'Original proxy coverage failed; I/O evidence does not override its failure.' } | |
| $env:HPM_COVERAGE_IO_STAGE = 'client' | |
| npm run test:client:coverage | |
| $coverageExit = $LASTEXITCODE | |
| if ($coverageExit -ne 0) { [Console]::Error.WriteLine('coverage_original_stage_failed:stage=' + $env:HPM_COVERAGE_IO_STAGE) } | |
| node scripts/check-coverage-io-receipt.cjs | |
| if ($LASTEXITCODE -ne 0) { throw 'Client coverage I/O observation was not completed safely.' } | |
| if ($coverageExit -ne 0) { throw 'Original client coverage failed; I/O evidence does not override its failure.' } | |
| npm run test:frontend:coverage | |
| if ($LASTEXITCODE -ne 0) { throw 'Original frontend coverage failed.' } | |
| - name: Record the observation boundary | |
| if: always() | |
| run: | | |
| @( | |
| 'Executes the complete original proxy, client and frontend coverage commands once each, in order, with original four-shard proxy coverage and all original assertions.' | |
| 'Proxy coverage selects exactly one complete client-context-target file across the original four shards, including the persistent Core recovery request; client coverage retains serial client-context-target and publication-graceful-http windows. All native publication-interruption tests still execute in the original complete suite. A first observed fixture/request failure closes only its own recent ring window. No tests are filtered, retried or appended; a failed original stage still stops subsequent stages.' | |
| 'Original five-second HTTP and final durable ACK gates, worker, DPAPI, OS anchor and FULL/DELETE persistence remain unchanged.' | |
| 'WPR retains its own unique instance, 32 MiB circular buffers, bounded decoding and cleanup. Ring loss and tracing perturbation prevent completeness or stability qualification.' | |
| 'Read/write/info/delete/cleanup/close observations retain nonzero status counts; neither a VFS retry nor antivirus attribution is inferred.' | |
| 'All providers are synthetic. No raw ETL, decoded records, paths, keys, databases, originals or model replies are uploaded.' | |
| ) >> $env:GITHUB_STEP_SUMMARY |