Skip to content

Verify native subform JSON and complete field-create defaults - #41

Merged
Llewellynvdm merged 4 commits into
mainfrom
fix/subform-json-verification
Oct 10, 2026
Merged

Llewellynvdm merged 4 commits into
mainfrom
fix/subform-json-verification

Conversation

@Llewellynvdm

@Llewellynvdm Llewellynvdm commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Joomla re-encodes native subform values (escaped slashes/Unicode, whitespace and object member order), so correct writes previously became uncertain and retained their write lease. Compare the decoded outer JSON only for approval-bound native subform metadata. Preserve list order, object/list kinds, scalar types and nested literal text; refuse malformed, oversized, deeply nested or numerically lossy values.

Also complete omitted field-create description and params from Joomla's administrator form defaults in all six reviewed API/native contexts. Explicit values and PATCH behavior are preserved. This prevents the concrete missing non-null SQL payload failure reported in the paired TypeScript issue.

Ambiguous HTTP 400 responses still retain uncertainty: Joomla can persist a model and then return 400 when check-in fails. The post-save regression proves that uncertainty, lease retention and mutation-free replay remain intact. Existing uncertain executions require administrator inspection/reconciliation.

Fixes #39. Related to joomengine/joomla-mcp#57. Paired TypeScript PR: joomengine/joomla-mcp#59.

PR #40 is now merged. This PR targets main; its existing branch incorporates the merged category-assignment base with the subform and field-create fixes preserved.

Validation:

  • All 35 local PHP contract suites pass, including 1,461 custom-field, 653 category-assignment and 167 field-default assertions.
  • Source ZIP/relocated runtime, source-pinned seed reproducibility and changed PHP syntax checks pass.
  • Added installed Joomla article subform fixtures that verify native re-encoding, independent read-back, replay without mutation and a subsequent write after lease release; installed workflow results remain the live acceptance evidence.
  • Field-default installed fixtures deliberately omit description/params and verify native storage, DOM preparation, replay and update preservation.

Retain array order, JSON kinds and literal nested text. Refuse malformed,
rounded, overflowing or underflowing numeric tokens. Exercise actual native
Joomla re-encoding, lease release and mutation-free replay.

Related to #39.
Use the source-backed administrator form defaults for all six reviewed API
and native contexts; preserve explicit values and partial updates. Verify
omission and update preservation in installed field-default fixtures.
Document scoped verification and safe handling of ambiguous post-save400s.

Related to #39 and joomengine/joomla-mcp#57.

Copy link
Copy Markdown
Contributor Author

Final-head CI is green for f5030a63fa6e7246f8b606d11ae8d150b962c235:

The actual Joomla 6.1.3 custom-field suite passes 2,421 checks, including the new article subform's native JSON re-encoding, independently read parent value, lease release, replay without mutation and subsequent write. Source ZIP/relocated-runtime checks pass (1,880 assertions).

Paired TypeScript fix: joomla-mcp #59. Merge the category-assignment base PR #40 first, then retarget this PR to main.

Base automatically changed from fix/field-category-assignment to main October 10, 2026 16:26

Copy link
Copy Markdown
Contributor Author

Resolved the conflicts with main in b618539 after #40 merged. Retained both changelog entries and implementation notes. The merge commit has exactly the same file tree as the previously green PR head (tree 1206d791714c7785200ce0e520b7014eeedf59c4), preserving all runtime and regression fixes.

Re-ran the relevant local contracts: 1,461 custom-field + 167 field-default + 653 category-assignment checks passed. Fresh Actions runs are triggered for this merge commit. Updated the PR description to remove the obsolete stacking instructions.

@Llewellynvdm
Llewellynvdm merged commit caf666a into main Oct 10, 2026
7 checks passed
@Llewellynvdm
Llewellynvdm deleted the fix/subform-json-verification branch October 10, 2026 16:56
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.

Article update with a subform custom field value is marked uncertain: read-back compares the JSON as text

1 participant