jochen
5c1ff4bb15
mesh-mail: dedup-archive picks the same copy in both stores when a message-id also sits in a second non-archive folder (issue 1248, review round 1 finding 1)
mesh/merge-gate head 5c1ff4bb152b merged into trunk b767aac8e072 — pass: builds mesh-mail → novox; no bus step; every machine composes with the change as i…
mesh/repo-check head 5c1ff4bb152b merged into trunk b767aac8e072 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
2026-10-19 15:33:36 +02:00
jochen
280aeb2f47
Answer each gmail mail once when no folder is named, keeping archived mail (issue 1248)
2026-10-19 15:30:44 +02:00
mesh-tools
b767aac8e0
Merge pull request 'mail_search answers the operator's questions: optional words, filters by sender, recipient, cc, date, words, attachment, flags, thread and correspondents, ordered and grouped (issues 1228-1232)' ( #372 ) from feat/mail-search into main
2026-10-19 13:17:13 +00:00
jochen
920199862e
mesh-mail: group-by-sender and order-by sender compare addresses case-insensitively in Postgres too, and a sender's shown name and address are its newest mail's, deterministically (issue 1230, review finding 6)
mesh/merge-gate head 920199862e18 merged into trunk 7bb588ca1bfb — pass: builds mesh-mail → novox; no bus step; every machine composes with the change as i…
mesh/repo-check head 920199862e18 merged into trunk 7bb588ca1bfb — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
2026-10-19 15:09:44 +02:00
jochen
8dd2a42448
mesh-mail: mail_search's order defaults to descending when left out, matching its own schema text, and AC1's no-filter test proves ordering, limit and grant isolation together (issue 1232, review findings 5 and 7)
2026-10-19 15:05:23 +02:00
jochen
d1a9056a1c
mesh-mail: mail_search gains words/words-any, a word found in subject or body, since subject-words and body-words together only ever meant and (issue 1229, review finding 3; also proves AC9's type-or-name independently and AC2+unread combined)
2026-10-19 15:02:40 +02:00
jochen
a3476a7bf2
mesh-mail: from-someone-i-wrote-to recognises gmail's Sent folder name too, and stays scoped to one account (issue 1231, review findings 1 and 2)
2026-10-19 14:57:26 +02:00
jochen
1c3158e098
mesh-mail: mail_search's address filter never treats % or _ as a wildcard, so a literal domain filter does not leak every mail in Postgres (issue 1228, review finding 4)
2026-10-19 14:52:36 +02:00
jochen
b60ee706d4
mesh-mail: mail_search's tool makes the query optional and offers every filter and order-by (one schema for mail_search and mail-store.search), validated before the index is ever asked (issue 1232)
2026-10-19 14:46:58 +02:00
jochen
4a60deb4a8
mesh-mail: mail_search finds a thread's replies and mail from someone the operator wrote to, so a reply or a known correspondent's junk mail can be found (issue 1231)
2026-10-19 14:39:59 +02:00
jochen
fc10031d22
mesh-mail: mail_search orders by date, sender, subject or size and groups by sender, so the newest, the largest or who writes most can be answered (issue 1230)
...
Query's From becomes a list, OR'd (1228/AC11's several domains), since 1230's order-by needs it to test the
ascending-order criterion end to end; To and Cc stay single, no criterion asking for more.
2026-10-19 14:36:53 +02:00
jochen
2985122856
mesh-mail: mail_search's Query gains subject/body words, attachment type/name and read/unread, so a word in one field, an attachment or a flag can filter mails (issue 1229)
2026-10-19 14:29:15 +02:00
jochen
20342f2172
mesh-mail: mail_search's Query gains from, to, cc and a date range, so a sender, a recipient or a date can filter mails without query words (issue 1228)
2026-10-19 14:22:14 +02:00
mesh-tools
7bb588ca1b
Merge pull request 'mesh-mail sends an approved mail from its own sender process, and tells a failed send once (ADR 0436, ADR 0438; issues 1172, 1193-1199)' ( #371 ) from feat/mail-sender into main
2026-10-19 11:36:51 +00:00
jochen
a2c0c58677
mesh-mail: a redelivery of a message whose send already finished (sent, failed, refused or not proven) is a repeat, terminated without recording, emitting or telling anything again (operator-approved change to ADR 0436 clause 10; issue 1196)
mesh/merge-gate head a2c0c586772b merged into trunk c441d83ba753 — pass: builds mesh-mail → novox; no bus step; every machine composes with the change as i…
mesh/repo-check head a2c0c586772b merged into trunk c441d83ba753 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
2026-10-19 13:29:31 +02:00
mesh-tools
c441d83ba7
Merge pull request 'Keep two values of each issue in the tracker's bucket, since the log holds them all (issue 1221)' ( #370 ) from fix/1221-tracker-keeps-two-copies into main
2026-10-19 11:08:47 +00:00
jschoubben
e601e88e95
Keep two values of each issue in the tracker's bucket, since the log holds them all (issue 1221)
mesh/merge-gate head e601e88e95dd merged into trunk fb8e677cd849 — pass: builds mesh-issues → novox; no bus step; every machine composes with the change as…
mesh/repo-check head e601e88e95dd merged into trunk fb8e677cd849 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
2026-10-19 12:38:55 +02:00
mesh-tools
fb8e677cd8
Merge pull request 'The router takes a module's condition on the operator channel's one subject (design 47 R3b: issues 1217, 1218)' ( #369 ) from feat/delivery-seat-by-claim into main
2026-10-19 10:28:28 +00:00
jschoubben
5aca005cb7
Shorten the router's burst window in the test bundle so the desk is sent within seconds (issue 1218, check finding 1)
mesh/repo-check head 5aca005cb741 merged into trunk b4527d9091e9 beside mesh-controller#394@3e7f34d0 — pass: its merge-check.sh passed, each part in its to…
mesh/merge-gate head 5aca005cb741 merged into trunk b4527d9091e9 — pass: group feat/delivery-seat-by-claim composed: every machine composes with the change…
mesh/delivery-group group feat/delivery-seat-by-claim delivered: every member is delivered
2026-10-19 12:15:47 +02:00
jschoubben
9f9e9fc9d3
Shorten the router's start grace in the test bundle so the bus tests stay in seconds (issue 1218, review round 1 finding 2)
2026-10-19 12:05:07 +02:00
jschoubben
f737418bb3
Keep a module's condition open when the controller's conditions are read (issue 1217, review round 1 finding 1)
2026-10-19 12:04:58 +02:00
jschoubben
5b235a6e80
Prove over the bus that a condition on the one subject reaches the desk (issue 1218)
2026-10-19 11:59:49 +02:00
jschoubben
de6741a335
Take a module's condition on the operator channel's one subject (issue 1217)
2026-10-19 11:58:10 +02:00
jochen
dd8305d97d
mesh-mail: the refused-sign-in acceptance test's wait excluded queued too, so it returned done on the very first look before the sender ever claimed anything (issue 1198)
2026-10-19 11:10:36 +02:00
jochen
06dfce87f5
mesh-mail: decide kept by settleSend's own returned revision, not its error, so a changed revision is actually retried instead of silently accepted as another writer's state; emit mail.send.failed from claimQueuedSend only once its own write lands (review round 2; issue 1198)
2026-10-19 11:07:24 +02:00
jochen
7db4bd215d
mesh-mail: fix the work-queue stream's real bus name (MAIL_SENDS, not MAIL-SENDS) and build the integration tests' stream, subject and duplicate window exactly as the controller composes them, exercising the send id's dedup (review round 1 finding 7; issue 1198)
2026-10-19 10:57:45 +02:00
jochen
1639269ad4
mesh-mail: on Approve the tools record the send queued directly, with no separate approved state, then publish; a stuck queued record is republished by the sweep past a short grace, never NakWithDelay'd by the sender (ADR 0436 clause 8, decided to replace the review round 1 item 2 work-around; issues 1194, 1196, 1199)
2026-10-19 10:53:32 +02:00
jochen
7397051771
mesh-mail: tighten tests that proved less than their criterion — attempt 5 and no mail received (1198/AC4), mail_health actually turning unhealthy (1199/AC2), and the words mail_send_status gives, not only its status (1199/AC4) (review round 1 finding 6)
2026-10-19 10:53:12 +02:00
jochen
95089762ef
mesh-mail: retry the outcome's own write on a changed revision, and never ack or emit an outcome that could not be kept (review round 1 finding 5; issue 1198)
2026-10-19 10:43:45 +02:00
jochen
ce3b12f349
mesh-mail: emit mail.send.failed when the sender's own claim refuses or finds a send already sending, same as a failed send after it (review round 1 finding 4; issue 1198)
2026-10-19 10:40:41 +02:00
jochen
acb82992ee
mesh-mail: index a send for a tell or mail_health's overdue check before its record carries the outcome, drop the old index entry only after, and report an index write that fails instead of dropping it silently (review round 1 finding 3; issues 1194, 1199)
2026-10-19 10:38:07 +02:00
jochen
0a7669b48f
mesh-mail: a send still approved (the tools' own publish-then-record race) is redelivered later, never refused or told (review round 1 finding 2; issue 1196)
2026-10-19 10:31:39 +02:00
jochen
f140099a75
mesh-mail: declare the sender's own secret broker-send, so the controller can issue its account (review round 1 finding 1; issue 1172)
2026-10-19 10:29:48 +02:00
jochen
f3a59ee63a
mesh-mail: tell the operator once for a failed approved send and once more if its sender has not taken it, make an overdue send unhealthy, and give mail_send_status its full vocabulary (ADR 0436 clauses 11, 12; issue 1199)
2026-10-19 10:22:27 +02:00
jochen
33a97e6d13
mesh-mail: the sender records a send's outcome, retries a not-taken failure and emits mail.send.sent or mail.send.failed, acknowledging only once it is kept (ADR 0436 clauses 10, 11; issue 1198)
2026-10-19 10:11:41 +02:00
jochen
e7dce9616c
mesh-mail: classify an SMTP send's outcome (not taken, refused, not proven), and carry the send id in the Message-ID (ADR 0436 clause 10; issue 1197)
2026-10-19 10:03:44 +02:00
jochen
1ccb617a86
mesh-mail: the sender verifies the operator's warrant again from the router's own record and claims a send once before any connection (ADR 0436 clauses 9, 10; issue 1196)
2026-10-19 09:57:07 +02:00
jochen
dd3ed68483
mesh-mail: a send process that connects on its own bus account and consumes the mail-sends queue, stopping cleanly on a signal (ADR 0436 clause 7; issue 1195)
2026-10-19 09:49:24 +02:00
jochen
428b42181d
mesh-mail: on the operator's Approve the tools record approved and queue the send for the sender, instead of sending it themselves (ADR 0436 clause 8; issue 1194)
2026-10-19 09:44:42 +02:00
jochen
59c0906c79
mesh-mail: move password reading out of the tools' reach into its own package, so only keep and the send actor import it (ADR 0436 clause 12; issue 1193)
2026-10-19 09:32:54 +02:00
jochen
75a9a45c6f
mesh-mail: pin mesh-sdk go to release 2, declare the sender account, bus process and work-queue stream (ADR 0436 clauses 7, 8; issue 1172)
2026-10-19 09:23:45 +02:00
mesh-tools
b4527d9091
Merge pull request 'Ask a refused merge again when its checks turn green on the forge (issue 1144)' ( #368 ) from fix/1144-merge-asked-again-on-green-status into main
2026-10-18 22:05:45 +00:00
jochen
a32b7af3fd
Ask a refused merge again when its checks turn green on the forge (issue 1144)
mesh/merge-gate head a32b7af3fd8a merged into trunk a6295d6b98d5 — pass: builds mesh-delivery → novox; no bus step; every machine composes with the change …
mesh/repo-check head a32b7af3fd8a merged into trunk a6295d6b98d5 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
2026-10-18 23:50:25 +02:00
mesh-tools
a6295d6b98
Merge pull request 'Write a provisioner client's files only on a change over the bus, never on a timer (issue 1129, ADR 0430)' ( #366 ) from fix/1129-no-drift-pass into main
2026-10-18 16:56:32 +00:00
mesh-tools
afb94d925e
Merge pull request 'Register the repository mesh-delivery as an owner, so its issues can be located in it (issue 1133)' ( #367 ) from fix/1133-mesh-delivery-owner into main
2026-10-18 16:52:06 +00:00
jschoubben
26d81b09b5
Register the repository mesh-delivery as an owner, so its issues can be located in it (issue 1133)
...
mesh/merge-gate head 26d81b09b5e8 merged into trunk 72ad5ad138ce — pass: builds mesh-issues → novox; no bus step; every machine composes with the change as…
mesh/repo-check head 26d81b09b5e8 merged into trunk 72ad5ad138ce — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
The tracker runs with the manifest's owners default; a test now holds the
default and the template's copy to one list.
2026-10-18 18:39:11 +02:00
mesh-tools
72ad5ad138
Merge pull request 'A repository the gitea module makes refuses an administrator's merge past its checks (issue 1141)' ( #365 ) from fix/1141-admin-override into main
2026-10-18 16:24:56 +00:00
jschoubben
54db38be08
gitea: a repository the module makes refuses an administrator's merge past its checks (issue 1141)
...
mesh/merge-gate head 54db38be0896 merged into trunk 4301da630d82 — pass: builds gitea → novox; no bus step; every machine composes with the change as it di…
mesh/repo-check head 54db38be0896 merged into trunk 4301da630d82 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
narrowed never set block_admin_merge_override, so novox/mesh-delivery's
main let an administrator merge past mesh/merge-gate and mesh/repo-check,
unlike every other repository's main since 2026-10-07. narrowed sets it and
isRight requires it, so the module's next start puts mesh-delivery right.
2026-10-18 18:10:29 +02:00
jochen
e7ff7c3045
Write a provisioner client's files only on a change over the bus, never on a timer (issue 1129, ADR 0349 clause 4)
mesh/merge-gate head e7ff7c3045fc merged into trunk afb94d925e94 — pass: builds mesh-provisioner-client → ace, g14, novox, shanks; no bus step; every machi…
mesh/repo-check head e7ff7c3045fc merged into trunk afb94d925e94 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
2026-10-18 18:08:50 +02:00
mesh-tools
4301da630d
Merge pull request 'gitea fills repositories.json through the provisioner client, so an approved repositories value lands at once (issue 1128)' ( #364 ) from fix/1128-repositories-template into main
2026-10-18 16:03:58 +00:00