Skip to content

Suppress signage heartbeat changefeed events #146

Closed

Description

@stakach

Suppress signage heartbeat changefeed events

ControlSystem heartbeat updates persisted signage_last_seen and playlist_item_id but emitted configuration CDC events, causing unnecessary core resource/logic-module refreshes.

Delivered

Verification

EventBus: 38 specs and GitHub CI passed. pg-orm: 483 specs, formatting/lint and GitHub CI passed. Models: original regression reproduced the extra CDC row; focused green verifies repeated/item/nil/empty heartbeats produce no CDC row or PG notification and retains configuration/mixed/create/delete/Zone notifications. Local broader compilation hit OOM on the shared Docker VM, so full models suite verification used GitHub CI. Final CI results and merge commit are recorded in the completion comment.

Deployment notes

This issue covers the source changes and library release sequence, not deployment of running services. Update every CDC-installing service to EventBus1.1.0+ before enabling the new models policy. Existing core/rest-api lockfiles need their usual dependency update when adopting the new models release; those service repositories were not changed here. The policy activates at ControlSystem changefeed registration and applies to all writers of the ignored fields. Persisted telemetry remains available via SQL reads. Rollback requires EventBus's expected-current-policy reset; omitting the model declaration preserves an installed policy.

Metadata follow-up

  • Also suppress name, description, display_name and version changes, including automatic updated_at and generated search_vector changes.
  • Add explicit database-only columns in pg-orm PR22, released v2.4.1; 488 specs and CI passed.
  • Models PR328 regressions preserve modules/code/mixed/create/delete and unrelated model notifications; focused specs and pre-release full CI pass.
  • Require released pg-orm 2.4.1 and remove temporary override; independent review, lint and format pass.
  • Final release-based models stable/unstable CI and squash merge PR328 (6207e4e).

Additional model policies

  • Module: ignore updated_at, has_runtime_error and error_timestamp while retaining name/mixed notifications.

  • Driver: ignore descriptive name/description, update_available/update_info, compilation_output, updated_at and generated search_vector.

  • Zone: ignore name/description/display_name, playlists/images, updated_at and generated search_vector.

  • ControlSystem: additionally ignore playlists/orientation; retain updated_at and prior exclusions.

  • Keep Driver.module_name and Module.name notification-producing; skip only redundant associated-module saves and preserve stale metadata repair.

  • Focused red/green: 27 specs, all pass after implementation; formatting/lint and independent review pass.

  • Full stable/unstable CI and squash merge models PR329 (ad917a3).

Display-name correction (current contract)

ControlSystem.display_name must notify; this supersedes the earlier metadata exclusion above. Zone.display_name remains ignored.

  • Remove only ControlSystem.display_name from the policy.
  • Regress setting and clearing via ORM save with CDC rows and PostgreSQL notifications: focused6 specs pass after red missing-event failure.
  • Retain all remaining policies; update explicit installed-policy replacement docs; lint/format and review pass.
  • Full stable/unstable CI and squash merge models PR330 (f1ab5ba).

