summaryrefslogtreecommitdiff
path: root/skills
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-09-26 16:02:24 -0700
committerCliff Click <cliffc@acm.org>2026-09-26 16:02:24 -0700
commit4391fcc03a214e6296e19ca42487de023ab12f6a (patch)
tree7eca88e0bea31cdae4d5f485b84604a41c82f795 /skills
parentdd907c2d86eaaad0910e7bfe3f0d25e5caf8bdf7 (diff)
downloadSimple-4391fcc03a214e6296e19ca42487de023ab12f6a.tar.gz
Simple-4391fcc03a214e6296e19ca42487de023ab12f6a.zip
bug fix widen
Failed lattice law tests mixing constants and have wide type ints; or mixing wide ints and constant arrays.
Diffstat (limited to 'skills')
-rw-r--r--skills/chapter25-codex-notes.md12
-rw-r--r--skills/graph-viewer-codex-notes.md23
2 files changed, 25 insertions, 10 deletions
diff --git a/skills/chapter25-codex-notes.md b/skills/chapter25-codex-notes.md
index 64738421..1aac07a2 100644
--- a/skills/chapter25-codex-notes.md
+++ b/skills/chapter25-codex-notes.md
@@ -367,6 +367,18 @@ Consequences:
## Types and monotonicity
+- Integer widening starts in Chapter 24. `nonZero()` preserves `_widen` when
+ narrowing a range. B10's correction is in 24, with `TypeTest.testNonZeroWidening`
+ in 24-25. Both now use widening 0-3 and dual widening `3-widen`, preserve
+ singleton widening, and give TypeConAry the same widening coordinate. Loop Phis
+ widen only below-center nonconstant ranges: above-center widening can fall to
+ an unwidened constant, violating SCCP monotonicity. Existing Chapter14/21 tests
+ exposed this during the backport.
+- TypeConAry's `_make(any,widen)` shares the backing array and returns an
+ uninterned type. `xdual()` must leave interning to Type.intern's dual-pair setup;
+ ordinary factories and ymeet's widening replacement intern their results.
+ Chapters 24-25 use this API and a distinct array tag. Chapters 22-23 only receive
+ compatible cleanup; their sentinel-based representations predate widening.
- Cyclic structural equality starts in Chapter 23. Chapters 9-22 compare
interned children by identity and check type kinds in `Type.equals`.
In recursive equality, leaf dispatch must also check `_type` before calling
diff --git a/skills/graph-viewer-codex-notes.md b/skills/graph-viewer-codex-notes.md
index 19fe3ec5..5b06bd6a 100644
--- a/skills/graph-viewer-codex-notes.md
+++ b/skills/graph-viewer-codex-notes.md
@@ -1,15 +1,17 @@
# Shared graph viewer: restart notes
-Updated 2026-09-25. Read graph/README.md for the current design and protocol.
+Updated 2026-09-26. Read graph/README.md for the current design and protocol.
These are AI-facing continuity notes, not a new task list or authority to change
-compiler semantics. Cliff reports the peephole animations, inlining display, and
-TypeCheck diagnostics committed and working well as of 2026-09-25.
+compiler semantics. Cliff declared the viewer task complete on 2026-09-26.
+Peephole animations, inlining display, TypeCheck diagnostics, and arrow-key
+playback are committed. Resume the independent bug-fix backport review from
+docs/chapter-backports.md when requested.
## Working tree and latest change
-Preserve existing dirty files. This checkout still reports earlier viewer changes
-and untracked peep.js despite Cliff's report of commits; do not reconcile or
-commit those files merely on the basis of these notes.
+The working tree was clean when checked on 2026-09-26; the viewer changes,
+including peep.js and arrow-key playback, are in a32e83c9. Preserve any later
+unrelated dirty files.
Latest request: Left/Right arrow keys perform the same actions as the Previous/Next
buttons, including animation stages. Added outside inputs/editable content with
@@ -143,10 +145,11 @@ capture server on an ephemeral port. Scratch helpers may disappear after cleanup
## Deferred work, not authorization to start
-Cliff considers incomplete/exit-loop grouping adequate as is. Bounded history can
-wait longer: mid-sized compiles slow the viewer, but it remains fine for demos.
-Full graph snapshots currently remain cached. Stable whole-graph placement has no
-agreed approach; compilation-unit containers remain deferred.
+Cliff considers incomplete/exit-loop grouping adequate as is. Bounded history
+storage waits until an actual usage issue warrants it; full graph snapshots
+currently remain cached. Stable whole-graph placement awaits viewing a larger
+program to establish what is needed. Compilation-unit containers remain deferred.
+These are future considerations, not unfinished requirements of the completed task.
Dead-field cleanup/interprocedural reverse
liveness is explicitly deferred; do not revive the rejected whole-graph store
sweep. Private-field syntax decisions belong in the parser, not optimization.