Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
2175fe6
fix(widgets): write a hidden widget property at its declared default
claude Aug 30, 2026
ccb4fd5
feat(check): report an image widget with no image (MDL-WIDGET22)
claude Aug 30, 2026
99c1712
fix(xpath): fold XPath operator keywords to lower case
claude Aug 31, 2026
70b0e5a
docs(skills): add upgrade-mendix-version
claude Aug 31, 2026
597db1b
feat(pages): point an image widget at an image collection entry
claude Aug 31, 2026
4236c66
feat(check): resolve an image widget's collection entry reference
claude Aug 31, 2026
5b200d3
fix(describe): quote and escape MDL strings in one place
ako Aug 31, 2026
d41832b
fix(describe): emit workflow annotations as comments, not statements
ako Aug 31, 2026
825873d
fix(workflow): stop naming a jump activity after its target
ako Aug 31, 2026
81efdab
fix(microflows): store an aggregate the way Studio Pro does
claude Aug 31, 2026
a68ef10
feat(mdl): reduce, all and any in the aggregate grammar
claude Aug 31, 2026
250d991
fix(microflows): describe every aggregate as MDL that parses back
claude Aug 31, 2026
305fd92
docs(microflows): the eight aggregate functions, and an #1004 repro
claude Aug 31, 2026
ac43ace
Merge remote-tracking branch 'origin/main' into claude/mxcli-unit-tes…
claude Aug 31, 2026
e9f8517
Merge pull request #347 from ako/claude/mxcli-unit-test-perf-n7ggx8
ako Aug 31, 2026
d00abf2
Merge remote-tracking branch 'origin/main' into fix/workflow-describe…
ako Aug 31, 2026
df66e00
Merge branch 'fix/workflow-describe-quote-doubling' into fix/workflow…
ako Aug 31, 2026
1719f60
Merge remote-tracking branch 'origin/main' into fix/workflow-jump-tar…
ako Aug 31, 2026
b2371f9
Merge pull request #348 from ako/fix/workflow-describe-quote-doubling
ako Aug 31, 2026
fecb3ae
Merge pull request #349 from ako/claude/sudoku-test-issue-46-iyxn30
ako Aug 31, 2026
c1c1cdb
Merge remote-tracking branch 'origin/main' into fix/workflow-jump-tar…
ako Aug 31, 2026
34f362d
Merge remote-tracking branch 'origin/main' into fix/workflow-describe…
ako Aug 31, 2026
7560ceb
Merge pull request #350 from ako/fix/workflow-jump-target-validation
ako Aug 31, 2026
86640af
Merge pull request #351 from ako/fix/workflow-describe-annotation-com…
ako Aug 31, 2026
862fb69
fix(test): make the no-annotation control a valid workflow
ako Aug 31, 2026
ee76fa9
refactor(skills): move the bug findings out of fix-issue.md into JSON…
ako Aug 31, 2026
6210f19
Merge branch 'fix/wf05-annotation-test-fixture' into refactor/finding…
ako Aug 31, 2026
264054a
Merge pull request #353 from ako/fix/wf05-annotation-test-fixture
ako Sep 1, 2026
ced830e
Merge pull request #354 from ako/refactor/findings-out-of-skill
ako Sep 1, 2026
94400ac
fix(mdl): a bare attribute in FILTER/FIND built an invalid expression
claude Aug 31, 2026
451cf47
docs(mdl): document the FILTER/FIND predicate refusals
claude Aug 31, 2026
99a5dc1
feat(skills): measure how far the bug-pattern digest has fallen behind
ako Sep 1, 2026
fb51189
docs(wiki): digest the mdl/executor findings into four bug-pattern pages
ako Sep 1, 2026
9920022
Merge pull request #352 from ako/claude/mxcli-findings-nnl181
ako Sep 1, 2026
9438276
docs(wiki): finish the mdl/executor digest — five more bug-pattern pages
ako Sep 1, 2026
d4e9ebc
docs(wiki): digest the cmd/mxcli findings into five bug-pattern pages
ako Sep 1, 2026
5f103a0
docs(wiki): digest the mdl/backend findings into three bug-pattern pages
ako Sep 1, 2026
e9544ac
Merge remote-tracking branch 'origin/main' into docs/bug-patterns-bac…
ako Sep 1, 2026
6e92e2f
Merge branch 'main' into feat/digest-trigger
ako Sep 1, 2026
45fb436
Merge pull request #355 from ako/feat/digest-trigger
ako Sep 1, 2026
6e2fd01
Merge branch 'main' into docs/bug-patterns-executor
ako Sep 1, 2026
5333fbf
Merge pull request #356 from ako/docs/bug-patterns-executor
ako Sep 1, 2026
155b4d9
docs(wiki): digest the mdl/grammar findings into three bug-pattern pages
ako Sep 1, 2026
de3b2b2
docs(wiki): digest mdl/visitor — two new pages and the first re-sync
ako Sep 1, 2026
2cff9ab
fix(test): boot the local test run against the tree mxbuild writes
claude Aug 31, 2026
ee29546
fix(widgets): default-value a hidden property MDL cannot name
claude Aug 31, 2026
b9aab17
fix(widget sync): report what was compared, not what was concluded
claude Aug 31, 2026
1d5c9f7
test(local app): assert the build populates the tree the runtime boot…
claude Sep 1, 2026
a739d2e
Merge pull request #361 from ako/claude/mxcli-unit-test-perf-n7ggx8
ako Sep 1, 2026
0477bc6
feat(test): warn when a test run will recompile a running app's classes
claude Sep 1, 2026
4bac703
fix(mappings): correct the XML-schema corpus figure, and say how it w…
ako Sep 1, 2026
5918d94
Merge pull request #362 from ako/claude/mxcli-unit-test-perf-n7ggx8
ako Sep 1, 2026
5f5adef
Merge pull request #363 from ako/fix/xml-schema-corpus-correction
ako Sep 1, 2026
9c1e0d5
Merge remote-tracking branch 'origin/main' into docs/bug-patterns-rec…
ako Sep 1, 2026
680025d
fix(findings): recover 13 lost pattern pages; close the digest's blin…
ako Sep 1, 2026
342083d
Merge pull request #364 from ako/docs/bug-patterns-recover
ako Sep 1, 2026
24b6a4d
docs: stop wiki PRs needing to be serialised
ako Sep 1, 2026
9f5ee0d
docs: move the wiki page list to its own file, and make it self-checking
ako Sep 1, 2026
1cab412
docs(annotation): say that Mendix has no annotation height
claude Sep 1, 2026
f12b188
fix(tunnelhub): let CodeQL see the redirect guard it already has
claude Sep 1, 2026
6099e62
Merge pull request #366 from ako/docs/seed-table-own-file
ako Sep 1, 2026
62a4743
Merge pull request #367 from ako/claude/mxcli-findings-nnl181
ako Sep 1, 2026
b6eef38
Merge pull request #368 from ako/claude/mxcli-issues-analysis-g3qmt6
ako Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions .claude/commands/mxcli-dev/wiki-sync.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,14 @@ This command is the trigger; the skill is the contract.
- `--all` — sync every page in `docs-wiki/`.
- `--stale` — sync only pages whose `last-synced:` SHA is older than HEAD.

