Record Gate 10 deployment evidence

71a92784cfb2 · Christopher David · · parent 6999983b4487

Record Gate 10 deployment evidence

Deploy story

What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.

Not deployed through the forge lane

No push, promotion, build, or deploy receipt references this commit (receipts are scanned over a bounded recent window). Changes shipped by full node replacement carry their proof in the release gate receipt instead.

Changed files

  • modified docs/2026-08-20-integration-hardening-and-staging-readiness-recommendations.md
  • added docs/evidence/gate-10/6999983b4487c0fe0acdb73c10b34327cdb0de5a/README.md
  • added docs/evidence/gate-10/6999983b4487c0fe0acdb73c10b34327cdb0de5a/baseline-receipt.json
  • added docs/evidence/gate-10/6999983b4487c0fe0acdb73c10b34327cdb0de5a/migration-rehearsal.json
  • added docs/evidence/gate-10/6999983b4487c0fe0acdb73c10b34327cdb0de5a/transactional-fleet-proof.json

Diff

5 files changed, +104 -8

docs/2026-08-20-integration-hardening-and-staging-readiness-recommendations.md modified +14 -8

@@ -995,6 +995,10 @@ Completed locally on 2026-08-20:

995 995
  BEAM identity. Only a fully verified fleet restoration records `reverted`;
996 996
  an unreachable or divergent node records `failed` and remains out of
997 997
  readiness.
998
- Made pre-token and partial-prepare failures rollback only participants that
999
  actually issued tokens. These failures now return bounded outcomes instead
1000
  of raising on a missing token, and failed fleet snapshots retain their
1001
  per-node health diagnostics.
998 1002
- Added a database transaction that advances the target to `live` only in the
999 1003
  same commit that inserts its terminal deployment receipt. The receipt binds
1000 1004
  deployment, artifact, manifest, expected membership, bounded per-node

@@ -1026,18 +1030,20 @@ Completed locally on 2026-08-20:

1026 1030
  immutability; boot tests for cold-cache fetch, cache retention, stale-target
1027 1031
  refusal, and degraded retry; and real three-node tests for success, remote
1028 1032
  failure with exact rollback, rollback refusal, timeout, and membership loss.
1029
- Passed 107 default forge tests and five real three-node deployment tests.
1030
  The full precommit gate passed 17 browser tests and 1,318 default Elixir
1031
  tests, with 14 distributed tests excluded from the default lane. The pinned
1032
  Elixir 1.20.3 and OTP 29.0.5 `forge-builder` target also built the production
1033
- Passed the exact-SHA baseline with 17 browser tests, 1,339 default Elixir
1034
  tests, 14 distributed tests, 83.15% merged coverage, and packaged release
1035
  startup against a disposable PostgreSQL database. The distributed lane
1036
  includes five real three-node deployment scenarios. See the
1037
  [Gate 10 evidence](evidence/gate-10/6999983b4487c0fe0acdb73c10b34327cdb0de5a/README.md).
1038
- Built the pinned Elixir 1.20.3 and OTP 29.0.5 `forge-builder` production
1033 1039
  release without application warnings.
1034 1040
- Documented the operator contract in the
1035 1041
  [transactional deployment runbook](operations/forge-transactional-deployment.md).
1036 1042
1037
Gate 10 is complete locally. Keep the deploy and boot-convergence features
1038
disabled until Gate 11 supplies relup and rolling-replacement fallbacks and
1039
Gate 12 provides an isolated distributed staging lane. No staging or
1040
production environment was changed.
1043
Gate 10 is complete locally with exact-commit evidence. Keep the deploy and
1044
boot-convergence features disabled until Gate 11 supplies relup and
1045
rolling-replacement fallbacks and Gate 12 provides an isolated distributed
1046
staging lane. No staging or production environment was changed.
1041 1047
1042 1048
## Gate 11: Complete relup and rolling replacement
1043 1049
docs/evidence/gate-10/6999983b4487c0fe0acdb73c10b34327cdb0de5a/README.md added +27

@@ -0,0 +1,27 @@

