docs(operations): record v1 readiness evidence (#23)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"evidenceVersion": "v2",
|
||||
"generatedAt": "2026-07-16T14:10:53.6981858+00:00",
|
||||
"generatedAt": "2026-07-16T20:28:43.2873744+00:00",
|
||||
"profile": "candidate",
|
||||
"runtime": {
|
||||
"framework": ".NET 10.0.9",
|
||||
@@ -14,14 +14,14 @@
|
||||
"cpuQuota": "not-enforced",
|
||||
"memoryLimit": "not-enforced",
|
||||
"garbageCollector": "workstation",
|
||||
"commitSha": "cf14836d48b0b4aaa67f99433f4fba3585bcd2bb",
|
||||
"commitSha": "00d5ff776408e7d80ce6648953e62a7233aca35c",
|
||||
"treeState": "clean",
|
||||
"command": "RENDEZVOUS_CAPACITY_PROFILE=candidate RENDEZVOUS_CAPACITY_CPUSET=0,1 ./scripts/run-capacity-gate.sh",
|
||||
"imageDigest": "not-containerized",
|
||||
"workloadSeed": "fixed-sequences-random-identifiers",
|
||||
"capacityPhaseAverageCpuPercent": 56.37724115383554,
|
||||
"peakWorkingSetBytes": 169705472,
|
||||
"managedBytesAfterCleanup": 35615200
|
||||
"capacityPhaseAverageCpuPercent": 55.52666859166872,
|
||||
"peakWorkingSetBytes": 176758784,
|
||||
"managedBytesAfterCleanup": 35608984
|
||||
},
|
||||
"targets": {
|
||||
"visibleListings": 25000,
|
||||
@@ -39,10 +39,10 @@
|
||||
{
|
||||
"operation": "registration-and-presence",
|
||||
"samples": 1000,
|
||||
"p50Milliseconds": 0.003,
|
||||
"p50Milliseconds": 0.0029,
|
||||
"p95Milliseconds": 0.0046,
|
||||
"p99Milliseconds": 0.0054,
|
||||
"operationsPerSecond": 282453.96000451926,
|
||||
"p99Milliseconds": 0.0055,
|
||||
"operationsPerSecond": 287918.9220315559,
|
||||
"minimumOperationsPerSecond": 200,
|
||||
"budgetMilliseconds": 200,
|
||||
"passed": true
|
||||
@@ -51,9 +51,9 @@
|
||||
"operation": "lease-renewal",
|
||||
"samples": 1000,
|
||||
"p50Milliseconds": 0.0004,
|
||||
"p95Milliseconds": 0.0009,
|
||||
"p99Milliseconds": 0.0021,
|
||||
"operationsPerSecond": 968992.2480620155,
|
||||
"p95Milliseconds": 0.0007,
|
||||
"p99Milliseconds": 0.0019,
|
||||
"operationsPerSecond": 1076426.264800861,
|
||||
"minimumOperationsPerSecond": 200,
|
||||
"budgetMilliseconds": 200,
|
||||
"passed": true
|
||||
@@ -61,10 +61,10 @@
|
||||
{
|
||||
"operation": "visible-session-browse",
|
||||
"samples": 250,
|
||||
"p50Milliseconds": 0.9046,
|
||||
"p95Milliseconds": 3.3704,
|
||||
"p99Milliseconds": 3.9471,
|
||||
"operationsPerSecond": 695.5799787597697,
|
||||
"p50Milliseconds": 1.0232,
|
||||
"p95Milliseconds": 3.6083,
|
||||
"p99Milliseconds": 4.2925,
|
||||
"operationsPerSecond": 650.0325926341947,
|
||||
"minimumOperationsPerSecond": 200,
|
||||
"budgetMilliseconds": 200,
|
||||
"passed": true
|
||||
@@ -72,10 +72,10 @@
|
||||
{
|
||||
"operation": "join-attempt-issuance",
|
||||
"samples": 1000,
|
||||
"p50Milliseconds": 0.0029,
|
||||
"p95Milliseconds": 0.0045,
|
||||
"p99Milliseconds": 0.0055,
|
||||
"operationsPerSecond": 296428.042092782,
|
||||
"p50Milliseconds": 0.0028,
|
||||
"p95Milliseconds": 0.0042,
|
||||
"p99Milliseconds": 0.0052,
|
||||
"operationsPerSecond": 135253.93927098127,
|
||||
"minimumOperationsPerSecond": 200,
|
||||
"budgetMilliseconds": 200,
|
||||
"passed": true
|
||||
@@ -83,10 +83,10 @@
|
||||
{
|
||||
"operation": "simultaneous-punch-pairing",
|
||||
"samples": 1000,
|
||||
"p50Milliseconds": 0.0043,
|
||||
"p95Milliseconds": 0.0073,
|
||||
"p99Milliseconds": 0.0115,
|
||||
"operationsPerSecond": 109212.03516627532,
|
||||
"p50Milliseconds": 0.0039,
|
||||
"p95Milliseconds": 0.0069,
|
||||
"p99Milliseconds": 0.0087,
|
||||
"operationsPerSecond": 110619.46902654869,
|
||||
"minimumOperationsPerSecond": 2000,
|
||||
"budgetMilliseconds": 100,
|
||||
"passed": true
|
||||
@@ -94,10 +94,10 @@
|
||||
{
|
||||
"operation": "principal-revocation",
|
||||
"samples": 50,
|
||||
"p50Milliseconds": 0.518,
|
||||
"p95Milliseconds": 0.7049,
|
||||
"p99Milliseconds": 11.8557,
|
||||
"operationsPerSecond": 1320.1773262184577,
|
||||
"p50Milliseconds": 0.495,
|
||||
"p95Milliseconds": 0.6508,
|
||||
"p99Milliseconds": 11.011,
|
||||
"operationsPerSecond": 1393.258301729591,
|
||||
"minimumOperationsPerSecond": 50,
|
||||
"budgetMilliseconds": 200,
|
||||
"passed": true
|
||||
@@ -108,7 +108,7 @@
|
||||
"p50Milliseconds": 0.0001,
|
||||
"p95Milliseconds": 0.0001,
|
||||
"p99Milliseconds": 0.0001,
|
||||
"operationsPerSecond": 1438641.9220256077,
|
||||
"operationsPerSecond": 1479289.9408284025,
|
||||
"minimumOperationsPerSecond": 10000,
|
||||
"budgetMilliseconds": 1,
|
||||
"passed": true
|
||||
@@ -116,10 +116,10 @@
|
||||
{
|
||||
"operation": "coincident-listing-attempt-expiry",
|
||||
"samples": 1,
|
||||
"p50Milliseconds": 29.6882,
|
||||
"p95Milliseconds": 29.6882,
|
||||
"p99Milliseconds": 29.6882,
|
||||
"operationsPerSecond": 33.682962483916384,
|
||||
"p50Milliseconds": 27.7056,
|
||||
"p95Milliseconds": 27.7056,
|
||||
"p99Milliseconds": 27.7056,
|
||||
"operationsPerSecond": 36.093525543388026,
|
||||
"minimumOperationsPerSecond": 0,
|
||||
"budgetMilliseconds": 200,
|
||||
"passed": true
|
||||
@@ -134,10 +134,10 @@
|
||||
"finalReplayMarkers": 0,
|
||||
"expiryChurn": 94906,
|
||||
"maintenanceSweeps": 36307,
|
||||
"soakCyclesCompleted": 75126848,
|
||||
"soakDurationSeconds": 300.0000015,
|
||||
"soakCyclesCompleted": 77547145,
|
||||
"soakDurationSeconds": 300.0000041,
|
||||
"soakPeakScheduledExpiryEntries": 7,
|
||||
"soakManagedGrowthBytes": -257288,
|
||||
"soakManagedGrowthBytes": -263432,
|
||||
"soakHandleGrowth": 2,
|
||||
"restartStartedEmpty": true,
|
||||
"overloadWasTyped": true,
|
||||
|
||||
@@ -1,44 +1,44 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"kind": "rendezvous-production-readiness",
|
||||
"evaluatedCommit": "6bad659c123ad45ad0d9d07f93217c2e8c42d459",
|
||||
"evaluatedCommit": "00d5ff776408e7d80ce6648953e62a7233aca35c",
|
||||
"decision": "not-ready",
|
||||
"localGates": [
|
||||
{
|
||||
"id": "immutable-release-artifacts",
|
||||
"status": "pending",
|
||||
"evidenceRef": "docs/operations/production-readiness.md",
|
||||
"note": "Rebuild after the readiness tooling checkpoint."
|
||||
"status": "pass",
|
||||
"evidenceRef": "docs/evidence/releases/v1.0.0-local-candidate.json",
|
||||
"note": "Clean candidate packages and server archive are byte reproducible and fully verified."
|
||||
},
|
||||
{
|
||||
"id": "debug-and-release-verification",
|
||||
"status": "pending",
|
||||
"evidenceRef": "docs/operations/production-readiness.md",
|
||||
"note": "Re-run after the readiness tooling checkpoint."
|
||||
"status": "pass",
|
||||
"evidenceRef": "docs/evidence/releases/v1.0.0-local-candidate.json",
|
||||
"note": "All 300 tests pass in Debug and Release; the Release build has zero warnings and errors."
|
||||
},
|
||||
{
|
||||
"id": "real-consumer-pilots",
|
||||
"status": "pending",
|
||||
"evidenceRef": "docs/integration/spacegame-pilot.md",
|
||||
"note": "Pin and re-run both real consumer revisions."
|
||||
"status": "pass",
|
||||
"evidenceRef": "docs/evidence/releases/v1.0.0-local-candidate.json",
|
||||
"note": "Pinned real projects restore the candidate and both game launch pilots pass direct traffic."
|
||||
},
|
||||
{
|
||||
"id": "candidate-capacity-resilience",
|
||||
"status": "pending",
|
||||
"status": "pass",
|
||||
"evidenceRef": "docs/evidence/capacity/v2/candidate-2cpu.json",
|
||||
"note": "Re-run the five-minute candidate on the tooling checkpoint."
|
||||
"note": "The clean two-CPU five-minute candidate passes all budgets with zero retained state."
|
||||
},
|
||||
{
|
||||
"id": "production-process-recovery",
|
||||
"status": "pending",
|
||||
"evidenceRef": "docs/operations/capacity-and-resilience.md",
|
||||
"note": "Re-run process restart, drain, and rollback gates."
|
||||
"status": "pass",
|
||||
"evidenceRef": "docs/evidence/releases/v1.0.0-local-candidate.json",
|
||||
"note": "All selected restart, drain, socket release, overload, and recovery tests pass."
|
||||
},
|
||||
{
|
||||
"id": "security-privacy-observability",
|
||||
"status": "pending",
|
||||
"evidenceRef": "docs/operations/production-readiness.md",
|
||||
"note": "Re-run the combined release verification matrix."
|
||||
"status": "pass",
|
||||
"evidenceRef": "docs/evidence/releases/v1.0.0-local-candidate.json",
|
||||
"note": "The complete security, privacy, health, audit, telemetry, and release suite passes."
|
||||
}
|
||||
],
|
||||
"externalGates": [
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"kind": "rendezvous-local-release-candidate",
|
||||
"version": "1.0.0",
|
||||
"sourceCommit": "00d5ff776408e7d80ce6648953e62a7233aca35c",
|
||||
"treeState": "clean",
|
||||
"result": "pass",
|
||||
"artifacts": [
|
||||
{
|
||||
"name": "FinalFactory.Rendezvous.Client.1.0.0.nupkg",
|
||||
"sha256": "f2a4b9727b5faeba284ddcb7fc575c7495f1e29b763faababa7cd71444dc2950"
|
||||
},
|
||||
{
|
||||
"name": "FinalFactory.Rendezvous.Contracts.1.0.0.nupkg",
|
||||
"sha256": "92317f153911ebf7b8ea04cd3206ec2a17f882cb4eddb26aa8ab094ffdb06627"
|
||||
},
|
||||
{
|
||||
"name": "FinalFactory.Rendezvous.Server.1.0.0.linux-x64.tar.gz",
|
||||
"sha256": "0dab8cfc696b4a55d6ffba46286c9e532df2c943ed8fd6347fb528516156b3ba"
|
||||
}
|
||||
],
|
||||
"verification": {
|
||||
"lockedRestore": "pass",
|
||||
"reportedVulnerabilities": 0,
|
||||
"format": "pass",
|
||||
"releaseBuildWarnings": 0,
|
||||
"releaseBuildErrors": 0,
|
||||
"debugTestsPassed": 300,
|
||||
"debugTestsFailed": 0,
|
||||
"releaseTestsPassed": 300,
|
||||
"releaseTestsFailed": 0,
|
||||
"selectedProductionFaultTestsPassed": 17,
|
||||
"byteReproduciblePackages": "pass",
|
||||
"byteReproducibleServerArchive": "pass",
|
||||
"sbomChecksumsAndProvenance": "pass",
|
||||
"candidateConsumerFixtures": "pass",
|
||||
"realConsumerRestores": "pass"
|
||||
},
|
||||
"consumers": [
|
||||
{
|
||||
"name": "SpaceGame",
|
||||
"revision": "f3f5bc29810c362656cd7143bec1ddc2cfaf9f22",
|
||||
"candidateRestore": "pass",
|
||||
"directTrafficPilot": "pass"
|
||||
},
|
||||
{
|
||||
"name": "Unscouted",
|
||||
"revision": "f0574a7de82aadff6495ca5657dfc19cf7c2f67c",
|
||||
"candidateRestore": "pass",
|
||||
"directTrafficPilot": "pass"
|
||||
}
|
||||
],
|
||||
"limitations": {
|
||||
"publicRegistryRestore": "pending",
|
||||
"signedPublication": "pending",
|
||||
"externalNetworkCanaries": "pending"
|
||||
}
|
||||
}
|
||||
@@ -81,7 +81,7 @@ concurrent build, thermal throttling, or oversubscribed CI host.
|
||||
The checked-in baseline is
|
||||
[`candidate-2cpu.json`](../evidence/capacity/v2/candidate-2cpu.json). It was
|
||||
produced on .NET 10.0.9/Linux x64 with CPU affinity restricted to two logical
|
||||
CPUs. It filled 25,000 listings and 10,000 attempts, peaked at about 162 MiB,
|
||||
CPUs. It filled 25,000 listings and 10,000 attempts, peaked at about 169 MiB,
|
||||
and cleared all active/retained state. The five-minute baseline supersedes any
|
||||
earlier local probe when its timestamp and target duration differ.
|
||||
|
||||
|
||||
@@ -50,6 +50,32 @@ container bridge, or second process on one machine cannot prove it:
|
||||
Failure or missing evidence is blocking. It is never converted into an accepted
|
||||
risk by changing the wording of the readiness note.
|
||||
|
||||
When an external gate passes, add a redacted repository JSON attestation and
|
||||
point that gate's `evidenceRef` to it. The checker requires this exact shape and
|
||||
binds the gate to the evaluated candidate commit. `artifactDigest` is the SHA-256
|
||||
of the protected evidence bundle or public release record, not a peer endpoint,
|
||||
listing identifier, account identifier, or credential:
|
||||
|
||||
```json
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"kind": "rendezvous-external-gate-attestation",
|
||||
"gateId": "replace-with-the-exact-gate-id",
|
||||
"candidateCommit": "replace-with-the-40-character-candidate-commit",
|
||||
"result": "pass",
|
||||
"performedAtUtc": "2026-01-01T00:00:00Z",
|
||||
"artifactDigest": "replace-with-the-64-character-sha256",
|
||||
"evidenceLocation": "protected-operations-record",
|
||||
"reviewerRole": "independent-operator"
|
||||
}
|
||||
```
|
||||
|
||||
Allowed evidence locations are `protected-operations-record` and
|
||||
`public-release-record`. Allowed reviewer roles are `release-operator`,
|
||||
`network-operator`, `security-operator`, and `independent-operator`. The checker
|
||||
rejects a missing file, wrong gate, wrong candidate, malformed digest, naive
|
||||
timestamp, extra fields, or sensitive-data-shaped contents.
|
||||
|
||||
## Prepare one immutable canary build
|
||||
|
||||
Use the exact release candidate on every canary machine. Verify a clean checkout,
|
||||
|
||||
Reference in New Issue
Block a user