Skip to content

fix(journey-runner): rung 2 runs when mustNotFire is set even with an empty ordered list (#150) - #255

Closed
MendixMau wants to merge 1 commit into
masterfrom
fix/journey-rung2-mustnotfire
Closed

MendixMau wants to merge 1 commit into
masterfrom
fix/journey-rung2-mustnotfire

Conversation

@MendixMau

Copy link
Copy Markdown
Owner

What changed and why

Rung 2 in project-tests/e2e/journey-runner.js required a non-empty spans.ordered, so a negative-only step ({ordered: [], mustNotFire: [...]}) was skipped silently. The gate is now claimed.length || mustNot.length; assertSequence only runs for a non-empty ordered; assertNoErrors and the mustNotFire loop run as before. Fixes #150.

Left as is, on purpose: a step that captures zero spans still reports INVALID (capture keeps min: 1), because the runner cannot tell "nothing fired" from "OTel off". Whether zero spans should count as PASS for a Cancel step is a separate decision.

Field evidence

The issue report only. Not run against a live Jaeger in this change.

Checklist

  • Size cap: 2 files
  • Test tier: T0 (node --check plus a probe of the gate condition over five span shapes; journey-runner.selftest.js does not cover the step loop)
  • Instrument rules: no new consumer
  • CHANGELOG line under Unreleased
  • Leak guard, check-portability clean

🤖 Generated with Claude Code

https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw


Generated by Claude Code

Rung 2 required a non-empty spans.ordered, so a step proving only that a
microflow did NOT fire was skipped with no output. Gate is now ordered OR
mustNotFire non-empty; assertSequence only runs when ordered is non-empty.
Checks: node --check ok; gate-condition probe over 5 span shapes; no live
Jaeger run available, so no end-to-end execution. Selftest covers otel
assertions only and does not exercise the runner loop.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
MendixMau added a commit that referenced this pull request Oct 8, 2026
Squash of integration/2026-10-08, which merges:

- #225 perf(ui-loop): test-stack-up.sh recognises a live mxcli run --local
- #231 fix(sync): sync-project.sh no longer exits 1 silently before its bin/ refresh
- #242 fix(init): local by default, no Dev Container
- #243 docs(lint): process/lint-backlog.md, the lint rollout plan
- #247 new(lint): the lint gate keeps a ledger
- #249 learn(test): skills/e2e-locators-that-lie.md
- #250 learn(skills): unhappy-path-testing.md
- #251 fix(testing-shape): mxcli test --local shares the deploy directory (#230)
- #252 fix(obligations): LOOK staleness reads the newest VALID AT stamp (#155)
- #253 docs(lint): quality-source review, Batch 4 backlog rows and skill additions
- #254 fix(lint): CONV020 works out of the box, page navigation counts as feedback (#229, #245)
- #255 fix(e2e): journey-runner rung 2 runs for a negative-only span claim (#150)
- #256 fix(gates): Stage 6 Surface, source-sufficiency title, ${JOURNEY_DIR} manifest token (#233, #234, #235)

Verified on the branch: tests/run-tests.sh 33/0, tests/test-lint-delivery.sh ALL GREEN, tests/wave2 73/75 (two environmental), render-routing --check, check-scripts, check-portability, leak guard, check-no-private-citations, check-pr-discipline all clean; scaffold smoke run without crashes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
@MendixMau

Copy link
Copy Markdown
Owner Author

Merged into master via integration PR #258 (squash 9dd9be4), on the maintainer's approval. Closing this PR; its branch is part of that squash.


Generated by Claude Code

@MendixMau MendixMau closed this Oct 8, 2026
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.

journey-runner.js rung 2 silently skips a span claim that is only negative (ordered: [] + mustNotFire)

2 participants