Repository navigation
Description
Verified on branch / awaiting merge
Production implementation: dd5979c613b0fe8ebd9f7026f25001ceee9f8cee. Delivered head: dbae93e8f211d45a69cdffdb6afa3a33a0af0fa5; the subsequent diff contains documentation/acceptance evidence only. Exact-head CI: Engine CI and NuGet dependency graph passed; all six checks on this exact head are successful. All applicable acceptance conditions for this issue are verified; unavailable physical/manual device checks are explicitly scoped, not reported passed.
Owner: Session/Panel/document/generation retirement. Implementation commits: d7f383f0, bced2aef, e3f02ebe.
Evidence: complete report, exact-head delivery attachment, portable test-case/raw-measurement/requirement indexes linked by the report. Specific proof: Lifecycle: document cycles and ten success/reject/Missing/recovery reloads; Products: every discovered actual Panel 100 cycles, strict GC resource series; Host exit state/layout publication.
Commands: official tests/Invoke-EditorUiAcceptance.ps1 Contracts/Workflows/Visual/Lifecycle/Products with SDK-selected independent outputs; complete source/entry preparation; formal InnoEngine.Build scripts --ide for the three companions; tests/Invoke-WikiChecks.ps1; controlled public performance fixtures where applicable. The report records original command owners, TRX/binlogs, negative tests, failures, skips, input hashes and device limits.
Profiles overlap; do not sum their pass counts into a distinct-test claim. Windows-only sharing fixtures and Unix-only filesystem fixtures are scoped to the executing host. Real native contexts/simulated display metrics and hidden product feature journeys are not a claim of physical display, OS IME or manual Mac testing. No BGCS/vendor/package/generated-binding modification, parallel Core system, test hook, IVT or private reflection was used.
Keep this issue Open. PR #26 includes an individual Fixes #37 and will close it only when the user merges to master. No automatic merge or premature master-resolution claim.
Original defect, ownership and accepted work
The following baseline observations describe the issue as opened. The verification above supersedes intermediate pending checkpoints; original failed/negative logs remain preserved. Acceptance checkboxes are checked only after the exact delivery-head verification completes.
Parent and original requirement
Parent: #27. Work item E10 from the approved Editor UI closure plan and its original implementation/acceptance requirements.
Baseline facts and risks at issue creation
Focused retirement/reload tests pass, but the complete original 100-cycle and 10-reload UI acceptance evidence is missing. No new leak is established solely by that absence.
Owner and dependency boundary
Host/Session, Module/Panel/document owners and existing generation/candidate/ALC verification.
Dependencies: #28, #29, #30, #31, #32, #33, #34, #35.
Implementation
- Cycle every actual stateful Panel at least 100 times and Scene/Shader document kinds at least 100 times.
- Run 10 consecutive script/plugin reloads covering success, candidate failure, Missing and recovery.
- Observe owners/subscriptions/widget state/gestures/documents/old ALC monitors per cycle.
- Close Host and verify final state/layout atomic save and ownership retirement.
Acceptance
- No growth proportional to completed cycles; fixed legitimate caches have explicit owners.
- Strict full-GC/finalizer/full-GC weak-monitor barrier remains enforced.
- Timeout remains Faulted and preserves pending diagnostics.
- No premature state capture or Selection/Undo/runtime references in editor.ini.
- Failures retain recoverable state and do not start prohibited later transactions.
- Depends additionally on test(scripting): prove runtime and IDE reference selection with multiple SDK packs #19 for final frozen compilation inputs.
Failure and lifecycle constraints
Preserve diagnostics, cancellation, atomic rollback/publication, Missing recovery and generation retirement. Reuse Core Events, Identity, IO, Serialization and History. Do not modify BGCS/vendor/generated code or add global/implicit imports, compatibility paths, IVT or private reflection.
Evidence and closure
Commits, exact commands, logs/TRX/data and remaining limits will be added during implementation. Until all acceptance passes this issue remains open. After verification mark Verified on branch / awaiting merge; add Fixes #37 with this issue's actual number to PR #26 only when complete. Close on merge to master, not on branch implementation.
Activity
FLwolfy commentedon Oct 27, 2026
Real product acceptance update (the complete lifecycle matrix remains open):
.editor.cssource extension in an independent FlappyBird copy drove the publicEditorInteractionspanel protocol through actual product drawing.products/editor-d3d12-lifecycle.log,products/FlappyBird/Library/Acceptance/panel-lifecycle.tsvunderD:/InnoEngine-Verification/editor-ui-closure-2026-10-27.This proves repeated real panel presentation transitions, not complete ALC/subscription/resource convergence. The separate document, reload and resource-count requirements still need their final evidence. No lifecycle barrier was relaxed.
FLwolfy commentedon Oct 27, 2026
The unified Lifecycle profile completed all 5 selected loop contracts successfully (actual Graph/Scene/Shader document and generation scenarios). The independent D3D12 product shut down normally and logged product resources released. Earlier nine-panel 100-cycle product evidence is retained. These results do not by themselves establish complete owner/subscription/gesture convergence for every stateful panel; the issue remains open pending its full matrix.
FLwolfy commentedon Oct 28, 2026
The current public scripting suite already has real plugin removal/broken-update recovery and a Play/stop/reload soak, but its soak uses eight iterations and the removal/recovery cases exercise only one cycle. I am extending these existing public-contract fixtures to ten consecutive cycles and including them in the Lifecycle acceptance profile. Each retirement keeps the existing strict unload-verification barrier; stable component identities, Missing state and restored values are asserted on every cycle. This does not replace the remaining per-panel resource-count and physical-device acceptance items.
FLwolfy commentedon Oct 28, 2026
The current correction candidate passes the unified Workflows profile: 302 cases, including the new process-isolated real Editor Action/menu generation test. It retains the first immutable menu model across ten replacement generations, injects failed Editor compilation before every replacement, verifies fresh labels and stable Action IDs, and requires each old collectible Action type to be unreachable through the existing strict unload barrier before the next iteration. The ordinary suite also passes ten successful/failed runtime reload cycles, ten removal/recovery cycles, ten broken-plugin-update/recovery cycles, and ten Play/stop/reload cycles. No timeout, weak monitor or retirement rule was relaxed. Raw cases: e10/final-reload-cases.json and unified-correction-final/88902e2955954ce8aa0169c2fffb84c3/Workflows TRX. The separate Lifecycle profile is still running; remaining per-panel resource and whole-product acceptance requirements remain open.
FLwolfy commentedon Oct 28, 2026
The existing ordinary Editor script fixture proves 100 actual product-panel open/close cycles but records only panel counts. I am extending that same fixture with a bounded closed-frame resource trace after Full GC -> finalizers -> Full GC, plus invariants for selection, loaded Edit scenes and committed History payload/name state. This will run in an independent current FlappyBird project through the normal script compiler and native Host. It introduces no production counter, visibility change, private reflection, event service or test-only entry point. Process memory remains a measured trend, not proof of every private owner or a replacement for weak ALC/subscription/native ownership tests.
FLwolfy commentedon Oct 28, 2026
Additional real-product evidence on the current branch: the ordinary source Editor extension opened
FlappyBird/FlappyBird.iscenethrough IEditorSceneWorkspace, then exercised all nine actual product panels for 100 close/open cycles each during a 15,000-frame Direct3D12 run. Renderer smoke, sRGB, ordered adapter shutdown and process exit all passed. Completion requires both TSV markers, not merely exit code zero.products/closure-panel-lifecycle-resources.tsvcontains 11 closed-state samples (0,10,...100 cycles), each after full GC/finalizers/full GC. Selection remained 0, loaded scenes 1, History resident/disk bytes 0, pending Core events 0. Managed memory was 26,168,896 bytes initially and 26,179,976 finally; process private bytes decreased from 880,267,264 to 864,219,136. This is observed public-state and memory convergence, not proof of every private native owner. Raw logs and markers remain under the acceptance evidence owner. The full issue remains Open pending the complete tracked matrix and merge.FLwolfy commentedon Oct 29, 2026
The ordinary product runner is being extended with a Lifecycle scenario that reuses the existing PanelLifecycle source extension instead of another runner/framework. It requires every actual product panel to finish 100 cycles, all eleven full-GC resource observations (0–100), and a declared 4 MiB bound on final managed live-memory growth. Unattended windows remain hidden. Native ImGui context lifetime cases are now included in the unified Lifecycle selection and the complete non-performance Contracts selection. These requirements are set before the next formal run; results are pending.
FLwolfy commentedon Oct 29, 2026
The final 329568b product run completed all nine panels' 100 cycles, but its original cold-start memory comparison failed: 43,729,032 to 48,217,720 bytes (4,488,688 bytes, above the unchanged 4 MiB limit). This is not being marked verified. Public diagnostic heap observations show initial renderer/asset preparation followed by a plateau; a separate 120-drawn-frame preparation experiment retained 712,056 bytes over the subsequent 100 cycles. Both cold and prepared evidence are retained. The acceptance fixture will explicitly record cold preparation separately, open and draw every actual panel before the lifecycle baseline, and retain the same 100 cycles, strict full-GC sequence, history/selection/scene checks and 4 MiB growth limit. A fresh ordinary run without attached heap diagnostics is required before closure.
FLwolfy commentedon Nov 3, 2026
test(editor): annotate plugin startup activation failure and Missing diagnostics
A real VisualNovel consumer startup exposed a gap between successful script compilation/scene-only checks and actual Editor extension activation.
Observed sequence: the plugin compiled, but an Inspector constructor requested a service absent from the Inspector composition root. The script candidate was rejected. The user then saw Missing component scripts and no accepting viewport contributor.
The engine log already identified the unavailable dependency. The immediate integration bug was fixed in the plugin; it is not being attributed to the engine. The plugin's earlier headless scene check omitted Inspector registry activation, so its "zero Missing" result was insufficient evidence of full Editor startup.
Requested annotation to the existing candidate-failure/Missing/recovery acceptance scope:
Local evidence in the VisualNovel workspace:
artifacts/Reports/InspectorActivation-UserStartup.log,InspectorActivation-Before.txt,InspectorActivation-After.txt. The corrected fixture registers all 14 VN drawers using the actual supplied SceneEdits/EditorInteractions, and passes native History/Prefab/save-reopen. No desktop/GPU acceptance is claimed.This comment adds a concrete startup case and diagnostic request to the existing reload/lifecycle issue. It does not reopen the issue, replace prior acceptance evidence, or claim that the current engine lacks the already-recorded actionable log.