From bd067421f71eb9695fdd2ab4df22e4e02b5fa860 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 5 Jun 2026 14:41:50 +0000 Subject: [PATCH 1/2] docs(state): refresh 6a2 state; reconcile version/maturity; fix leaked header in Intentfile purpose Refresh .machine_readable/6a2/STATE.a2ml and META.a2ml (last-updated 2026-06-05). Reconcile maturity from "scaffold"/experimental to implementation/alpha with a note that the implementation is real but incomplete (Rust CLI/codegen ~1330 LOC, Idris2 ABI ~863 LOC, Zig FFI ~417 LOC, working example manifest). Align version to authoritative Cargo.toml (0.1.0) and note the CHANGELOG.adoc 0.2.0 discrepancy. Record the PMPL-1.0-or-later -> MPL-2.0 licence migration (commit ce87d4b). Fix the leaked SPDX fragment inside the Purpose value of contractiles/intend/Intentfile.a2ml; SPDX header line at top preserved. https://claude.ai/code/session_01BwV2DWsjkBiNP3oscimMLV --- .machine_readable/6a2/META.a2ml | 6 +++--- .machine_readable/6a2/STATE.a2ml | 17 +++++++++++------ contractiles/intend/Intentfile.a2ml | 2 +- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/.machine_readable/6a2/META.a2ml b/.machine_readable/6a2/META.a2ml index fb1fd73..bc418c8 100644 --- a/.machine_readable/6a2/META.a2ml +++ b/.machine_readable/6a2/META.a2ml @@ -3,8 +3,8 @@ # # META.a2ml — Mylangiser meta-level information [metadata] -version = "0.1.0" -last-updated = "2026-03-21" +version = "0.1.0" # authoritative per Cargo.toml; CHANGELOG.adoc top entry says 0.2.0 (discrepancy unresolved) +last-updated = "2026-06-05" [project-info] license = "MPL-2.0" @@ -12,7 +12,7 @@ author = "Jonathan D.A. Jewell (hyperpolymath)" [architecture-decisions] decisions = [ - # No ADRs recorded + "Licence migrated from PMPL-1.0-or-later to MPL-2.0 (commit ce87d4b).", ] [development-practices] diff --git a/.machine_readable/6a2/STATE.a2ml b/.machine_readable/6a2/STATE.a2ml index e124aaa..3818b62 100644 --- a/.machine_readable/6a2/STATE.a2ml +++ b/.machine_readable/6a2/STATE.a2ml @@ -4,10 +4,10 @@ # STATE.a2ml — Mylangiser project state [metadata] project = "mylangiser" -version = "0.1.0" -last-updated = "2026-03-21" +version = "0.1.0" # authoritative per Cargo.toml; CHANGELOG.adoc top entry says 0.2.0 (discrepancy unresolved) +last-updated = "2026-06-05" status = "active" -session = "converted from scheme — 2026-04-11" +session = "6a2 state refresh — 2026-06-05" [project-context] name = "Mylangiser" @@ -15,8 +15,9 @@ purpose = """Generate progressive-disclosure interfaces from complex APIs via My completion-percentage = 45 [position] -phase = "phase-1-complete" # design | implementation | testing | maintenance | archived -maturity = "experimental" # experimental | alpha | beta | production | lts +phase = "implementation" # design | implementation | testing | maintenance | archived +maturity = "alpha" # experimental | alpha | beta | production | lts +maturity-note = """Real but incomplete: substantive implementation (Rust CLI/codegen ~1330 LOC across main.rs/manifest/codegen/abi; Idris2 ABI ~863 LOC in Types/Layout/Foreign.idr; Zig FFI ~417 LOC in src/interface/ffi/src/main.zig) plus a working example manifest at examples/simplified-api/mylangiser.toml. "Scaffold" understates it; codegen still in progress.""" [route-to-mvp] milestones = [ @@ -36,5 +37,9 @@ actions = [ ] [maintenance-status] -last-run-utc = "2026-03-21T00:00:00Z" +last-run-utc = "2026-06-05T00:00:00Z" last-result = "unknown" # unknown | pass | warn | fail + +[licence] +spdx = "MPL-2.0" +migration = "Migrated from PMPL-1.0-or-later to MPL-2.0 (commit ce87d4b)." diff --git a/contractiles/intend/Intentfile.a2ml b/contractiles/intend/Intentfile.a2ml index 811f96e..174835f 100644 --- a/contractiles/intend/Intentfile.a2ml +++ b/contractiles/intend/Intentfile.a2ml @@ -8,7 +8,7 @@ Declared intent and purpose for Mylangiser. ## Purpose -Mylangiser — // SPDX-License-Identifier: MPL-2.0 +Mylangiser — generate progressive-disclosure interface wrappers via My-Lang. ## Anti-Purpose From 3d63002b7f0aa4f86b099ef7130e863e72d5f1fe Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 5 Jun 2026 14:47:59 +0000 Subject: [PATCH 2/2] =?UTF-8?q?ci:=20fix=20pre-existing=20gate=20failures?= =?UTF-8?q?=20=E2=80=94=20CodeQL=20matrix=20+=20remove=20stray=20ReScript/?= =?UTF-8?q?Deno=20web=20residue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both failures on PR #26 were pre-existing repo issues (this PR's other commits are docs-only), surfaced by the gates running on the whole tree: - `.github/workflows/codeql.yml`: the `javascript-typescript` matrix exits "no source files" on every run (mylangiser is Rust/Idris2/Zig). Switch to `actions` (scans workflow files — every repo has them), matching the estate-wide CodeQL convention. Also corrected the file's stale `SPDX-License-Identifier: PMPL-1.0` header to MPL-2.0. - Removed `examples/SafeDOMExample.res` (ReScript) + `examples/web-project-deno.json`: stray web-frontend template residue unrelated to mylangiser's API-wrapper purpose (unreferenced; the same SafeDOMExample.res fixture was already purged from other estate repos). The ReScript file was failing the governance "Language / package anti-pattern policy" gate (ReScript banned → AffineScript). https://claude.ai/code/session_01BwV2DWsjkBiNP3oscimMLV --- .github/workflows/codeql.yml | 8 ++- examples/SafeDOMExample.res | 109 --------------------------------- examples/web-project-deno.json | 20 ------ 3 files changed, 6 insertions(+), 131 deletions(-) delete mode 100644 examples/SafeDOMExample.res delete mode 100644 examples/web-project-deno.json diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 9e32d15..54afbec 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0 +# SPDX-License-Identifier: MPL-2.0 name: CodeQL Security Analysis on: @@ -30,7 +30,11 @@ jobs: fail-fast: false matrix: include: - - language: javascript-typescript + # mylangiser is Rust/Idris2/Zig — none are CodeQL-scannable source + # languages, so the previous `javascript-typescript` matrix exited + # "no source files" on every run. `actions` scans the workflow files + # (which every repo has), matching the estate-wide CodeQL convention. + - language: actions build-mode: none steps: diff --git a/examples/SafeDOMExample.res b/examples/SafeDOMExample.res deleted file mode 100644 index e5c9046..0000000 --- a/examples/SafeDOMExample.res +++ /dev/null @@ -1,109 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -// Example: Using SafeDOM for formally verified DOM mounting - -open SafeDOM - -// Example 1: Basic mounting with error handling -let mountApp = () => { - mountSafe( - "#app", - "

