HS-plan: log cluster 19 (pick regex + indices) done +13

Cluster 19 was implemented in 4be90bf2 but the plan/scoreboard rows
still marked it pending. Sync the plan state: mark done, add log entry,
bump merged total 1264 → 1277.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-24 15:31:11 +00:00
parent 0f67021aa3
commit 2cd8e57694
2 changed files with 8 additions and 5 deletions

View File

@@ -4,10 +4,10 @@ Live tally for `plans/hs-conformance-to-100.md`. Update after every cluster comm
```
Baseline: 1213/1496 (81.1%)
Merged: 1264/1496 (84.5%) delta +51
Merged: 1277/1496 (85.4%) delta +64
Worktree: all landed
Target: 1496/1496 (100.0%)
Remaining: ~232 tests
Remaining: ~219 tests
```
## Cluster ledger
@@ -39,7 +39,7 @@ Remaining: ~232 tests
| # | Cluster | Status | Δ | Commit |
|---|---------|--------|---|--------|
| 19 | `pick` regex + indices | pending | (+1013 est) | — |
| 19 | `pick` regex + indices | done | +13 | 4be90bf2 |
| 20 | `repeat` property for-loops + where | done | +3 | c932ad59 |
| 21 | `possessiveExpression` property access via its | done | +1 | f0c41278 |
| 22 | window global fn fallback | blocked | — | — |
@@ -86,7 +86,7 @@ Defer until AD drain. Estimated ~25 recoverable tests.
| Bucket | Done | Partial | In-prog | Pending | Blocked | Design-done | Total |
|--------|-----:|--------:|--------:|--------:|--------:|------------:|------:|
| A | 12 | 4 | 0 | 0 | 1 | — | 17 |
| B | 5 | 0 | 0 | 1 | 1 | — | 7 |
| B | 6 | 0 | 0 | 0 | 1 | — | 7 |
| C | 4 | 0 | 0 | 1 | 0 | — | 5 |
| D | 0 | 0 | 0 | 5 | 0 | — | 5 |
| E | 0 | 0 | 0 | 0 | 0 | 5 | 5 |

View File

@@ -87,7 +87,7 @@ Orchestrator cherry-picks worktree commits onto `architecture` one at a time; re
### Bucket B: parser/compiler additions (medium risk, shared files)
19. **[pending] `pick` regex + indices** — `pick` 13 tests. Regex match, flags, `of` syntax, start/end, negative indices. Big enough that a single commit might fail — break into pick-regex and pick-indices if needed. Expected: +10-13.
19. **[done (+13)] `pick` regex + indices** — `pick` 13 tests. Regex match, flags, `of` syntax, start/end, negative indices. Big enough that a single commit might fail — break into pick-regex and pick-indices if needed. Expected: +10-13.
20. **[done (+3)] `repeat` property for-loops + where** — `repeat / basic property for loop`, `can nest loops`, `where clause can use the for loop variable name` (3 tests). Expected: +3.
@@ -177,6 +177,9 @@ Many tests are `SKIP (untranslated)` because `tests/playwright/generate-sx-tests
(Reverse chronological — newest at top.)
### 2026-04-24 — cluster 19 pick regex + indices
- **4be90bf2** — `HS: pick regex + indices (+13 tests)`. Parser: `pick items/item EXPR to EXPR` accepts `start`/`end` keywords; `pick match`/`pick matches` accept `| <flag>` after regex; `pick item N` without `to` still works. Runtime: `hs-pick-items`/`hs-pick-first`/`hs-pick-last` polymorphic for strings (slice) in addition to lists; `hs-pick-items` resolves `start`/`end` sentinel strings and negative indices at runtime; new `hs-pick-matches` wrapping `regex-find-all`; `hs-pick-regex-pattern` accepts `(list pat flags)` shape with `i` flag. Suite hs-upstream-pick: 11/24 → 24/24. Smoke 0-195 unchanged.
### 2026-04-24 — cluster 28 ask/answer + prompt/confirm mock
- **6c1da921** — `HS: ask/answer + prompt/confirm mock (+4 tests)`. Five-part change: (a) `tokenizer.sx` registers `ask` and `answer` as hs-keywords. (b) `parser.sx``cmd-kw?` gains both, `parse-cmd` gains cond branches dispatching to new `parse-ask-cmd` (emits `(ask MSG)`) and `parse-answer-cmd` which reads `answer MSG [with YES or NO]` with `parse-atom` for the choices (using `parse-expr` there collapsed `"Yes" or "No"` into `(or "Yes" "No")` before `match-kw "or"` could fire — parse-atom skips the logical layer). No-`with` form emits `(answer-alert MSG)`. (c) `compiler.sx` — three new cond branches (`ask`, `answer`, `answer-alert`) compile to `(let ((__hs-a (hs-XXX ...))) (begin (set! the-result __hs-a) (set! it __hs-a) __hs-a))` so `then put it into …` works. (d) `runtime.sx``hs-ask`, `hs-answer`, `hs-answer-alert` call `window.prompt`/`confirm`/`alert` via `host-call (host-global "window") …`. (e) `tests/hs-run-filtered.js` — test-name-keyed stubs for `globalThis.{alert,confirm,prompt}`, `__currentHsTestName` updated before each test. One extra tweak: `host-set!` innerHTML/textContent now coerces JS `null` → the string `"null"` (matching browser behaviour) so `prompt` returning null → `put it into #out` renders literal `"null"` text — the fourth test depends on exactly this. Suite hs-upstream-askAnswer: 1/5 → 5/5. Smoke 0-195: 166/195 → 170/195.