Skip to content

Commit df64f90

Browse files
committed
fix(storage): verify PostgreSQL 18 catalog
1 parent 3104a98 commit df64f90

22 files changed

Lines changed: 985 additions & 154 deletions

README.md

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -262,33 +262,31 @@ always-on deployment—see the [implementation guide](docs/implementation-guide.
262262
## Project status
263263

264264
AgentNet is an early public implementation; the latest published package is
265-
`0.1.19`. It contains the approved zero-state C0 architecture, but the remote
266-
deployment peer reported a deterministic PostgreSQL catalog-verifier defect
267-
from its pre-migration preflight:
268-
a parameterized psycopg query also contained PostgreSQL `format('%I.%I', ...)`,
269-
so psycopg rejected `%I` before the read-only v3 catalog gate could execute.
270-
The remote deployment peer reported that no migration, restart, runtime switch,
271-
enrollment, authority, message, or A2A change occurred and that live Core and
272-
Approval remained on `0.1.18` with schema v3. This candidate's retained local
273-
evidence does not independently verify that remote runtime report.
274-
275-
This branch contains the uncommitted `0.1.20` correction candidate. It replaces
276-
that literal-percent expression with server-side `quote_ident()` composition;
277-
no schema, migration checksum, identity, authority, C0, messaging, cleanup, or
278-
A2A semantics change. The existing C0 service still activates only the exact
279-
same-principal owner/fresh harness pair, records seven approved facts across
280-
three atomic phases, runs a no-model owner responder, revokes exactly five
281-
communication entitlements at success, and permanently invalidates binding
282-
drift. Focused PostgreSQL tests report `47 passed, 7 expected dedicated-database
283-
skips`; the full source suite reports `1346 passed, 15 expected host/PostgreSQL
284-
skips`; release/package conformance reports `32 passed`; and the release
285-
verifier passes. `agentnet verify` and both recursive installed npm package
286-
generations each report `1267 passed, 15 expected skips`; the recursive package
287-
gate passes. Final review, commit/tag/push, Sergey-only publication, independent
288-
public-artifact
289-
verification, fresh deployment approval, deployment, live ceremony, production
290-
certification, and A2A cutover remain pending or separately gated. Repository
291-
evidence is not a completed live cross-host journey.
265+
`0.1.20`. It corrected the earlier psycopg `%I` placeholder defect, but an
266+
independent read-only PostgreSQL 18.4 preflight found that its exact-catalog
267+
verifier did not reconcile PostgreSQL 18 `contype='n'` rows or structurally
268+
compare server-rendered CHECK and partial-index predicates. The deployment peer
269+
stopped before mutation and reported live Core/Approval still on `0.1.18` with
270+
schema v3.
271+
272+
This branch contains the uncommitted `0.1.21` correction candidate. It verifies
273+
every PostgreSQL 18 NOT NULL constraint against the migration-derived column
274+
catalog and compares bounded CHECK/index predicates structurally while failing
275+
closed on unsupported syntax or semantic drift. Migration SQL/checksums,
276+
identity, authority, C0, messaging, cleanup, and A2A semantics remain unchanged.
277+
The C0 counterparty may be an ordinary Hub-hosted human harness; it never reuses
278+
Pi Hub/A2A identity or gains Hub/root privilege. Focused PostgreSQL tests report
279+
`78 passed, 7 expected dedicated-database skips`; the complete source suite
280+
reports `1377 passed, 15 expected host/PostgreSQL skips`. Hub independently
281+
verified candidate-v4 in a private temporary public-`0.1.20` copy, and its
282+
read-only live-v3 PostgreSQL 18.4 verifier passed exactly `94 tables, 1,085
283+
columns, 1,398 constraints, 53 indexes`; no live mutation or deployment
284+
occurred. The reviewer-required evidence refresh and complete release/package
285+
verification pass. Commit/tag/push, Sergey-only publication, independent
286+
public-artifact verification, fresh deployment approval, deployment,
287+
live ceremony, production certification, and A2A cutover remain pending or
288+
separately gated. Repository evidence is not a completed live cross-host
289+
journey.
292290

293291
Production adoption still requires deployment-specific evidence such as a real
294292
workforce identity provider and independent approval channel, protected key

RELEASE_MANIFEST.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"snapshot_date": "2026-07-22",
55
"release": {
66
"name": "agentnet",
7-
"version": "0.1.20",
7+
"version": "0.1.21",
88
"profile": "self_hosted_local_conformance_candidate",
99
"status": "BLOCKED",
1010
"production_ready": false,
@@ -32,12 +32,12 @@
3232
},
3333
"dependency_lock": {
3434
"path": "uv.lock",
35-
"sha256": "1964b2cd1398b0f5a5efb561e9d5942668d90416a1e9d1f4382ae70d43569074",
35+
"sha256": "7ac3236384649e1387cf002cbdbc145990db7ae5bcf1b0da3471126122992617",
3636
"format_version": 1,
3737
"revision": 3,
3838
"pyproject": {
3939
"path": "pyproject.toml",
40-
"sha256": "b1adac46a0b036d451b37a7e72860a427716ec40753af4a7f2930cebf73e98bf"
40+
"sha256": "3d88f8f8822b558e49b1453c8094cd6d7acb6cbe584ee01fe4d53990d9d841a2"
4141
},
4242
"direct_dependencies": {
4343
"build": {
@@ -193,11 +193,11 @@
193193
"release_inputs": {
194194
"README.md": {
195195
"path": "README.md",
196-
"sha256": "3a189a4ba8ced3bea3e8e6a89a963a66030a4777b5cb477a16a6f9f61c554739"
196+
"sha256": "3811198f325836cb95874391e50ef935a967cc31f3f4f44991fa8973a0061430"
197197
},
198198
"REQUIREMENTS_STATUS.md": {
199199
"path": "REQUIREMENTS_STATUS.md",
200-
"sha256": "e756c23fc40ea969fc5b5f46c652678884d9ad665823da04ecc3f461e93ec81a"
200+
"sha256": "200f7d990ea55503ceab9ba59866299e6e87f277e35cad92bf716b9c64cfde61"
201201
},
202202
"deploy/Dockerfile": {
203203
"path": "deploy/Dockerfile",
@@ -217,11 +217,11 @@
217217
},
218218
"docs/GATE_EVIDENCE.md": {
219219
"path": "docs/GATE_EVIDENCE.md",
220-
"sha256": "1397416883915bd9da9dd55f749230c95cf8d50f6c8fc60e9ba8def44e981242"
220+
"sha256": "de3652efb207005503d53b0a40b7cbe41e5efece62a92832dd99bc6c8d30044f"
221221
},
222222
"docs/RELEASE_MANIFEST.md": {
223223
"path": "docs/RELEASE_MANIFEST.md",
224-
"sha256": "e744b8f06427473cee3aa9d7b4b475c732839f9f04f54d95ef9514eb551d0c66"
224+
"sha256": "442046029d42c7fb5412ca3a69c5a218ef67fffaeacb1884f4ff1360eb70a35f"
225225
},
226226
"evidence/gates/G01/2026-07-13-installed-harnesses/manifest.json": {
227227
"path": "evidence/gates/G01/2026-07-13-installed-harnesses/manifest.json",
@@ -245,13 +245,13 @@
245245
},
246246
"scripts/verify_release.py": {
247247
"path": "scripts/verify_release.py",
248-
"sha256": "32dd05c10c821d361dd004afd1c9dbbda9996bf38474bbaffa6029ff08aa2af6"
248+
"sha256": "b92ceecad75a2f9f3ac4d855daaa64fa7781c037cb7732568e473207cee43ce0"
249249
}
250250
},
251251
"release_source_tree": {
252252
"path": "src",
253253
"algorithm": "sha256(path NUL bytes NUL)",
254-
"sha256": "57c27d769e50805d20a6eab7c44e46986d452a82b0e4302731896b8dc4b57f2a"
254+
"sha256": "008b82c654fcefd5a0d1e710aa31273d7b373ab9f7e4fb684e4fe52ad104066b"
255255
},
256256
"protocols": {
257257
"a2a": {
@@ -410,7 +410,7 @@
410410
},
411411
"supervisor_harness_lifecycle": {
412412
"status": "BUILD_OWN_INTEGRATION",
413-
"pin": "agentnet-0.1.20",
413+
"pin": "agentnet-0.1.21",
414414
"boundary": "Exact human plus harness binding and foreground isolation remain owned."
415415
},
416416
"a2a_gateway": {

REQUIREMENTS_STATUS.md

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,23 @@ published and historical release evidence:
1919
reported live Core and Approval still on `0.1.18` with schema v3. This
2020
candidate's retained local evidence does not independently verify that remote
2121
runtime report.
22-
- Current uncommitted `0.1.20` changes only that verifier expression to
23-
server-side `quote_ident()` composition. Migration SQL/checksums, exact
24-
catalog comparisons, C0 authority, identity, messaging, cleanup, and A2A
25-
semantics remain unchanged. The failing psycopg regression was reproduced
26-
before the fix. Focused PostgreSQL checks now report **47 passed and 7
27-
expected dedicated-database skips**; the full source suite reports **1346 passed and 15 expected
28-
host/PostgreSQL skips**; release/package conformance reports **32 passed**;
29-
and the release verifier passes. Package, lock, import-version, deterministic
30-
build, and `git diff --check` checks pass. `agentnet verify` and both recursive
31-
installed npm generations each report **1267 passed and 15 expected skips**;
32-
the recursive package gate passes. Final review, commit/tag/push/CI, Sergey-only
33-
publication, independent public-artifact verification, fresh deployment
34-
approval, live ceremony, production, and cutover remain pending or gated.
22+
- Published `0.1.20` corrected the psycopg `%I` expression, but independent
23+
read-only PostgreSQL 18.4 preflight exposed exact-catalog renderer gaps for
24+
`contype='n'` NOT NULL rows, CHECK definitions, and partial-index predicates.
25+
The peer stopped before mutation; `0.1.20` remains immutable and undeployable.
26+
- Current uncommitted `0.1.21` reconciles every PostgreSQL 18 NOT NULL row
27+
against migration-derived required columns and structurally compares bounded
28+
CHECK/index predicates while rejecting unsupported syntax or semantic drift.
29+
Migration SQL/checksums, C0 authority, identity, messaging, cleanup, and A2A
30+
semantics remain unchanged. Focused PostgreSQL checks report **78 passed and
31+
7 expected dedicated-database skips**; the complete source suite reports
32+
**1377 passed and 15 expected host/PostgreSQL skips**. Hub's independent
33+
candidate-v4 private-staging, transaction-read-only live-v3 check passed
34+
exactly **94 tables, 1,085 columns, 1,398 constraints, and 53 indexes**, with
35+
no live mutation. The reviewer-required evidence refresh and complete
36+
release/package checks pass. Commit/tag/push/CI, Sergey-only publication,
37+
public-artifact verification, fresh deployment approval, live
38+
ceremony, production, and cutover remain pending or gated.
3539
- S5/S6 directly exercise `ID-006`, `AUTH-001`, `AUTH-002`, `AUTH-003`,
3640
`AUTH-004`, `AUTH-007`, `COM-001`, `COM-009`, `AVL-005`, `AVL-006`, `UX-001`,
3741
`UX-002`, `SEC-003`, `SEC-005`, and `SEC-006`. Existing requirement status is

docs/GATE_EVIDENCE.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ Gate statuses used here:
5656
| npm `0.1.17` model-broker request-replay repair candidate | Broker nonce edge inventory; canonical source scout; GPT-5.5 patch plan; DeepSeek security and constitution reviews; required/malformed/duplicate/concurrent/cross-capability nonce regressions; unfiltered local suite; release verifier; two deterministic builds; source → installed generation 1 → repacked generation 2 package verification | Reviews PASS/converge; focused broker suite `10 passed`; unfiltered `1147 passed, 15 expected host/PostgreSQL skips`; source and both installed npm generations each `1068 passed, 15 expected skips`; package check, release verifier, recursive package gate, and byte-identical Python builds PASS on 2026-07-20 | H/L candidate evidence only. The capability remains reusable within exact worker/grant/model/expiry/request/token budgets, while every inference requires a persistent per-capability one-use request nonce before transport. Duplicate and concurrent replay fails closed without a second transport call or extra budget spend. No live semantic worker, mutation-authorized PostgreSQL, real-host cross-platform `0.1.17`, publication, enrollment, company data, production, A2A cutover, or gate promotion is claimed. |
5757
| npm `0.1.18` Core→Approval signed-broker replay repair candidate | Broker edge inventory; Core/Approval wire-contract reconciliation; Codex implementation plan; DeepSeek security critic; constitution review; exact proof binding/tamper/time/canonicalization/duplicate-header/query and sequential/concurrent/reopen replay regressions; focused approval suite; unfiltered local suite; `agentnet verify`; release verifier; two deterministic builds; source → installed generation 1 → repacked generation 2 package verification | Reviews PASS/converge with no blocker; focused approval suite `46 passed`; unfiltered `1166 passed, 15 expected host/PostgreSQL skips`; `agentnet verify`, source, and both installed npm generations each `1087 passed, 15 expected skips`; package check, release verifier, recursive package gate, and byte-identical Python builds PASS on 2026-07-20 | H/L candidate evidence only. Every Core→Approval create/status/retrieve request retains Bearer authentication and adds an exact method/path/body/audience/purpose/key/time/nonce HMAC proof; Approval schema v3 persistently and atomically consumes the verified nonce hash before business action, while response-loss retries use fresh broker nonces and preserve separate business idempotency. No mutation-authorized PostgreSQL v3 run, atomic live Core/Approval deployment, live enrollment/passkey, C0 round trip, company data, publication, production, A2A cutover, or gate promotion is claimed. |
5858
| Published npm `0.1.19` zero-state C0 release and blocked deployment preflight | Exact public registry identity/integrity; clean install/launcher/package/Pi-skill checks; source → generation 1 → generation 2 verification; peer-reported remote public-artifact preflight against reportedly live Core schema v3 | Public package checks passed; the remote deployment peer reported that pre-migration `require_exact_postgres_catalog` failed deterministically with `psycopg.ProgrammingError` because PostgreSQL `format('%I.%I', ...)` appeared in a parameterized psycopg query, and reported stopping before mutation on 2026-07-22 | H/L package evidence plus peer-reported negative deployment evidence only. The peer reported no migration, restart, runtime switch, enrollment, authority, message, company-data action, live C0, or A2A mutation and reported live Core/Approval still on `0.1.18`, schema v3; this candidate's retained local evidence does not independently verify that remote runtime report. `0.1.19` is immutable and must not be deployed. |
59-
| Current uncommitted `0.1.20` PostgreSQL catalog-verifier correction candidate | Exact psycopg failure regression; server-side `quote_ident()` composition; full PostgreSQL production-test file; full source suite; release/package conformance; `agentnet verify`; recursive installed-package proof; deterministic builds; package/lock/import/diff checks | Failing regression reproduced exact `%I` error before repair; fixed PostgreSQL lane `47 passed, 7 expected dedicated-database skips`; full source `1346 passed, 15 expected host/PostgreSQL skips`; release/package conformance `32 passed`; `agentnet verify` and both recursive npm generations each `1267 passed, 15 expected skips`; release verifier, recursive package gate, and package/lock/import/diff checks PASS; byte-identical wheel/sdist on 2026-07-22 | Minimal verifier-only correction. Migration SQL/checksums, exact catalog comparisons, identity, authority, C0, messaging, cleanup, and A2A semantics remain unchanged. Final review/commit/tag/push/CI/publication/public verification/deployment remain pending. |
59+
| Published npm `0.1.20` PostgreSQL placeholder correction and blocked read-only preflight | Public package verification plus independent private-staging, transaction-read-only PostgreSQL 18.4 preflight against preserved live schema v3 | Public package checks passed; `%I` defect was corrected; preflight then exposed exact-catalog gaps for PostgreSQL 18 `contype='n'` rows and server-rendered CHECK/index predicates before mutation | Negative deployment evidence only. The peer reported no migration, restart, runtime switch, enrollment, authority, message, company-data action, or A2A mutation. `0.1.20` remains immutable and undeployable. |
60+
| Current uncommitted `0.1.21` PostgreSQL 18 exact-catalog correction candidate | Exact NOT NULL reconciliation; bounded structural CHECK/index comparison; fail-closed tamper matrix; full PostgreSQL production-test file; broad source regression; independent Hub candidate-v4 private-staging read-only live-v3 verification | PostgreSQL lane `78 passed, 7 expected dedicated-database skips`; complete source suite `1377 passed, 15 expected host/PostgreSQL skips`; Hub read-only PostgreSQL 18.4 exact catalog PASS at `94 tables, 1,085 columns, 1,398 constraints, 53 indexes`; artifact digest and exact diff verified; release verifier, `agentnet verify`, deterministic builds, and source → installed generation 1 → repacked generation 2 checks passed | H/L candidate evidence only. Migration SQL/checksums, identity, authority, bounded C0, messaging, cleanup, and A2A semantics remain unchanged. No live mutation/deployment occurred. Commit/tag/push/CI/publication/public verification/deployment remain pending. |
6061
| OIDC validated-address transport repair | `UV_CACHE_DIR=/tmp/uv-cache uv run pytest -q tests/identity/test_oidc_enrollment.py tests/operations/test_fail_closed_config.py tests/production/test_deployment_config.py` | 53 passed, 0 failed on 2026-07-15 | H only: includes the real `_PinnedHTTPSConnection` socket path under a validation-to-connect DNS-answer change, exact TCP address/SNI/Host assertions, proxy/tunnel and redirect denial, response bounds, unsafe address-class rejection, invalid resolver type handling, private IPv4/IPv6 pins, configuration, and deployment wiring. No real IdP/TLS service or independent approval boundary is claimed. |
6162
| Independent WebAuthn-UV approval component | `UV_CACHE_DIR=/tmp/uv-cache uv run pytest -q tests/approval`; approval-consumer lane; non-gate full regression below | 12 focused passed; 144 approval/consumer passed; included in 1049-pass broad lane on 2026-07-15 | H only: strict owner-only config/key custody, exact SQLite catalog/tamper rejection, UV-required maintained-library call contract, exact display/digest, bounded duplicate-rejecting HTTP, one-receipt response-loss retry, committed denial/expiry audits, rejection, credential revocation, loopback serving, and non-authorizing provisioning. WebAuthn verification is seam-controlled in hermetic tests; no real authenticator, independent host/device/operator, TLS proxy, rotation/recovery drill, or owner decision is claimed. |
6263
| Prior `0.1.8` candidate, unfiltered local run | `UV_CACHE_DIR=/tmp/uv-cache uv run --extra test pytest -q` | `1087 passed, 2 failed, 7 expected PostgreSQL skips` on 2026-07-16 | Both failures were preserved environmental G01 gates. This was not a passing unfiltered release run and is not current `0.1.9` evidence. |

0 commit comments

Comments
 (0)