The publishing pillar (Plan 7) landed the capability to change a record's visibility — domain::Visibility::transition_to (stepwise state machine) and db::catalog::set_visibility (validated + audited) — but no HTTP endpoint invokes it yet. Changing visibility is a privileged write, so the trigger waits for the auth phase.
What to do
When the admin/auth surface exists:
Add a privileged handler (behind an Authorized<Cap> extractor) to move an object between visibility states, calling db::catalog::set_visibility.
Map VisibilityError::Illegal → 409/422, ObjectNotFound → 404, Db → 500.
Optionally add ergonomic publish() / unpublish() wrappers over Visibility::transition_to in domain (omitted in Plan 7 to avoid dead code — only add them once a caller exists).
Plan: docs/plans/2026-06-02-publishing-public-api.md (Notes for follow-on plans)
## Context
The publishing pillar (Plan 7) landed the **capability** to change a record's visibility — `domain::Visibility::transition_to` (stepwise state machine) and `db::catalog::set_visibility` (validated + audited) — but **no HTTP endpoint** invokes it yet. Changing visibility is a privileged write, so the trigger waits for the auth phase.
## What to do
When the admin/auth surface exists:
- Add a privileged handler (behind an `Authorized<Cap>` extractor) to move an object between visibility states, calling `db::catalog::set_visibility`.
- Map `VisibilityError::Illegal` → 409/422, `ObjectNotFound` → 404, `Db` → 500.
- Optionally add ergonomic `publish()` / `unpublish()` wrappers over `Visibility::transition_to` in `domain` (omitted in Plan 7 to avoid dead code — only add them once a caller exists).
## References
- `crates/domain/src/object.rs` — `transition_to` / `IllegalTransition`
- `crates/db/src/catalog.rs` — `set_visibility` / `VisibilityError`
- Plan: `docs/plans/2026-06-02-publishing-public-api.md` (Notes for follow-on plans)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Context
The publishing pillar (Plan 7) landed the capability to change a record's visibility —
domain::Visibility::transition_to(stepwise state machine) anddb::catalog::set_visibility(validated + audited) — but no HTTP endpoint invokes it yet. Changing visibility is a privileged write, so the trigger waits for the auth phase.What to do
When the admin/auth surface exists:
Authorized<Cap>extractor) to move an object between visibility states, callingdb::catalog::set_visibility.VisibilityError::Illegal→ 409/422,ObjectNotFound→ 404,Db→ 500.publish()/unpublish()wrappers overVisibility::transition_toindomain(omitted in Plan 7 to avoid dead code — only add them once a caller exists).References
crates/domain/src/object.rs—transition_to/IllegalTransitioncrates/db/src/catalog.rs—set_visibility/VisibilityErrordocs/plans/2026-06-02-publishing-public-api.md(Notes for follow-on plans)