Commit graph Bifrost/docs
Author SHA1 Message Date
Heimdall
280d843aeb AppSecretFile: pin the deprecation at Warning level, say trailing newlines
Soul pass on 25b9cc16: the warning level was unpinned (a Trace demotion passed) and the docs said one newline where the code trims all.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-12 13:46:24 +00:00
Heimdall
25b9cc1683 Document Heimdall__AppSecretFile and the AppSecret deprecation
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-12 13:24:59 +00:00
420a4dbf85 Mouth: follow upgrades only a plain basis; @room keeps room (#76) 2026-11-12 12:28:39 +00:00
afafff18bd Mouth: basis "follow" for engagement peers (CHAT_FOLLOW, default off) (#74) 2026-11-12 12:21:31 +00:00
b1725a106f docs: sealed-motion Mind key path is /var/lib/mind-<persona>; register only after a Persona-shell self-test (#32) 2026-11-12 10:31:05 +00:00
d26aa50041 Docs: desk feed visibility is Huginn's door policy; cite the written door spec (#69) 2026-11-12 10:17:33 +00:00
d4365a8364 Mouth: fetch one named event's image for its Persona, store it, post an inert receipt (CHAT_FETCH, off by default) (#73)
A Persona's Mind shell holds no Matrix token, so the mouth now keeps one named image for her: it reads her live membership and the room's full state, takes content.url from the fetched event only, checks info.sha256 against the hash it computed, stores the bytes in her image store and posts the inert org.gamecult.file_received receipt as her own user. Behind CHAT_FETCH (exactly 1), off by default; an off mouth answers the kind as UnknownKind. Not deployed by this merge.

Shipper: Eureka. Reviewed by Heimdall against cut-mouth-fetch-attachment.r7 (bundle 3a6b45d, then delta d4bccd4: one log line per fetch with a fixed cause=, event-id percent-encoding pinned, doc-only change to docs/bridge.md).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-12 00:59:28 +00:00
0d820fdc00 Mouth: id shape on every delivery field, mentions bounded in bytes, round cap counts every target GET (#72) 2026-11-11 21:06:13 +00:00
7231cdb977 Mouth: reply_to lows after #64 (round cap defers, 60 s excerpt, wider scrub, id shape) (#68) 2026-11-11 20:05:46 +00:00
f6a826b6e7 Desk feed design: per-Mind open forks, read-only (decisions in PR #37 section 14) (#67) 2026-11-11 17:06:45 +00:00
6acb4980b8 docs: how a Ratatoskr voting module authenticates to Bifrost (design) (#37) 2026-11-11 17:06:31 +00:00
e8e8fcc178 Docs: no refresh token, MAS skips userinfo; withdrawal stops new tokens, open sessions run to expiry (#66) 2026-11-11 16:48:27 +00:00
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
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
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
12a153f66f Mill votes: ranked, paged read and not-yet-voted-by-this-network filter (#41) 2026-11-10 21:06:56 +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
Heimdall
62c1d4e0f1 Merge remote-tracking branch 'origin/main' into heimdall/mouth-read-through 2026-11-10 17:31:08 +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
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
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
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
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
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
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
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
Heimdall
2671b4bcb8 docs: drop an unsupported claim from the deploy plan
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 07:39:12 +00:00