Process/Workflow Axis RP Pilot — 04 Birth Model & Gap Detector
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_workflowparent row per pipeline. - Run-level (NOT a registry birth):
job_queueitems,dot_iu_command_run,ai_tasksrounds — 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_outboxis an append log, not a registry). Process events route viaevent_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
12blocker), 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.