Skip to content

Store cover shows the persisted 'Compiling…' placeholder forever: re-activated instance hubs replay the stored area doc instead of re-deriving from compilationStatus #2409

Description

@rbuergi

Live on memex prod, 2026-08-26 ~17:30Z: 10 of 12 store covers render the Roslyn compile-progress screen to anonymous visitors, more than an hour after the compile succeeded. Found by plugins-ff; diagnosed live via MCP.

Evidence

  • Store/Plugin (NodeType): compilationStatus: Ok, compile 16:26:31→16:26:43Z (12 s), lastCompiledVersion 12379, release 20260826162643-U8NsdxXf. The type is healthy.
  • get @Chess/area/Cover returns the compile-progress control tree — ### ⏳ Compiling… — Plugin, "Running Roslyn against 9 source binding(s)", and a LayoutAreaControl bound to activity Store/Plugin/_Activity/compile-2026082616091603… — i.e. the 16:09 compile, not even the last one. The same store's data.progress = 100: the datum updated, the controls never re-rendered.
  • Recycling does not heal it. Recycled @Store/Plugin (type), then @Chess (instance), then @Chess again after the type settled — the freshly initialized hub re-serves the identical placeholder tree every time.
  • Stuck (10): AdvancedBusinessRules, ThinkInStreams, DataModeling, AgenticPrimer, RiskTransfer, Chess, Voice, Teams, Publish, Edu. Fine (2): AgenticEngineering, AgenticBusiness.
  • Portal pods were restarted 17:10Z (module convergence) — the stuck view survives a full pod restart too.

Read

The placeholder was written into the persisted layout-area store when the 16:09 compile started. Completion (16:26) re-renders only instances whose hubs are ACTIVE at that moment — plausibly the two healthy covers had live viewers. Every inactive instance missed the transition, and on (re)activation the hub replays the persisted area document without re-checking the type's current compilationStatus — so recycle/restart faithfully re-serve the stale placeholder. Classic missed-transition + replay-on-init pair; one stale side effect, no error, no log.

Fix direction (no band-aids)

On instance-hub init (and on cover render), derive the compile-placeholder-vs-content decision from the type's current compilationStatus, never from the stored area snapshot — or invalidate/rewrite instances' persisted cover areas as part of compile completion so the store never outlives the state it depicts. A watchdog that re-renders periodically is the forbidden shape.

Interim

The covers are the public storefront; until the fix, any touch that rewrites the cover area doc (a content-version bump per stuck node) would clear it — that is a data mutation on 10 prod nodes and is left to the maintainer's call.

Also noted by plugins-ff, smaller and separate: rbuergi/ThinkInStreams installed pre-apps-wave has no _App tile; AppTileRefresh heals only self-installing packages.

🤖 Generated with Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions