ci: restore external package integration #13

Merged
Zayin_Admin merged 4 commits from feat/external-signage-integration into main 2026-10-10 16:33:18 +00:00
Member

Summary

Pass 1 landed in #12: Signage 0.1.2 builds as a canonical linux-x64-glibc Module Package against Ekklesia 0.2.3 (manifest v8, database ABI v1, Sharp 0.35.5).

This Pass 2 change restores the external-package integration job and proves the package in a generic Ekklesia installation:

  • builds the real Signage package from this standalone repository
  • fetches an immutable Core harness commit through refs/pull/90/head
  • builds Core's generic image with no bundled Signage source
  • rejects an invalid package, then verifies and installs the valid package into persistent module storage
  • plans, applies, re-plans, and idempotently reapplies Signage's existing migration
  • discovers and activates Signage through the generic module framework
  • loads the split-origin Dashboard UI from the API origin and exercises authenticated Signage API requests
  • uploads three PNG slides, creates and activates a three-slide timeline, pairs a kiosk, renders playback, and runs all configured resilience scenarios
  • proves module files, UI/API availability, migration history, database rows, uploaded content, playback state, and the paired kiosk credential survive an API restart and API container recreation
  • proves disable/re-enable, removal with retained migration history, and reinstall of the exact same package
  • recognizes storage errors across separately bundled SDK copies and bounds native rendition work under runner load

Core dependency

Depends on River_of_Glory_Church/Ekklesia#90. That PR is generic integration support only and contains no Signage registration. This branch pins its exact commit 40ef0ff802c124ae5a3a0b9aa51a1502a7b72644; the pull ref keeps that object fetchable without a moving branch or workspace dependency.

Package/runtime compatibility

  • Signage: 0.1.2
  • Ekklesia: 0.2.3
  • manifest: v8
  • database ABI: v1
  • target: linux-x64-glibc
  • final CI artifact: 9,240,171 bytes, 133 files, sha256 e73a6fffa18ee823489ffc9a94b82ad07bc62f21c9c0736da6f998fe197c3719
  • runtime package verification and native Sharp loading: passed

The deployment starts with empty module storage. The generic image contains no Signage checkout, the package has no pnpm workspace link, and runtime loading occurs only from the verifier-extracted module directory mounted read-only into the API.

Validation

Local gates:

  • pnpm lint — passed
  • pnpm typecheck — passed
  • pnpm test — 262 passed
  • pnpm build — passed
  • pnpm validate — 20 checks passed
  • bash ci/check-cleanup.sh — passed
  • full external-package integration — passed

Final Gitea Actions run 253: lint, typecheck, test, build, and integration all passed. Integration job 1189 verified package → install → migrate → discover/load → Dashboard/API/display → process restart → API container recreation → lifecycle/remove/reinstall persistence, then ended with Reference deployment smoke test passed.

Display scenarios:

  • two-pages — both displays stayed live for 120 seconds without remount or offline state
  • session-blip — recovered from a failed viewer-session request without reload
  • stream-failure — re-established realtime after a refused stream without reload
  • stream-recycle — stayed live for 120 seconds with one mount and bounded object URLs

Limitations

Validation used real headless Chromium and a persistent kiosk browser profile; no physical TV/device validation is claimed. Incompatible-package and intentionally failed-migration cases remain covered by Core's verifier/migration suites rather than by mutating the valid Signage release.

## Summary Pass 1 landed in #12: Signage 0.1.2 builds as a canonical `linux-x64-glibc` Module Package against Ekklesia 0.2.3 (manifest v8, database ABI v1, Sharp 0.35.5). This Pass 2 change restores the external-package integration job and proves the package in a generic Ekklesia installation: - builds the real Signage package from this standalone repository - fetches an immutable Core harness commit through `refs/pull/90/head` - builds Core's generic image with no bundled Signage source - rejects an invalid package, then verifies and installs the valid package into persistent module storage - plans, applies, re-plans, and idempotently reapplies Signage's existing migration - discovers and activates Signage through the generic module framework - loads the split-origin Dashboard UI from the API origin and exercises authenticated Signage API requests - uploads three PNG slides, creates and activates a three-slide timeline, pairs a kiosk, renders playback, and runs all configured resilience scenarios - proves module files, UI/API availability, migration history, database rows, uploaded content, playback state, and the paired kiosk credential survive an API restart and API container recreation - proves disable/re-enable, removal with retained migration history, and reinstall of the exact same package - recognizes storage errors across separately bundled SDK copies and bounds native rendition work under runner load ## Core dependency Depends on River_of_Glory_Church/Ekklesia#90. That PR is generic integration support only and contains no Signage registration. This branch pins its exact commit `40ef0ff802c124ae5a3a0b9aa51a1502a7b72644`; the pull ref keeps that object fetchable without a moving branch or workspace dependency. ## Package/runtime compatibility - Signage: 0.1.2 - Ekklesia: 0.2.3 - manifest: v8 - database ABI: v1 - target: `linux-x64-glibc` - final CI artifact: 9,240,171 bytes, 133 files, sha256 `e73a6fffa18ee823489ffc9a94b82ad07bc62f21c9c0736da6f998fe197c3719` - runtime package verification and native Sharp loading: passed The deployment starts with empty module storage. The generic image contains no Signage checkout, the package has no pnpm workspace link, and runtime loading occurs only from the verifier-extracted module directory mounted read-only into the API. ## Validation Local gates: - `pnpm lint` — passed - `pnpm typecheck` — passed - `pnpm test` — 262 passed - `pnpm build` — passed - `pnpm validate` — 20 checks passed - `bash ci/check-cleanup.sh` — passed - full external-package integration — passed Final Gitea Actions run 253: lint, typecheck, test, build, and integration all passed. Integration job 1189 verified package → install → migrate → discover/load → Dashboard/API/display → process restart → API container recreation → lifecycle/remove/reinstall persistence, then ended with `Reference deployment smoke test passed.` Display scenarios: - `two-pages` — both displays stayed live for 120 seconds without remount or offline state - `session-blip` — recovered from a failed viewer-session request without reload - `stream-failure` — re-established realtime after a refused stream without reload - `stream-recycle` — stayed live for 120 seconds with one mount and bounded object URLs ## Limitations Validation used real headless Chromium and a persistent kiosk browser profile; no physical TV/device validation is claimed. Incompatible-package and intentionally failed-migration cases remain covered by Core's verifier/migration suites rather than by mutating the valid Signage release.
ekklesia-bot added 1 commit 2026-10-10 03:31:26 +00:00
ci: restore external package integration
CI / lint (pull_request) Successful in 12s
CI / typecheck (pull_request) Successful in 13s
CI / test (pull_request) Successful in 16s
CI / build (pull_request) Successful in 10s
CI / integration (pull_request) Failing after 1m57s
c28e4b2de7
Zayin_Admin added 1 commit 2026-10-10 03:37:53 +00:00
ci: widen display upload deadline
CI / lint (pull_request) Successful in 14s
CI / typecheck (pull_request) Successful in 13s
CI / test (pull_request) Successful in 18s
CI / build (pull_request) Successful in 14s
CI / integration (pull_request) Failing after 1m57s
871d198221
Zayin_Admin added 1 commit 2026-10-10 15:54:35 +00:00
fix(images): bound external runtime processing
CI / lint (pull_request) Successful in 11s
CI / typecheck (pull_request) Successful in 10s
CI / test (pull_request) Successful in 16s
CI / build (pull_request) Successful in 10s
CI / integration (pull_request) Failing after 2m14s
88038476b3
Zayin_Admin added 1 commit 2026-10-10 16:08:28 +00:00
ci: use bounded storage deployment
CI / lint (pull_request) Successful in 12s
CI / typecheck (pull_request) Successful in 10s
CI / test (pull_request) Successful in 16s
CI / build (pull_request) Successful in 11s
CI / integration (pull_request) Successful in 7m17s
fa2a1493ea
Zayin_Admin merged commit e83cdc62a7 into main 2026-10-10 16:33:18 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Zayin/Signage#13