Skip to content

The app renders the STORE; every guard checks the SEED — 6 of 12 graph pages run unverified source (epic #3604) #4246

Description

@kevinthelago

The graph migration is done in the sense that matters — all 12 surfaces mount GraphComponent unconditionally, no toggle, no fall-back-to-file. But half of them render source that nothing has ever checked.

The split

graphParity.test.ts   import.meta.glob("@data/components/app/**/*.json")   <- the SEED
GraphComponent.tsx    useAppStore((s) => s.components.find(...))?.srcText  <- the STORE

Those are the same document only for a record in the reconcile path. For one that is not, the guard verifies a file the app never mounts.

Measured on develop today

page store seed delta builtin
consolepage 18462 18462 same true
planningpage 54336 54336 same true
algorithmspage 8697 8697 same true
soundspage 4384 4384 same true
glancepage 58854 58854 same true
projectspage 30876 30876 same true
skillspage 16806 25943 −9137 (none)
mcppage 14767 19431 −4664 (none)
fleetpage 9186 14141 −4955 (none)
automationspage 8662 4071 +4591 (none)
securitypage 13702 12922 +780 (none)
githubpage 6523 6880 −357 (none)

The six that match are exactly the six stamped builtin. The six that differ are exactly the six unstamped — and exactly the six #4207 deferred. The drift runs both ways, so this is not simply "the store is stale".

skillspage renders 9137 characters of source no test has compared against anything, and #4179 already suspects that page of holding half its content in each copy.

Why the existing guards cannot see it

Three guards, none of them looking at the thing that renders.

Why this is not just "run #4207's restamp on them"

Stamping a role: page record arms seedAuthoritative (#3723), which forces the seed over the store before any content comparison. On this data that means replacing the rendering skillspage with one a third larger. #4207 deferred them for exactly this reason; the deferral was right and the question it deferred is still open.

What to work out

Related: #4207 (deferred these six), #4216 (made the state visible), #4179 (skillspage specifically), #4235/#4239 (the seed-side guard this complements).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions