fix(slack): drain gateway work and support safe native updates #85
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/slack-update-lifecycle"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Cause
Installed standalone Slack gateway lacks foreground-owned update contract; native owner correctly refuses updates. Existing stop drained ingress and sockets but did not own whole outbound sends/uploads.
Fix
Verification
39 Slack tests pass, including actual Core Harness/GatewayManager hot replacement: legacy unsupported gateway -> drained non-overlapping replacement -> real update admission. Tests cover held response body, upload persistence, timed-out shutdown, failed send, reconnect, restart, durable acceptance and files.
Rollout
Explicit operator authorization: install merged exact four-file Slack module snapshot on native Karsten, hot-replace through existing Core safe boundary, obtain fresh admission, let existing native owner activate current released Core. Verify live process, Slack connection and API; no fake contract or admission bypass.
Live rollout completed on native Karsten (work): exact merged
f13f39bf43four-file Slack snapshot installed under immutable home/plugins/slack/, all installed SHA256 values checked. Core startup confirms channels=matrix,slack,api,subagents,dispatch; actual Slack start performs auth.test and opens Socket Mode before completion. New process/healthy authenticated API verified. Real POST /v1/update-admission now returns HTTP 201 admitted with blockers=[], then test lease released. Existing native owner is active-verified again. No credential/admin/model/conversation/Slack-thread changes.First activation uncovered separate Core settings defect: installation-only skills.adaptive made strict combined overlay validation reject gateway desired reload. Fixed in Core #334 (33efc9b6), full suite 1834 passed/1 skip. Because old process could not hot-replace, explicit operator-maintenance restart used conservative twice-checked durable business-work snapshots, owner flock and graceful SIGTERM; NOT a fabricated admission lease. Old process exit and exact new module selection proved. No forced kill.
Receipts on work: ~/.local/share/vanillacore-karsten/slack-maintenance.json and slack-lifecycle-rollout.json; private settings backup retained. Native Core continues following the existing normal protected-main owner. No claim of a real user-message Slack round trip; connection/start and API/admission are verified.
Additional native verification: all 39 Slack tests pass on the actual Darwin host with its installed Core Harness/GatewayManager and Node runtime, zero skips. The corrected live plugin has empty admission blockers; real lease acquisition/release succeeds. Native log: ~/.local/share/vanillacore-karsten/slack-native-acceptance.log.