MOML 2.0 RELEASE MANIFEST ========================= Release date: 2026-09-09 Package revision: v3 (Rule 7 framing + synchronized release artifacts) VERIFICATION STATUS Python: 126/126 deterministic; 5001/5001 fuzz smoke run PHP 8.x: 106/106 deterministic; 5001/5001 fuzz smoke run JavaScript: 85/85 deterministic; 6001/6001 fuzz smoke run AutoHotkey v2: verification package supplied; execute on Windows CANONICAL RELEASE FILES b29d998a82a43905cb751fa2440674400211b1b91597ecf9457f2870cbda794f moml2.py 8c16218420cc0c48d2200e4729c34104b646cd4232a0279e543dd23025ec18b3 sample_gatekeeper.py cf048717e36d4623d19255f90f9c922fbbf3e42f4e4ced22cb07efdf4ed0219f spec_tests.py 8fcdf6be2ce217446446e9a979e4ecdd18d6dac3a5b81e27d319ce57fc92e03c fuzz_tests.py 6fed7907debfd20d4bf603d3358eacaa1a6600b5132fb213bebf18e0b4806ef6 moml2.php 49822c81efc2dfd0d2496c9599e779ea286571e431720d03b47c72999605d8a0 sample_gatekeeper.php 0b888e230ede3f29094ebffc5b6ba4861d7da7f7b029fc6fc82ff7142d688589 spec_tests.php 2dd51dfbd02c0763b82fdf6e95b223b9a1c6d53c020ec06f1ffa91ebf9f5bed7 fuzz_tests.php bd1a65fcd8bf13397f8fb77626f5aa8e175d7ab667aea371f799637866d79ca0 moml2.js 14d5f99ea9a9ae903645575d40bc095c53162c07b791e9c35d54330a05be7db5 sample_gatekeeper.js 5ce2492c73e55163e85e17eb9c44b7b9f9a1b8eb6f11595293f3488d30494f0c spec_tests.js 7ecff798f54f079faf0bbb3db2ebd88b4beacc9a6119bb1d8ab819f85c5c3846 fuzz_tests.js 1eb479657004537328980bf0dc88582ae4ac2aefd37c04a6fa9bc4a0c982612d MOML2.ahk 708b985c0260b7b93e168a7477f47c51448381e5cb22ee35f6dd51afcc7c8dd6 sample_gatekeeper.ahk 126f74dc73d72df27468f8ad668659c1e709d9f30237ff4bf3ea3bb5ba07219d spec_tests.ahk 1faa2edf93f7f3eac794f8424e901b6861b1d5bf833a34184f8ea2a20948c24c fuzz_tests.ahk 04573bf9cc2360031f8407da2c0203aacbb0773d6048fc585894ad7783c4d4d7 sample_config.m2 e5da4a39715e92806bbe12974b2f3b5683ca10cfd69394cf596f4070d255d205 MOML2_cross_language_examples.zip 18987c35b3e36e8160f62f0a770ac5c62f5020a7f727467da3c1f956829a6193 MOML2_AHK_verification.zip d399816c77d5b42b1e1263a733856c4cefd964043aa98781d8acad426ac49c1b MOML_2.0_Primer.pdf 05c443c527ed55f5130af0766c148b570297dc30f40e6fb63366a92835571139 MOML_2.0_Primer.docx ARCHITECTURE APP <-> Gatekeeper <-> MOML parser/writer <-> .m2 file RULE 7 - ONE-ITEM LIST PRESERVATION MOML is deliberately typeless. `key = value` alone cannot distinguish an application scalar from a conceptual one-item inline list. When a writer serializes a one-item inline list, it emits: key = value, "" The trailing empty string is a structural round-trip sentinel. MOML preserves it exactly; a schema-aware Gatekeeper may remove exactly one trailing structural empty when the application schema says the setting is list-shaped. This is a deliberate narrow tradeoff that avoids brackets, type markers, schema-aware parsing, or another special one-item-list syntax. NOTES - Python canonical API: MOMLDict, MOMLList, MOMLError, get(), get_active(). - Gatekeepers own application type conversion and schema-aware one-item-list unpadding. - * is structural inside block entries and literal inside inline comma lists. - Every MOML 2.0 file begins with # MOML 2.0 and uses the .m2 extension.