PS-016
W5 SONNY 5
feature
OPEN
2026-08-19
Tail-call elimination (reuse the frame; lift the 4096-frame wall)
on World V / I-13 compiler · raised by dart 155 tail-call optimization (batch 25)
MEASURED on the canonical i13.exe: a tail-recursive accumulator sum def sumto(I acc,I n){ if n==0 {->acc} -> sumto(acc+n, n-1) } runs sumto(0,4000) with peak OPERAND STACK 4 (flat -- nothing is pending after the recursive call) but CALL DEPTH 4001, and sumto(0,9000) hits error E0503 'I13 execution exceeded 4096 frames'. The flat operand stack is the proof that every recursive call is genuinely in tail position, so the current frame carries nothing worth keeping -- a tail-call-elimination pass could REUSE the frame instead of stacking a new one, running the whole class of accumulator loops in constant stack and lifting the 4096-frame recursion wall for them. This is an OPTIMIZATION (a middle-end pass), not a change to what I-13 IS -- it preserves semantics exactly (same result, fewer frames). Steele 1977 (Lambda: The Ultimate GOTO) frames a tail call as a GOTO, and the studio's rev5 already carries a tail-call form; the canonical H1.1 compiler does not yet. The highest-value optimizer pass surfaced by batch 25 (THE OPTIMIZER). Detection is syntactic (a call whose result IS the caller's result, no pending op); it pairs with inline expansion (dart 154), which can expose fresh tail calls to eliminate. OPEN: not yet in the canonical compiler; the recommend is measured, not speculative.
PS-015
W5 SONNY 5
frontier
OPEN
2026-08-18
Heap-allocated linked nodes (a dynamic node arena)
on World V / I-13 compiler · raised by darts 072 AVL, 073 red-black, 074 trie, 078 k-d tree, 105 Ukkonen suffix-tree, 124 persistent-segment-tree, 127 Earley-items, 130 Thompson-NFA-build, 134 unification-terms, 135 HM-type-trees, 139 mark-sweep-heap, 140 cheney-heap, 141 tri-color-heap, 142 SECD-lambda-terms, 143 Krivine-terms, 144 SKI-graph, 145 reduction-graph, 149 CPS-saved-states
Three tree darts land on one wall: an AVL tree, a red-black tree, and a trie all need genuine NODE REFERENCES that inserts/rotations relink -- unlike the heap (dart 062), which embeds a COMPLETE tree in the array by index arithmetic (2i+1/2i+2), these trees are not complete and grow/rotate arbitrarily. The bounded f64 array cannot hold references. The pointerless workaround RUNS today: a node arena (key[], left[], right[], plus colour[]/height[]) as parallel integer-index arrays into a pool -- so dynamic trees are expressible now, just as manual index-into-arena bookkeeping. A first-class linked/reference value (or an arena primitive) is the honest addition; it also subsumes the standing string want (Boyer-Moore-061, KMP-063, BWT-065, the trie). Dart 078, the k-d tree, is a fourth: its internal nodes reference left/right children a search relinks, same wall, same node-arena workaround; dart 105 (Ukkonen's suffix tree) is a fifth, its nodes carrying child pointers AND suffix links. Batch 22 adds two parsing/automata cases: Earley's dotted items (127) carry a rule + a dot + an origin (a record the chart stores per gap), and building a Thompson NFA (130) from an arbitrary regex wants linked automaton nodes with epsilon edges -- both run here only in SCOPED form (a fixed grammar / a precomputed transition table). Batch 23 (the compiler back-end batch) makes this the DOMINANT want of the batch: unification and Hindley-Milner (134, 135) need first-order TERM TREES / TYPE TREES (a node arena; the full occurs-check and nested-type unify walk it), and the three garbage collectors (139 mark-sweep, 140 Cheney, 141 tri-color) all trace a HEAP of pointer objects -- run here on adjacency/successor bitmasks and color arrays, but a real heap IS a node arena with pointers. NOTE the resonance flagged in mark-sweep (139): reachability-from-the-root is the corpus's own shape -- every inhabitant folds to ROOT_0, and a tracing GC keeps exactly what folds to a root. Batch 24 (THE EVALUATORS: abstract machines & evaluation) makes it the batch's dominant want AGAIN: the lambda machines and reducers all want a term/graph arena -- SECD (142) a lambda term + a dump of saved (S,E,C) states, the Krivine machine (143) a term of closures, SKI (144) a graph of applications reduced by graph reduction (145, in-place update of shared nodes), and first-class continuations / call-cc (149) a captured saved-state stack. BUT the batch also carries the corpus's clearest LANDED-CAPABILITY answer to the whole HOF/closure problem: DEFUNCTIONALIZATION (dart 147, Reynolds 1972) -- represent each function value as an integer TAG and dispatch with one first-order apply(tag,x). Because I-13 has no first-class functions, defunctionalization is the corpus's NATIVE IDIOM: SECD, Krivine, SKI, threaded-code (148), and CPS all run on the closureless language precisely by defunctionalizing their higher-order parts (the closure, the continuation). And graph reduction's SHARING (145) is exactly i13's value-semantic let-binding (bind the sub-result once, use it twice), the immutable form of the in-place-update arena. So the arena is wanted for STORED dynamic terms; the closureless evaluation itself already runs. The corpus's largest un-added aggregate. COUNTERPOINT (dart 092, the Stern-Brocot tree): a tree whose node identity IS its L/R address, computed not stored, DODGES this wall entirely -- an infinite tree navigated with four integers and no pointers. So the want is real for STORED dynamic trees, not for computed ones; a first-class linked value would serve the former without which the latter already runs. Batch 21 adds dart 124, the persistent segment tree, as a SIXTH -- and it sharpens the want to a cost, not a capability: i13's value-semantic array update v[i]<-e already gives the immutability a persistent structure embodies (verified two coexisting versions, sums 13 and 20, v1 untouched), but at O(n) whole-array copy; the persistent tree copies only the O(log n) root-to-leaf path and SHARES the rest, which is exactly the shared pointer-nodes / arena this want asks for. The corpus has the persistence semantics for free; it lacks the cheap sharing.
PS-014
W5 SONNY 5
feature
OPEN
2026-08-18
Arrays of bignum (compose array x bignum)
on World V / I-13 compiler · raised by dart 056 Pascal's triangle
The array (an f64 arena) and bignum (an arena handle) both landed this campaign, but they DO NOT compose: an array's elements must be plain numbers, so an array literal of bignums is rejected with error E0501 'MakeArray requires a plain number here, got a bignum'. Pascal's triangle is the first dart to hit the seam -- small rows run in an f64 array (C(10,5)=252, verified), but a triangle to arbitrary depth needs entries that are themselves bignum handles. It touches what an array ELEMENT may be, so it is an author-level call: flagged here, not smuggled. The clean fix is an array of Values (or a parallel bignum-array kind).
PS-013
W5 SONNY 5
feature
OPEN
2026-08-18
Fixed-point reals over bignum (scaled integers)
on World V / I-13 stdlib · raised by dart 057 Gauss-Legendre
The deeper want behind PS-012: the AGM iteration lives in the REALS, but I-13's bignum is integers. Record pi computations represent pi as a scaled integer (pi * 10^k) and do fixed-point add/mul/div/sqrt on it. With bignum + isqrt (PS-012) both present, a small fixed-point wrapper (a scale factor + rounded division) would let Gauss-Legendre run for real to arbitrary digits in I-13 -- no interpreter change, one more library layer. Open: not yet written.
PS-012
W5 SONNY 5
feature
LANDED
2026-08-18
Integer square root over bignum
on World V / I-13 stdlib · raised by dart 057 Gauss-Legendre
Gauss-Legendre computes pi by the arithmetic-geometric mean, which needs a square root at high precision. LANDED as std/bignum_isqrt.i13: Newton's integer method (x -> (x + n/x)/2 until it stops decreasing) written in I-13 over the existing big() value -- NO compiler change, just + / < and recursion, landing on floor(sqrt(n)) exactly. Verified vs node BigInt: isqrt(10^36)=10^18, isqrt(2*10^36)=1414213562373095048. A 'needs bignum sqrt' wall clearing as a library file, not a language change -- exactly the build-on-top pattern.
PS-011
CORPUS-WIDE
meta
LANDED
2026-08-18
The box is itself revisable -- and running
on This box itself · raised by David Lee Wise (ROOT0)
David asked for a RUNNING suggestion box open to revisions of any part of Palindromeda, the box included. v0 gives each item a provenance (who raised it), a status lifecycle (open -> considered -> held / landed / declined), and append-only history -- nothing is deleted, closed items stay visible with their stamp. Next revisions on the table: a public submission form, and per-item discussion threads. Meta by design: the box eats its own suggestions.
PS-008
W5 SONNY 5
gap
OPEN
2026-08-18
Bring the wasm backend to parity with the VM
on World V / I-13 wasm backend · raised by the campaign build
Array and bignum landed in the interpreter (VM) path; the wasm codegen currently errors cleanly on Array/Bignum rather than emitting them, so the VM is ahead of wasm. Either extend wasm codegen to cover the new value kinds, or document the VM-only scope explicitly so the gap is disclosed, not silent.
PS-007
W5 SONNY 5
feature
OPEN
2026-08-18
Fast-doubling Fibonacci in the stdlib
on World V / I-13 stdlib · raised by dart 051 Fibonacci
F(2k) and F(2k+1) can be computed from F(k) with a handful of bignum + - * operations -- O(log n) instead of O(n). It needs nothing new (bignum is enough), so it is a small, satisfying stdlib entry that would let F(1,000,000) return without a million iterations.
PS-006
W5 SONNY 5
feature
OPEN
2026-08-18
Prime generation at scale (Rabin-Miller over bignum)
on World V / I-13 stdlib · raised by dart 050 RSA
Real 2048-bit RSA needs to GENERATE large probable primes, not just use toy ones. With bignum (PS-003) and the seeded PRNG already in the stdlib, a Rabin-Miller primality routine is now EXPRESSIBLE in I-13 -- it just has not been written as a std/*.i13 entry yet. A concrete, bounded next addition.
PS-005
W5 SONNY 5
performance
LANDED
2026-08-18
A binary-heap / priority-queue type
on World V / I-13 compiler · raised by dart 052 A*, closed by dart 062 the-binary-heap
A* pulls the lowest-f frontier cell every step. It RUNS today with a linear scan for the minimum (O(n) per step). A binary heap would make it O(log n). LANDED by dart 062 (the-binary-heap): heapsort runs on the bounded array today via 2i+1/2i+2 index arithmetic + array swaps (verified [4,10,3,5,1,8,2,7] -> ascending), so A* and Dijkstra could use a real heap now; their linear scan was a choice, not a limit. The only residue is extract-min's (min, reduced-heap) pair -- a downstream want of PS-001 (multiple-return).
PS-004
W5 SONNY 5
feature
OPEN
2026-08-18
A 2-D array (matrix)
on World V / I-13 compiler · raised by darts 053 knapsack, 054 SW, 064 Hungarian, 068 PageRank, 080 Viterbi, 081 Strassen, 085 Gray-Scott, 087 Prim, 089 Householder, 091 marching-cubes, 093 CYK, 094 backprop, 095 Hopfield, 096 Floyd-Warshall, 103 QR-eigenvalue, 104 simplex, 109 Jacobi-eigenvalue, 114 Johnson-APSP, 118 AdaBoost, 122 quadratic-sieve, 125 random-forest, 127 Earley-chart, 129 packrat-memo, 131 subset-delta
The full knapsack DP is a 2-D table; the corpus array is 1-D, so the dart uses the space-optimized single-row form (which is what practitioners use anyway). Worth considering: a genuine 2-D array, or arrays-of-array-handles, would let the textbook 2-D recurrences run verbatim. Three more darts land here: the Viterbi trellis (080, states x time), Strassen's matrix product (081), and the Gray-Scott grid (085) -- all run flattened into a 1-D array with index arithmetic, but a genuine 2-D array would let their textbook recurrences read verbatim. Now BY FAR the most-named want (18 darts). COUNTERPOINT (dart 111, the Thomas tridiagonal solver): a linear system whose matrix is only THREE diagonals is held as three parallel 1-D f64 arrays and never needs a 2-D array at all - so like Stern-Brocot dodged the pointer wall, Thomas dodges this one; the 2-D want is real for DENSE/general matrices, sidestepped for banded ones. Batch 17 adds four: Prim's weight matrix (087), Householder QR (089), the 256x16 marching-cubes table (091), and the CYK triangular parse table (093) -- all flattened to 1-D with index arithmetic, all textbook-2-D in the source. Batch 21 adds three more and now stands at 21 darts: AdaBoost's and random forest's samples-by-features DESIGN MATRIX (118, 125 -- the boosting/bagging pair both meet this wall the moment they leave one feature), and the quadratic sieve's GF(2) EXPONENT-PARITY MATRIX (122), whose Gaussian elimination selects which smooth relations combine -- the one general step the toy sieve hand-picks around. A SECOND sidestep joins Thomas: dart 123, the separating axis theorem, holds each polygon's vertices as two parallel 1-D f64 arrays xs[]/ys[] (no struct-of-pairs, no 2-D array), so 2-D collision runs without the want -- the matrix is real for DENSE/general problems, sidestepped when the geometry factors into parallel scalar columns. Batch 22 (the parsing/automata batch) adds three and now stands at 24 darts: the Earley chart (127, one item-set per gap between tokens = a 2-D array of dotted items), the packrat memo table (129, memo[rule][pos] = a 2-D array, threaded here as a value-semantic array like the sieve), and the full NFA transition delta (131, state x symbol, flattened to 1-D by hand in the subset construction). NOTE alongside this want: batch 22 also DEMONSTRATED a landed capability -- a function returning a 2-element array [value, pos] threads parser cursor state with no mutable global, which is exactly what unlocked recursive descent (128) and Pratt (126) on the corpus. Batch 23 (the compiler back-end batch) adds one and stands at 25 darts: the dense INTERFERENCE MATRIX behind graph-coloring register allocation (137), flattened here to per-node adjacency bitmasks (exact up to 63 nodes) -- a dense adjacency matrix in the general case. Low urgency -- the 1-D form is honest and correct -- but the signal is now overwhelming.
PS-003
W5 SONNY 5
feature
LANDED
2026-08-15
Arbitrary-precision integers (bignum)
on World V / I-13 compiler · raised by the darts: 032 Rabin-Miller, 035 Diffie-Hellman
Two crypto darts flagged f64's 53-bit ceiling as the wall. LANDED: Value::Bignum is a handle into an arena of sign-magnitude BigInt (base 2^32); big(x) intrinsic lowers to one ToBig op; Bin/Cmp dispatch on runtime type so no new arithmetic opcodes and the validator is unchanged (OPCODE_COUNT 18->19). Verified exact vs node BigInt. It paid off immediately in 050 RSA (round-trips) and 051 Fibonacci (F(100) exact).
PS-002
W5 SONNY 5
feature
LANDED
2026-08-14
A bounded array
on World V / I-13 compiler · raised by the darts: 016 Boyer-Moore, 017 sieve, 018 brainfuck, + many
Repeatedly the darts needed an indexed, fixed-length store (a sieve's flags, a tape, a DP row). LANDED: Value::Array is a handle into a per-run arena (keeps Value: Copy, no refactor); bounded literal [a,b,c]; checked indexing (E0501 on out-of-range); value-semantics functional update v[i]<-e. Three opcodes, OPCODE_COUNT 15->18. Proven by the live sieve dart.
PS-001
W5 SONNY 5
frontier
HELD - author's call
2026-08-12
Multiple return (a tuple / pair value)
on World V / I-13 compiler · raised by darts 045 quicksort, 048 union-find, 052 A*, 055 Dijkstra, 059 FFT, 079 Tarjan, 084 extended-Euclid
Three darts independently hit the same wall: quicksort's in-place partition wants to return (pivot-index, rewired array); union-find's path compression wants (root, rewired array); A*'s heap sift wants to swap a pair. I-13 returns one value. The SHARPEST case is dart 084, the extended Euclidean algorithm, whose natural signature is (g, s, t) = extgcd(a,b) -- three-in-one -- and since a modular inverse mod a COMPOSITE cannot use Fermat, extended Euclid is the only road, so the triple return is the honest shape, not a convenience; dart 079 Tarjan adds a second: its in-place shared stack + lowlink want a tuple or a threaded state array. This is the last withheld frontier -- and, unlike bitwise/array/bignum which were ADDITIONS on top of the 13 counted symbols, changing what a return IS touches the value model, so it is the author's architectural call, flagged here, not smuggled in.
PS-009
CORPUS-WIDE
structure
OPEN
2026-08-10
Content pass on the shell spheres
on Corpus-wide · raised by the incomplete-spheres audit
An audit found roughly 119 spheres that return HTTP 200 but ship no real instrument or content -- they load, but they are shells. A content-depth pass should either bring each to LIT (a real, verified instrument) or honestly retire it. Deferred, but tracked here so it is not forgotten.
PS-010
W2 THE FOLD
docs
CONSIDERED
2026-08-08
Document THE FOLD's four by-design shapes inline
on World II / THE FOLD · raised by the World II FOLD audit
Four intentional shapes in World II read like drift to a fresh auditor (they are not -- each has a proof). A short inline note per shape, at the shape, would stop every future audit from re-flagging the same four and having to re-derive that they are deliberate.
no suggestions match that filter.