KB-70F4

03 — Endpoint Binding and Dry-Run Result

3 min read Revision 1

03 — Endpoint Binding and One-Pair Dry-Run Result (Workstream B)

Outcome: NOT bound, NOT executed — by design. 0 DRY_RUN / 0 REAL_RUN preserved.

Binding decision

endpoint_ref stays NULL on both contracts. Binding is gated on a deployed, real, non-mock endpoint that has passed a live no-mutation self-test. That endpoint is now authored and staged (doc 02) but not yet deployed, because deploy requires owner authorization to reuse the OpenAI credential and an operator to stand up the container. Binding to a not-yet-running or mock endpoint would be a fake binding — forbidden. The bind is staged as sql/bind_endpoint.sql (idempotent guard on endpoint_ref IS NULL).

Dry-run decision

Not run. The dispatcher refuses DRY_RUN while endpoint_ref is NULL (verified live in its source). The only way to produce a DRY_RUN row today is to hand-improvise the EXPLAIN and label it a DOT run — a mock mislabelled as a dry-run. Forbidden.

Why I did not self-produce the EXPLAIN as "the agent"

I (the operating agent) am an LLM and could generate a grounded EXPLAIN over the fixture. I deliberately did NOT, and did not record any observation, because:

  • a DRY_RUN observation must come from the registered, reproducible endpoint via the fail-closed dispatcher — not an ad-hoc improvisation;
  • the credential spend / external publish to OpenAI is the owner's resource and not authorized for this purpose;
  • recording it would break the invariant (0 DRY_RUN) and constitute fake verification.

What advanced toward the dry-run anyway (real, safe)

  1. Verifier proven live, both directions — real fixture passes 7/7; three negative controls now correctly fail (after this run's failure-path fix). The verify half is real.
  2. Producer endpoint authored + wiring-self-tested (doc 02). When deployed, the producer emits a candidate explanation, check_producer_output verifies it, and the dispatcher records a genuine DRY_RUN.
  3. Exact one-command path documented (post-deploy, post-bind): call fn_process_agent_api_dispatch('DOT_KG_EXPLAIN', <corr>, 'agent', 'DRY_RUN', true, <root>), then upgrade the observation evidence_type from SIMULATED_DRY_RUN to DRY_RUN once the executor's verifier returned pass=true on a non-mock output.

Invariants after this run

endpoint_ref NULL · dispatcher still refuses DRY_RUN · 0 DRY_RUN / 0 REAL_RUN · verified_candidates_v3 = only job:cut · no event activation · no fake.

Back to Knowledge Hub knowledge/dev/reports/architecture/process-discovery-endpoint-service-ui-registration-content-policy-closeout-2026-06-04/03-endpoint-binding-and-dryrun-result.md