For `bug-patterns/` specifically, run **`make digest-status`** first: it reports
how many findings have landed since the last bug-pattern sync and which areas
no page mentions. That is the scope question for this category — the pages
digest `.claude/skills/fix-issue/findings/*.jsonl`, and an area with many
findings and no page is an undigested failure class, not a missing file.

If invoked with no arguments, ask the user which page(s) to sync. List the
seed table from `maintain-wiki.md` as options.
page list from `.claude/skills/maintain-wiki/pages.md` as options.

## Process

Expand Down Expand Up @@ -88,10 +94,10 @@ If the user is requesting a page that doesn't yet exist in
2. Is it really a procedure (skill), reference (manual), implementation
detail (source), state (proposal frontmatter / GitHub), or
decision (ADR)? → route there instead.
3. If it genuinely belongs in the wiki, add it to the seed table in
3. If it genuinely belongs in the wiki, add a row to the page list in
`maintain-wiki.md` first, with its category, before creating the file.

The seed table is the wiki's table of contents — new pages outside it
That file is the wiki's table of contents — new pages outside it
should be the rare exception, not the default.

## Important reminders
Expand Down
765 changes: 88 additions & 677 deletions .claude/skills/fix-issue.md

Large diffs are not rendered by default.

59 changes: 59 additions & 0 deletions .claude/skills/fix-issue/findings/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Findings

One JSON object per line, sharded by area. 630 records, extracted from the
symptom table that used to live inside `fix-issue.md` — see that file for how to
search them and how to add one.

## Why JSONL, and why sharded

The table had grown to 1.05 MB. That is past a context window, past what
GitHub's web editor will open, and past what the wiki's own `wiki-sync` can
consume (its Phase 2 requires reading a source in full) — so the digest step that
turns findings into `docs-wiki/bug-patterns/` pages had been blocked since the
day it was created.

Line-oriented records fix all three at once. A shard is small enough to open and
grep; `merge=union` is *correct* on a file of independent records, where on the
old mixed prose-and-table file it was a hazard; and a query can pull one area at
a time instead of the whole corpus.

Nine shards rather than one file per finding: 630 files would trade a
too-large file for a directory nobody can scan, and the conflicts that motivated
sharding only happen between fixes touching the *same* area.

## Fields

| field | |
|---|---|
| `area` | package the fix landed in, e.g. `mdl/executor`. Decides the shard |
| `date` | when the finding was last touched, `YYYY-MM-DD`. Backfilled by `git blame` over the table this came from, so it is *last touched*, not *first written* — a row that was later corrected carries the correction's date. Used by `make digest-status` to measure how far the wiki digest has fallen behind |
| `symptom` | what the user saw — the thing you match against |
| `cause` | the mechanism |
| `file` | where to look first |
| `insight` | what would have made it cheaper to find; the part worth reading |
| `refs`, `ce`, `rules` | issue/PR refs, Mendix `CE####` codes, MDL rule ids — extracted from the text, present only where the text carried them |
| `raw` | the original table row, for the 68 records whose row could not be split into four columns (an unescaped `\|` in the text, or a row that never had four cells). `symptom`/`cause`/`file`/`insight` are absent on these |

A record has **either** the four structured fields **or** `raw`. Queries that
must cover everything need to account for both.

## Guard

`make check-findings` (`scripts/check-findings.sh`) validates every line: one
JSON object, an `area`, a `date`, and either the four fields or `raw`. It prints
one line saying how far `docs-wiki/bug-patterns/` has fallen behind these
findings — see `make digest-status` for the breakdown.

It runs in CI as of the change that added this sentence. It did not before,
for the two weeks this file claimed it did — which is the same shape as every
other finding here, so it is recorded rather than quietly corrected.

The extraction was verified lossless by regenerating every table row from the
records and diffing against the original 630 — byte-identical as a multiset.
Order carries no meaning: these are looked up by matching a symptom.

## On DuckDB

The files are newline-delimited JSON, which DuckDB reads in place over a glob —
no import, no schema, no build step. It is not vendored and not required: `grep`
plus `jq` covers the common lookup, and the guard above only needs `python3`.
Loading
Loading