KB-47BE

Process/Workflow Axis RP Pilot — 04 Birth Model & Gap Detector

4 min read Revision 1
process-axisbirthgap-detector2026-06-04

04 — Process Birth Model & Gap Detector

Substrate decision (no new island table)

Reuse + extend the live MOW substrate; do NOT create a new process_registry island. Rationale: workflows/workflow_steps are already born, already pivoted (PIV-004/005), already governed via workflow_change_requests. A parallel table would re-create the five-store fragmentation. Decision matrix:

option verdict
reuse workflows (+ optional process_type/automation_level/iu_ref/start_condition/end_condition cols) CHOSEN for Type 3 (and promoted Type 2)
new process_registry island REJECTED (fragmentation, migration, dup birth)
generic axis_registry as home REJECTED as home (it is the LENS, not the registry); ACCEPTED as the RP projection
job_workflow parent table (design sketch) ADD when Type-2 pipelines are born — 1 parent row per pipeline run over N job_queue rows (workflow_id+parent_job_id)
MOW registry (workflow_registry def/run split, Rev2) target end-state; out of scope for pilot

What is born (and what is NOT)

  • Born (existing): process definition (workflows → WF-NNN), step (workflow_steps → ND-NNNN), edge (workflow_step_relations).
  • To be born (owner-gated): Type-2 pipeline definition (cut_pipeline → PRC/WF-NNN), job_workflow parent row per pipeline.
  • Run-level (NOT a registry birth): job_queue items, dot_iu_command_run, ai_tasks rounds — these are run rows, not definition births. The current gap is that job_queue rows are unborn and there is no definition to anchor them.
  • NOT born: events (event_outbox is an append log, not a registry). Process events route via event_type_registry (already governed).

Birth admission path (reuse, not rebuild)

Process births flow through the existing Điều-0-G birth gate already bound to workflows/workflow_steps (live triggers: trg_before_birth_gate_*, birth_trigger_*, trg_birth_*). New process definitions inserted into workflows are auto-coded + birth-registered by these triggers. No birth-gate alteration is needed or permitted.

Gap detector (LIVE, read-only)

v_axis_process_governance_gap doubles as the birth+ownership gap detector. Plus the inventory's birth_state column flags:

  • UNBORN → implicit pipelines (cut_pipeline).
  • GOVERNED_NOT_BIRTH_TRACKED → DOT-contained (by design).
  • BORN → governed workflows.

A dedicated unborn-process detector query (apply-ready, not yet a view to avoid scope creep):

-- pipelines materialised in job_queue with no workflows row + no birth
SELECT 'PIPELINE:'||split_part(job_kind,'.',1) AS unborn_process,
       count(*) jobs, min(scheduled_at) since
FROM job_queue
GROUP BY 1
HAVING NOT EXISTS (SELECT 1 FROM workflows w WHERE w.process_code = 'PIPELINE:'||split_part(job_queue.job_kind,'.',1));

Forbidden / honoured

  • No birth rows created blindly. (0 process births this macro.)
  • No broad birth-gate change.
  • No unretirable process births without owner approval — Type-2 birth is queued to owner (see 12 blocker), not executed.
  • Disclosure: birth_registry grew 1,152,905→1,158,082 during the session from background system activity; the apply transaction's before==after proves 0 births attributable to this macro.
Back to Knowledge Hub knowledge/dev/reports/architecture/process-workflow-axis-registries-pivot-birth-governance-ui-pilot-2026-06-04/04-process-birth-model-and-gap-detector.md