Variables

RESERVED_SUBFLOW_PREFIX

Variable: RESERVED_SUBFLOW_PREFIX

const RESERVED_SUBFLOW_PREFIX: "sf-" = 'sf-'

Defined in: src/conventions.ts:96

The subflow-id prefix the framework reserves for its OWN composition segments. Every id in SUBFLOW_IDS carries it except SUBFLOW_IDS.FINAL (a decider BRANCH KEY that doubles as a mount id, not a name we chose), and the set is deliberately open-ended — builders generate more of them per feature and per release (sf-router-llm, sf-memory-read-<id>, sf-memory-write-<id>, …).

Reserved rather than merely conventional because every reader downstream tells LIBRARY PLUMBING from CONSUMER STRUCTURE by this prefix and nothing else:

• commentary skips sf-* segments while walking meta.subflowPath back to a user-facing agent name (commentary/commentaryTemplates.ts); • BoundaryRecorder hides them from the StepGraph so they never show up as steps a person has to scrub past; • the OTel bridge drops a slot-fork selection whose members are all sf-* (adapters/observability/otel.ts); • stageRole and the pattern/fingerprint readers classify by the same convention.

So a consumer branch named sf-billing does NOT fail like a name clash — it is silently read as framework plumbing and vanishes from the very views it was built to appear in. That is two different facts (framework segment / consumer segment) sharing one namespace with no law, which is why the doors that accept a consumer-chosen segment name refuse this prefix outright.

On this page