Skip to content

learn: snippet-call class never reaches the DOM; 403 bounce and widget-pinned probes read as sign-outs; restarts sign everyone out - #340

Closed
MendixMau wants to merge 3 commits into
masterfrom
learn/2026-10-14-snippet-class-403-restart
Closed

MendixMau wants to merge 3 commits into
masterfrom
learn/2026-10-14-snippet-class-403-restart

Conversation

@MendixMau

@MendixMau MendixMau commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Direct lane

What changed and why (one paragraph):
Four field learnings from 2026-10-14 land as register rows, not new skills. (1) learned-detection-gaps.md: a Class on a SNIPPETCALL is green through check, exec, mxbuild, lint and DESCRIBE, and never reaches the DOM, because a snippet call renders no element. Put the class on the surrounding container (#336). (2) testing-shape.md §4 gains two false-red rows. The first: login.html?messageCode=403 with the session kept reads as a sign-out (#338). The second: an instrument pinned to one widget name or a typed menu list reports false FAILs after a redesign. The guard is a session probe of "not on login.html plus menu present", and menu expectations derived from list navigation menu (#339). (3) ui-loop.md: under mxcli run --local, app restarts matched a user's "it signs me out" report by timing, so say so before restarting while a human uses the app, and check the runtime log's start lines before calling a sign-out a defect (#337).

Refs #336 (skill half only; its lint-rule ask stays open), #337, #338, #339.

Field evidence: three-app field run, mxcli v0.26.0, Mendix 11.15.0, 2026-10-14.

  • Snippet-call class: 6 calls, every gate green, the DOM probe found no class. Moving the class to the containers fixed it, verified in the browser.

  • 403: wrong-role spec, 7 roles. Every block was a messageCode=403 bounce with the session kept, and no message on the login page.

  • Stale instruments: 1/7 → 7/7 after widening the probe selector. The nav-crawl was 7/34 with all 27 FAILs expectation rows.

  • Restarts: 7 runtime starts in ~90 min matched a user's "it signs me out" report. This is a timing match; no session table was inspected.

  • No client data anywhere in the diff (bin/check-no-client-data.sh clean)

  • Size cap: 4 files, small diff

  • Test tier: T0. Docs-only; check-pr-discipline.sh, check-no-private-citations.sh and render-routing.sh --check are clean locally

  • CHANGELOG.md line appended, credited to the field run

Review

An independent review returned MERGE-AFTER-FIX with two contradictions. Both are fixed in 190a2d7, after a merge of origin/master (clean, no conflicts).

  1. ui-loop restart line. It said "(sessions live in the runtime's memory)". That contradicts skills/measured-claims.md, which measured that sessions persist in System.Session and survive a container restart. The line now drops that mechanism. It is scoped to what was observed (mxcli run --local) and says plainly that the evidence is a timing match: 7 starts lined up with the reports, and no session table was inspected. The mechanism is left open. The CHANGELOG headline was reworded to match.
  2. testing-shape 403 row vs the 2026-08-15 page.goto(baseUrl) row. The new row now names the probe actually used: a full page.goto('<base>/'), which loaded the user's home with no login. A login form at that point counts as a real sign-out, and the existing row's re-authenticating helper still applies. The existing row's rule is unchanged. It gains one cross-reference: its bounce may have been this same 403, misread. This is marked unconfirmed, because the 2026-08-15 record does not say whether the URL carried messageCode=403.

Always-loaded cost (render-routing.sh --check): the fix adds 66 words to the baseline (75488 → 75554 of 80000; master is 75028).

  • testing-shape.md adds 38 words for test, gate and review at stages 5 and 6. Against master, the whole PR adds 314 words to the test role.
  • ui-loop.md adds 28 words for mdl and review at stage 5.

No unrelated text was trimmed.

Checks: test-routing-tier.sh 12 ok / 0 FAIL, and test-baseline-pack.sh 16 ok / 0 FAIL. check-scripts, check-portability, the leak guard, check-no-private-citations and check-pr-discipline are all clean. The only fixture that greps ui-loop.md is test-exec-lock-watch.sh, which checks for the phrase "watch can apply this". This was verified by inspection instead of a run: the new text does not contain that phrase, and the count is unchanged (1).

🤖 Generated with Claude Code

https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw

…3 false sign-out, widget-pinned probes, restart signs everyone out

Field run 2026-10-14 (mxcli v0.26.0, Mendix 11.15.0). Refs #336 #337 #338 #339.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… reconcile the 403 probe with the goto row

Review of #340 (MERGE-AFTER-FIX):
- ui-loop: drop "sessions live in the runtime's memory", which contradicts
  measured-claims.md (sessions persist in System.Session and survive a
  container restart). Scope to mxcli run --local and state the evidence
  as a timing match (7 starts vs the reports), not an inspected session table.
- testing-shape 403 row: name the probe actually used (a full
  page.goto('<base>/')), keep the re-authenticating helper rule of the
  2026-08-15 row, and amend that row with an unconfirmed cross-reference:
  its bounce may have been this 403 misread.
- CHANGELOG headline matches.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
MendixMau pushed a commit that referenced this pull request Oct 14, 2026
…ce and widget-pinned probes read as sign-outs; restarts sign everyone out

Review: independent review (r-community) MERGE-AFTER-FIX — ui-loop restart cause contradicted measured-claims.md; new 403 row conflicted with testing-shape's 2026-08-15 page.goto row → both fixed (timing-match scope, cause open; probe named, old row kept with an unconfirmed cross-note); confirmation MERGE at 190a2d7. Baseline +526 words (75,028 → 75,554), under the 2,000-word trim zone; movable story text noted for a later trim.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
MendixMau added a commit that referenced this pull request Oct 15, 2026
…journey controls, fixes) (#385)

Lands #340 #363 #362 #355 #370 #368 #364 #365 #366 #372 #367 #371 #376 #369 #373 #377 #378 #380.

Review: each constituent PR independently reviewed by a fresh agent that did not write it; merged into integration/2026-10-15 only on a MERGE verdict with green CI (per-PR Review lines in the integration merge commits). After-fix rounds: #373 (env-var cap, rename/skip-loops freshness), #377 (inline URI fallback), #378 (full-pack double count, slice content). Stub diet (#369/#378/#380) behaviour A/B, 5 reps x 2 drafting tasks + 5 retrieval probes x 3 reps: trimmed context no worse than master on every scored metric (planted STOP refused 20/20, parse failures page 2/5 vs 3/5, probes 15/15); mdl Stage 5 56,236 -> 30,647 words, baseline 75,028 -> 73,233. Full suites on c9bc073: run-tests 33/0, wave2 111 fixtures 0 failing. Field evidence: none yet for the instruments (#355 warn-only, #373/#377 read-only).

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

Copy link
Copy Markdown
Owner Author

Landed on master in #385 (squash 868b3cb), after its own independent review on the night integration branch. Closing this PR.


Generated by Claude Code

@MendixMau MendixMau closed this Oct 15, 2026
@MendixMau
MendixMau deleted the learn/2026-10-14-snippet-class-403-restart branch October 15, 2026 10:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants