Skip to content

docs: add warm dev loop proposal (mxbuild --serve + reload_model)#1

Merged
ako merged 10 commits into
mainfrom
claude/mxbuild-diagnostics-spike-emta6h
Jul 18, 2026
Merged

docs: add warm dev loop proposal (mxbuild --serve + reload_model)#1
ako merged 10 commits into
mainfrom
claude/mxbuild-diagnostics-spike-emta6h

Conversation

@ako

@ako ako commented Jul 18, 2026

Copy link
Copy Markdown
Owner

Draft proposal covering two scenarios: a Docker-free mxcli dev warm run
loop to replace the docker inner loop, and an iPad split-screen preview
workflow (Claude Code Web + browser, preview-before-commit). Built on
measured mxbuild --serve incremental builds (~0.8s warm vs ~30-60s
one-shot) and the runtime reload_model hot-reload primitive (~0.1s, no
restart), with restartRequired branching page/microflow from entity/DDL
changes.

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4

claude added 10 commits July 17, 2026 23:57
Draft proposal covering two scenarios: a Docker-free `mxcli dev` warm run
loop to replace the docker inner loop, and an iPad split-screen preview
workflow (Claude Code Web + browser, preview-before-commit). Built on
measured mxbuild --serve incremental builds (~0.8s warm vs ~30-60s
one-shot) and the runtime reload_model hot-reload primitive (~0.1s, no
restart), with restartRequired branching page/microflow from entity/DDL
changes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
Frame the iPad scenario as one leg of the full journey: Claude design
prototype -> Mendix model via mxcli/MDL -> production security
(ALTER PROJECT SECURITY LEVEL PRODUCTION, per-role grants) -> live
warm-loop testing under real security, all on iPad without Studio Pro.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
…loop proposal

Verified reload_model reloads model store + microflows + i18n only, not the
datastorage/entity layer. The runtime reconciles its metamodel catalog
(mendixsystem$entity/entityidentifier/attribute/association) at startup, so
entity/view-entity/association changes need a restart. Confirmed directly: a
view entity added via reload_model never appears in mendixsystem$entity.

Adds the two-signal decision matrix (restartRequired x get_ddl_commands) and
the key nuance that OQL view entities need restart WITHOUT DDL (query-time,
not materialized). Notes the standalone boot lacks preview_execute_oql for
functional OQL verification.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
…warm-loop proposal

One static hub fronting many dynamic dev containers, verified via chisel:
- chisel fan-in (one server, many clients on distinct ports; --authfile isolation)
- why chisel works where ngrok/cloudflared/localtunnel didn't (go install past
  the gate, single-443 multiplex, system trust store already holds the MITM CA)
- mxcli tunnel-hub (static) + mxcli dev --hub (self-registering dynamic side)
- registration flow over chisel's authfile-reload + client-declared-remote primitives
- admin overview page: fleet list + per-container pending-change summaries
- Mendix fleet wrinkles (subdomain ApplicationRootUrl, cookie/DB isolation, slots)
- reclassify coupling Option D (live tunnel) from "not recommended" to verified/preferred
  for the multi-container dev loop, artifact-push kept as durable fallback

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
…strap)

How a user goes from a new Claude Code Web project to a running testable app:
- entry points: mxcli new (new app) / clone + mxcli init (existing)
- gap identified: init scaffolds a devcontainer + .claude tooling but no
  SessionStart hook; Claude Code Web reaps Postgres/JVM on idle, so it needs an
  idempotent `mxcli dev up` wired to SessionStart
- dev up = setup mxcli/mxbuild/mxruntime (all exist) + Postgres + boot + serve
- first-run vs warm cost table; heavy costs are one-time and image-cacheable
- adds impl rows (dev up, init SessionStart hook) and an open question on
  image pre-baking + the SessionStart contract

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
Restructure Provisioning into three entry points (prompt template primary for
web/iPad, repo template, local CLI). Add the prompt-template subsection with:
- the draft bootstrap prompt
- rule 1: committing the config is mandatory (survives reaping; produces the
  repo-template end state without a maintained template)
- rule 2: mxcli delivery is an environment-layer concern (github gate blocks
  release curl; go install works only for a public module) - proven via chisel

