Repository navigation
Feature: Optional Nuplane package discovery and shell reload integration #142
Description
Provide optional CShells.Nuplane outside Nuplane core. Bridge package assembly discovery and post-load reconciliation to catalog refresh and policy-controlled active-shell reload. Inspect ReloadResult errors, preserve serving generation on refusal, serialize/coalesce work and shut down cleanly. Keep Foundation EF/Attention interpretation in Elsa. Preserve Workbench refresh-only default and Host reload-enabled default. Add solution/pack workflow inclusion. Refine implementation after M1 previews and prove a real package -> catalog -> serving shell path.
Delivery program: elsa-workflows/elsa-foundation#2500
Project: https://github.com/orgs/elsa-workflows/projects/58
Upstream completion prerequisite
- Nuplane Publish reconciliation completion for committed removals with no applied packages nuplane#109 publishes completion after committed removals even when the applied list is empty. PR110 merged at
eb2cf6c2ee1f79dc2c45fb83cc415bbe4856d0d4; owner Publish37777044387 published all8 packages as0.0.11-preview.99, and main Validate37777197684 passed. Pipeline archives match direct Feedz downloads byte-for-byte; outside-checkout public-package consumers on .NET8/9/10 proved committed removal-to-zero, callback ordering/isolation and the subsequent quiet cycle. Qualification evidence. This closes only the Nuplane event prerequisite: optional adapter implementation still follows merged/published CShells ownership/catalog/build primitives. Final package-to-catalog-to-serving-shell proof must consume the qualified fix;.94cannot satisfy removal-to-zero. Actual unload/collection remains Foundation #2362 scope. Final Foundation adoption follows final GitHub releases, not an interim.99pin-only PR.
Recovery trigger
Preserve event-triggered retries: failed observer work remains pending for the next delivered eligible completion. Empty unchanged cycles after final removal emit no callback. Explicit reload/build recovers outstanding catalog freshness at Begin; no background retry timer or automatic sibling recovery is promised. Prove quiet-cycle behavior and both later-event/manual recovery paths.
Delivered upstream scope (2026-10-08)
Before the diagnostics follow-up, the original integration/live-options scope was completed after Task161 delivery: original optional adapter156/Nuplane removal109 qualification remains valid, and live-options161 is now Done/Passed. Product PR162/mainc29b3eb/public169 passed full gates and eight options-policy cases on each actual .NET8/9/10 runtime; allten archives and15 loaded assets were independently verified. Documentation PR163/mainc39f191 and separate170archive audit passed; executableconsumer acceptance remains169, installation-to-serving-shell journey remains166. Allnative children109/156/161 are closed. Foundation2314 stable adoption, startup/readiness143, readability145/2164, unloading2362, safepruning108, finalreleases and actualhosts remain pending. No milestone completion or unavailable reviewer approval is inferred.
Diagnostics correction delivered
CShells164 and Feature142 are CLOSED Done/Passed. Product PR165 merged at99b41baf08cd40fee0323478e02a543549a57621; PR and main Packages37858223289 passed808library+31E2E tests, zero warnings/errors. Root/independent source review, focused47, three target builds and compiled logging-removal mutation8expectedfailures/restored47pass passed. Allten actual-public171 archives were independently audited; actual PackageReference-only171/99 consumer passed sixcases/25checks on each .NET8/9/10 runtime (18scenarioexecutions/75checks/15actuallyloadedDLLs), with root/independent exact-byte/cache/source provenance. Full corrective proof. Docs PR166 merged at66062b1416c97109b3818b218b4e8e2292d8f099; PR and main Packages37859807007 also passed808+31/zero warnings/errors. Allten172 archives separately passed root/independent audit; executable acceptance remains171/99, not172. All16Spec024tasks checked; claim6070509449 released. Allnative Feature142children109/156/161/164 closed. No stable or actual Foundation host acceptance is inferred.
Foundation2314 preparation has resumed. Final stable releases/adoption and the separate program gates remain pending.
Activity
sfmskywalker commentedon Oct 8, 2026
Root-reviewed design refinement only; #149 remains the single implementation leaf.
The inactive/failed-first-activation case is now explicit: an eligible Nuplane change is recorded before the no-active guard, then a #147 Begin participant refreshes before the next requested build reads the catalog. Private source/catalog watermarks acknowledge only successful refresh, independently of promotion. Active-shell reload retry stays separate, so a freshly built first shell needs no gratuitous reload. The refresh gate must be released before ReloadActiveAsync, whose Begin path re-enters. No lifecycle acknowledgment map or extra public CShells API is needed.
A newer change overlapping an already-started build remains outstanding for a subsequent build/eligible observer pass. This does not invalidate in-flight builds or establish package deletion/unloading safety. Keep host enablement/refresh/reload defaults, Elsa refusal and restart/locked policy boundaries. Target exact Nuplane .94 packages/source; no adapter implementation or passed acceptance test is claimed.
Canonical report and decision D14 are committed locally in Foundation
4c97870ea. #142 remains dependent on reviewed/published primitives; push/PR, external CI/review, preview/adoption and M3 deletion readiness remain pending.Registration follow-up at canonical lead commit
8c0553670: exact Nuplane .94 source confirms OnPackagesChanged() creates an INuplaneObserver singleton by implementation type; it does not alias a separately registered concrete singleton. Use explicit observer/build-participant factory aliases to one concrete coordinator, after AutoloadPackages, and #144 concrete sharing for shell-side observer alias identity. Keep the managed-only coordinator non-disposable so copied factory aliases do not transfer borrowed disposal ownership; prove identity and unchanged unrelated observers. No HostContainer capture is required.Native dependency #142 -> Feature #145 is now added and read-back verified because deferred freshness uses its pre-catalog Begin seam. #142 remains Blocked; no implementation claim or new active writer.
sfmskywalker commentedon Oct 8, 2026
Delivery transition: new bounded M2 prerequisite Nuplane valence-works/nuplane#109 is the only active product implementation leaf, native child and blocking release dependency of CShells #142. Spec Kit 029 will use
/tmp/hosting-nuplane-removal-completionfrom clean main21e2c24fe8070a92ded13f7cc391353f7c6df856; exact claim/scope are on #109.Source review confirmed .94/current main can commit removal-to-zero without publishing Reconciled, which loading and both Elsa bridges require. Root approved the minimal existing notification condition: nonempty applied set OR committed removals. Preserve empty idle/failed-only no-event behavior, Changed-before-Reconciled, empty actual payload, failure/degraded accounting and next(). Require causal real pipeline/store tests and mutation/revert before local qualification. This prerequisite can be implemented without unpublished CShells APIs or the M3 admission choice; the CShells adapter itself still awaits released prerequisites. No implementation/test result is claimed yet.
A separate real-package non-destructive #108 identity probe is complete/root-reviewed and its research claim released. Same state file contended; different state files allowed concurrent real reconciliations with one configured empty install root. This invalidates a per-state-only pruning namespace. The canonical draft now requires shared physical-root authority plus complete persistent active/LKG protection; upgrade participation alone is insufficient. #108 stays Blocked; actual safe pruning remains required.
Latest canonical Foundation lead commit
c9ab1ddc4ec40d9fc9f55a725df9638ba32d2d9d. Five CShells slices remain In Review with remote review/CI/publication pending; their local Release 728+31 tests, nine coherent package archives and .NET8/9/10 core-consumer proof remain unchanged. No milestone is complete. Git/session choice still gates push/PR, shared-root compatibility decision still gates destructive readiness. Program tracking uses Project58, now 19 items; root retains design/integration/QA and Luna High delegate fallback.sfmskywalker commentedon Oct 8, 2026
Prerequisite transition: Nuplane valence-works/nuplane#109 is locally qualified at
d6eac6e3faacb72b5acfb93c59d2862c340ca3a7and In Review; implementation claim released. Root complete affected tests passed 799+251+156, and a package-only public-DI consumer passed on actual .NET8/9/10 with persisted empty state before removal completion and a quiet second cycle. Exact proof/boundaries are on #109 and Foundation lead08dfd98057bd4ee9159fd8e8d6b4d632ce67cf70 indocs/reports/modular-hosting-removal-completion-qualification.md`.#142 returns to Blocked on reviewed/published primitives and a released Nuplane preview containing #109. No product implementation claim remains active. Do not treat .94 as the final removal-to-zero dependency; no adapter implementation/adoption result is claimed.
D14 recovery is now explicit in canonical PRD/decision/roadmap/candidate: retain failed observer work for the next delivered eligible completion. Empty unchanged cycles after final removal remain silent, so they cannot replay it. A user-requested reload/build independently recovers outstanding freshness at Begin; it does not schedule automatic reload or guarantee recovery of every sibling. No background timer is added. Tests must prove quiet-cycle behavior, pending retention, explicit-build freshness recovery and later eligible-event retry. This preserves current recovery scope and does not expand #109 or #2362 unloading ownership.
Git/session choice still gates push/PR; preview/adoption and M3 admission/deletion proof remain outstanding. No milestone complete.
sfmskywalker commentedon Oct 8, 2026
Narrow public-DI research claim only (not the Feature #142 implementation leaf): I will build an artifact-only probe under to verify whether a private non-participant shared holder can preserve one root coordinator across observer/build-participant aliases without sharing wholesale. No product checkout changes, no Nuplane store use/mutation, no PR. I will release this research claim when the bounded proof is complete.
sfmskywalker commentedon Oct 8, 2026
Correction to my preceding claim: the artifact-only probe target is /Users/sipke/.codex-workspaces/artifacts/modular-hosting-2500/adapter-alias-probe. It will not share INuplaneObserver as a whole service type. This remains narrow research only, not the Feature #142 implementation leaf; no product checkout changes, store use/mutation, or PR.
sfmskywalker commentedon Oct 8, 2026
Task #149 is delivered and publicly qualified. PR #155 merged normally as
94f4b16eda0b12dc3d5e565cf0ecc4bc99b4e1ab; treef0f72201eaa93cf047ea4fdb1c9b4cd2f4eaadf1equals reviewedhead90b840. Actual main-push Packages run https://github.com/valence-works/cshells/actions/runs/37801475506 succeeded and published all nine0.0.30-preview.165packages to Feedz; NuGet.org was skipped. Exact-head CI and publisher tests passed753 library+31E2E withzero warnings/errors. Root and independent audits verified all-nine pipeline/public byte identity, nuspec/source/version, synchronized dependencies and net8/net9/net10 assets. Preview.164 is pre-runner and was not used as runner evidence.The fresh outside-checkout public Feedz consumer passed five behavior groups on actual.NET8.0.10,9.0.9,10.0.8: explicit opt-in/lazy resolution and copied/deduplicated serial targets; deterministic retry scheduling only after InitialPass plus retained safe failure history; startup cancellation with no later target/retry; provisional external generation rejection then committed external satisfaction; explicit Stop fencing later reconciliation. Throwing observers reenter Snapshot safely and do not change outcomes. The helper FakeTimeProvider is a test-only direct dependency fromNuGet.org; the two direct CShells package references restore fromFeedz with no ProjectReference or private-API substitution.
Root reviewed source and strict shared teardown, then independently recomputed fresh source/cache/archive hashes, NuGet metadata/assets/archive SHA512, exact loaded DLL bytes versus package framework assets, and fullsourceSHA94f4b16 informationalversions. Cleanup releases gates, bounded-joins every owned run/manual task, attempts all per-shell drains and root disposals, aggregates failures and preserves primary errors. Earlier private harness attempts are retained and accurately superseded; they were not treated as public acceptance.
Detailed evidence is local-only:
cshells-published-preview-165/andcshells-published-runner-consumer/evidence/20261008T153434Z-l4efqv/root-qualification-verification.jsonin the program artifact directory. Public PR/source/CI/publisher artifacts are linked above. Root QA has no material blocker; causal committed-marker removal failed and exactrestorationpassed. Copilot quota-unavailability and absent Greptile are recorded in the merge gate, not external approval.#149 moves Done/Passed and its root delivery claim is released. Feature143/M2 stays open for actual host startup/readiness/consumer adoption. Feature145/Foundation2164 proof, optional CShells.Nuplane, safe pruning, final Nuplane0.0.11/CShells0.0.30 releases and Foundation adoption remain outstanding. No default hosted startup behavior or application policy is claimed by this generic primitive. Next adapter planning/probe is supporting readiness, not a second implementation leaf.
16 remaining items
sfmskywalker commentedon Oct 8, 2026
Upstream Feature142 is complete again after Task161 delivery: original optional adapter156/Nuplane removal109 qualification remains valid, and live-options161 is now Done/Passed. Product PR162/mainc29b3eb/public169 passed full gates and eight options-policy cases on each actual .NET8/9/10 runtime; allten archives and15 loaded assets were independently verified. Documentation PR163/mainc39f191 and separate170archive audit passed; executableconsumer acceptance remains169, installation-to-serving-shell journey remains166. Allnative children109/156/161 are closed. Foundation2314 stable adoption, startup/readiness143, readability145/2164, unloading2362, safepruning108, finalreleases and actualhosts remain pending. No milestone completion or unavailable reviewer approval is inferred.
sfmskywalker commentedon Oct 8, 2026
The independently reviewed actual-public
.169/.99net10 diagnostic confirmed the catalog-refresh Error/original-exception logging gap. The generic log-and-rethrow correction is now tracked as CShells164, native child of reopened142 and native prerequisite of Foundation2314. It is the sole assigned implementation leaf on org branch024-nuplane-failure-diagnostics. Existing upstream throw identity and Nuplane isolation/retry remain required; no Copilot/Greptile request.Foundation2314's three planning status clarifications are root-reviewed, committed/pushed at37b5333a156a1327cfa1d0c5c3a37910cf03e0d3. Its preparation claim6070201520 is released for this dependency wait;2314 is Blocked/Pending, not a competing active writer. Root/independent probe proof is narrow, not corrective-package or actual-host acceptance. Safe pruning's separate owner decision, final Nuplane then CShells releases, stable pins/locks/maps and actual hosts remain outstanding. Goal remains active.
sfmskywalker commentedon Oct 8, 2026
Organization PR opened: #165, final head
f4024e62855fa20ba5e8f35936764e2dd1f06d3c(implementationedbf58283b562e9288fa5986683c0eef4b533dc8, then two task completion marks only). Root source QA passed: full808, focused47, three zero-warning/error target builds, compiled logging-removal mutation8expectedfailures/restored47pass, root and independent source reviews. Detailed evidence: #164 (comment).CS164 is In Review / Review Required / Verification Running while normal CI runs. Copilot and Greptile are waived; independent review is the applicable review gate. The issue remains open through resulting-main publication and ten-package actual-public/.NET8/9/10 qualification. Foundation2314 remains Blocked on164; final stable/adoption and the separate Nuplane pruning owner decision remain outstanding. No stable or downstream pin change is made.
sfmskywalker commentedon Oct 8, 2026
Feature142 is complete after the corrective observer-diagnostics Task164. All native children109/156/161/164 are now closed. Optional adapter ownership, discovery/reload and live-options evidence remains valid; the generic Error/original-exception gap is corrected and qualified through the actual Nuplane dispatcher. Latest executable diagnostic acceptance is public CShells171/Nuplane99 on actual .NET8/9/10; docs-only172 has a separate complete archive audit. See #164 (comment) and its terminal completion record.
This closes the upstream optional-integration feature. Foundation2314 now resumes preparation; final stable releases/adoption,143readiness,145/2164readability, unloading2362 and safepruning108 remain outstanding. No milestone completion or stable/actual-host acceptance is inferred. Copilot/Greptile are waived; root and independent review passed.