KB-45EB
Process/Workflow Axis RP Pilot — 07 Auto-scale Model
4 min read Revision 1
process-axisautoscaleaxis-registry2026-06-04
07 — Process Axis / Auto-scale Model
AX-PROCESS in axis_registry (LIVE, CANDIDATE)
Modelled exactly on AX-TOPIC. The axis is a data row, not code:
| field | value |
|---|---|
| axis_code | AX-PROCESS |
| domain | process_workflow |
| node_source | workflows (def-side, MOW-owned) |
| node_filter | {"registry":"workflows","def_side_owner":"MOW","status_in":[active,draft,deprecated,retired]} |
| relation_source | workflows.parent_workflow_id ∪ workflow_step_relations ∪ job_workflow→job_queue (planned) |
| root_rule | workflow with parent_workflow_id IS NULL; implicit Type-2 pipelines surfaced from job_queue.job_kind prefix |
| child_rule | sub-workflow via parent_workflow_id; steps via workflow_id; transitions via from/to step |
| lifecycle_field | workflows.status |
| owner_governance_ref | GOV-MOW (pending Điều-XX) |
| substrate_resolver | fn_process_node_substrate |
| pivots_ref | v_axis_process_pivots |
| status | CANDIDATE |
Generic registration contract (no per-process code)
- A new process appears by a registry row, never by new code: insert a
workflowsrow (Type 3 / promoted Type 2) → it auto-births, auto-codes, and immediately appears inv_axis_process_inventory,v_axis_process_pivots, and the gov-gap view. No view edits. - Components are rows/edges, not hardcoded: steps in
workflow_steps, transitions inworkflow_step_relations, jobs injob_queue(workflow_id+parent_job_id), events inevent_type_registry. - Triggers/events/queues link by relation, not literals:
context_trigger_sourcesvocab +event_subscriptionrows + (planned) aprocess_componentedge table oruniversal_edgesrows. - A second axis is another
axis_registryrow — AX-PROCESS, AX-TOPIC, future AX-* all coexist with zero new code. This is the auto-scale guarantee.
STOP conditions (encoded as gap signals, propose-only)
The model refuses to silently fabricate; each STOP becomes a flagged row, not a hardcoded fallback:
- process has trigger but no registry →
gap_reason=DOT_PROCESS_SEMANTICS_NO_WORKFLOW_REGISTRY(candidates view). - process has components but no start/end → (future)
START_END_MISSINGon promotion. - process has queue but no owner → gov-gap
OWNER_MISSING(cut_pipeline). - process has human step but no escalation → (MOT)
ESCALATION_MISSING. - active process but no IU/SOP → gov-gap
no_iu_sop_binding. - process count mismatch → reconcile inventory vs pivots (e.g. PIV-340=2 governed vs 58 candidates → explicit, not merged).
No-hardcode audit (PASS)
- No process levels hardcoded (depth emergent from parent/step graph).
- Not a single special-case "information cutting process" — cut_pipeline is one row among a generic
split_part(job_kind,'.',1)grouping; any newjob_kindprefix auto-creates a pipeline candidate. - 57 DOT processes surfaced generically by
trigger_type, not by name list. - AX-PROCESS reuses the AX-TOPIC mechanism verbatim → the axis layer itself is auto-scaling.