8000 Rationalize CollectGroups behavior. by rybesh · Pull Request #25 · noflo/noflo · GitHub
[go: up one dir, main page]

Skip to content

Rationalize CollectGroups behavior. - #25

Merged
bergie merged 1 commit into
noflo:masterfrom
rybesh:collect-groups
May 23, 2012
Merged

bergie merged 1 commit into
noflo:masterfrom
rybesh:collect-groups

Conversation

@rybesh
@rybesh rybesh commented May 22, 2012
Copy link
Copy Markdown
Contributor

CollectGroups wasn't working for me as I would expect it to, and given the lack of a spec, I didn't really know if it was broken or I just didn't understand the intended behavior. So I made up my own spec that made sense to me, created a test, and changed CollectGroups accordingly. If you would prefer to keep the existing behavior, perhaps this could be renamed and added as a new component.

bergie added a commit that referenced this pull request May 23, 2012
Rationalize CollectGroups behavior.
@bergie
bergie merged commit 3ee71a9 into noflo:master May 23, 2012
bergie added a commit that referenced this pull request Oct 9, 2026
The protocol specification is a public reference and carries CC0-1.0,
separate from the EUPL-1.2 reference implementation in the same package.
The document integrates the amendments from work document #4 updates
#6-#11 (announce app_data layout, protocol version byte in the auth
response, changeset projection of the 0x14 op taxonomy, Two-Step Cache
tolerating signatures without source, the shared component-type enum,
and the #25 port field set), and marks the pre-freeze open decisions:
the FAILED lifecycle code, pause/step/breakpoint commands, high-water
mark surfaces, and stub-error classification.
bergie added a commit that referenced this pull request Oct 9, 2026
Codecs for the registry handshake, detail exchange, source writes, and
library installs: 0x20 sync request, 0x22 manifest (name to sig_hash
entries, valid with signature and no source per update #8), 0x23/0x24
detail request/response, 0x25 atomic full-source writes, and 0x27
package install requests.

The 0x24 payload carries the declared component kind (elementary,
subgraph, stub - never inferred, update #11) and ports as maps with the
full #25 field set: id, type, plus optional addressable, description,
required, and control; absent optionals are omitted from the wire.
Manifest-side names map onto the wire's id convention.

sig_hash is SHA-256 over a canonical sorted-key JSON serialization of
the kind and port field set, defined here as the cross-repo alignment
substrate with noflo-ui #43's canonical serialization (update #10 item
2). SPEC.md pins the payload shapes in the same change set per the
AsyncAPI release-gate spirit.
AsherBond pushed a commit to AsherBond/noflo that referenced this pull request Oct 12, 2026
bergie added a commit that referenced this pull request Oct 16, 2026
The work document #25 amendment to the manifest format documentation:
the schemas table (id, digest, path, implements closure, examples for
the revision-acceptance backstop), the anonymousSchemas and
foreignSchemas sections, the port schema/guard fields, and the publish
gate's obligations. Committed on master after the #1083 merge, as the
work document #37 amendment was the one documentation gap its review
left.
AsherBond pushed a commit to AsherBond/noflo that referenced this pull request Oct 19, 2026
The noflo.* node-metadata keys apply port-behavior overrides to a
component instance after instantiation and before wiring, completing
the noflo#594 lineage: a graph can now reuse an ecosystem
component while tweaking the knobs its graph needs.

- noflo.control: string[] — the instance's complete gate-inport set,
  replacing the declaration: listed names become gates (standing,
  non-consumingly-read configuration whose arrivals re-fire pending
  work per scope), unlisted former gates become direct firing edges
  (replace semantics makes promotion and demotion both expressible)
- noflo.scoped: object — port-name to boolean, with the buffer
  structures re-prepared on flip (the helper runs pre-wiring, so there
  is no buffered state to migrate)
- noflo.forwardBrackets: object — per-inport rule replacement,
  including the framing-termination empty rule; forwarded brackets
  attach to the ports the component's actual sends go through, so an
  override reroutes the framing when the component sends to the
  overridden target

Applied by the Network after the port-name stamping, before
subscribeNode. Overrides are per-instance (the loader instantiates one
component per node, so other instances keep their declarations),
validated loudly (unknown noflo.* keys — the namespace is core-owned —
nonexistent ports, non-string names, and mistyped values are build
errors named with the node id), and the zero-regression posture holds:
a node without noflo.* metadata is untouched.

The schema touchpoint: the keys are declared by the noflo/port-behavior
metadata schema — the noflo-namespace catalog entry shipped with the
publish-time machinery (work documents noflo#37/noflo#25) — and this module is
the runtime consumer, validating the subset a running network can
check. No catalog artifact ships in this slice; the publish gate
(wd noflo#25) is where the namespace reservation and the opt-in composition
enforcement land.

Spec: the knob matrix from the work document — promote data to gate,
demote gate to data, scoped flips in both directions with per-scope
pairing, forwarding replaced and terminated per instance, the
zero-regression posture pinned by a second instance of the same
component, the validation error class, and the network-level wiring
with the node-id error surface
AsherBond pushed a commit to AsherBond/noflo that referenced this pull request Nov 2, 2026
The example's elaborate message surface (order to chassis/body
assemblies to the released car) becomes the schemas dogfood: eleven
named JSON Schemas under example/schemas/ in the free car namespace,
schema markers on the message and control ports, and a committed
generated noflo.json carrying the schemas table. The example graphs
move from .fbp to FBP JSON: exact case significance end to end, where
the .fbp loader path folds port names to the 1.x lowercase. A spec
validates the end-to-end BuildCar output against car/car through the
manifest's table and pins the guard projection and the negative
cases. Work document noflo#25 update noflo#7 has the design.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0