Repository navigation
new(skill): rest-between-mendix-apps — contract, consumer honesty, cross-app test ladder - #273
Merged
Merged
Conversation
…oss-app test ladder REST between Mendix apps you build yourself: the decisions to write down before the first script (pull vs push, versioned path, key + version rule, cursor paging, correlation id, error shape incl. the runtime's 560, auth in the operation microflow per BUG-152, ports, one owner per fact), 17 publisher and consumer rules, a six-rung test ladder (publisher contract tests, consumer logic tests, fixture server per upstream, mock-vs-live contract diff, curl status matrix, cross-app consistency, cross-app journeys) with a per-change/slice/release cadence, and a 26-entry failure register drawn from three demo apps (22 backed by a FINDINGS line, 4 by a proof doc or UX scan). Routed as ondemand build/integration for architect, mdl, test, review at stages 3-6; rest-integration-first-time-right.md links to it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bin/gate-check.sh stage map: took master, re-rendered with render-routing.sh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…write, auth pinned to v0.24, generic domain - CHANGELOG line added. - StackOverflowError rule now cites BUG-157 (a signal-stopped test run leaves after-startup on the injected MxTest flow); dropped the advice to run `test --attach` in parallel, since --attach is a model write. - Auth claim pinned to mxcli v0.24 (BUG-152); notes Studio Pro can set the service's own auth and that microflow-only auth leaves the endpoint anonymous. - Related: testing-shape.md citation no longer claims @cleanup content. - Evidence claim narrowed; §1 rationales without a register row are marked (design choice); 401-stop/5xx-continue marked (recommendation); rung-1 cost wording clarified as two measured runs. - Routing row front-loads "App-to-app REST or microservices"; re-rendered. - §5 register moved to process/rest-between-mendix-apps-register-2026-10.md, a short summary stays in the skill (skill rule 6). - Domain wording generalised to order/stock/customer examples. Skill words 3593 -> 3090 (on-demand); baseline 75038 unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
This was referenced Oct 14, 2026
Merged
MendixMau
pushed a commit
that referenced
this pull request
Oct 15, 2026
…ot require the A/B Applying the block to 11 open PRs marked #273 and #346 "A/B REQUIRED" only because render-routing added an on-demand row to agent stubs, with Context cost 0. Say so: that case is NOT RUN with the reason, not required. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…uard rule The skill said exec.sh refuses across projects; since #304 it locks per project. Register row 24 annotated. Routing regenerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # CHANGELOG.md
# Conflicts: # CHANGELOG.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A new skill,
skills/rest-between-mendix-apps.md, for two or more Mendix apps you build yourself that read each other over REST (app-to-app, microservices).The existing
rest-integration-first-time-right.mdcovers the single-app mechanics (JSON structure, import mapping, theallrange flag, a REST-fed DataGrid). This one covers what sits between apps, so it is a sibling rather than an extension. The two files link to each other.Sections
sincewith overlap,X-Correlation-Id, error shape (including the runtime's 560 that arrives before your microflow runs), auth, a fixed port per app, one owner per fact, and dates kept as String on the wire. Rationales that are not backed by a recorded failure are marked (design choice). Secrets are constants with no value in the model.''vsempty; 422 vs 560; every payload change bumps both version andupdatedAt.LastError = ''vsempty; "as of" plus stale and "never read" states; status cards fed by the real call path, not a probe; an ordering guard; prune only after a complete read; a full-read button; retry for checks that run once; never invent the owner's fact; size columns from the real feed.mxcli test), consumer logic tests, a fixture server per upstream with modes, a mock-vs-live contract diff, a curl status matrix, a cross-app consistency check (recommendation; the apps had none), cross-app journeys. Cadence per change, per slice and per release, and how to keep it cheap: onemxcli test --localat a time on the machine (ports 8081/8091),--attachcounted as a model write;exec.shlocks per project since feat(exec): per-project exec lock, --commit-first, watch-compat verdict, scoped app restart, scratch mxcli test #304, never stop a test run with a signal (BUG-157),@cleanup, fixture resets, SKIPPED instead of passed, one hostname per app.process/rest-between-mendix-apps-register-2026-10.md.Evidence
Three demo apps built with mxcli v0.24–v0.26 on Mendix 11.15 between 2026-10-07 and 2026-10-12: nine published APIs and five consumer directions. 22 register rows cite a FINDINGS line, 4 a proof document or the UX scan. Domain names, record ids and hostnames are replaced by generic placeholders (order/stock/customer apps,
ORD-0001/ITEM-B/WH-A, localhost ports). No new instrument; field evidence for the skill text is the three apps above.Routing
One row in
bin/lib/skill-routing.tsv:ondemand,build/integration, roles architect, mdl, test and review, stages 3–6, trigger front-loaded on "App-to-app REST or microservices".bin/render-routing.sh --checkandbin/check-skill-routing.shpass; baseline 75,225 words (unchanged, budget 80,000).Review
Independent review returned MERGE-AFTER-FIX. Addressed in e0ecd0b (after merging origin/master in 8da715d; the
bin/gate-check.shstage-map conflict was resolved by taking master and re-rendering):## Unreleased.MxTestflow, and the next injection chains it to itself). The advice to runtest --attachin parallel is gone:--attachis a model write (testing-shape.md).testing-shape.mdcitation no longer claims@cleanupcontent (it now cites the test ports and--attach).process/(skill rule 6). A five-line summary stays in the skill.Skill size (on-demand): 3,593 → 3,090 words. Checks: check-scripts, check-portability, leak guard, check-no-private-citations, check-pr-discipline, render-routing
--checkand check-skill-routing are all clean. Fixtures: test-render-routing 5/5, test-routing-tier 12/12, test-baseline-pack 16/16.Update 2026-10-16
exec.shrefuses while another project writes. Since feat(exec): per-project exec lock, --commit-first, watch-compat verdict, scoped app restart, scratch mxcli test #304exec.shlocks per project, so the rule now says another app'sexec.shno longer blocks yours, a rawmxcli exectakes no lock, and--attachstill counts as a model write. Register row 24 is annotated as fixed by feat(exec): per-project exec lock, --commit-first, watch-compat verdict, scoped app restart, scratch mxcli test #304.bin/gate-check.shandagents/test-agent.mdfrom master before re-rendering routing.bin/check-no-client-data.shwith the real denylist is clean on the head; the added text uses only generic order/stock/customer examples.Impact
process/; no gate, no new human step, nothing new blocks.bin/lib/skill-routing.tsvand its re-render (README.md,ROUTING.md, agent stubs architect/mdl/review/test,bin/gate-check.shstage map),skills/rest-integration-first-time-right.md(cross-link). Merges clean onto master 1ed7c99. Reads no artifact (prose; cites BUG-152, BUG-157,testing-shape.md).bin/render-routing.sh --checkon master (d1cbd41) and on this head: baseline 75,225 → 75,225 words (budget 80,000); Stage 5 lead 26,443 → 26,443, mdl 30,965 → 30,965, review 31,435 → 31,435; Stage 3 architect 24,779 → 24,779. On-demand skill, 0 here.🤖 Generated with Claude Code