-
Notifications
You must be signed in to change notification settings - Fork 0
Coldkeep v1.13.11 — Safety and Backend Compatibility Gate Closure #106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
90 commits
Select commit
Hold shift + click to select a range
c4a2162
docs: establish v1.13.11 closure correction baseline
franchoy 40a9462
chore: activate v1.13.11 release identity
franchoy f748675
docs: classify v1.13.11 backend compatibility claims
franchoy 7259b9d
test: add reusable dual-backend harness
franchoy 0147851
ci: execute PostgreSQL internal package contracts
franchoy 6e1a067
docs: record phase 4 PostgreSQL CI evidence
franchoy 2b603b7
test: prove schema bootstrap and migration contracts
franchoy bfe4917
test: capture G6 packed-block rebuild diagnostics
franchoy 54ecd84
fix: refuse partial rebuild of shared packed blocks
franchoy 460ff67
docs: close phase 5 schema and G6 CI evidence
franchoy c03c42b
test: prove implemented catalog contracts across backends
franchoy db12c3d
fix: make snapshot listing order deterministic
franchoy 5051752
docs: record phase 6 catalog parity CI evidence
franchoy 3e8c98d
test: prove engine read contracts across backends
franchoy 313d006
fix: release deep-verify rows before block queries
franchoy ab8accb
docs: record phase 7 engine read parity CI evidence
franchoy bcae357
test: close snapshot selector determinism contracts
franchoy 8a7b998
docs: record phase 8 selector parity CI evidence
franchoy 848e579
test: prove engine mutation outcomes across backends
franchoy e4c7760
docs: record phase 9 mutation parity CI evidence
franchoy ad82c95
test: prove backend transaction and row-lock semantics
franchoy 81dd0da
docs: record phase 10 transaction semantics CI evidence
franchoy 84d4ce7
feat: define repository coordination contract
franchoy 7b26241
test: add benchmark gate calibration harness
franchoy 68cf839
ci: launch Phase 11 benchmark calibration
19e7df1
ci: remove temporary benchmark calibration launcher
a4bf7d4
test: add benchmark final-state diagnostics
c5dd3d5
test: classify benchmark gate invariants
06b4a81
test: make SQL driver fixture repeat-safe
d9cbdec
ci: launch corrected-contract benchmark calibration
e797fc1
ci: remove corrected-contract calibration launcher
f6ce216
test: correct benchmark final-state model
67e1826
ci: launch diagnostic-v2 benchmark calibration
franchoy 835208a
ci: remove diagnostic-v2 calibration launcher
franchoy 747e5c3
docs: define paired benchmark gate contract
franchoy e25b825
test: add paired benchmark gate harness
franchoy 4ce5bfa
test: enable paired diagnostic qualification decision
0e63396
ci: launch paired benchmark qualification
7dcfdc7
ci: remove paired benchmark qualification launcher
95d54f7
benchmark: add bounded paired v2 diagnostic fixtures
eeb913a
ci: harden paired diagnostic evidence lifecycle
afd375e
docs: record rejected qualification and bounded remediation
d05d32c
ci: launch bounded paired v2 qualification
741e992
ci: remove bounded paired v2 qualification launcher
0e47602
ci: enforce paired launcher output ownership
15bd01b
ci: launch bounded paired v2 qualification
12fc63a
ci: remove bounded paired v2 qualification launcher
01f1ea6
benchmark: separate integrity from hosted timing advice
8ef9c89
ci: require benchmark integrity and preserve timing warnings
3a6e000
docs: adopt Phase 11 hosted timing advisory policy
b08da99
benchmark: align hosted advisory with small report contract
d871ad5
docs: close Phase 11 repository coordination contract
b63bd34
coordination: prepare repository control namespace
e13db33
coordination: add owner metadata and process reservation
ac1a6bb
coordination: add unix native repository locking
bbe2e18
coordination: add windows native repository locking
5b8f749
cli: acquire repository lease before recovery and database work
9934bc9
coordination: stabilize errors and direct caller contract
6a36804
ci: run native coordination tests across platforms
cf75530
test: align adversarial stores with repository coordination
eba01b2
docs: record Phase 12G and 13A CI evidence
c1b5e4d
docs: close Phase 12 repository coordination runtime
5bdaa44
test: prove repository lease release after holder death
4aa2e75
test: satisfy killed-holder staticcheck
7018432
docs: record Phase 13B killed-holder evidence
da78614
fix: pin GC advisory lock to one PostgreSQL session
54b1a04
test: prove live GC cross-process repository barrier
d4b9cae
docs: record Phase 13C live GC coordination evidence
aa0a9df
docs: close Phase 13 multi-process coordination
fc88a4e
fix: validate container ranges and header size consistency
314e2ad
fix: preserve container maximum during recovery
2cc39c1
test: preserve recovery maximum assertions
a576b19
fix: retain orphan recovery size marker semantics
a5ab52d
docs: close Phase 14 container hardening
4213f3c
fix: bound decompression output before allocation
15b7e26
docs: close Phase 15 bounded decompression
5dcf004
fix: preserve exact integers in JSON output
eff7ae5
docs: close Phase 16 JSON integer fidelity
0c50113
fix: fail closed on SQL mutation cardinality
de741d5
docs: close Phase 17 SQL mutation audit
975453d
ci: require backend and coordination contracts
eaa5896
ci: preserve audit status patterns
9c1fa52
docs: close Phase 18 required CI gate
39526e3
docs: close Phase 19 validation reconciliation
0565b02
docs: prepare v1.13.11 exact-head release candidate
22b2ea7
ci: harden benchmark calibration trust boundary
d18c3e5
fix(ci): harden benchmark tooling checks
632d2e1
refactor: reduce production Codacy complexity
5fd0fe6
refactor: reduce test tooling Codacy complexity
a2b903a
fix(ci): close remaining Codacy findings
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,206 @@ | ||
| name: Benchmark Gate Calibration and Baseline Capture | ||
|
|
||
| on: | ||
| workflow_dispatch: | ||
| inputs: | ||
| mode: | ||
| description: Calibration uses two ten-sample replicas; capture uses one five-sample profile. | ||
| required: true | ||
| type: choice | ||
| options: | ||
| - calibration | ||
| - capture | ||
| source_sha: | ||
| description: Confirm the exact protected-main dispatch SHA to build and measure. | ||
| required: true | ||
| type: string | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| env: | ||
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | ||
| COLDKEEP_AES_GCM_FIXTURE_HEX: ${{ format('{0}{1}{0}{1}{0}{1}{0}{1}', '01234567', '89abcdef') }} | ||
| POSTGRES_IMAGE_DIGEST: sha256:33f923b05f64ca54ac4401c01126a6b92afe839a0aa0a52bc5aeb5cc958e5f20 | ||
|
|
||
| jobs: | ||
| authorize: | ||
| runs-on: ubuntu-24.04 | ||
| timeout-minutes: 5 | ||
| steps: | ||
| - name: Validate trusted benchmark source | ||
| env: | ||
| SOURCE_SHA: ${{ inputs.source_sha }} | ||
| TRUSTED_REF: ${{ github.ref }} | ||
| TRUSTED_SHA: ${{ github.sha }} | ||
| run: | | ||
| set -euo pipefail | ||
| if [[ "${TRUSTED_REF}" != "refs/heads/main" ]]; then | ||
| echo "benchmark calibration must be dispatched from refs/heads/main" >&2 | ||
| exit 2 | ||
| fi | ||
| if ! [[ "${SOURCE_SHA}" =~ ^[0-9a-f]{40}$ ]]; then | ||
| echo "source_sha must be a full lowercase commit SHA" >&2 | ||
| exit 2 | ||
| fi | ||
| if [[ "${SOURCE_SHA}" != "${TRUSTED_SHA}" ]]; then | ||
| echo "source_sha must equal the trusted workflow dispatch SHA" >&2 | ||
| exit 2 | ||
| fi | ||
|
|
||
| sample: | ||
| needs: authorize | ||
| runs-on: ubuntu-24.04 | ||
| timeout-minutes: 30 | ||
| services: | ||
| postgres: | ||
| image: postgres:16@sha256:33f923b05f64ca54ac4401c01126a6b92afe839a0aa0a52bc5aeb5cc958e5f20 | ||
| env: | ||
| POSTGRES_USER: coldkeep | ||
| POSTGRES_PASSWORD: coldkeep | ||
| POSTGRES_DB: coldkeep | ||
| ports: | ||
| - 5432:5432 | ||
| options: >- | ||
| --health-cmd "pg_isready -U coldkeep -d coldkeep" | ||
| --health-interval 10s | ||
| --health-timeout 5s | ||
| --health-retries 5 | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| compression: [none, zstd] | ||
| workers: [1, 4] | ||
| replicate: [1, 2] | ||
|
|
||
| steps: | ||
| - name: Checkout trusted source | ||
| if: ${{ inputs.mode == 'calibration' || matrix.replicate == 1 }} | ||
| uses: actions/checkout@v6 | ||
| with: | ||
| ref: ${{ github.sha }} | ||
| fetch-depth: 0 | ||
| persist-credentials: false | ||
|
|
||
| - name: Verify trusted checkout | ||
| if: ${{ inputs.mode == 'calibration' || matrix.replicate == 1 }} | ||
| env: | ||
| TRUSTED_SHA: ${{ github.sha }} | ||
| run: | | ||
| test "$(git rev-parse HEAD)" = "${TRUSTED_SHA}" | ||
|
|
||
| - name: Setup exact Go toolchain | ||
| if: ${{ inputs.mode == 'calibration' || matrix.replicate == 1 }} | ||
| uses: actions/setup-go@v6 | ||
| with: | ||
| go-version: '1.25.12' | ||
| cache: false | ||
|
|
||
| - name: Build benchmark binary once | ||
| if: ${{ inputs.mode == 'calibration' || matrix.replicate == 1 }} | ||
| run: go build -o coldkeep ./cmd/coldkeep | ||
|
|
||
| - name: Capture fixed benchmark samples | ||
| if: ${{ inputs.mode == 'calibration' || matrix.replicate == 1 }} | ||
| env: | ||
| SOURCE_SHA: ${{ github.sha }} | ||
| CAPTURE_MODE: ${{ inputs.mode }} | ||
| COLDKEEP_DB_AUTO_BOOTSTRAP: true | ||
| COLDKEEP_CODEC: aes-gcm | ||
| COLDKEEP_COMPRESSION: ${{ matrix.compression }} | ||
| COLDKEEP_KEY: ${{ env.COLDKEEP_AES_GCM_FIXTURE_HEX }} | ||
| COLDKEEP_CONTAINER_LOCK_RETRY_ATTEMPTS: 12 | ||
| COLDKEEP_CONTAINER_LOCK_RETRY_BASE_WAIT_MS: 15 | ||
| COLDKEEP_CONTAINER_LOCK_RETRY_MAX_WAIT_MS: 900 | ||
| DB_HOST: 127.0.0.1 | ||
| DB_PORT: 5432 | ||
| DB_USER: coldkeep | ||
| DB_PASSWORD: coldkeep | ||
| DB_NAME: coldkeep | ||
| DB_SSLMODE: disable | ||
| run: | | ||
| sample_count=10 | ||
| if [ "${CAPTURE_MODE}" = "capture" ]; then | ||
| sample_count=5 | ||
| fi | ||
| profile="${{ matrix.compression }}-w${{ matrix.workers }}-r${{ matrix.replicate }}" | ||
| postgres_version="$(docker exec '${{ job.services.postgres.id }}' postgres --version)" | ||
| python3 scripts/benchmark_gate.py sample \ | ||
| --binary ./coldkeep \ | ||
| --output-dir "evidence/${profile}" \ | ||
| --compression '${{ matrix.compression }}' \ | ||
| --workers '${{ matrix.workers }}' \ | ||
| --dataset ci-stable-v1 \ | ||
| --warmups 1 \ | ||
| --samples "${sample_count}" \ | ||
| --source-commit "${SOURCE_SHA}" \ | ||
| --go-version "$(go version)" \ | ||
| --postgres-version "${postgres_version}" \ | ||
| --database-image-digest "${POSTGRES_IMAGE_DIGEST}" | ||
|
|
||
| - name: Upload immutable sample evidence | ||
| if: ${{ always() && (inputs.mode == 'calibration' || matrix.replicate == 1) }} | ||
| uses: actions/upload-artifact@v7 | ||
| with: | ||
| name: benchmark-${{ inputs.mode }}-${{ matrix.compression }}-w${{ matrix.workers }}-r${{ matrix.replicate }} | ||
| path: evidence/${{ matrix.compression }}-w${{ matrix.workers }}-r${{ matrix.replicate }} | ||
| if-no-files-found: error | ||
|
|
||
| calibration: | ||
| if: ${{ inputs.mode == 'calibration' }} | ||
| runs-on: ubuntu-24.04 | ||
| needs: sample | ||
| timeout-minutes: 10 | ||
| steps: | ||
| - name: Checkout calibration harness | ||
| uses: actions/checkout@v6 | ||
| with: | ||
| ref: ${{ github.sha }} | ||
| persist-credentials: false | ||
|
|
||
| - name: Download calibration evidence | ||
| uses: actions/download-artifact@v8 | ||
| with: | ||
| pattern: benchmark-calibration-* | ||
| path: ${{ runner.temp }}/benchmark-calibration-input | ||
|
|
||
| - name: Evaluate the fixed calibration matrix | ||
| run: | | ||
| mapfile -t aggregates < <( | ||
| find "${RUNNER_TEMP}/benchmark-calibration-input" \ | ||
| -mindepth 2 -maxdepth 2 -name aggregate.json -print | sort | ||
| ) | ||
| args=() | ||
| for aggregate in "${aggregates[@]}"; do | ||
| artifact="$(basename "$(dirname "${aggregate}")")" | ||
| profile="${artifact#benchmark-calibration-}" | ||
| args+=(--aggregate "${profile}=${aggregate}") | ||
| done | ||
| python3 - "${GITHUB_SHA}" "${aggregates[@]}" <<'PY' | ||
| import json | ||
| import pathlib | ||
| import sys | ||
|
|
||
| expected = sys.argv[1] | ||
| for raw_path in sys.argv[2:]: | ||
| path = pathlib.Path(raw_path) | ||
| with path.open(encoding="utf-8") as handle: | ||
| report = json.load(handle) | ||
| actual = report.get("provenance", {}).get("source_commit") | ||
| if actual != expected: | ||
| raise SystemExit( | ||
| f"{path}: source_commit {actual!r} does not match trusted SHA {expected}" | ||
| ) | ||
| PY | ||
| python3 scripts/benchmark_gate.py calibrate \ | ||
| "${args[@]}" \ | ||
| --thresholds benchmarks/v1.9/regression-thresholds.yaml \ | ||
| --output calibration-report.json | ||
|
|
||
| - name: Upload calibration decision | ||
| if: always() | ||
| uses: actions/upload-artifact@v7 | ||
| with: | ||
| name: benchmark-calibration-decision | ||
| path: calibration-report.json | ||
| if-no-files-found: error | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.