Adds impl rows (new --emit-template, shipped prompt template, public-module/
env-preinstall delivery) and open question 12 on mxcli delivery into a gated
empty repo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
Keep one proposal but show how to ship it incrementally as four independent,
value-ordered slices: (1) warm local loop, (2) provisioning, (3) single-app
external preview, (4) tunnel hub. Recommends 1->2 first (solo dev, no external
parts), 3 for single-app preview, 4 as a separately-reviewed scale-out.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
Ran scripts/gen_proposals_readme.py. Indexes 5 previously-missing active
proposals: mxcli_dev_warm_loop, check_mxbuild_gap_heuristics,
ai_capability_dataset, architecture_graph_visualization,
playwright_session_reuse.

Side effect, flagged: PROPOSAL_marketplace_modules (status: shipping) and
UNIFIED_SCHEMA_REGISTRY (status: descoped) drop from the index because their
statuses are non-canonical; the generator only buckets canonical statuses.
They remain on disk and re-index once their statuses are normalised
(maintainer's call — not changed here).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
Lint category-2 fix (maintainer-approved) so both re-appear in the index:
- PROPOSAL_marketplace_modules: status shipping -> partial (active); tidy date
- UNIFIED_SCHEMA_REGISTRY: status descoped -> abandoned; git mv to archive/
  (terminal status belongs in archive/; retired into engalar's codec)

Regenerated README via scripts/gen_proposals_readme.py: marketplace now under
In Progress, UNIFIED under Archived, warm-loop still indexed. No proposals
dropped from the index.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
Document the first-part research (mxcli check improvements) as a proposal:
- where Mendix's diagnostics catalog lives (Mendix.Modeler.Texts.dll PO files)
- structure: CODE__SUMMARY msgids, {param} templates, severity via CE/CW/CI
  prefix, LOCATION + MX_DOCS_CAT tags
- findings: 1318 codes (11.12.1), static-checkability tiering, mxcli already
  reimplements ~77-81, mx check is same-floor as a build (Go check is the only
  speedup)
- approach: versioned data asset, port by tier/frequency, harvest-against-oracle
- verbatim examples (small fair-use sample)

Commit scripts/extract-diagnostics-catalog.sh (the methodology). Its OUTPUT is
Mendix's proprietary corpus and is NOT committed (see IP open question).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
@ako
ako merged commit 49ce895 into main Jul 18, 2026
ako pushed a commit that referenced this pull request Jul 20, 2026
…lope is mxbuild-only

End-to-end reproduction of the mendixlabs#600 stack (DW 3.10.0 over bundled 3.4.0 in an
11.12.0 project, DataGrid2 authored with mxcli, isolated from the Atlas template
pages) with an order-independent, ID-masked before/after-update-widgets subtree
diff proves the parser/template/augment approach is structurally capped below
large version jumps:

- Nested-column PropertyKey sets are already identical before/after (augment adds
  every new 3.10.0 key correctly).
- Residual drift is dominated by fields ABSENT from the widget XML source:
  AllowUpload (x105), DesignProperties, LabelTemplate, and a mxbuild-COMPUTED
  Required (XML declares 3 required="true"; mxbuild emits 54).
- update-widgets on the same copy takes the grid CE0463 -> 0.

Since these fields are not derivable from the .mpk, no augment (including the
proposed full-ValueType path a) can reproduce a version-faithful WidgetType. A
speculative reconcileValueTypeSchema was implemented and reverted (setting
Required from the XML attr would mis-set the 51 computed keys to false).

Revised path forward: delegate the envelope to mxbuild's own update-widgets made
v2-safe (adopt mendixlabs PR mendixlabs#764), keep the moderate-drift augment as-is. Records
the rejected approach inline in augment.go and updates the proposal Open Question #1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
ako pushed a commit that referenced this pull request Jul 20, 2026
…LVED via editorConfig extractor

Updates Open Question #1 to record the landed outcome (was still framing the
instance last-mile as needing v2-safe update-widgets / a goja spike):

- The static editorConfig.js extractor (4b8c4f5) + selection-value fix (666a65b)
  close the DataGrid2 CE0463 natively in mxcli — 0 errors on the mendixlabs#600 stack
  (11.12.0 + DW 3.10.0), minimal and full, no bundled regression. No mxbuild/
  update-widgets dependency needed for DataGrid2.
- Phase 2 (458c52a): extraction moved into .def.json generation; rules wired into
  check as the config-aware MDL-WIDGET10 warning.
- Marks paths (c) update-widgets and (d) goja as superseded (c kept as fallback
  for widgets the static extractor can't fully lift); records coverage (9/28
  DataGrid hide-calls) and the JS-AST / LLM-property-card follow-ups.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
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