1
# Gate 10 transactional fleet deployment evidence
2
3
Date: 2026-08-20
4
5
Implementation SHA: `6999983b4487c0fe0acdb73c10b34327cdb0de5a`
6
7
Gate 10 passed locally on the exact implementation commit. This evidence set
8
is content-free and contains no credentials, database URLs, hostnames, private
9
repository content, conversation content, or staging data.
10
11
## Evidence
12
13
- `baseline-receipt.json` is the immutable result copied from the owned
14
  exact-SHA gate receipt. Precommit, merged coverage, all 14 distributed
15
  tests, 17 browser tests, and packaged production-release startup passed
16
  without retries.
17
- `migration-rehearsal.json` records a populated forward, reverse, and second
18
  forward rehearsal of the deployment-receipt migration. It verifies legacy
19
  receipt backfill, immutable receipt enforcement, data preservation across
20
  rollback, and repeatable forward migration.
21
- `transactional-fleet-proof.json` identifies the real three-node scenarios
22
  included in the distributed lane: successful commit, exact fleet rollback,
23
  unverified rollback refusal, participant timeout, and membership loss.
24
25
The release startup and migration rehearsal used newly provisioned disposable
26
PostgreSQL roles and databases. Cleanup checks confirmed that both databases
27
and both roles were removed. No staging or production deployment occurred.
docs/evidence/gate-10/6999983b4487c0fe0acdb73c10b34327cdb0de5a/baseline-receipt.json added +21

@@ -0,0 +1,21 @@

1
{
2
  "schema": "openagents.baseline-gate.v1",
3
  "git_sha": "6999983b4487c0fe0acdb73c10b34327cdb0de5a",
4
  "status": "passed",
5
  "started_at": "2026-08-20T10:53:22Z",
6
  "completed_at": "2026-08-20T10:55:02Z",
7
  "total_duration_seconds": 100,
8
  "automatic_retries": 0,
9
  "stages": {
10
    "precommit": {"status": "passed", "duration_seconds": 22},
11
    "coverage": {"status": "passed", "duration_seconds": 68},
12
    "release_smoke": {"status": "passed", "duration_seconds": 10}
13
  },
14
  "tests": {
15
    "javascript": 17,
16
    "default": 1339,
17
    "cluster": 14,
18
    "excluded_from_default": 14
19
  },
20
  "coverage_percent": 83.15
21
}
docs/evidence/gate-10/6999983b4487c0fe0acdb73c10b34327cdb0de5a/migration-rehearsal.json added +25

@@ -0,0 +1,25 @@

1
{
2
  "schema": "openagents.migration-rehearsal.v1",
3
  "git_sha": "6999983b4487c0fe0acdb73c10b34327cdb0de5a",
4
  "status": "passed",
5
  "migration": "20260820140000_harden_forge_deployment_transactions",
6
  "starting_version": 20260820130000,
7
  "fixture_counts": {
8
    "forge_fleet_targets": 1,
9
    "legacy_forge_deploys": 1
10
  },
11
  "checks": {
12
    "forward_identity_backfill": "passed",
13
    "expected_membership_backfill": "passed",
14
    "bounded_node_results_backfill": "passed",
15
    "timestamp_backfill": "passed",
16
    "immutable_update_refusal": "passed",
17
    "reverse_data_preservation": "passed",
18
    "second_forward_backfill": "passed"
19
  },
20
  "automatic_retries_in_successful_run": 0,
21
  "database_class": "disposable",
22
  "database_removed_after_run": true,
23
  "staging_changed": false,
24
  "production_changed": false
25
}
docs/evidence/gate-10/6999983b4487c0fe0acdb73c10b34327cdb0de5a/transactional-fleet-proof.json added +17

@@ -0,0 +1,17 @@

1
{
2
  "schema": "openagents.forge.transactional-fleet-proof.v1",
3
  "git_sha": "6999983b4487c0fe0acdb73c10b34327cdb0de5a",
4
  "status": "passed",
5
  "expected_nodes": 3,
6
  "real_three_node_scenarios": [
7
    "prepare_canary_verify_commit_finalize",
8
    "remote_apply_failure_exact_rollback",
9
    "unverified_rollback_fences_readiness",
10
    "participant_timeout_blocks_live",
11
    "membership_loss_aborts_commit"
12
  ],
13
  "distributed_tests_in_exact_sha_baseline": 14,
14
  "automatic_retries_in_successful_run": 0,
15
  "staging_changed": false,
16
  "production_changed": false
17
}

This page updates live while a promote is in flight · changelog