Activity

  1. stakach commented on Sep 15, 2026

    @stakach
    MemberAuthor

    Status: Backlog (planned; consumer audit and EventBus policy design remain before implementation readiness). Agent/task ID: codex-signage-heartbeat-plan-20260916-root. Planning only; no implementation claim, branch/worktree or PR. Next action: review the SQL-filter proposal, then claim and scope implementation. Column filtering also suppresses direct playlist_item_id-only changes and foreign-key cleanup; arbitrary drivers would see refreshed telemetry only on subsequent configuration refreshes. No suitable current milestone exists; target date remains unset.

  2. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: Backlog (planning revised; no implementation claim). Agent/task ID: codex-signage-heartbeat-plan-20260916-root. User preference incorporated: configure ignored update attributes on each model, pass through pg-orm to generic EventBus per-table installation, and remove the migration-maintained policy list. Local pg-orm and eventbus clones inspected. Specify preserve versus reset semantics and reject conflicting declarations because SQL triggers are shared across services. Next action: review revised API and scope implementation across eventbus, pg-orm and models. No code implementation or tests run.

  3. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: Ready. Agent/task ID: codex-146-eventbus-20260916-root. EventBus stage scoped and authorized by user; no native blockers. Claim: EventBus per-table ignored update columns, specs, documentation and CI. Start date: 2026-09-16. Branch: ai/146-model-changefeed. Worktree: /Users/steve/projects/placeos/.worktrees/eventbus-146. PR: pending. Next action: regression specs and implementation. pg-orm and models remain deferred until user publishes each prerequisite release.

  4. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: In progress. Agent/task ID: codex-146-eventbus-20260916-root. Claim reread and uncontested. Branch ai/146-model-changefeed; worktree /Users/steve/projects/placeos/.worktrees/eventbus-146. Draft PR: spider-gazelle/eventbus#6. Implementation delegated within this claim; one agent owns regression/spec execution. Next action: prove SQL filtering and lifecycle behavior, review, CI and commit for the user release.

  5. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: In review (EventBus stage). Agent/task ID: codex-146-eventbus-20260916-root. Branch ai/146-model-changefeed; PR spider-gazelle/eventbus#6; commit b28e94d. Local ./test: 38 examples, 0 failures/errors; format, Ameba and diff checks clean. Independent review resolved metadata repair and reader-locking regressions. GitHub CI running; next action verify CI and hand off EventBus for user release. No pg-orm/models implementation changes.

  6. added a commit that references this issue on Sep 16, 2026
  7. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: Blocked (next stage awaits user EventBus release); EventBus stage Done and claim released. Agent/task ID: codex-146-eventbus-20260916-root. PR spider-gazelle/eventbus#6 squash-merged as 8e20ab04b62722e018456a02267c70c0bbc25083. Local ./test passed 38 examples with 0 failures/errors; formatting and Ameba passed. GitHub CI passed: https://github.com/spider-gazelle/eventbus/actions/runs/35039449839. Independent code review approved. Local EventBus main synced to merge commit. User will cut EventBus release; next action after release is pg-orm model-level API/specs, then user pg-orm release, then models declaration/specs. No active implementation claim remains; parent issue stays open for downstream stages.

  8. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: Ready. Agent/task ID: codex-146-pgorm-20260916-root. User reports EventBus version bumped; verifying released dependency resolution. Claim pg-orm stage: model-level ignored update declarations, registration propagation, specs and CI. Start date: 2026-09-16. Branch ai/146-model-changefeed; worktree /Users/steve/projects/placeos/.worktrees/pg-orm-146. Previous claim released; no native blockers or competing open PRs found. Next action: resolve new EventBus version and save scoped draft PR plan. Models remains deferred until user releases pg-orm.

  9. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: In progress (pg-orm stage). Agent/task ID: codex-146-pgorm-20260916-root. Claim reread and uncontested. EventBus upstream main now declares 1.1.0 at 3f116fa. Draft PR spider-gazelle/pg-orm#21; branch ai/146-model-changefeed; worktree /Users/steve/projects/placeos/.worktrees/pg-orm-146. Next action regression specs, implementation, dependency resolution and CI. Models deferred until user publishes pg-orm.

  10. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: Blocked (EventBus version tag needed); pg-orm implementation committed and claim released pending release resolution. Agent/task ID: codex-146-pgorm-20260916-root. Draft PR spider-gazelle/pg-orm#21; branch ai/146-model-changefeed; commit 7645629; worktree /Users/steve/projects/placeos/.worktrees/pg-orm-146. Full Docker suite against exact EventBus 3f116fa: 483 examples, 0 failures/errors; format, Ameba and diff checks pass; independent code review approved. EventBus main declares 1.1.0 but has no Git tags; Shards rejects ~> 1.1.0. Awaiting user choice to create v1.1.0 tag, publish it themselves, or use a commit pin. Temporary test overrides removed; no unresolved workspace edits. GitHub CI started on actual version dependency; do not merge until resolution succeeds. Next action: resolve dependency, rerun CI, merge pg-orm, then user pg-orm release before models work.

  11. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    CI confirms the release blocker: https://github.com/spider-gazelle/pg-orm/actions/runs/35040556963 failed only at dependency resolution (eventbus ~> 1.1.0) in both jobs. No CI specs ran. Agent/task ID: codex-146-pgorm-20260916-root. Local 483-spec verification used the exact 1.1.0 commit. Draft PR remains unmerged awaiting tag/pin choice; claim remains released.

  12. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: In progress (pg-orm verification resumed). Agent/task ID: codex-146-pgorm-tag-20260916-root. User explicitly authorized creating EventBus v1.1.0 tag at 3f116fa; tag created. Reclaim pg-orm stage on ai/146-model-changefeed, worktree /Users/steve/projects/placeos/.worktrees/pg-orm-146, PR spider-gazelle/pg-orm#21. Start date: 2026-09-16. Next action verify tagged dependency resolution and rerun CI, then squash merge for user pg-orm release. No competing claim found.

  13. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: Blocked (models stage awaits user pg-orm release); pg-orm stage Done and claim released. Agent/task ID: codex-146-pgorm-tag-20260916-root. EventBus v1.1.0 created at 3f116fa with user authorization. PR spider-gazelle/pg-orm#21 squash-merged as 857759e2af35859b5d8599951156bb9f208df7c8. GitHub CI passed: https://github.com/spider-gazelle/pg-orm/actions/runs/35040556963 (483 specs, 0 failures/errors; lint and format pass). Tagged dependency resolves without overrides. Local pg-orm main synced. Next action: user bumps/releases pg-orm with a version tag, then implement ControlSystem declaration and specs in models. Parent issue remains open; no active claim.

  14. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: Ready. Agent/task ID: codex-146-models-20260916-root. Claim final models stage: declare telemetry-only ignored columns on ControlSystem, require pg-orm 2.4.0, regression specs and CI. Start date: 2026-09-16. Branch ai/146-signage-heartbeat; worktree /Users/steve/projects/placeos/.worktrees/models-146. Verified upstream pg-orm v2.4.0 tag at 19d602f. Prior claim released; no native blockers or conflicting PR found. Next action save scoped plan/draft PR, reproduce heartbeat CDC, implement and verify.

  15. 15 remaining items

  16. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: Ready. Agent/task ID: codex-146-policies-20260916-root. Claim user-requested follow-up for Driver/Zone field exclusions and ControlSystem playlists/orientation, including updated_at bookkeeping. Start date: 2026-09-16. Branch ai/146-runtime-changefeed-policies; worktree .worktrees/models-146-policies. No blockers/competing claim. Plan: regress ordinary ORM saves and positive/mixed runtime changes, extend model declarations using released pg-orm2.4.1, document installed-policy transitions, inspect callbacks for indirect runtime events, full CI/review and squash merge.

  17. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: In progress. Agent/task ID: codex-146-policies-20260916-root. Claim reread and uncontested; draft PR PlaceOS/models#329 holds scoped plan. Audit confirms updated_at is update bookkeeping for all three models. Driver after_save currently saves every module, bypassing Driver CDC suppression through Module events; regress and guard unchanged copied module name/role, preserving actual changes and stale-value repair. Next action focused regressions/policies, docs and full CI.

  18. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: In review. Agent/task ID: codex-146-policies-20260916-root. PR PlaceOS/models#329 at1db9a6b. Focused red23 specs15 failures reproduced requested-field and indirect Module events; green23 specs0failures/errors passes. Driver.module_name and Module.name remain notification-producing, with propagation regression. Formatting/Ameba181 files and independent review pass. Next action full stable/unstable CI, squash merge and close issue.

  19. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: In progress (user extended active scope). Agent/task ID: codex-146-policies-20260916-root. PR329 additionally configures Module updated_at, has_runtime_error and error_timestamp exclusions. Module.name and Driver.module_name remain notification-producing. Add running-module persistence/suppression regressions and explicit name/mixed positives, then rerun final CI before merge. Prior implementation remains intact.

  20. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: In review. Agent/task ID: codex-146-policies-20260916-root. PR329 expanded commitbbd5281 includes Module updated_at/has_runtime_error/error_timestamp exclusions. Module regression red27 specs3 failures, final focusedgreen27 specs0failures/errors. Module.name and Driver.module_name notification controls pass. Formatting/lint181 files and independent review pass. Next action finalfullCI, squash merge and close issue.

  21. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: Done. Agent/task ID: codex-146-policies-20260916-root; claim released. Models PR PlaceOS/models#329 merged asad917a3. All expanded stable/unstable CI, formatting/lint and PR checks passed atbbd5281: https://github.com/PlaceOS/models/actions/runs/35048020173. Focused27 specs pass with persisted ignored fields/no PG notifications and positive runtime/mixed changes. Driver/Zone/ControlSystem/Module policies implemented; Module.name and Driver.module_name still notify, including associated-module propagation. Redundant module saves are skipped without losing stale metadata repair. Independent review approved. Follow documented installed-policy replacement for prior ControlSystem policies; no services deployed here.

  22. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: Ready. Agent/task ID: codex-146-display-name-20260916-root. Claim user correction: ControlSystem.display_name must emit updates. Start date: 2026-09-16. Branch ai/146-display-name-events; worktree .worktrees/models-146-display-name. Prior claim released/no competing PR. Plan: regress setting/clearing display_name emits CDC, remove only that exclusion, document installed-policy transition, focused tests + full CI/review then squash merge.

  23. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: In progress. Agent/task ID: codex-146-display-name-20260916-root. Claim reread and uncontested; PR PlaceOS/models#330 contains scoped plan. Restore ControlSystem.display_name events only; keep Zone policy unchanged. Regression and ten-column-to-nine-column policy transition documentation in progress.

  24. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: In review. Agent/task ID: codex-146-display-name-20260916-root. PR330 at e82e54f removes only ControlSystem.display_name from ignored fields. Red6specs1failure proves missing update event; set/clear regression and remaining suppression controls in place. Formatting/Ameba181 files and independent review pass. Focusedgreen and full stable/unstable CI running; merge after verification.

  25. stakach commented on Sep 16, 2026

    @stakach
    MemberAuthor

    Status: Done. Agent/task ID: codex-146-display-name-20260916-root; claim released. Models PR PlaceOS/models#330 merged as f1ab5ba. Setting and clearing ControlSystem.display_name now emit updates; all other exclusions unchanged. Focused6 specs, full stable/unstable CI, formatting/lint and all PR checks passed: https://github.com/PlaceOS/models/actions/runs/35052217743. Independent review approved. README documents explicit replacement of prior installed policies to restore events; no running-service deployment performed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions