Repository navigation
release: v2.0.0 - #5
Closed
github-actions[bot] wants to merge 1 commit into
Closed
github-actions[bot] wants to merge 1 commit into
github-actions[bot] wants to merge 1 commit into
Conversation
github-actions
Bot
force-pushed
the
release/v2.0.0
branch
from
September 2, 2025 02:26
b209ff7 to
c8df70f
Compare
Contributor
|
workflow changelog change made, closing this PR. |
Shinrai
added a commit
that referenced
this pull request
Aug 10, 2026
The merge-replace collision test encoded the OLD (buggy) first-wins behavior and carried a false premise: it claimed api_test_collections/math.mjs has no `add`, so "no actual conflict … behaves the same as merge". That file DOES export `add` (a + b), so `add` is a genuine conflict — and #5 correctly makes the second module win it (5), not keep the first's file version (1005). Update the post-collision assertion 1005 → 5 and fix the stale comments; the pre-collision assertion (1005, before the collections add) is unchanged. This is now a real merge-replace conflict test, which the old comments admitted was missing.
Shinrai
added a commit
that referenced
this pull request
Sep 13, 2026
…indings Follow-up to the reactive self-heal redesign — the adversarial review of #362 surfaced further real, related defects in the same mechanism. Four fixes: - Gate #reactivelyPatchStack on ____buildDepth === 0 (findings #3/#5/#7/#8). The reactive patch exists only for the quiet case (a late mutation with no build, hence no terminal rebuildStacks(), coming). Firing during a build/add/reload was redundant (a flood per leaf on initial load — perf), stored the write raw because UnifiedWrapper's setTrap only wraps+userAssigned-tags at buildDepth 0 (so it differed from a rebuildStacks()-installed stack and a later reload's child-adoption dropped it), could race the framework's own not-yet-landed assignment for a candidate the build might still reject, and during a reload could target the old tree. Checked at execution time so a build that started after the setImmediate was queued is caught. - addModule()/addModules() now call rebuildStacks() after mounting (finding #1). These compose a component onto the live tree like api.slothlet.api.add() but never rebuilt stacks, so a routine matching a leaf of a module mounted this way never got its stacked callable — and the reactive patch can't cover it (it's a build, now gated; and a mount-relative name can't match until the endpoint registers during that same build). Both the single and multi mount paths get the call. Target is this.slothlet.api (the base tree addApiComponent mounts onto and boundApi forwards to), matching runModeRoutines. - Post-await re-validation in #reactivelyPatchStack (findings #2/#4/#6). After the #resolveContainer await, re-check ____buildDepth (a build may have started), slothlet.api identity (a reload may have swapped the tree), and the target wrapper's ____slothletInternal.invalid flag (a concurrent removal may have invalidated it — a write would land via the set trap with no throw but read back undefined). Recompute the winner's contributor group from current raw and re-confirm the install threshold (TOCTOU) so a concurrent removal can't leave a zero/one- contributor no-op stack replacing a real function. The waiting-proxy write-absorption case has no clean public brand to detect, but only arises mid-build/removal, which these guards + the top-of-method gate cover; documented in-code rather than adding a fragile detector. Tests: a new modules/routine-stack-on-mount suite pins that addModule()/addModules() install the stack and it invokes the mounted contributor (fails without the mount-path rebuildStacks); a new routines case pins the build-depth gate no-ops during a build and heals once it clears. Findings #2/#6 (invalidated-wrapper / waiting-proxy) are internal race states without a deterministic public-API trigger and are covered by the guards rather than a flaky test. Refs #362
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.
🚀 Release v2.0.0
Type: major version bump
Branch:
release/v2.0.0Trigger Commit: release!: complete v2.0.0 architectural rewrite with AsyncLocalStorage and universal module support
📋 Changes
🚀 What's Changed
💥 Breaking Changes
✨ Features
No new features
🐛 Bug Fixes
No bug fixes
🔧 Other Changes
No other changes
✅ Automated Actions Completed
🎯 Next Steps
🤖 This PR was created automatically by the release workflow