Skip to content

Fix issues #7–#13: protocol shapes, native reads and stable PHP runtime - #16

Merged
Llewellynvdm merged 14 commits into
mainfrom
fix/issues-7-13-stable-runtime
Sep 30, 2026
Merged

Llewellynvdm merged 14 commits into
mainfrom
fix/issues-7-13-stable-runtime

Conversation

@Llewellynvdm

@Llewellynvdm Llewellynvdm commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

This PR resolves #7–#13 on one branch with separate issue-specific commits. It restores object/list input and schema shapes, fixes exact native list pagination and language ordering, delivers large discovery responses, stabilizes long-running stdio, and preserves JSON-RPC error and notification behavior.

Issue Result
#7 Omitted and {} inputs work through both read tools; arrays/null/scalars fail. Nested mappings survive validation, encrypted plans, deferred jobs and result replay, with native form conversion confined to save.
#8 Discovery schemas preserve object mappings, defaults and numeric keys across tools and action descriptions.
#9 All 13 reported native list actions retain exact requested offsets and consistent filtered totals, including final and empty pages.
#10 Content languages use the native primary key and approved model ordering on single-language and configured multilingual sites.
#11 Large encrypted session replies are delivered; bounded overflow becomes a protocol error without dropping subsequent requests.
#12 Shared bounded validation, cycle-free canonicalization and selective catalogue reads keep a persistent process within 128 MB; stdio framing, backpressure and diagnostics are bounded.
#13 Parse, envelope, unknown-method and invalid-parameter errors remain distinct; IDs and notifications obey native MCP session/version rules.

Validation includes actual SDK stdio and both HTTP protocol eras; 88 schema-discovery and 99 wire checks; plan/apply/job/replay and native form regressions; and installation, authorization, write/reconciliation, source ZIP and deterministic catalogue coverage. An independent installed Joomla 6.1.3/PHP 8.3.6/MySQL run passed 377 list assertions, 165 language assertions, and 513 endurance assertions with 600 calls through one 128 MB PHP process. PHP RSS was 66,338,816 bytes at every 100-call checkpoint; discovery responses completed in 0.29–0.68 seconds.

Current-head CI is green for PHP 8.3/8.4 contracts, all four PHP × MySQL/PostgreSQL installed combinations, and the installed JCB golden image. New live list, language and endurance suites run in both installed tracks. Exact results are linked in the final validation comment. Installed empty-object write/read-back/replay/CRUD coverage passes 26 assertions; guarded Registry recovery preserves model-visible values and performs no extra list queries.

Shared native companion defects are also fixed and tested in joomengine/joomla-mcp#45 (tracked by its issue #44). PHP SDK-specific session/validation/dispatch defects are not claimed as TypeScript SDK defects. Vendor code, released tags and version metadata remain unchanged; both changelogs use [[[NEXT_VERSION]]]. No merge or release is performed by this PR.

Closes #7
Closes #8
Closes #9
Closes #10
Closes #11
Closes #12
Closes #13

@Llewellynvdm Llewellynvdm changed the title Fix MCP protocol, discovery, pagination and persistent-session regressions Fix issues #7–#13: protocol shapes, native reads and stable PHP runtime Sep 29, 2026

Llewellynvdm commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor Author

Final code head: 668109a.

All 24 local PHP contract suites pass, including actual-SDK wire (99), discovery (88), planned (30), jobs (63), native form/security cases, and 600-request endurance under 128 MB. Source ZIP/relocation checks pass (1,834 checks); seed regeneration is deterministic and source syntax is clean. All 54 changed remote file blobs and modes match the tested local source exactly; no vendor changes or release tag were created.

The final idle/session and inherited error_log protections pass independent review. A fresh installed 600-call run passed 513 checks in 37.786 seconds, with actual PHP RSS 66,404,352 bytes at every 100-call checkpoint. The earlier installed matrix passed all four platforms. The JCB runner's newly added list suite initially lacked its pinned reference JSON; the runner now supplies that file, and final-head CI is rerunning. Readiness and issue closure will follow the exact-head CI results, not those earlier runs.

Copy link
Copy Markdown
Contributor Author

Final acceptance is GREEN at 2e4a88d.

Check Result
PHP 8.3/8.4 contracts, source ZIP, deterministic seed and release metadata Passed
Installed Joomla: PHP 8.3/8.4 × MySQL/PostgreSQL, HTTP/stdio/HTTPS client, authorization, writes, upgrade/uninstall All four passed
Installed JCB golden image: native package/compiler, workers, lifecycle and the new native list/language/endurance cases Passed

Independent local installed evidence also passed 377 list assertions, 165 language assertions and 26 empty-object native write/read-back/replay/CRUD checks. Endurance completed 600 calls under 128 MB in one PHP process with flat sampled RSS. All 54 changed remote file blobs/modes match the tested local source; no vendor source, released tag or package version was changed.

Marking this PR ready and issues #7–#13 completed as requested. The shared native fixes are implemented in TypeScript PR #45; its final fixture-selector follow-up and CI are tracked there. These fixes are on PR branches and have not been merged or released.

@Llewellynvdm
Llewellynvdm marked this pull request as ready for review September 29, 2026 19:19
@Llewellynvdm
Llewellynvdm merged commit 26dea09 into main Sep 30, 2026
7 checks passed
@Llewellynvdm
Llewellynvdm deleted the fix/issues-7-13-stable-runtime branch September 30, 2026 08:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment