8000 Substitutions part 2 by bergie · Pull Request #17 · noflo/noflo-jekyll · GitHub
[go: up one dir, main page]

Skip to content

Substitutions part 2 - #17

Merged
bergie merged 4 commits into
masterfrom
substitutions-2
Oct 19, 2026
Merged

bergie merged 4 commits into
masterfrom
substitutions-2

Conversation

@bergie
@bergie bergie commented Oct 19, 2026
Copy link
Copy Markdown
Member

No description provided.

… gate closes the content race

The substitution map (work document #35 update #23) executes its next
step: the load step becomes a wrapped stock component (filesystem/ReadFile
through the assembly adapter, the {path} envelope moved upstream into the
scan subgraph), jekyll/LoadDocument and its LoadPipeline test retire, and
the posts leg's per-message scopes ride wrapped stock (objects/DuplicateProperty
and packets/ScopeFromObject) instead of the relay's manual stamping.
jekyll/StreamEnvelope carries per-scope holder activations inside the one
shared frame and strips the forwarded packets' scopes, so the single-scope
stream collector flushes once over the collection; jekyll/PostCollector
reads its stream unscoped accordingly. The scan's static leg strips its
listing framing before the export — SplitStatic's head-first consumption
cannot take forwarded brackets, and the close bracket stranded at
closedown (the one benign strand the no-silent-loss census still reports
is the builder's templates framing pair, cosmetic).

jekyll/DocumentBuilder's two-pass site enrichment is gated on
convertedness through the layout chain (the fixture front page's posts
listing lives in its index layout, so the page-body-only reference test
left it ungated and let it drain before the posts converted — the Shape C
content race), with the conversion record surviving config arrivals and
the fail leg required so an unattached error send escalates loudly
(work document #48's no-silent-loss surface).

Work document #35 updates #29-#33.
…ure, and the send-time probes

scripts/stress-anomaly.mjs runs N fixture builds, hashes every output
tree (relative paths + content digests), and reports the stranded reports
the engine's no-silent-loss surface dispatches (noflo/noflo#1103) —
dispatch-time observation that does not perturb the race the way polled
buffer snapshots did. It carries the builder store/config dump at
closedown and the send-time emission classifier (converted vs raw
site.posts entries per emitted page — the discriminator that localized
the layout-referenced listing race, work document #35 update #31).

scripts/stress-trace.mjs records per-run Flowtraces, retains one sample
per distinct tree hash, and diffs every variant against the majority
hash on src/tgt-attributed DATA flows (the payload.id keying the
previous comparison used vanished from the trace format — the
comparisons were vacuous until re-keyed).

BUILDER_DEBUG=1 opts into the builder drain logging; the clean runs rely
on the engine's stranded surface alone.

Work document #35 updates #27-#31.
The monorepo verification symlinks (@noflo/noflo, @noflo/graph pointed at
the workspace checkout) are gone: the dependency shape is the release
target again. alpha.13 carries the no-silent-loss closedown work this
testbed drove (noflo/noflo#1103): the closedown-vs-pump delivery race
(the ~10% silent message drop the stress loop reproduced end to end),
the forwarding-inport ready-scope walk, and the null-partition
context-IP fix — work document #48.

Verified on the published set: the suite green, and 200 stress builds
under 4x background CPU load produce one identical output tree — zero
occurrences of the three nondeterminism shapes the investigation chased
(work document #35 updates #27-#33).

Work document #35 update #33.
@bergie
bergie merged commit 47a292d into master Oct 19, 2026
2 checks passed
@bergie
bergie deleted the substitutions-2 branch October 19, 2026 10:01
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.

1 participant

0