W14: pin K20 contains?-dict support (test-only)
contains? did not support dict key membership in the real runtime —
(contains? {:a 1} :a) threw "contains?: 2 args", contradicting its own :doc.
The fix landed (primitives.sx + sx_primitives.ml) but had no pinning test.
Add suite gate-K20-contains-dict to spec/tests/test-gate-pins.sx (4 tests,
repro from plans/sx-review/core.md): present key true, missing key false,
list membership + string substring unchanged. 8/8 green under OCaml run_tests.
Test-only: no semantics edits, no push.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1 +1 @@
|
|||||||
{"sessionId":"c4d97db1-361c-4a04-a99b-c838f9385469","pid":2426590,"procStart":"349789073","acquiredAt":1780789990975}
|
{"sessionId":"d510140d-6197-40b7-9bd2-125ca304ad7a","pid":697492,"procStart":"125353752","acquiredAt":1783118024555}
|
||||||
@@ -45,7 +45,7 @@ Pin each confirmed-and-fixed finding with a minimal repro. Add suites to
|
|||||||
`spec/tests/test-gate-pins.sx` (one `defsuite` per finding).
|
`spec/tests/test-gate-pins.sx` (one `defsuite` per finding).
|
||||||
|
|
||||||
- [x] K18 [W7] — `expt` overflow now float-promotes (no 63-bit wrap)
|
- [x] K18 [W7] — `expt` overflow now float-promotes (no 63-bit wrap)
|
||||||
- [ ] K20 [W7] — identify the landed W7 fix and pin it
|
- [x] K20 [W7] — `contains?` now supports dict key membership
|
||||||
- [ ] K09/K11/K39 [W5] — landed special-form fixes, pin each
|
- [ ] K09/K11/K39 [W5] — landed special-form fixes, pin each
|
||||||
- [ ] K49 [W8] — render depth/cycle guard (infinite recursive component)
|
- [ ] K49 [W8] — render depth/cycle guard (infinite recursive component)
|
||||||
- [ ] crit-2 [W1] — signal-return frame key (verify the pin is non-vacuous)
|
- [ ] crit-2 [W1] — signal-return frame key (verify the pin is non-vacuous)
|
||||||
@@ -77,6 +77,13 @@ Pin each confirmed-and-fixed finding with a minimal repro. Add suites to
|
|||||||
|
|
||||||
## Progress log (newest first)
|
## Progress log (newest first)
|
||||||
|
|
||||||
|
- 2026-07-03 — **K20 contains?-dict pin (item A.2)**. Mapped K-codes by
|
||||||
|
core.md severity order (K17 append!, K18 expt, K19 harness-drift, K20
|
||||||
|
contains?-dict). Added suite `gate-K20-contains-dict` to
|
||||||
|
`spec/tests/test-gate-pins.sx` (4 tests): present dict key → true, missing
|
||||||
|
key → false, list membership unchanged, string substring unchanged. Repro
|
||||||
|
from core.md ("(contains? {:a 1} :a) threw `contains?: 2 args`"). 8/8 green
|
||||||
|
across both suites under OCaml run_tests. Test-only.
|
||||||
- 2026-07-03 — **K18 expt-overflow pin (item A.1)**. Bootstrapped this briefing
|
- 2026-07-03 — **K18 expt-overflow pin (item A.1)**. Bootstrapped this briefing
|
||||||
from PLAN.md §W14 (the referenced file did not exist yet). Added
|
from PLAN.md §W14 (the referenced file did not exist yet). Added
|
||||||
`spec/tests/test-gate-pins.sx` with suite `gate-K18-expt-overflow` (4 tests):
|
`spec/tests/test-gate-pins.sx` with suite `gate-K18-expt-overflow` (4 tests):
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
;; ==========================================================================
|
;; ==========================================================================
|
||||||
;; test-gate-pins.sx — W14 regression pins for dc7aa709's landed fixes
|
;; test-gate-pins.sx — W14 regression pins for the review's landed fixes
|
||||||
;;
|
;;
|
||||||
;; The quick-wins batch (commit dc7aa709) landed real semantics fixes but
|
;; The quick-wins batch (commit dc7aa709 + siblings) landed real semantics
|
||||||
;; shipped WITHOUT pinning tests, so a regression would pass silently. This
|
;; fixes but shipped WITHOUT pinning tests, so a regression would pass
|
||||||
;; file pins each confirmed-and-fixed finding with a minimal repro lifted
|
;; silently. This file pins each confirmed-and-fixed finding with a minimal
|
||||||
;; from the review lane files (plans/sx-review/*.md). One suite per finding.
|
;; repro lifted from the review lane files (plans/sx-review/*.md). One suite
|
||||||
|
;; per finding.
|
||||||
;;
|
;;
|
||||||
;; TEST-ONLY: no semantics edits. If a pin fails, the fix regressed — do NOT
|
;; TEST-ONLY: no semantics edits. If a pin fails, the fix regressed — do NOT
|
||||||
;; relax the assertion; investigate the evaluator/primitive change.
|
;; relax the assertion; investigate the evaluator/primitive change.
|
||||||
@@ -31,3 +32,27 @@
|
|||||||
(deftest
|
(deftest
|
||||||
"expt 2^100 promotes to float"
|
"expt 2^100 promotes to float"
|
||||||
(assert (number? (expt 2 100)))))
|
(assert (number? (expt 2 100)))))
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; K20 [W7, high] contains? did not support dicts in the real runtime —
|
||||||
|
;; (contains? {:a 1} :a) threw "contains?: 2 args", contradicting its :doc
|
||||||
|
;; ("Dicts: key check"). Fixed: dict key membership works; lists/strings
|
||||||
|
;; unchanged. Repro (core.md).
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
(defsuite
|
||||||
|
"gate-K20-contains-dict"
|
||||||
|
(deftest
|
||||||
|
"contains? finds a present dict key"
|
||||||
|
(assert (contains? {:a 1 :b 2} :a)))
|
||||||
|
(deftest
|
||||||
|
"contains? reports a missing dict key as false"
|
||||||
|
(assert (not (contains? {:a 1 :b 2} :zz))))
|
||||||
|
(deftest
|
||||||
|
"contains? still works on list membership"
|
||||||
|
(do
|
||||||
|
(assert (contains? (list 10 20 30) 20))
|
||||||
|
(assert
|
||||||
|
(not (contains? (list 10 20 30) 99)))))
|
||||||
|
(deftest
|
||||||
|
"contains? still works on string substrings"
|
||||||
|
(assert (contains? "hello" "ell"))))
|
||||||
|
|||||||
Reference in New Issue
Block a user