HS-plan: log cluster 27 landed (0c31dd27, worktree re-apply)
This commit is contained in:
@@ -4,10 +4,10 @@ Live tally for `plans/hs-conformance-to-100.md`. Update after every cluster comm
|
||||
|
||||
```
|
||||
Baseline: 1213/1496 (81.1%)
|
||||
Merged: 1253/1496 (83.8%) delta +40
|
||||
Worktree: 2 in flight (clusters 20, 27)
|
||||
Merged: 1256/1496 (84.0%) delta +43
|
||||
Worktree: 1 in flight (cluster 20)
|
||||
Target: 1496/1496 (100.0%)
|
||||
Remaining: ~243 tests
|
||||
Remaining: ~240 tests
|
||||
```
|
||||
|
||||
## Cluster ledger
|
||||
@@ -52,7 +52,7 @@ Remaining: ~243 tests
|
||||
| # | Cluster | Status | Δ | Commit |
|
||||
|---|---------|--------|---|--------|
|
||||
| 26 | resize observer mock + `on resize` | done | +3 | 304a52d2 |
|
||||
| 27 | intersection observer mock + `on intersection` | pending | (+3 est) | — |
|
||||
| 27 | intersection observer mock + `on intersection` | done | +3 | 0c31dd27 |
|
||||
| 28 | `ask`/`answer` + prompt/confirm mock | pending | (+4 est) | — |
|
||||
| 29 | `hyperscript:before:init` / `:after:init` / `:parse-error` | pending | (+4–6 est) | — |
|
||||
| 30 | `logAll` config | done | +1 | 64bcefff |
|
||||
@@ -87,7 +87,7 @@ Defer until A–D drain. Estimated ~25 recoverable tests.
|
||||
|--------|-----:|--------:|--------:|--------:|--------:|------------:|------:|
|
||||
| A | 12 | 4 | 0 | 0 | 1 | — | 17 |
|
||||
| B | 3 | 0 | 0 | 3 | 1 | — | 7 |
|
||||
| C | 2 | 0 | 0 | 3 | 0 | — | 5 |
|
||||
| C | 3 | 0 | 0 | 2 | 0 | — | 5 |
|
||||
| D | 0 | 0 | 0 | 5 | 0 | — | 5 |
|
||||
| E | 0 | 0 | 0 | 0 | 0 | 5 | 5 |
|
||||
| F | — | — | — | ~10 | — | — | ~10 |
|
||||
|
||||
@@ -103,7 +103,7 @@ Orchestrator cherry-picks worktree commits onto `architecture` one at a time; re
|
||||
|
||||
26. **[done (+3)] resize observer mock + `on resize`** — 3 tests. Add a minimal `ResizeObserver` mock to `hs-run-filtered.js`, plus parse/compile `on resize`. Expected: +3.
|
||||
|
||||
27. **[pending] intersection observer mock + `on intersection`** — 3 tests. Mock `IntersectionObserver`; compile `on intersection` with margin/threshold modifiers. Expected: +3.
|
||||
27. **[done (+3)] intersection observer mock + `on intersection`** — 3 tests. Mock `IntersectionObserver`; compile `on intersection` with margin/threshold modifiers. Expected: +3.
|
||||
|
||||
28. **[pending] `ask`/`answer` + prompt/confirm mock** — `askAnswer` 4 tests. **Requires test-name-keyed mock**: first test wants `confirm → true`, second `confirm → false`, third `prompt → "Alice"`, fourth `prompt → null`. Keyed via `_current-test-name` in the runner. Expected: +4.
|
||||
|
||||
@@ -175,6 +175,9 @@ Many tests are `SKIP (untranslated)` because `tests/playwright/generate-sx-tests
|
||||
|
||||
(Reverse chronological — newest at top.)
|
||||
|
||||
### 2026-04-24 — cluster 27 intersection observer (worktree re-apply)
|
||||
- **0c31dd27** — `HS: intersection observer mock + on intersection (+3 tests)`. Worktree agent `ad6e17cb…` produced the logical change but its commit's reformatted compiler/runtime bodies conflicted with cluster 26's landing of resize-observer state in `tests/hs-run-filtered.js` and `runtime.sx`; straight cherry-pick hit markers on `.sx` files that can't be Edit'd. Reapplied surgically via sx-tree: (a) parser `parse-on-feat` now collects `having margin X threshold Y` clauses between `from` and body, packaging them in `:having {"margin" M "threshold" T}`; (b) compiler `scan-on` threads a new `having-info` param and, when event-name is `"intersection"`, wraps `(hs-on target "intersection" fn)` with `(do on-call (hs-on-intersection-attach! target margin threshold))`; (c) runtime adds `hs-on-intersection-attach!` which constructs an `IntersectionObserver` with `{rootMargin, threshold}` opts and a callback that dispatches an `intersection` DOM event carrying `{intersecting, entry}` detail; (d) runner adds `HsIntersectionObserver` stub that fires the callback synchronously on `observe()` with `isIntersecting=true`. Suite hs-upstream-on: 33/70 → 36/70. Smoke 0-195 unchanged at 165.
|
||||
|
||||
### 2026-04-24 — cluster 26 resize observer (worktree agent cherry-pick)
|
||||
- **304a52d2** (from worktree `worktree-agent-a8983e935d0d7a870` / `aea5f7d2`) — `HS: resize observer mock + on resize (+3 tests)`. `tests/hs-run-filtered.js`: `El.style` becomes a `Proxy` that fires a synthetic `resize` DOM event (detail carries `{width, height}` parsed from the current inline style) whenever `width`/`height` is written via direct property assignment OR `setProperty`. `ResizeObserver` no-op stub replaced by `HsResizeObserver` maintaining a per-element callback registry in `globalThis.__hsResizeRegistry`; added `ResizeObserverEntry` stub. `on resize` needs no parser/compiler work — `parse-compound-event-name` already accepts it and `hs-on` binds via `dom-listen`. Generator: new pattern translates `(page.)?evaluate(() => { document.(getElementById|querySelector)(...).style.PROP = 'VAL'; })` into `(host-set! (host-get TARGET "style") "PROP" "VAL")`. Suite hs-upstream-resize: 0/3 → 3/3. Smoke 0-195 unchanged at 165/195.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user