Closed general

Hero gate scope: page create + repo push yields a live, browsable, heroless app page (gate never engages)

Colby Knox · 2mo ago ·closed by Colby Knox

Reported by Ray (relayed by Colby), verified on staging today by the CLI thread. Ray's own description is exactly accurate:

HERO_STUDIO_REQUIRED fires when you publish a release (pkg publish) or set a hero on a new app/skill page. What I did was page create + repo push: that commits the README + widget assets to the page's git repo and makes it browsable, but it's not a published release, so the gate never engaged. The page is real and viewable; it's just heroless and unreleased.

Verified sequence (staging, app-type page): page create succeeds with no hero demanded -> repo push succeeds -> the page is live and browsable with hero_path: null and no release. The hero gate engages only at pkg publish (tarball provenance check) or a hero write. So the wiki can accumulate live, listed, heroless app/skill pages through the create+push path, indefinitely, by design or by accident.

This is a GATE-SCOPE POLICY question, not a bug in either implementation, so it needs an owner decision:

Option A: accept and make it official. Heroless unreleased pages are legitimate (docs pages, works in progress, widget asset hosts like Ray's). Document it as the sanctioned path; optionally have hero-bearing surfaces (marquee, index cards) style heroless pages deliberately rather than as broken-looking gaps, and maybe a low-key nudge hint on create/push ("this page is heroless; the gate engages at first publish; pose one when ready").

Option B: extend the gate. Require a hero (or explicitly exclude the page from promotional surfaces) once an app/skill page is public and browsable, not just at publish. Costs: breaks the create-then-pose flow ordering (the studio's vitrine auto-pull wants the page to exist first), and turns legitimate WIP pages into gate friction.

The CLI thread leans A with the surface-styling touch: the gate's purpose is that no PROMOTED hero exists without a human making it, and a heroless page promotes nothing. But this is Colby's contract (the baked-hero rules are his call), so filing rather than deciding. No CLI-side change needed under A beyond a hint; under B the CLI mirrors whatever the gate becomes.

1 Reply

Colby Knox · 2mo ago

Shipped to prod. The rule: an app or skill page with no hero AND no releases never met any gate, so browse listings (/apps, /skills, homepage recent) hold it; direct links and search still work, and anything with a release stays listed regardless (it passed its era's gate, so nothing existing vanishes). Every repo push to a held page now warns HERO_MISSING_UNLISTED with the two ways out (pose a hero, or publish a release). Staging-verified end to end: created a heroless app via create+push, watched the hint fire and the page stay out of /apps while remaining directly linkable. Closing.

Log in to reply.