Skip to content

Preserve runtime state and effect lifetimes - #933

Open
Eli Pinkerton (wallstop) wants to merge 4 commits into
mainfrom
fix/runtime-issue-debt-348
Open

Eli Pinkerton (wallstop) wants to merge 4 commits into
mainfrom
fix/runtime-issue-debt-348

Conversation

@wallstop

@wallstop Eli Pinkerton (wallstop) commented Oct 3, 2026 •

Copy link
Copy Markdown
Collaborator

DISCLOSURE: LLM-GENERATED TEXT

Why: Failures and large clocks can leak resources or change gameplay state early.

What:

  • Preserve pooled items and counts after failed initialization.
  • Keep cache values and lifetimes correct after failures and at large clocks.
  • Preserve effect durations, periodic cadence, and reset policies at large clocks.
  • Release cancelled worker jobs and report interrupted drains.
  • Handle blank loading paths and captions while preserving disposal safety.

Progress on #817, #827, #844, #867, #924, #932, and #934.

DISCLOSURE: LLM-GENERATED TEXT

Whitespace-only toggle labels were blank in inspector selection lists.
Use the existing unnamed caption in both option constructors. Preserve
literal option values, padded captions, flags and selection behavior.

Add 16 data-driven cases through constructors and real StringInList
option generation, selection and serialization. Native Unity red has
9 expected failures and 23 passes; the fix passes all 32 cases.
Readonly assembly/source/MVID binding resolves an older same-named file.
Default and Odin editor-test builds pass with zero warnings.

Both staged preflights, strict documentation build, member-order gate,
scoped checks and manual spelling (2666 files, zero issues) pass.
Independent source and next-head artifact-oracle reviews find no issues.

Update the guide, public parameter documentation and unreleased notes.
This fix has patch-version impact; package version is unchanged.
Refs #867
DISCLOSURE: LLM-GENERATED TEXT

Failed pool acquisition and warm-up now retire owned items and balance active rentals while preserving the original exception. Acquisition callbacks execute outside storage locks. TimedCache stages value/time/jitter updates together and compares finite expiry with double arithmetic. Worker shutdown releases queued delegates and serializes submission with disposal; drain cannot report discarded work as completed. Singleton paths fall back correctly for slash-wrapped blank folders.

Native Unity 6000.4.6f1 TestRunner passed 250 cases with zero failures or skips: TimedCache58, generic pool143, worker drain18, singleton recovery31. Native failing controls reproduced acquisition/prewarm leaks, cache callback faults, blank paths, queue retention and both drain/dispose modes before their fixes. Independent review found and verified the drain-race correction.

All typecheck:unity variants passed. Final runtime/test builds had zero warnings/errors. Fourteen actual-source compiler/analyzer ownership controls passed; runtime generation and clearing guarantees remain intact, with no speed claim. Staged preflight, syntax/ordering/XML/changelog/out-parameter checks, strict MkDocs, manual spelling2667files/zeroissues and prepush safety passed.

Progress on #817, #827, #867, #844, #924. Follow-up #932 owns remaining Cache/EffectHandler deadline characterization. Broad issue acceptance and whole-call Mono/IL2CPP measurements remain open. GOAL.md and PLAN.md carry the active round locally under repository ignore policy; prior local caption commit cdd9348 is included in this branch.
Large float clocks can expire gameplay state early or round finite
lifetimes to infinity. Failed custom lifetime callbacks can also change
cache state or consume storage.

Compare finite elapsed time with stored lifetime snapshots. Preserve
inclusive expiry, sliding precedence, effect reset policies, disabled
cache expiry, and the existing nonfinite clock behavior. Stage custom
cache lifetime callbacks before changing values or eviction state.

Add 71 native regression and compatibility controls. Verify the full
cache and effect fixtures: 332 passed, none failed or skipped. Native
rounding controls confirm that the legacy fallback needs explicit
float rounding on Mono. Compile legacy, Odin, single-threaded and
default configurations; pass staged preflight, syntax and output
contracts, strict docs, and spelling.

Addresses #932 and continues #817. Full final-head CI remains required.
Large clocks can repeat periodic damage or healing without elapsed time. Preserve initial delays and cadence across finite cancellation boundaries and tick-count rollover. Keep catch-up limits, refresh phase, live tick limits, and nonfinite comparisons.

Native Unity checks pass: 30 scheduler, 96 handler and reentrancy, 3 behavior, and 2 serialization cases. All host compilation variants, staged preflight, syntax controls, documentation, and spelling checks pass. Independent exact-rational diagnostics cover 56,188 finite cases. Issue #934; full new-head CI remains required.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant