diff --git a/wiki/log/2026-07-17-financial-channel-decision.md b/wiki/log/2026-07-17-financial-channel-decision.md new file mode 100644 index 00000000..4a634919 --- /dev/null +++ b/wiki/log/2026-07-17-financial-channel-decision.md @@ -0,0 +1,32 @@ +# Financial traffic waits on graph ownership + +``` +Type: log +``` + +Autonomy tick 70 took the remaining queued finding from the messages audit and +re-verified it against current main. The binding `messages.md` table defines +four delivery channels. Runtime also defines `MessageChannel::Financial` and +gives it an unconditional person-read branch, but no current `Message`, authored +traffic pattern, or plot beat uses that channel. + +The live accounting path instead uses Financial as a device capability tag. +Tapping the switch or choosing TAP LEDGER checks that tag and creates +`RawIntelKind::FinancialFlow` directly; money continues to move on the separate +`AccountGraph` through `FlowChannel`. Plot transfers likewise move money and +emit Financial detection signatures without scheduling Financial messages. +The original 2026-07-07 economy landing intentionally introduced this reuse, so +the mismatch is not safely reducible to a forgotten row in the table. + +Tangled issue #11 now asks Cameron to choose one contract: split an explicit +accounting-carrier capability, make Financial a real fifth delivery channel, or +preserve and document the overload. It recommends the split because that +matches the three-graph flow law and every live B1 path. The owning messages +spec carries an `[OPEN]` marker so later work cannot mistake the unused read +branch for adopted message semantics. No runtime behavior or spec status +changed in this tick. + +Defense: the tick procedure requires a contradiction between binding law and +intentional runtime structure to become an answerable `decision-required` +packet rather than an agent-selected design amendment. The issue and `[OPEN]` +marker preserve the exact boundary while keeping current behavior honest. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index 9cbc3dc1..77bdb8ca 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -31,6 +31,11 @@ add or amend a session log, then re-run the generator. - Intent: (see session log) - Log: [wiki/log/2026-07-17-people-message-thread.md](2026-07-17-people-message-thread.md) +## 2026-07-17 - Financial traffic waits on graph ownership + +- Intent: (see session log) +- Log: [wiki/log/2026-07-17-financial-channel-decision.md](2026-07-17-financial-channel-decision.md) + ## 2026-07-16 - The migration ladder collects the rider - Intent: (see session log) diff --git a/wiki/mechanics/messages.md b/wiki/mechanics/messages.md index 59c0e01a..eb915d21 100644 --- a/wiki/mechanics/messages.md +++ b/wiki/mechanics/messages.md @@ -49,6 +49,16 @@ defines where and when a message can be read: | In person | co-location | both parties in the same room | | Filing | the institutional channel | the receiving role's next sampling cadence | +**[OPEN — Tangled issue #11]** — B1 runtime also carries +`MessageChannel::Financial`, but no scheduled message or authored traffic uses +it. The switch reuses that variant as a device capability for capturing account- +graph snapshots directly as intel. Cameron's answer will decide whether to split +an explicit accounting-carrier capability, promote Financial into a real fifth +delivery channel, or preserve and document the overload. Until then, the table +above remains the binding list of delivered message channels; do not infer +unconditional Financial-message reads from the unused runtime branch. This +blocks new accounting-message authoring and cleanup of the channel type. + At B1, **awake means reachable**: there is no separate per-person sleep or phone-silence state. A Phone message therefore reads at its scheduled Read event wherever the recipient is, including off-site; it must not borrow diff --git a/wiki/process/tick-ledger.md b/wiki/process/tick-ledger.md index fda8111c..f3370807 100644 --- a/wiki/process/tick-ledger.md +++ b/wiki/process/tick-ledger.md @@ -55,7 +55,7 @@ Verdicts: **clean** (slice and code agree), **finding** (acted this tick), | `wiki/mechanics/compute.md` | 2026-07-12 | finding | [log](../log/2026-07-12-compute-graduation.md) | | retired Operations runtime identifiers | 2026-07-11 | finding | [log](../log/2026-07-11-retired-runtime-identifier-gate.md) | | `wiki/mechanics/reach.md` + `building.md` | 2026-07-15 | finding | re-verified the queued reverse-endpoint duplicate: declaration compared canonical stored endpoints to the raw request tuple; canonicalized proposal identity at the comparison boundary and pinned reverse-order rejection plus cancellation/reproposal — [log](../log/2026-07-15-canonical-build-intent-endpoints.md) | -| `wiki/mechanics/messages.md` | 2026-07-17 | finding | re-verified the queued Phone violation; Phone now reads while the recipient is off-site instead of borrowing Email's workplace gate, with exact status/read-window regression coverage. The independent Financial-channel table contradiction remains queued — [log](../log/2026-07-17-phone-offsite-read.md) | +| `wiki/mechanics/messages.md` | 2026-07-17 | issue | re-verified the queued Financial contradiction: the binding table owns four delivered message channels, while runtime's unused fifth variant acts as an accounting-carrier device tag and bypasses message scheduling; filed decision-required Tangled issue #11 with three concrete resolutions and marked the blocked contract [OPEN] — [log](../log/2026-07-17-financial-channel-decision.md) | | `wiki/mechanics/sim-mechanics.md` | 2026-07-11 | finding | [log](../log/2026-07-11-tick-sim-no-dockets.md) | | `wiki/mechanics/detection.md` | 2026-07-11 | finding | [log](../log/2026-07-11-tick-detection-filings-messages.md) | | `wiki/engineering/env.md` | 2026-07-15 | finding | re-verified the queued DIGITAL false failure: the wrapper's four-kind dialect copy omitted newer DIGITAL scenarios; the frontend now reports its staged RenderMode and the wrapper gates fog from that one truth, with fake-binary fixtures for DIGITAL, REAL, and malformed evidence — [log](../log/2026-07-15-bevy-shot-dialect-proof.md) | @@ -75,5 +75,3 @@ Format: `- YYYY-MM-DD · type · slice · one-line statement of the finding`. Types are the five from [tick.md](tick.md): violation, contradiction, question, bug, insecurity — plus `gate` for a checker owed to the recurrence-promotes-to-the-gate rule. - -- 2026-07-17 · contradiction · `wiki/mechanics/messages.md` · Runtime carries a fifth `Financial` message channel with unconditional read behavior, but the binding channel table names only Email, Phone, InPerson, and Filing.