Skip to content

skills: decompose-app, rehost-app + mendix-service-seam (split from #293, 4/6) - #346

Merged
MendixMau merged 4 commits into
masterfrom
split-293/skills
Oct 15, 2026
Merged

MendixMau merged 4 commits into
masterfrom
split-293/skills

Conversation

@MendixMau

@MendixMau MendixMau commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Split from #293 (part 4 of 6).

Stacked on #342 (split-293/rehost). The skills cite pipelines/mendix-mpr/, so #342 must merge first. Until then this diff also shows #342's first commit. This branch does not yet contain #342's review-fix commit 300cd35; it will be merged in with master once #342 lands. This PR's own commits are 3ac141e and 3c472fe.

Depends on the split-293/cut-score and split-293/cut-ledger PRs. decompose-app.md names bin/cut-score.sh (Stage 1) and bin/cut-ledger.sh (Stage 4, Stage 6). Neither file is on master yet.

Direct lane

What changed and why (one paragraph):
This adds three on-demand skills from #293:

  • decompose-app.md: split a Mendix monolith into several apps. It covers:
    • picking the cut on business fit and coupling
    • a gated target architecture
    • cut order by dependency direction
    • moving each slice by MPK
    • ledgering every crossing edge
    • reporting exactly one level per slice
  • rehost-app.md: regenerate a whole .mpr into a fresh app with pipelines/mendix-mpr/ and read the fidelity ledger. Done means build-green with named hand-offs plus journey parity.
  • mendix-service-seam.md: OData and REST between two Mendix apps, as patterns P1–P13, the external-entity limits, recipes A and B, and completion criteria.

Each skill has its row in bin/lib/skill-routing.tsv, re-rendered with LC_ALL=C bin/render-routing.sh. That updated README, ROUTING, three agent stubs and the gate-check.sh stage map. architecture-blueprint.md and learned-constants-and-secrets.md gain the one-line pointers from #293, and the pipeline README now links to the skills.

Changes from #293:

Authoring rules 1–8:

  1. Trigger rows: done, as above.
  2. Baseline-tested against fresh agents: not done.
  3. Prohibitions vs recipes: the skills give recipes for shape problems and bans for discipline problems.
  4. Denominators: every step starts with a Bound: line with a checkable count.
  5. No cached environments: the skills point to the actual script headers.
  6. One skill per situation: the three are cross-linked with "Not this skill" lines.
  7. Failure shown next to each rule: the patterns pair the rule with the verbatim failure.
  8. Retrieval: not tested beyond render-routing --check's coverage audit.

Field evidence (from #293's runs, all on public apps):

  • Field-service template (Mendix 9.24.2), increments 2–8 on 2026-10-12/13:

    • read probe and cut scoring
    • MPK moves
    • a native notes slice
    • an asset/parts slice made seam-live, then strangled: in-edge hand-offs 499 → 157, journey 16/16 twice
    • a dispatch/workforce slice run from these skills: stub rows 271 → 3
  • Increment 1: a synthetic 4-module app (Mendix 10.24).

  • GenAI showcase app, rehost: 36/36 modules landed, not build-green.

  • Banking sample, rehost: build-green.

  • Not verified: macOS, and the two-tree layout (.mpr under app/).

  • No client data anywhere in the diff (leak guard clean; whole-word denylist grep clean)

  • Size cap: three skills, about 590 lines of prose. Over the 400-line cap. Each skill could ship as its own PR.

  • Test tier reached: T0 plus the scoped routing checks:

    • render-routing --check: in sync
    • test-render-routing.sh 5/0, test-routing-tier.sh 12/0, test-baseline-pack.sh 16/0, each run with bin/render-routing.sh
    • check-scripts, check-portability, check-no-client-data, check-no-private-citations, check-pr-discipline all clean
  • New/changed instrument: n/a (prose only)

  • For a new skill: routing rows added and re-rendered

  • CHANGELOG.md line appended, credited

  • No bug entries

Review (MERGE-AFTER-FIX), addressed in 3c472fe

  1. MEDIUM: wrong increment number. The cut-score blind spots in decompose-app.md Stage 1 step 4 were measured in increment 2, the first cut scoring on the field-service template. They were wrongly cited as increment 5. The Evidence header now also covers the first two increments:
    • increment 1: bin/cut-score.sh built on a synthetic 4-module app (Mendix 10.24)
    • increment 2: read probe and first cut scoring on the template
  2. LOW: level amendment dropped. Stage 6 now says the three levels were CONFIRMED with the user 2026-10-12. It also records that level 3 was amended 2026-10-13 from field evidence: "one journey per crossing edge" became one journey per crossing kind, because per edge was undefined for 536 in-edge rows (increment 7). The level 3 row carries the amended criterion.

Checks re-run after the fix: render-routing --check in sync, the three routing fixtures 5/0, 12/0 and 16/0, and all guards clean.

Baseline word count: 75,038 before, 75,038 after (budget 80,000).

Impact

Row Effect Evidence
Process None new at gate-check level: three on-demand skills; nothing new blocks a gate. The skills define per-slice levels and steps for the decompose and rehost paths. diff
Dependencies Shared files: bin/lib/skill-routing.tsv and its re-render (README.md, ROUTING.md, agent stubs architect/ba/mdl, bin/gate-check.sh stage map), CLAUDE.md, skills/architecture-blueprint.md, skills/learned-constants-and-secrets.md. Merges clean onto master 868b3cb (git merge-tree). Conflicts with #342 (add/add, pipelines/mendix-mpr/*; stacked on an older #342 head) and with #273 (bin/gate-check.sh stage map). Order: #341, #345, #342, then this PR rebased and re-rendered. Cites bin/cut-score.sh (#341), bin/cut-ledger.sh (#345) and pipelines/mendix-mpr/ (#342), none on master yet. git merge-tree vs 868b3cb and pairwise
Context cost Unchanged: baseline 73,522 → 73,522 words (budget 80,000); Stage 5 mdl 30,185 → 30,185, lead 25,820 → 25,820 bin/render-routing.sh --check on master 868b3cb vs this head (3c472fe) merged onto 868b3cb via git merge-tree in a temporary worktree
Behaviour A/B REQUIRED, NOT RUN. Three agent stubs gain rendered routing rows. Situational text also changes (three new on-demand skills, architecture-blueprint.md, learned-constants-and-secrets.md): A/B recommended. diff of agents/*.md; routing rows load class ondemand
Runtime None (stage-map data only in gate-check). diff

🤖 Generated with Claude Code

https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw

pipelines/mendix-mpr/ code only: rehost-extract.sh, lib/ (statement split,
topo order, quarantine, exec-resume, exec-each, describe fix, compare),
export-module-mpk.py, README. No samples. Company/app names replaced by
app type; inbox and process-doc citations removed; rehost-extract.sh no
longer needs bash 4 (mapfile, associative arrays). CLAUDE.md Pipelines
table gains the row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…, 4/6)

Three on-demand skills with trigger-condition routing rows, re-rendered.
Inbox, sample-capture and process-plan citations rewritten as the fact
plus the field run (increment N of the public field-service template run).
Pointers added in architecture-blueprint.md, learned-constants-and-secrets.md
and the pipeline README. Baseline unchanged at 75,038 words.

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

- Cut-score blind spots were measured in increment 2 (first cut scoring on the
  field-service template), not 5.
- Evidence header now covers increments 1 (synthetic 4-module app, cut-score
  built) and 2 (read probe + first cut scoring) before 3-8.
- Stage 6 names the CONFIRMED 2026-10-12 levels and the 2026-10-13 amendment:
  level 3 needs one journey per crossing kind (per edge was undefined for 536
  in-edge rows, increment 7).

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 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
@MendixMau
MendixMau marked this pull request as ready for review October 15, 2026 09:22
Conflicts were #342 first-draft files carried by the stack: take master's reviewed
export-module-mpk.py, rehost-extract.sh and README; re-apply this PR's two-line skills
pointer in the README.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
@MendixMau
MendixMau merged commit fa8d384 into master Oct 15, 2026
2 checks passed
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.

2 participants