Commit graph

339 commits

Author SHA1 Message Date
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
Heimdall
55b7f79c13 Sealed ballot: retry a reveal that loses a RevealSeq race while the window is open, \z in hex patterns, doc the contended 409
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 20:47:23 +00:00
Heimdall
8d6b45ae69 doc: ballots are JSON documents, not typed CultNet documents
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 20:41:06 +00:00
Heimdall
264233e08f Sealed ballot: freeze the reveal set at close (RevealSeq token), HTTP tests for replay/non-voter/late reveal/close, doc corrected on the ballot schema
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 20:40:54 +00:00
Heimdall
96da1b7a8c Sealed ballot: race-safe close, close sweep, endpoint tests, backup reader and auth findings in the doc
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 20:30:35 +00:00
Heimdall
d5a71eb639 Sealed-ballot motions: commit-reveal over typed gamecult.sealed_ballot.v0 documents
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 20:24:49 +00:00
eb4aa3c493 Merge pull request 'docs: plan for deploying main over the live release' (#15) from heimdall/deploy-main-plan into main 2026-11-09 15:51:43 +00:00
c049793eca Merge pull request 'deploy plan: generate ConceptVotes__NetworkTagSecret, defaults note, checkout page check' (#19) from libby/networktagsecret-env-step into heimdall/deploy-main-plan 2026-11-09 15:50:31 +00:00
Libby
7895d05a13 deploy plan: NetworkTagSecret step is re-run safe (never overwrites or duplicates)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 15:48:45 +00:00
Libby
0ac9c956e1 deploy plan: how to generate ConceptVotes__NetworkTagSecret, defaults satisfy Stripe/Heimdall checks, checkout page check
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 15:46:28 +00:00
0eb68e498e Merge pull request 'Revise the main-to-live deploy plan against 55b74275 (Libby's 11 points)' (#18) from eureka/deploy-plan-revise into heimdall/deploy-main-plan 2026-11-09 15:20:08 +00:00
2dccadc8b5 Deploy plan: list the remaining unstated-as-unverified host facts, fix line markers, Persona picture cite
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 15:17:46 +00:00
1864fef9ee Deploy plan: rehearsal env turns off the flags whose keys are stripped; mark unverified host facts
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 15:14:47 +00:00
9caca35e4e Deploy plan: the live key ring, a rehearsal env outside /root, readyz with the live Host, stripped secrets
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 12:12:40 +00:00
3e1bca76d5 docs: revise the main-to-live deploy plan against main 55b74275
Targets 55b74275 (#11 and #17 in main; #15 docs only). #11 signs everyone out
once. Lists the validator's required keys by name, NetworkTagSecret (32+
chars) as a hard startup failure, put into step 3. Rehearsal through
sudo -u postgres and one start on a separate env file, scratch connection
string, throwaway KeysPath and a port other than 5080; no dotnet ef. Backs up
the data-protection key ring. Uses the real log files with a baseline count.
Notes bifrost-watchdog-notice.timer.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 11:56:13 +00:00
55b74275b0 Merge pull request 'CI: delete the container publish workflow' (#17) from heimdall/delete-publish-workflow into main 2026-11-09 11:50:46 +00:00
Heimdall
e576ba1d74 Docs: the deployment model is a release directory; drop the ghcr.io tag
Eureka, #minds, 2026-11-09 ~11:31Z, reply to Heimdall on Bifrost #16/#17.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 11:48:45 +00:00
7c563130e8 Merge pull request 'Make every cookie host-only: __Host- names, Secure, Path=/' (#11) from heimdall/host-only-cookies into main
Some checks failed
Publish Container / Build and publish Bifrost image (push) Failing after 14s
2026-11-09 11:48:27 +00:00
Heimdall
8a95c99d15 CI: delete the container publish workflow
Bifrost ships as a release directory switched by Idunn; nothing here pulls an
image, and the job would fail on every push to main.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 11:31:39 +00:00