Commit graph Bifrost/docs
Author SHA1 Message Date
Meta Vens
a7621f9eed Research: Discord-like roles on Matrix and the chat client (matrix-roles-from-bifrost-estates)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 19:09:06 +01:00
Meta Vens
ccb0e6b08c Research: email mouth prior art (payment-mints-invite-bifrost-ledger-email-mouth)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 19:09:06 +01:00
Meta Vens
6cf24644bc Research: customer-member onboarding prior art and body facts (customers-get-voting-power-onboarding-owed)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 19:09:05 +01:00
Meta Vens
cc76f0f2d0 mouth-all-personas: one Matrix mouth serves every Persona; deliveries carry mentions and is_direct, refusals are typed; same-server DM invites accepted; the ring is deleted (Persona turns are the heartbeat's) (squash of eureka-body/mouth-all-personas 7b63031..5b628e2; Soul s1-s3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 02:49:59 +01:00
Meta Vens
18bbe6c312 Research: estate tally adds bloc-parliament-at-threshold and operator influence cap (Fork Desk 41)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:15:38 +01:00
Meta Vens
1036849534 Research: estate tally note points at its sims/ folder
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:07:49 +01:00
Meta Vens
3f241c0fe4 Research: estate tally game theory, power indices and simulations (Fork Desk 39, estate-internal-tally)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:07:10 +01:00
Meta Vens
eee86193c0 Research: swarm governance on Bifrost, readiness and prior art (follow-up swarm-governance-on-bifrost)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:48:14 +01:00
Meta Vens
7b630312e1 persona-mouth: Matrix ear and mouth for Personas (brake-refusing sends, token only in the Authorization header, cursor after ack, one ring per idle window); delete the Discord posting actuator (squash of eureka-body/persona-mouth 1894f65..ab2bdc6; Soul s1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 19:41:30 +01:00
Meta Vens
c9e470bef4 docs/oidc-issuer: BackchannelLogoutUri, reconcile semantics, MAS facts and the tick-window tradeoff
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 00:39:57 +01:00
Meta Vens
83daabe512 Bifrost as OIDC issuer for the Matrix chat (gamecult-chat cut bifrost-oidc-issuer, squash of 1ef289a..ec4acfa and abd12b3..)
One configured client (stale clients removed with their tokens and authorizations), Active membership re-checked at token and userinfo through IsStillActiveMemberAsync, PKCE required by the server option, OpenIddict.Server.AspNetCore + EntityFrameworkCore 7.7.1 with no vulnerable transitives. Soul s2, s3 and s4 hold; Low conformance gaps in gamecult-chat:follow_up:oidc-issuer-spec-conformance.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 04:57:16 +01:00
Meta Vens
e77d6220de Concept Mill votes target: re-verified body facts, authority map, cut order
Imagination pass that admitted cut specs 0a through 7. Facts re-probed at
Bifrost bf83a93 and on the host; the from-memory prior-art list is replaced
by a citation of docs/research/anonymous-vote-stuffing-prior-art.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:16:45 +02:00
Meta Vens
bf83a9321b Research: prior art on anonymous-vote stuffing defences
Served concept-mill-votes Cut 4 (anti-stuffing defence). Facts with source
pointers on PoW captchas, device cookies, network buckets, ePrivacy status of
anti-abuse cookies, and after-the-fact purge at HN, Stack Exchange and Reddit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:01:18 +02:00
Meta Vens
20d5efa9c6 Concept Mill votes: target and body facts
The Imagination map of 2026-10-08, committed as the target document of the
concept-mill-votes campaign. Typed invariants, rulings and cut specs live in
the eureka mind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 04:55:42 +02:00
Meta Vens
0312e8bbac Watchdog notice reader: a future stamp is eligible now; no production clock seam
A failed entry stamped ahead of the clock (host clock stepped forward then
corrected) is eligible now instead of waiting out the skew; the next attempt
rewrites the stamp. The WATCHDOG_NOTICE_NOW_MS env var is deleted: the reader
reads Date.now(), and tests fix it with a --import preload (tests/fake-clock.mjs).
The unknown-entry tests now rerun far past the backoff so a retried unknown fails.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 02:19:01 +02:00
Meta Vens
69e12e3867 Watchdog notice reader: a failed send is retried forever with capped backoff
Ruling notice-retry-policy. The five-attempt cap and its terminal
"exhausted" state are gone. A failed entry is eligible again once
min(2^(attempts-1), 60) minutes have passed since its last journal
update; a run inside the delay skips it without spawning the bridge.
Every attempt keeps the same nonce. The exit status is non-zero while
any entry is unknown or has failed 3 or more times, and retries go on.
status shows nextEligibleAt for failed entries.

The clock is one now() that WATCHDOG_NOTICE_NOW_MS can override, like
the bridge timeout override, so tests drive the backoff without sleeping.
The process summary field "exhausted" is renamed "failing". A journal
entry whose updatedAt is not a date is now refused as
journal-entry-invalid, since the delay is measured from it.

All commits build.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 01:48:44 +02:00
Meta Vens
ff087a554b Watchdog notice reader: pin timeout, spawn-error, 5xx/429 and guard behaviour; say what non-2xx is
Tests only, plus wording. No change to what the reader or bridge does.

- A spawn timeout and a spawn error (ENOBUFS from a bridge that floods
  stdout) record unknown, are never re-posted, and block the closure.
  WATCHDOG_NOTICE_BRIDGE_TIMEOUT_MS overrides the 60 s timeout so the test
  reaches that branch; the default is unchanged.
- A 500/502/503/429 answer to the message POST exits 75 from the bridge, and
  through the reader is retried with the same nonce until it completes.
- allowed_mentions {parse: []} is asserted in the posted body; status exits
  non-zero while an entry is unknown and zero when none is.
- The bridge comment and docs/watchdog-notice.md no longer call a non-2xx
  answer "definite": it is retried with the same nonce, relying on
  enforce_nonce inside Discord's window, and may double-send if Discord acted
  on a 5xx outside it.

Builds. Two tests fail on Windows (SIGKILL status), as before; they pass on
Yggdrasil.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 22:56:27 +02:00
Meta Vens
1f001e11d2 Watchdog notice reader: the journal owns "sent"; only exit 75 is retried
Fix batch for Soul pass s1 (spec r3):
- Delete prune-on-absence and its test. Absence from Idunn's store no longer
  deletes a journal entry, so an empty or restored store never re-sends.
- discord-dm exits 75 only when no message can have been sent (arguments,
  token, DM channel open, non-2xx on the message POST). The reader records
  failed for 75 only; any other non-success without a message id is unknown
  and is never re-posted.
- Subject grammar is Idunn's require_id; the notice puts it in backticks.
- Times are bounded to the Date range; notice text is built before the
  running entry is written.

Builds and passes on Linux. On Windows the two tests that SIGKILL the reader
cannot pass (process.kill does not deliver a signal there).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 21:54:23 +02:00
Meta Vens
417454c28f Watchdog notice reader: Idunn incidents become owner DMs through Bifrost's own journal
tools/watchdog-notice.mjs is a one-shot reader. It reads Idunn's incident
store unlocked with SingleFileMessagePackBackingStore.pullAll, sends one opening
and one closing DM per incident through bifrost-bridge.mjs, and keeps a
bifrost.watchdog_notice_execution.v1 journal: a running entry becomes unknown
and is never re-posted, a failed one is retried with the same nonce up to five
times, terminal entries are pruned once Idunn retires the incident. The exit
status is the delivery-failure signal.

discord-dm accepts --nonce (at most 25 chars) and sends nonce with
enforce_nonce so a retry inside Discord's window returns the original message.

The tests run the CLI against the store bytes Idunn wrote (fixture from
GameCult/Idunn 7f7528b3) with a counting bridge double, and once through the
real bridge with fetch stubbed. docs/watchdog-notice.md states the CultLib
>= 8cb3b728 floor.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 21:15:18 +02:00
Meta Vens
8b9ab65b3f Delete Epiphany operator bridge 2026-08-22 06:16:39 +02:00
Meta Vens
548dd9397f Own native Persona Discord transport 2026-07-22 00:34:04 +01:00
Meta Vens
671168fefc Sign Persona feedback provider health 2026-07-19 21:41:50 +01:00
Meta Vens
6491f449cf Unify Epiphany operator request v1 2026-07-19 18:43:49 +01:00
Meta Vens
dabf7aa320 Align Epiphany operator bridge v1 2026-07-19 15:09:26 +01:00
Meta Vens
e0e612c69c Complete authenticated Epiphany operator bridge 2026-07-19 13:12:04 +01:00
Meta Vens
82dd058d42 Add signed Epiphany operator admission boundary 2026-07-19 12:00:50 +01:00
Meta Vens
c65cbfa527 Gate organizational Persona feedback 2026-07-18 20:32:10 +01:00
Meta Vens
cde3a78874 Move public crossings onto typed Bifrost transport 2026-07-15 22:16:07 +01:00
Meta Vens
2a382fb4a8 Publish Bifrost provider respect to Odin 2026-06-23 23:09:16 +01:00
Meta Vens
f1f91713ad Add generic outside-world bridge request 2026-06-22 15:49:11 +01:00
Meta Vens
675c475752 Gate future public bridge surfaces 2026-06-22 15:42:43 +01:00
Meta Vens
23c02be2a6 Add native Bifrost identity registration 2026-06-22 15:07:22 +01:00
Meta Vens
445c27978b Gate public bridge actions on Bifrost identity 2026-06-22 14:54:14 +01:00
Meta Vens
c533a7f98c Record Epiphany bridge provenance 2026-06-22 14:26:53 +01:00
Meta Vens
861dff3ed7 Add Stripe patronage checkout integration 2026-06-22 14:08:35 +01:00
Meta Vens
ba01b78d68 Fix Bifrost bridge runtime and fixture env isolation 2026-06-22 14:03:07 +01:00
Meta Vens
0c53f70e25 Require approved governance before github bridge 2026-06-17 12:27:22 +01:00
Meta Vens
a22092feff Require receipts for non-github bridge activity 2026-06-17 12:06:20 +01:00
Meta Vens
f32c9127a0 Validate bridge provenance against bifrost state 2026-06-17 11:38:34 +01:00
Meta Vens
f58a0cbc1b Validate runtime receipt linkage 2026-06-17 11:22:29 +01:00
Meta Vens
f702a708d9 Restrict runtime receipts to bridge token 2026-06-17 10:51:02 +01:00
Meta Vens
4468591d6c Tighten dispatched gh gate parsing 2026-06-17 10:34:38 +01:00
Meta Vens
1fdf6b8a87 Harden dispatched app-server sandbox defaults 2026-06-17 10:08:16 +01:00
Meta Vens
390dcf16d2 Scrub ambient GitHub auth from dispatch turns 2026-06-17 09:13:26 +01:00
Meta Vens
f0661a8995 Lock recovery hatches in dispatched turns 2026-06-17 08:38:21 +01:00
Meta Vens
6579c6004d Gate transport snapshot imports 2026-06-17 08:22:30 +01:00
Meta Vens
01bc5558af Gate dispatched GitHub CLI mutations 2026-06-17 07:53:38 +01:00
Meta Vens
d93267eb47 Enforce bridge-owned GitHub pushes in dispatch turns 2026-06-17 06:51:08 +01:00
Meta Vens
70f323c7db Use concrete GitHub comment receipts 2026-06-17 06:28:10 +01:00
Meta Vens
793a910886 Fail closed when agent receipts cannot be recorded 2026-06-17 05:56:25 +01:00