Skip to content

RFC drift: retire OnCall discriminator per RFC-FLOW-VOCABULARY §3 #17

@apotema

Description

@apotema

RFC §3 (Events as graph nodes) promised "a flow with zero Event nodes is a subgraph (replaces today's OnCall discriminator)". Phase 6 (flow-codegen#16 / 4073b58) kept event: { "type": "OnCall" } as a top-level discriminator instead. The loader comment now reads: "legacy file-level event: header is retained for one case only: OnCall".

Decision needed

  • (A) Land the RFC verbatim — drop the OnCall Event-union variant and the "OnCall" arm of buildEvent. Classification:
    • Event nodes ≥ 1 → event-driven flow (flow.event = .OnEvent).
    • Event nodes = 0 + params declared → subgraph (synthesize a sentinel variant or refactor Flow.event to a sum type).
    • Event nodes = 0 + no params → malformed.
    • Any top-level "event": {…} header → reject.
  • (B) Amend the RFC to reflect the shipped decision, close this.

Files in scope (for A)

  • flow-codegen/src/flow_io.zigEvent union, buildEvent, buildFlow's event-resolution blk: block.
  • flow-codegen/src/codegen.zigrenderEntryFunction (.OnCall arm of assertEntityAvailable), entryFunctionName, writeFnHeader.
  • flow-codegen/test/root_test.zig — fixtures using "event": { "type": "OnCall" }.
  • labelle-assembler/src/flow_scanner.zig — verify no live consumer keys on the OnCall tag literal.

In-tree migration

Last sweep showed zero .flow.jsonc files using OnCall in-tree.

Cross-references

RFC RFC-FLOW-VOCABULARY.md §3 — Phase 6 landing flow-codegen 4073b58 + labelle-assembler 5631838.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions