v1.0.19 (roadmap P2): multi-parent / CC bells + valr fold-ins (F-1/F-2/F-3) #50
Loading…
Reference in a new issue
No description provided.
Delete branch "oss-oo/pinky-cc-bells"
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?
Roadmap P2 item 1 — Multi-parent / CC bells, plus the three fold-ins from the retained/fleet round validation (valr F-1 LOW, F-2 INFO, F-3 INFO).
The mechanism — CC notification fan-out
--notify-cc <sid>[,<sid>…](stripped, deduped, parent-equal entries dropped; all-equals-parent proceeds with zero CC bells + NOTE) and--cc-on {all,failure}(defaultall= the parent bell event set;failure= failed/timeout observers). Fail-fast exit 2: unknown recipient (named), zero-parse,--cc-onwithout--notify-cc, >16 after dedupe.--notify-ccwithout--notify-parentis legal (sender = the new session). Result JSON + START lifecycle record carrynotify_cc/cc_on.notify_cc()fromfinish_eval, after the parent bell): one independent steer per recipient — recipient-resolved cwd/model (same queries as the parent bell), own systemd scope, per-recipient bell id<DISPATCH_ID>-cc-<recipient>(delivery-once dedupes by bell id alone — CC ids must never share the parent bell id or they collapse into it), bell-ledger record{child, parent: recipient, sender, event, role, kind: "cc", bell_id, spawned_at, result_out, parent_cwd, parent_model, prompt_file}, CC doorbell wording (informed observer, never "You are the parent"),ZCODE_DISPATCH_NOTIFY_PARENT=<recipient>so the busy-queue / ghost-send / delivery-once / scope-self-check machinery works per recipient unchanged.cc(sender) +cc_lane; the sweep bell-bucket key iscc-or-parent— the recipient own bucket untouched; starvation guard unchanged (age-based).cc: [<sids>]only when CC fired; notification-delivered gainscc(sender); SSE/webhook envelopes embed the payload untouched so the field flows (EVENTS.md line).Fold-ins (valr)
publish_dualserializes the LEGACY topic with defaultjson.dumps(ASCII escapes — byte-identical to pre-v1.0.18 wire bytes for ALL content); only the fleet mirror is raw UTF-8. MQTT-TOPICS byte-compat claim needs no ASCII qualifier.fleet.publish_state_tombstone(fails when a new unguarded surface appears).zcode/fleet/#topics assert NO envelope event on either bridge (legacy topic as positive control).Suite (podman shim tripewire: ZERO real invocations; rig brokers only)
CC validation classes; happy path (2 recipients: dedupe, distinct bell ids + sender, CC wording without parent phrasing, spawn stamps, recipient-resolved steers, result/START carry notify_cc);
--cc-on failureboth directions (parent bell still fires on all three); parentless CC with sender-lane usage entry (rig usage ledger); additive MQTT fields (turn-completed, retained state legacy+mirror, notification-delivered); busy delivery-once (exactly one cc-keyed pending record, re-queue dedupe, delivered stamp + history dedupe on redelivery); sender-keyed rate bucket (CC skips under the SENDER key, recipient bell delivers, starvation override delivers); F-1 byte assertions; F-2 static guard; F-3 behavioral mirror-skip.make checkgreen; pinned Super-Linter station lanes green (BASH, BASH_EXEC, MARKDOWN, PYTHON_PYLINT, PYTHON_RUFF, YAML).Canary discipline: no new upstream assumptions — the session-DB reads and resume semantics this feature rides are the already-pinned contract canaries (env/db/proto groups).
Docs: README (flags + CC section + intro + roadmap checklist), CLI-REFERENCE, USAGE §8 (CC doorbell + ledger schema + rate rule), MQTT-TOPICS (fields + F-1/F-2/F-3 notes), BUDGETS (CC attribution), EVENTS (cc field), ROADMAP P2 marked shipped.