Skip to content

feat(dom): prove INT-08 reconciler runs end-to-end; ship the e2e harness#680

Merged
hyperpolymath merged 1 commit into
mainfrom
worktree-dom-e2e-verified
Jul 7, 2026
Merged

feat(dom): prove INT-08 reconciler runs end-to-end; ship the e2e harness#680
hyperpolymath merged 1 commit into
mainfrom
worktree-dom-e2e-verified

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

What

dom.affine's header said "RUNTIME blocked by #255; no runtime e2e harness is shipped until then (a harness that cannot pass would be dishonest)." #255 was fixed in PR #257 — and the harness now can pass, so per the header's own bar, it ships. Refs #183 (INT-08).

The proof

affinescript-dom/e2e/run.sh concatenates src/dom.affine + a driver main, compiles to core-WASM, runs under Node against an Int-handle host DOM, and asserts the mutation log + final tree:

Observed (node 26, dune 3.24 build):

setAttr(#2,title=t2)  removeAttr(#2,class)  setText(#3,"world")  remove(#2,#4)
<#root> └ <div id="app" title="t2"> └ "world"
ALL ASSERTIONS PASS — reconciler ran end-to-end (loops executed)

A nice detail: the affine discipline is load-bearing in the driver itself — mount consumes its tree, so the reconcile call takes a freshly built copy; reuse would be a use-after-move type error.

Docs reconciled to VERIFIED

dom.affine header; ECOSYSTEM.adoc (satellite + INT-08/INT-11 rows); TECH-DEBT.adoc (INT-08); bindings-roadmap.adoc (DOM row). INT-11's remaining leg is browser-host parity (this run is Node).

Gates

dune build exit 0 · doc-truthing OK · soundness ledger all-5 OK · e2e harness exit 0 from this branch's own build. Harness skips loudly (exit 0) without the compiler or node; AFFINESCRIPT_BIN overrides the binary path for CI.

🤖 Generated with Claude Code

…ess (Refs #183)

The dom.affine header said "RUNTIME blocked by #255; no runtime e2e harness
is shipped until then (a harness that cannot pass would be dishonest)".
#255 was fixed in PR #257 — and the harness now CAN pass, so per the
header's own bar, it ships:

- affinescript-dom/e2e/run.sh — concatenates src/dom.affine + a driver
  `main`, compiles to core-WASM, runs under Node against an Int-handle
  host DOM, asserts the mutation log + final tree. Skips loudly (exit 0)
  when the compiler or node is absent; AFFINESCRIPT_BIN overrides the
  binary path for CI.
- affinescript-dom/e2e/driver_main.affine — mounts
  <div id=app class=old>["hello", <span>["x"]]</div>, then reconciles to
  <div id=app title=t2>["world"]</div>. Exercises every loop-bearing path
  (the #255 class): render attr+children loops, patch_attrs add+remove
  (attr_has), and the `while` child-reconcile loop (in-place text patch +
  surplus-child removal). The affine discipline is load-bearing in the
  driver itself: `mount` consumes its tree, so reconcile takes a fresh
  copy — reuse would be a use-after-move type error.
- affinescript-dom/e2e/dom_host.mjs — the host: Int-handle node map,
  mutation log, hard assertions (title added, class removed, text patched
  in place, span removed, reconcile returned the in-place handle).

Observed run (2026-07-07, node 26, dune 3.24 build):
  query(#root) … setAttr(#2,title=t2) removeAttr(#2,class)
  setText(#3,"world") remove(#2,#4)
  <#root> └ <div id="app" title="t2"> └ "world"
  ALL ASSERTIONS PASS

Docs reconciled to VERIFIED (dom.affine header; ECOSYSTEM satellite +
INT-08/INT-11 rows; TECH-DEBT INT-08; bindings-roadmap DOM row). INT-11's
remaining leg is browser-host parity (this run is Node).

Gates: dune build exit 0; doc-truthing OK; soundness ledger all-5 OK;
e2e harness exit 0 from the branch's own build.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@hyperpolymath hyperpolymath enabled auto-merge (squash) July 7, 2026 10:16
@sonarqubecloud

sonarqubecloud Bot commented Jul 7, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@hyperpolymath hyperpolymath merged commit f992650 into main Jul 7, 2026
17 of 18 checks passed
@hyperpolymath hyperpolymath deleted the worktree-dom-e2e-verified branch July 7, 2026 10:19
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.

1 participant