1da912d5e9
Members: approve refuses no-membership/unknown accounts; neutral text for legacy suspensions ( #65 )
2026-11-11 16:39:48 +00:00
e12b8e2298
Mouth: v4 fixes after Soul pass (target cache, scrub, read cap) ( #64 )
2026-11-11 16:17:09 +00:00
dc35c4a254
Mouth: chat_pending.v4 reply_to (flag, default off) ( #63 )
2026-11-11 16:06:28 +00:00
ab89556101
Chat sign-in needs a live consent receipt; notice frozen as version 1 ( #59 )
2026-11-11 14:32:06 +00:00
e8df60630e
Prefix lengths: host-level startup tests (tests only) ( #62 )
2026-11-11 14:12:55 +00:00
7813426e6d
Drop HTMX (unpkg, no integrity); guard against third-party assets ( #61 )
2026-11-11 14:12:51 +00:00
70a2038435
Suspension gaps: bootstrap, demotion, members-page notices, admin-only reason ( #60 )
2026-11-11 14:12:47 +00:00
1571bf3e32
Consent: optional at registration, a consent page, CSRF-guarded accept/withdraw, notice v2 ( #58 )
2026-11-11 12:11:02 +00:00
028bc2fdf6
Registration: sign-up form with proof-of-work and a no-JS time-lock fallback ( #56 )
2026-11-11 11:17:25 +00:00
b2e0bb2514
Mouth: tail_gaps on chat_pending.v3, the rooms whose tail is incomplete ( #57 )
2026-11-11 11:07:35 +00:00
09addd83d8
Docs: proposed training notice v2 and consent-flow gaps ( #55 )
2026-11-11 10:32:18 +00:00
33be966b7d
Registration gates: proof-of-work CAPTCHA and training-notice consent receipt ( #54 )
2026-11-11 10:15:46 +00:00
fc8242f655
Suspension survives sign-in; admin-only Suspend/Unsuspend with a receipt ( #53 )
2026-11-11 08:38:09 +00:00
e8722d0abf
Mouth: room tail on chat_pending.v3 ( #51 )
2026-11-11 08:15:38 +00:00
24f3deb88e
OIDC issuer: chat tier for accounts without Active membership ( #52 )
2026-11-11 08:13:09 +00:00
5201508bdc
OIDC issuer: address budget, token-row cap, scheduled prune, marker brake ( #50 )
2026-11-11 08:12:48 +00:00
be44a09d52
OIDC: refuse reserved localparts at authorize; gap list in oidc-issuer.md ( #49 )
2026-11-11 06:39:35 +00:00
1d0548313c
Mouth: addressing facts on deliveries (chat_pending.v3 basis and form) ( #48 )
2026-11-11 06:26:30 +00:00
4e86c33cd2
Resolve CultLib via VOIDBOT_CULTLIB_ROOT in tests; test formerly indexed stores ( #47 )
2026-11-11 05:01:33 +00:00
68dee25e3a
Drop indexes: declarations from TS document types ( #46 )
2026-11-11 04:53:55 +00:00
781e6eabf6
Desk: pin vectors to CultLib de8a062a ( #45 )
2026-11-11 02:16:28 +00:00
05dcceb203
Desk: a stale answer on an oversize fork is 422 fork_too_large ( #44 )
2026-11-11 01:54:04 +00:00
815304568f
Desk: pin vectors to CultLib f6c9bf5f ( #43 )
2026-11-11 01:49:37 +00:00
8385eca00f
Desk: a read of an oversize fork is 422 fork_too_large ( #42 )
2026-11-11 01:35:07 +00:00
7e9ba5796b
Desk: the fork desk's Bifrost half ( #40 )
2026-11-11 01:02:36 +00:00
12a153f66f
Mill votes: ranked, paged read and not-yet-voted-by-this-network filter ( #41 )
2026-11-10 21:06:56 +00:00
73c6f50440
persona mouth: open a direct room for a Persona; answer unknown kinds loudly ( #39 )
2026-11-10 18:35:51 +00:00
752cd66686
deploy plan: restore reads a postgres-readable copy of the root-only dump ( #38 )
2026-11-10 18:28:31 +00:00
1a3fa02373
Merge pull request 'Reserve Matrix localparts and system names at identity creation' ( #34 ) from heimdall/reserved-identities into main
2026-11-10 17:32:16 +00:00
55a97f2250
Merge pull request 'Matrix mouth: m.read follows a chat_read report, presence follows the turn' ( #35 ) from heimdall/mouth-read-through into main
2026-11-10 17:32:03 +00:00
Heimdall
7e258988e5
Read reports: a report that throws no longer wedges its room
...
The per-room tail was chained with .then(run), so a rejected run skipped every later report for that room and left the cleanup as an unhandled rejection. Chain on both outcomes and clean up on both. A test reaches it with a presence failure plus a throwing logger and fails on the old chain.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 17:31:59 +00:00
Heimdall
62c1d4e0f1
Merge remote-tracking branch 'origin/main' into heimdall/mouth-read-through
2026-11-10 17:31:08 +00:00
39cc78cb4f
Merge pull request 'Load cultnet-ts and cultmesh-ts by their scoped names' ( #36 ) from heimdall/scope-cultlib-ts-names into main
2026-11-10 17:21:43 +00:00
5304a2a2a1
Merge pull request 'Estate-rule sim: contribution-credit arm (E7)' ( #8 ) from heimdall/credit-arm into main
2026-11-10 17:21:32 +00:00
Heimdall
cf2c80e4e7
Load cultnet-ts and cultmesh-ts by their scoped names
...
CultLib 286a9af scoped the two packages under @gamecult . The directories under packages/ keep
their short names; only the bare specifiers change.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 14:34:19 +00:00
Heimdall
0a44bf88e5
Mouth read-through: serialize reports per room, keep the last landed receipt, re-read the brake, presence off the send path
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 14:33:25 +00:00
Heimdall
5ba6571fa6
Test the whole reserved set through both paths and pin case-insensitive matching
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 14:30:50 +00:00
Heimdall
2c2cf15094
Matrix mouth: m.read follows a chat_read report, not the ack; presence follows the turn
...
An ack posted her m.read, so the receipt tracked the queue, not the model. The mouth now posts m.read only
at the event id Huginn reports in gamecult.persona.chat_read.v1, for an event it delivered to her in that
room, forward only, brake read fresh. The ack posts nothing. Presence is online within presenceGraceMs of
a read report, a send or an ack, unavailable after, offline under the brake; a change is PUT at once.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 14:17:35 +00:00
276f611ec8
Merge pull request 'deploy plan: NetworkTagSecret step checks openssl and treats an empty value as not set' ( #33 ) from libby/networktagsecret-hardening into main
2026-11-10 14:06:37 +00:00
Heimdall
8955279ef1
Reserve Matrix localparts and system names at identity creation
...
The identity becomes the Matrix localpart at SSO, so a new account must not mint a name that
a Matrix account already holds (the 13 Synapse localparts) or a system name. Native register
refuses a reserved name; a derived identity takes the next free suffix. Lookups of existing
accounts and existing rows are untouched; there is no exemption path.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 14:06:22 +00:00
Libby
c23c8d1a88
deploy plan: NetworkTagSecret step checks openssl and treats an empty value as not set
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
(cherry picked from commit 4273907324 )
2026-11-10 14:04:59 +00:00
800486a9a0
Merge pull request 'Pin the vote page busy-refusal branches' ( #14 ) from heimdall/pin-vote-refusal-branches into main
2026-11-10 14:02:29 +00:00
07554d7121
Merge pull request 'Standard close: loser of a simultaneous close adopts the winner's result ( #30 )' ( #31 ) from heimdall/standard-close-concurrency into main
2026-11-10 14:02:02 +00:00
Heimdall
ee3a2f49f5
Standard close: the loser of a simultaneous close adopts the winner's result
...
Status is a concurrency token, so the second SaveChanges of two simultaneous
CloseMotionAsync calls throws DbUpdateConcurrencyException. Reload and return,
with no second motion.closed audit event; the same pattern as the sealed closer.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 22:13:59 +00:00
Heimdall
012d1cb926
Test: a second simultaneous close of a Standard motion must not throw
...
Fails at this commit with DbUpdateConcurrencyException from CloseMotionAsync:
Motion.Status became a concurrency token in BifrostDbContext.cs:288.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 22:13:59 +00:00
416f11ad4f
Merge pull request 'Signed Mind intake for sealed motions (stacked on #21 )' ( #22 ) from heimdall/sealed-mind-intake into main
2026-11-09 20:58:25 +00:00
Heimdall
0d7c3ec078
Mind intake: nonce prune is best-effort and never fails a valid request; test the five-lost-races contended branch; doc the retried reveal's phase judgement
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 20:55:03 +00:00
Heimdall
1c9cb9937e
Signed Mind intake: verify before revealing state, dummy verify, issuedAt window and nonce pruning, per-source rate limit and body cap, one account per persona, DbUpdateException is replay only for the nonce
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 20:54:06 +00:00
Heimdall
8e6afc43ed
Signed Mind intake for sealed motions: Ed25519 envelopes, registered public keys, nonce replay refusal, persona bound into the commitment
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 20:54:06 +00:00
b42b86f816
Merge pull request 'Sealed-ballot motions: commit-reveal over gamecult.sealed_ballot.v0' ( #21 ) from heimdall/sealed-ballot-motion into main
2026-11-09 20:54:05 +00:00