feat(core): workflow-node abstraction w/ registration, graph construction and compile check #1

Merged
fnoble merged 4 commits from feat/core into master 2026-08-25 07:47:11 +00:00
Owner
No description provided.
- add_edge gains into= for named-slot fan-in; recorded ops carry it
- rule 3b at import time: multi-parent targets must fit named-slot form
  (required fields covered exactly once, source output_type fits the slot)
  or collected form (exactly one list[<model>] field, arity within its
  min_length/max_length); humans stay single-parent; mixing static parents
  with conditional dispatch is rejected as ambiguous
- validation now builds once against a throwaway StateGraph; the recording-
  sink double-build determinism check is replaced by a static lint over
  build()'s source rejecting environment/clock/random reads, mutation of
  self or module globals, and iteration over sets
refactor(core): precise composite boundary agreement via START pseudo-source
Some checks failed
/ ci (push) Has been cancelled
/ ci (pull_request) Has been cancelled
73565a6dae
Rule 4 now reuses rule 3b's machinery instead of a second type-checking
notion: entry edges treat START as a pseudo-source whose output_type is
the composite's input_type, so a plain entry edge only requires the child
to accept that input (issubclass) and an into= entry edge requires the
slot to exist and accept it. Terminals are checked with one issubclass
per terminal against the composite output, so early-exit paths may emit
subtypes but never unrelated models. START delivers the run input rather
than a state-keyed parent dump, so it never counts toward fan-in forms,
parent counts, or static/dispatch assembly ambiguity.
fnoble changed title from docs: human interrupt mechanics, review artifact design doc, decisions to feat(core): workflow-node abstraction w/ registration, graph construction and compile check 2026-08-24 21:06:00 +00:00
fnoble left a comment

Reduce all top of file docstrings to a single line

Reduce all top of file docstrings to a single line
@ -0,0 +1,105 @@
"""Workflow discovery from explicit listings.
Author
Owner

Top of file docstrings were removed from plan, leave docstrings under functions only.

Top of file docstrings were removed from plan, leave docstrings under functions only.
@ -0,0 +1,79 @@
"""In-process registry of discovered workflow classes.
Author
Owner

Docstring issue again.

Docstring issue again.
@ -0,0 +1,181 @@
"""Tests for explicit-listing workflow discovery."""
Author
Owner

This is a good top of level docstring

This is a good top of level docstring
@ -3,10 +3,10 @@
Workflow is the single abstraction every node kind derives from; identity is
the fully-qualified class path, so plugins never collide with core classes.
Author
Owner

Remove header docstring, add relevant (consice details) under class / function def

Remove header docstring, add relevant (consice details) under class / function def
@ -216,3 +207,1 @@
) -> None:
targets = tuple(sorted((label, _endpoint(t)) for label, t in branches.items()))
self.ops.append(_Op("add_conditional", (_endpoint(src), targets)))
_BUILDER_DOC = """
Author
Owner

Why a floating doc variable?

Why a floating doc variable?
fnoble left a comment
  • Move docstrings to defs not top of file
- Move docstrings to defs not top of file
fnoble merged commit 54943122bc into master 2026-08-25 07:47:11 +00:00
fnoble deleted branch feat/core 2026-08-25 07:47:11 +00:00
fnoble referenced this pull request from a commit 2026-08-26 08:35:08 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
neurogenesis/ngen-weave!1
No description provided.