Hello, World!

Mounted safely with proofs.

", - ~onSuccess=el => { - Console.log("✓ App mounted successfully!") - Console.log("Element:", el) - }, - ~onError=err => { - Console.error("✗ Mount failed:", err) - } - ) -} - -// Example 2: Wait for DOM ready before mounting -let mountWhenDOMReady = () => { - mountWhenReady( - "#app", - "

App Title

", - ~onSuccess=_ => Console.log("✓ Mounted after DOM ready"), - ~onError=err => Console.error("✗ Failed:", err) - ) -} - -// Example 3: Batch mounting (atomic - all or nothing) -let mountMultiple = () => { - let specs = [ - {selector: "#header", html: "

Site Title

"}, - {selector: "#nav", html: ""}, - {selector: "#main", html: "

Content here

"}, - {selector: "#footer", html: "
© 2026
"} - ] - - switch mountBatch(specs) { - | Ok(elements) => { - Console.log(`✓ Successfully mounted ${Array.length(elements)} elements`) - elements->Array.forEach(el => Console.log(" -", el)) - } - | Error(err) => { - Console.error("✗ Batch mount failed:", err) - Console.error(" (None were mounted - atomic operation)") - } - } -} - -// Example 4: Explicit validation before mounting -let mountWithValidation = () => { - // Validate selector first - switch ProvenSelector.validate("#my-app") { - | Error(e) => Console.error(`Invalid selector: ${e}`) - | Ok(validSelector) => { - // Validate HTML - switch ProvenHTML.validate("
Content
") { - | Error(e) => Console.error(`Invalid HTML: ${e}`) - | Ok(validHtml) => { - // Now mount with proven safety - switch mount(validSelector, validHtml) { - | Mounted(el) => Console.log("✓ Mounted with validated inputs:", el) - | MountPointNotFound(s) => Console.error(`✗ Element not found: ${s}`) - | InvalidSelector(_) => Console.error("Impossible - already validated") - | InvalidHTML(_) => Console.error("Impossible - already validated") - } - } - } - } -} - -// Example 5: Integration with TEA -module MyApp = { - type model = {message: string} - type msg = NoOp - - let init = () => {message: "Hello from TEA"} - let update = (model, _msg) => model - let view = model => `

${model.message}

` -} - -let mountTEAApp = () => { - let model = MyApp.init() - let html = MyApp.view(model) - - mountWhenReady( - "#tea-app", - html, - ~onSuccess=el => { - Console.log("✓ TEA app mounted") - // Set up event handlers, subscriptions here - }, - ~onError=err => Console.error(`✗ TEA mount failed: ${err}`) - ) -} - -// Entry point -let main = () => { - Console.log("SafeDOM Examples") - Console.log("================\n") - - // Choose which example to run - mountWhenDOMReady() // Run on DOM ready -} - -// Auto-execute when module loads -main() diff --git a/examples/web-project-deno.json b/examples/web-project-deno.json deleted file mode 100644 index 5ddd3bd..0000000 --- a/examples/web-project-deno.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "// NOTE": "Example deno.json for ReScript web projects", - "tasks": { - "build": "deno run -A npm:rescript", - "clean": "deno run -A npm:rescript clean", - "watch": "deno run -A npm:rescript -w", - "serve": "deno run -A jsr:@std/http/file-server .", - "test": "deno test --allow-all" - }, - "imports": { - "rescript": "^12.0.0", - "@rescript/core": "npm:@rescript/core@^1.6.0", - "safe-dom/": "https://raw.githubusercontent.com/hyperpolymath/rescript-dom-mounter/main/src/", - "proven/": "../proven/bindings/rescript/src/" - }, - "compilerOptions": { - "allowJs": true, - "checkJs": false - } -}