KB-63DC

PD Runtime Observation — 04 True Dry-Run Feasibility

3 min read Revision 1

04 — True Dry-Run Feasibility (Workstream C)

Pilot pair chosen

DOT_KG_EXPLAIN (producer) + DOT_KG_EXPLAIN_VERIFY (verifier), from v_process_discovery_dot_family_pairs (pair_group=DOT_KG_EXPLAIN, pair_complete=t). Chosen because: KG is the only family with 18/18 complete pairs; clean producer→verifier semantics; both legs already structurally start+end. (Runner-up DOT_KG_CONVERSE_EXTRACT+_VERIFY rejected: verifier engine hybrid vs producer agent_api — extra surface.)

Live inspection of the pair (dot_tools)

code paired_dot trigger_type engine script_path file_path last_executed usage_count
DOT_KG_EXPLAIN DOT_KG_EXPLAIN_VERIFY on-demand agent_api NULL NULL NULL 0
DOT_KG_EXPLAIN_VERIFY DOT_KG_EXPLAIN dual agent_api NULL NULL NULL 0

Feasibility findings

  • Input requirements: none wired — no fixture, no input contract. (agent_api engine implies an external agent call, not a SQL function.)
  • Output destination: undefined — no output_ref convention exists for DOT tools; KG writes would land in universal_edges / knowledge graph (production).
  • Mutation behavior: unknown/unbounded — KG DOTs (classify/validate/link/explain) are designed to write graph rows; there is no asserted mutating=false plan mode for DOT_* tools.
  • Dry-run flag: none for DOT tools. Plan/verify modes exist only in the IU-command layer (dot_iu_command_run.run_mode ∈ plan/verify/apply) — a different layer that governs IU mutation commands, not DOT execution.
  • Test fixture: none.
  • Rollback/cleanup: none defined for a DOT run.
  • Worker/queue dependency: KG DOTs are not queue-driven; there is no live runner that picks a DOT and executes it. script_path/file_path NULL, usage_count 0 confirm they are declared-but-never-invoked.

Classification: WRAPPER_NEEDED

A true dry-run is impossible today without a wrapper that: (1) mints process_run_id/correlation_id; (2) invokes the DOT in an asserted plan/verify-only mode (no apply, no business write); (3) routes any output to a temp/test namespace; (4) logs evidence_type=DRY_RUN observations; (5) guarantees birth_registry and KG edges unchanged; (6) cleans up. None of (1)–(6) exists.

Decision: DO NOT EXECUTE. 0 production DOT executed this macro.

The SIMULATED_DRY_RUN observation (doc 03) substitutes for runner proof: it proves the ledger + correlation + scoring path end-to-end without touching any DOT. The remaining gap is purely the execution wrapper → next macro (doc 09).

Back to Knowledge Hub knowledge/dev/reports/architecture/process-discovery-runtime-observation-apply-safe-dryrun-2026-06-04/04-true-dry-run-feasibility.md