Add authenticated POST /api/admin/unpublish, validating one exact filePath and returning the queued job ID. The worker remains authoritative for the current public-record lookup.
Include Unpublish in existing publication admission and reject checks made stale by a newer Unpublish request.
Reuse status streaming for Unpublish identity, completion/failure and diagnostic details. Preserve existing transport and conflict behavior.
Add focused route, admission, freshness, stream and auth-routing coverage, plus a web patch changeset.
This is the API/admission/status slice only. The editor More action and confirmation remain separate; #133 remains open. No worker behavior, editor UI, user documentation, dependency or schema changes.
Validation
Code review: clear. One stream-test readability finding was fixed with explicit outcome rows and independently closed.
1,905 web tests passed.
Typecheck: 0 errors, 17 existing warnings.
Web build, lint and tracked/new-file whitespace checks passed after the test-only readability/format fix.
No E2E, live authentication handshake, remote deletion or production/browser acceptance performed.
One focused commit, ten files. Committed locally with verified owner author/committer and pushed over SSH; archive edits excluded.
## Summary
- Add authenticated `POST /api/admin/unpublish`, validating one exact filePath and returning the queued job ID. The worker remains authoritative for the current public-record lookup.
- Include Unpublish in existing publication admission and reject checks made stale by a newer Unpublish request.
- Reuse status streaming for Unpublish identity, completion/failure and diagnostic details. Preserve existing transport and conflict behavior.
- Add focused route, admission, freshness, stream and auth-routing coverage, plus a web patch changeset.
This is the API/admission/status slice only. The editor More action and confirmation remain separate; #133 remains open. No worker behavior, editor UI, user documentation, dependency or schema changes.
## Validation
- Code review: clear. One stream-test readability finding was fixed with explicit outcome rows and independently closed.
- **1,905 web tests passed.**
- Typecheck: **0 errors, 17 existing warnings**.
- Web build, lint and tracked/new-file whitespace checks passed after the test-only readability/format fix.
- No E2E, live authentication handshake, remote deletion or production/browser acceptance performed.
One focused commit, ten files. Committed locally with verified owner author/committer and pushed over SSH; archive edits excluded.
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.
Summary
POST /api/admin/unpublish, validating one exact filePath and returning the queued job ID. The worker remains authoritative for the current public-record lookup.This is the API/admission/status slice only. The editor More action and confirmation remain separate; #133 remains open. No worker behavior, editor UI, user documentation, dependency or schema changes.
Validation
One focused commit, ten files. Committed locally with verified owner author/committer and pushed over SSH; archive edits excluded.