Skip to content

Instrument AdCP 3.2 across docs, compliance, and training - #6799

Merged
bokelley merged 3 commits into
mainfrom
audit-3-2-instrumentation
Aug 23, 2026
Merged

Instrument AdCP 3.2 across docs, compliance, and training#6799
bokelley merged 3 commits into
mainfrom
audit-3-2-instrumentation

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Summary

  • pin the training agent to @adcp/sdk@14.0.0-beta.7 / served AdCP 3.2-beta.5 and add a release-instrumentation manifest covering all 16 feature families across runtime, compliance, docs, and training
  • implement targeting-aware configured products end to end: strict overlay-support negotiation, bounded expiring offers, schema-aware purchase narrowing, proposal acceptance, lifecycle readback, concurrency safety, and immutable forecast assumptions
  • adopt the beta.7 idempotency contract and durable webhook delivery: retry-bound claims, caller-scoped delivery identity, encrypted Postgres outbox/recovery, production-safe signing/scoping, plus frozen 3.0 completion-webhook compatibility
  • make the 3.2 adopter docs, migration guide, SDK guidance, learning labs, specialist tracks, certification criteria, and recertification gates concrete and assessable; explicitly disposition deferred feature candidates

Release safety

  • production activation stays gated: the curriculum migration records criteria without silently assigning new 3.2 requirements to current credential holders
  • live configured offers are never evicted, expired unreferenced state is pruned under lock, and purchase-time targeting cannot broaden or add undeclared dimensions
  • webhook recovery preserves exact signed delivery snapshots across restart and partitions bindings by trusted tenant/caller/account scope
  • 3.0 inline completion compatibility is isolated from the 3.2 contract and verified against the released 3.0.26 storyboard bundle

Verification

  • full pre-commit protocol suite: 67 files / 1,052 tests
  • full server unit suite: 455 files / 6,458 tests
  • current storyboard matrix: all seven tenants above required clean/step floors
  • released 3.0.26 storyboard matrix: all seven tenants above required clean/step floors
  • webhook/idempotency/targeting focused suites, migrations, docs navigation/links, compliance drift, release instrumentation, certification formatting, and TypeScript all green
  • production build, schema bundle, compliance bundle, and protocol tarball green
  • reviewed by documentation, education/training, protocol, webhook, and code-review specialists; all blocker findings resolved

Closes #6199
Advances #6556
Advances #6557

Comment thread server/src/training-agent/task-handlers.ts Outdated

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Approve

Approve — 3.2 instrumentation PR (beta.4 → beta.5 pin bump, targeting-aware configured products, beta.7 idempotency/retry contract, durable encrypted webhook outbox).

Checks performed:

  • No static/schemas/source/** changes → no wire-shape drift, no oneOf regression, no dist-immutability concern.
  • Changeset present and scoped to normative reference docs + protocol-adjacent training (minor). Consistent with the non-breaking, additive instrumentation surface.
  • New migrations (549/550/551) are additive and fail-closed; judged as production-facing and clean.
  • Webhook outbox is framework-resolved principal, per-caller scoped, cross-replica recovery, heavily tested.
  • No breaking-class protocol change → hard breaking-change gate does not fire.
  • gated_paths: false; no no-auto-approve team match; high_risk driven by (modified) docs/reference + (added) migrations only, with no medium finding on a modified high-risk file (row 5 does not fire).

Medium findings (1 — non-blocking):

  • server/src/training-agent/task-handlers.ts:6204 — targeting-aware discovery silently truncates at the per-session configured-product cap. Operability concern, category operability (not data-loss/schema/infra), so no row-4 escalation.

Low finding (warn-only webhook recovery terminalization) omitted per severity model.

Decision path: no critical/high (row 1 n/a); gated_paths false (row 2 n/a); no deletions (row 3 n/a); the single medium is operability, not data-loss/schema/infra (row 4 n/a); high_risk modified files carry no medium finding (row 5 n/a); no prior decision (row 6 n/a); no team gate (row 7 n/a); only 1 medium, < 3 (row 8 n/a) → row 9 approve.

Medium findings

  • server/src/training-agent/task-handlers.ts:6204 — Targeting-aware discovery silently drops products at session configured-product cap

Comment thread server/src/training-agent/task-handlers.ts Outdated

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Request changes

Request changes — 1 blocking finding.

Blocking findings

  • package.json:30 — test:schemas drops two schema-contract tests (stale-rebase clobber). The script silently removes two schema-contract tests added at base by #6620/#6621, pulling them out of CI. This is a reproducible regression that reduces test coverage on the protocol contract surface (high). Restore the two dropped tests to the test:schemas script.

Medium findings

  • server/src/training-agent/task-handlers.ts:6204 — Configured-product cap silently drops products from discovery. Unhandled edge case worth addressing but non-blocking on its own.

Decision rationale: Row 1 fires — a high severity finding is present, so the outcome is request-changes. Once the test:schemas regression is restored, the remaining single medium finding would fall through to approve. Docs version bumps are internally consistent, no schema source changed, and the new migrations/webhook outbox work looks sound.

Blocking findings

  • package.json:30 — test:schemas drops two schema-contract tests (#6620/#6621) from CI (stale-rebase clobber)

Medium findings

  • server/src/training-agent/task-handlers.ts:6204 — Configured-product cap silently drops products from discovery

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Approve

Approve — prior blocking findings resolved, no current findings.

What changed since the prior review (request-changes):

  • The prior Medium (task-handlers.ts:6204 — silent configured-product drop) is resolved. applyDiscoveryTargeting now computes exact net additions BEFORE any session mutation and, on overflow, returns a fail-closed atomic LIMIT_EXCEEDED/correctable error via handleGetProductsUnlocked instead of partially configuring or silently truncating. A new test asserts the correctable error shape and that configuredProducts is unchanged after rejection.
  • The prior High (package.json:30 — test:schemas dropping schema-contract tests) is not part of this delta and is out of scope per subsequent-review scope rules.

Current findings: none.

Gate checks:

  • No no-auto-approve team match.
  • gated_paths: false, so row 2 does not apply (the CHANGES_REQUESTED review_decision only blocks approval when a path/prose hard gate is engaged; none is here). This PR adds instrumentation, docs, migrations, and tests without touching static/schemas/source/**, so schema↔docs coherence and breaking-class governance gates are not triggered.
  • high_risk: true, but all high-risk reference-doc hits are (modified) with no findings, and all migration hits are (added) scaffolding — no (deleted) entry, no medium finding on a modified high-risk file, so rows 3–5 do not fire.
  • Prior decision was request-changes (not escalate), so sticky-escalation row 6 does not apply. With zero current findings, rows 1 and 8 do not fire.

Net improvement: the developer addressed the prior blocking feedback and the reviewer surfaced nothing new. Falls through to row 9.

@bokelley
bokelley merged commit 19e3317 into main Aug 23, 2026
58 checks passed
@bokelley
bokelley deleted the audit-3-2-instrumentation branch August 23, 2026 15:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement targeting-aware discovery in the training agent after 3.2 beta

1 participant