Pinky QQ: three-state notification control — the gate selector beside the master mute (v1.49.0) #78

Merged
ClaudiuSchuster merged 1 commit from oss-oo/pinky-qq-notifmodes into main 2026-10-08 14:49:41 +00:00
Owner

Steer #36 (round QQ): the mute toggle becomes a three-state notification control against the shipped zcode-dispatch v1.0.27 lineage-gate contract.

  • D1 read ladder: env ZDO_NOTIFY_GATE > config notifications.gate > default smart (honest source labels; invalid values fall back smart with the raw surfaced; pre-v1.0.27 configs read as the default and the write merely ADDS the key).
  • D1 write path: the dispatcher docs' own sanctioned edit — atomic, key-preserving config.json surgery (every other key byte-preserved, unknown keys verbatim; flock sidecar + tmp + fsync + replace; parse-verified; refused on corrupt/non-object/duplicate-gate shapes and under an active env override). Effective per echo, no restart.
  • D2 surfaces: header gate selector (🔔 all / 🧠 smart / 🔕 muted, click cycles) + the DISTINCT master mute file toggle; slim line carries both as stat-controls (honest 'smart · default' / '· env' labels); both dims ride the poll so external config edits reflect without a reload. /api/notifications extends additively.
  • SS follow-ups: SS-1 escjs JS-layer escaping for inline handlers (with a hostile round-trip harness that proves the HTML-only fold dead), SS-2 guardian thresholds via :g, SS-3 template createdAt stamped at creation.

Validation: suite 573 green (+37 new); G1+G2 CDP rig 27/27; G3 semantic rig 11/11 (real dispatcher, fake app server — all/smart/muted + chain-internal suppression + mute-file precedence + pre-v1.0.27 default); Super-Linter station recipe exit 0.

Steer #36 (round QQ): the mute toggle becomes a three-state notification control against the shipped zcode-dispatch v1.0.27 lineage-gate contract. - D1 read ladder: env ZDO_NOTIFY_GATE > config notifications.gate > default smart (honest source labels; invalid values fall back smart with the raw surfaced; pre-v1.0.27 configs read as the default and the write merely ADDS the key). - D1 write path: the dispatcher docs' own sanctioned edit — atomic, key-preserving config.json surgery (every other key byte-preserved, unknown keys verbatim; flock sidecar + tmp + fsync + replace; parse-verified; refused on corrupt/non-object/duplicate-gate shapes and under an active env override). Effective per echo, no restart. - D2 surfaces: header gate selector (🔔 all / 🧠 smart / 🔕 muted, click cycles) + the DISTINCT master mute file toggle; slim line carries both as stat-controls (honest 'smart · default' / '· env' labels); both dims ride the poll so external config edits reflect without a reload. /api/notifications extends additively. - SS follow-ups: SS-1 escjs JS-layer escaping for inline handlers (with a hostile round-trip harness that proves the HTML-only fold dead), SS-2 guardian thresholds via :g, SS-3 template createdAt stamped at creation. Validation: suite 573 green (+37 new); G1+G2 CDP rig 27/27; G3 semantic rig 11/11 (real dispatcher, fake app server — all/smart/muted + chain-internal suppression + mute-file precedence + pre-v1.0.27 default); Super-Linter station recipe exit 0.
Pinky QQ: three-state notification control — the gate selector beside the master mute (v1.49.0)
All checks were successful
Checks / Functional checks (pull_request) Successful in 30s
054e321dd6
D1 (mode model + sync seam, per the shipped zcode-dispatch v1.0.27
contract): notify_gate_payload resolves env ZDO_NOTIFY_GATE > config
notifications.gate > default smart with honest source labels and
invalid-value fallback; notify_gate_write is the dispatcher's own
sanctioned edit — a surgical, key-preserving splice of the gate member
(every other key byte-preserved, unknown keys verbatim) under the
ledger family's flock discipline (sidecar .gate.lock + tmp + fsync +
os.replace), parse-verified before landing, refused on corrupt JSON /
non-object shapes / duplicate keys / active env override. No restart
needed — the dispatcher resolves per echo. GET /api/notifications
extends additively; POST /api/notifications/mode writes.

D2 (surfaces): the header carries the three-state gate selector
(🔔 all / 🧠 smart / 🔕 muted, click cycles all→smart→muted) AND the
distinct master-mute file toggle (🔊/🔇); the slim line carries both
as stat-controls with honest labels (🧠 smart · default when unset,
· env read-only under an override, toasts instead of writing);
mode muted vs mute FILE never conflated. Both dims ride the poll
cycle — an external config edit reflects without a reload.

SS follow-ups: SS-1 escjs (JS-layer backslash escaping under the
HTML-layer esc for every inline-handler embed; the HTML-only '
fold decoded back to a raw quote in the JS layer — a hostile
round-trip node harness proves the class dead and bites via a
tripwire group); SS-2 guardian thresholds render via :g in steer
texts and the boot-config feed (70, never 70.0); SS-3 templates
stamp createdAt at creation (updates preserve, legacy backfilled).

Validation: suite 573 green (+37); G1+G2 CDP rig 27/27 (trusted
clicks, byte-preserving live write, external-edit sync, env
read-only, slim one-line 24px at 1177+903); G3 semantic rig 11/11
(real dispatcher v1.0.27 + fake app server: all/smart/muted, chain-
internal suppression, mute-file precedence, pre-v1.0.27 default);
Super-Linter station recipe exit 0.
ClaudiuSchuster deleted branch oss-oo/pinky-qq-notifmodes 2026-10-08 14:49:41 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
OSS-Singularity/zcode-dispatch-observatory!78
No description provided.