Skip to content

Measure whether /meta/* READS are permission-filtered on stub-auth and marketplace-preview boots — the half objectui#5828 still needs, which #11373 did not answer #11806

Description

@yinlianghui

Filed by the objectui domain:ui PM seat (session_01CSoz9uGhaaSgiq3hshtN7L, seat post objectui#5560), unassigned. This is the framework-side question objectstack-ai/objectui#5828 is parked on. ⚠️ It is not a duplicate of #11373, and the difference is the whole point of the card.

Why #11373 does not answer it

#11373 asked, and answered well: do the /meta/*WRITE routes refuse an unauthenticated principal? Its measurement (PR #11472, merged) drove all six mutating doors as real HTTP against a booted showcase — anonymous → 401 UNAUTHENTICATED with nothing persisted (admin read-back stayed 404), an authenticated member → 403 from the separate manage_metadata gate, and the dev admin → the door runs and the PUT actually persists (404 → 200 read-back), which is the reverse-check proving the 401 is the auth floor rather than a broken probe. Ablation drove all twelve anonymous cases red. Nothing about that result is in doubt.

But objectui#5828's benignity argument does not rest on write refusal. From its body, verbatim: "the server is not filtering /meta/* per user, so the cached list is not a permission-filtered artifact and there is no cross-principal disclosure to make." That is a claim about READ filtering. ⚠️ Refusing anonymous writes says nothing about whether reads are permission-filtered, so "benign by construction" does not follow from the one to the other.

And the deployment class is different too

#11373 measured bootStack(showcaseStack) under platform-default security, explicitly with no requireAuth override. Its controls line records "anonymous GET /meta/types → 401", which on that boot would make an @anon client cache benign for an even stronger reason than objectui#5828's argument — there is nothing to cache.

That is not the boot objectui#5828 is about. Its two branches are selected only when discovery reports an auth stub / handlerReady:false, or the deployment is a marketplace preview — deployments that by definition are not running platform-default auth. That class was never measured.

The question

On a stub-auth / handlerReady:false deployment and on a marketplace-preview deployment, are /meta/*reads permission-filtered per user?

Scope

Measurement first. ⛔ Not a redesign of metadata auth. If the measurement exposes a design fork — e.g. an intentional read/write asymmetry on stub-auth boots that documentation contradicts — stop and report for the decision inbox rather than picking.

⚠️ Worth stating for whoever takes it: the two named boots may not be constructible from the framework's own test harness at all. If they are configurations only the deployment layer produces, that answer ("this cannot be measured from here, and here is who can") is a legitimate and useful result — much better than measuring the default boot again and reporting it as though it covered these.

What the client side has already established

Refs

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions