docs: Lumens rev 3.3 — acceptance-gate trace + defs/effects gaps closed#37
Merged
Conversation
…+ two gaps closed
Hand-authored the full arcade + transactional-ordering reference Lumens in real
LX-AST (docs/protocol/lumen-walkthroughs.md) as the §14 acceptance gate. Writing
them COMPLETE (not fragments, as earlier passes) surfaced two load-bearing gaps —
both invisible to fragment review because they only appear when logic is reused
across sites and when an effect must fire from pure code:
- G1: no author-defined function abstraction. collides()/menuRow() are needed
from many transitions; let binds values, transitions can't call transitions →
forced inlining (bloat + LLM-reliability + patch-divergence). Fix: `defs` +
{apply} (§2.8) — named, parameterised, NON-recursive (validated DAG, fully
inlinable so the static gas bound holds), pure-in-params (read params + const,
not state) so a def applies to in-flight computed values.
- G2: a pure transition had no specified way to INVOKE a capability (§6 defined
the wire event + policy, never the authoring trigger). Fix: effect bindings
(§6.4) — the output dual of `events`: {on, call, args, onResult, onError}; the
runtime brokers, result re-enters as an event; purity/determinism preserved,
consent + egress bounds unchanged.
Clarifications the trace forced: StateLeaf defined to include nested list/record
(§1.1); transition result is a delta-merge, {set:{}} is the no-op (§2.5);
multi-field {set:{a,b,…}} (§2.2).
Consistency: §1 validity, §11 security, §12 SDK deltas, §14 conformance, rev-3.3
note; interactivity-concept v0.9. rev 3.x (binders, var, at/setAt, const, idx,
flatten, kernels, colour) all validated by the complete trace; gas never the
constraint.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hand-authored the full arcade + transactional-ordering reference Lumens in
real LX-AST (
docs/protocol/lumen-walkthroughs.md)as the §14 acceptance gate. Writing them complete (not fragments) surfaced two
load-bearing gaps invisible to fragment review:
collides()/menuRow()arereused across many transitions;
letbinds values, transitions can't calltransitions → forced inlining (bloat + LLM-reliability + patch-divergence).
Fix:
defs+{apply}(§2.8) — named, non-recursive (validated DAG, fullyinlinable so the static gas bound holds), pure-in-params.
event + policy, never the authoring trigger. Fix: effect bindings (§6.4) —
the output dual of
events; runtime brokers, result re-enters as an event;determinism + consent + egress bounds unchanged.
Clarifications the trace forced:
StateLeafincludes nestedlist/record(§1.1); transition result is a delta-merge,
{set:{}}no-op (§2.5); multi-field{set:{a,b,…}}(§2.2).rev 3.x (binders,
{var},at/setAt,const,idx,flatten, kernels,colour authority) all validated by the complete trace; gas never the constraint.
2 of 5 reference Lumens traced; workflow/defrag/map remain before L0–L9.
🤖 Generated with Claude Code