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
jschoubben
e75e793a4b
gitea: fill repositories.json through the provisioner client, so an approved value lands at once (issue 1128)
...
mesh/merge-gate head e75e793a4b3b merged into trunk cfb90d7b2f96 — pass: builds gitea → novox; no bus step; every machine composes with the change as it di…
mesh/repo-check head e75e793a4b3b merged into trunk cfb90d7b2f96 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
The file was merged by the controller (merge, takes-config), which writes a
config change only on the node's next send (ADR 0348 §10): the operator's
Approve of the mesh-delivery repository set the value and nothing made it.
A plain template saying ${config:repositories} is filled by the provisioner
client on config-changed, and the node-engine reruns the run-once program
that names the file under restart-on.
2026-10-18 17:40:59 +02:00
mesh-tools
cfb90d7b2f
Merge pull request 'The gitea module makes the organisation's repositories from its config, protected before any team reaches them; no tool creates in the organisation (issue 1124, ADR 0428)' ( #363 ) from fix/1124-repositories-config into main
2026-10-18 15:05:04 +00:00
jschoubben
11761637cf
Put main's rule right again once a new repository is in the organisation: the forge drops a merger without access, and under the setup account the tools' account has none (issue 1124, ADR 0428 §3, review round 1)
mesh/merge-gate head 11761637cf81 merged into trunk e47d0694c752 — pass: builds gitea → novox; no bus step; every machine composes with the change as it di…
mesh/repo-check head 11761637cf81 merged into trunk e47d0694c752 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
2026-10-18 16:58:17 +02:00
jschoubben
8c587d0f00
Let the repositories pass's failed exit be its gate: a run-once step the node-engine runs again until it passes, its stderr naming each refused repository, step and forge answer, instead of a health check of its own (issue 1124, ADR 0428 §6)
2026-10-18 16:52:29 +02:00
jschoubben
df275b3c6e
Make the organisation's repositories from the gitea module's config value, protected under the setup account before they join the organisation, and take the owner argument from gitea_create_repo, since a repository's maker becomes its administrator (issue 1124, ADR 0428)
2026-10-18 16:49:12 +02:00
jschoubben
94b49a296f
Test that the gitea module makes the organisation's repositories from its config, protected before any team reaches them, and that no tool creates in the organisation (issue 1124, ADR 0428)
2026-10-18 16:45:49 +02:00
mesh-tools
e47d0694c7
Merge pull request 'gitea_create_repo creates a repository in an organisation, saying the forge's refusal (issue 1124)' ( #362 ) from fix/1124-create-repo-in-org into main
2026-10-18 13:50:31 +00:00