Upgrade the packaged API contract and add PR CI #52

Merged
erik merged 2 commits from feat/task-8a6810c6-package-contract into main 2026-10-13 13:05:36 -05:00
Owner

Slugkit.com runs older npm packages and serves a site-owned OpenAPI definition without an official contract declaration. This incrementally upgrades API to 0.2.0, core to 0.1.2 and media to 0.1.1, serves the installed packaged spec, and advertises slugkit-management-api contract 1.1.0.

Port the API behaviors declared by that document: literal search, explicit publish timestamps, nullable post banners and expanded sources. Existing public-origin handling, branding, article rendering, auth and federation identity are retained. The only schema change adds nullable posts.banner_url; setup-system changes are deferred. Original template provenance stays intact.

Validation: build/typecheck and all 352 tests passed; local Docker build and isolated container discovery/spec smoke check passed. A consistent read-only production snapshot was rehearsed locally: all 27 existing tables were preserved apart from the nullable column, all 9 post pages/content responses worked, and credentials/actor/follower rows were unchanged. The retained production image read the migrated copy and all 9 pages through a read-only mount. Private rehearsal snapshots were removed.

Deployment and rollback prerequisites are recorded in docs/package-contract-upgrade.md. Backup/restore coverage remains unverified. A separate Forgejo PR/main CI workflow now checks formatting, types, build/generated CSS consistency and 321 deterministic tests; the full 352-test suite, including renamed federation integration tests, remains local. A small formatting baseline and pre-PR script support these checks. Current-head CI must pass before review; release automation remains tag-only. No release tag, image publication or production action is included. Post-deployment acceptance remains pending separate authorization; static archive work is separate.

Task: task-8a6810c6

Slugkit.com runs older npm packages and serves a site-owned OpenAPI definition without an official contract declaration. This incrementally upgrades API to 0.2.0, core to 0.1.2 and media to 0.1.1, serves the installed packaged spec, and advertises `slugkit-management-api` contract 1.1.0. Port the API behaviors declared by that document: literal search, explicit publish timestamps, nullable post banners and expanded sources. Existing public-origin handling, branding, article rendering, auth and federation identity are retained. The only schema change adds nullable `posts.banner_url`; setup-system changes are deferred. Original template provenance stays intact. Validation: build/typecheck and all 352 tests passed; local Docker build and isolated container discovery/spec smoke check passed. A consistent read-only production snapshot was rehearsed locally: all 27 existing tables were preserved apart from the nullable column, all 9 post pages/content responses worked, and credentials/actor/follower rows were unchanged. The retained production image read the migrated copy and all 9 pages through a read-only mount. Private rehearsal snapshots were removed. Deployment and rollback prerequisites are recorded in `docs/package-contract-upgrade.md`. Backup/restore coverage remains unverified. A separate Forgejo PR/main CI workflow now checks formatting, types, build/generated CSS consistency and 321 deterministic tests; the full 352-test suite, including renamed federation integration tests, remains local. A small formatting baseline and pre-PR script support these checks. Current-head CI must pass before review; release automation remains tag-only. No release tag, image publication or production action is included. Post-deployment acceptance remains pending separate authorization; static archive work is separate. Task: task-8a6810c6
ci: verify pull requests with deterministic checks
All checks were successful
CI / verify (pull_request) Successful in 42s
7553436711
Task: task-8a6810c6
erik changed title from Upgrade existing site to packaged API contract 1.1.0 to Upgrade the packaged API contract and add PR CI 2026-10-13 13:01:58 -05:00
Author
Owner

Review update

  • PR: Upgrade the packaged API contract and add PR CI, open at 75534367112f21c2e6f9046369c307d66d91e2d7.
  • Result: independent review approved for code merge, with no blocking findings or warnings. Reviewed contract behavior, preservation, tests, CI scope and deployment documentation.
  • CI: CI / verify (pull_request) succeeded for that exact head in Forgejo run 41. Forgejo discovered the workflow directly from this PR; no bootstrap merge was needed.
  • Local validation: formatting, types, build/generated CSS consistency, 352 full tests, 321 deterministic tests, Docker build and container smoke check passed. The isolated production-data rehearsal preserved all 27 existing tables except the nullable banner addition and checked all 9 post pages/content responses; the retained ARM64 production image read the migrated copy without a down migration. Private snapshots were removed.

Acceptance criteria:

  • Installed and deployed library versions are verified and recorded: deployed baseline and new local pins documented.
  • Local checks validate existing behavior and API discovery after migration: tests, container checks and isolated rehearsal passed.
  • After deployment, metadata and spec agree with the installed contract: partial, demonstrated locally; live verification awaits separately authorized deployment.
  • Content and configuration remain intact: production remained read-only, credentials and actor/follower records were preserved in rehearsal, and application customizations were retained.

Review counts: 4 criteria, 3 met, 1 partial, 0 not-evident; 0 blocking code findings; 0 warnings. Backup/restore verification, Flux image automation control and an approved rollout remain explicit deployment gates. No release tag, image publication or production change occurred.

Next: explicit human merge approval. Keep the task active until separately authorized deployment and final verification. Review approval does not authorize publishing or deployment.

### Review update - PR: [Upgrade the packaged API contract and add PR CI](https://forge.caradoc.com/erik/slugkit.com/pulls/52), open at `75534367112f21c2e6f9046369c307d66d91e2d7`. - Result: independent review approved for code merge, with no blocking findings or warnings. Reviewed contract behavior, preservation, tests, CI scope and deployment documentation. - CI: `CI / verify (pull_request)` succeeded for that exact head in [Forgejo run 41](https://forge.caradoc.com/erik/slugkit.com/actions/runs/41/jobs/0). Forgejo discovered the workflow directly from this PR; no bootstrap merge was needed. - Local validation: formatting, types, build/generated CSS consistency, 352 full tests, 321 deterministic tests, Docker build and container smoke check passed. The isolated production-data rehearsal preserved all 27 existing tables except the nullable banner addition and checked all 9 post pages/content responses; the retained ARM64 production image read the migrated copy without a down migration. Private snapshots were removed. Acceptance criteria: - [x] Installed and deployed library versions are verified and recorded: deployed baseline and new local pins documented. - [x] Local checks validate existing behavior and API discovery after migration: tests, container checks and isolated rehearsal passed. - [ ] After deployment, metadata and spec agree with the installed contract: partial, demonstrated locally; live verification awaits separately authorized deployment. - [x] Content and configuration remain intact: production remained read-only, credentials and actor/follower records were preserved in rehearsal, and application customizations were retained. Review counts: 4 criteria, 3 met, 1 partial, 0 not-evident; 0 blocking code findings; 0 warnings. Backup/restore verification, Flux image automation control and an approved rollout remain explicit deployment gates. No release tag, image publication or production change occurred. Next: explicit human merge approval. Keep the task active until separately authorized deployment and final verification. Review approval does not authorize publishing or deployment.
erik merged commit 07a50e985d into main 2026-10-13 13:05:36 -05:00
erik deleted branch feat/task-8a6810c6-package-contract 2026-10-13 13:05:37 -05:00
Sign in to join this conversation.
No description provided.