You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
journey-runner.js rung 2 silently skips a span claim that is only negative (ordered: [] + mustNotFire) #150
mustNotFire is therefore honoured only next to a positive list. A step whose whole proof is "this did NOT run" is one example: Cancel on a "Reset all state?" confirmation, where the reset microflow must not fire and nothing fires at all. Such a step cannot say so.
spans: { ordered: [], mustNotFire: ["ACT_X_Reset"] } is skipped with no output. The journey file reads as if it declares a trace claim, and the claim proves nothing.
Writing span claims for a 9-step admin-console journey. That step was left with no span claim, and its data rung (rows unchanged) carries the proof.
Why this is not a one-line guard change
With nothing fired, O.capture(t0, {min: 1, …}) returns zero spans. The existing branch then reports INVALID "zero spans captured — Jaeger down or OTel off". So "correctly nothing ran" and "tracing is broken" look the same. A negative-only claim needs a liveness reference:
a span the step is known to produce, such as the page's own data-source retrieve or the button's nanoflow; or
a Jaeger health/services query taken in the same window.
Suggested fix
Run rung 2 when orderedormustNotFire is non-empty.
For a negative-only claim, wait the normal capture window (there is nothing to until on). Then assert no match, gated on a liveness check so an empty capture is not read as a pass.
Emit a loud INVALID when a step declares spans that rung 2 will not evaluate, instead of skipping silently.
Add a positive-control mutant that injects the forbidden name into the captured list. --positive-control already has a trace-negative rung (~l.506) that assumes an ordered list; it needs a branch for this.
Fixed by #310, which landed on master in the integration squash #329 (commit 31e90ae) after independent review. Closing; reopen if it still reproduces on master.
Activity
process(contrib/inbox): delete seven triaged 2026-09-26 notes
Field harvest from a requirements-driven build: 26 instrument fixes, …
Integration 2026-10-08: 13 PRs (#258)
e2e: validator accepts negative-only span claims; empty spans block i…
Merge #310: OQL rows by alias; liveness for negative-only spans; APP-…
MendixMau commentedon Oct 14, 2026
Fixed by #310, which landed on master in the integration squash #329 (commit 31e90ae) after independent review. Closing; reopen if it still reproduces on master.
Generated by Claude Code