Commit graph Bifrost/src/Bifrost.Web/Program.cs
Author SHA1 Message Date
Meta Vens
464da6bd50 Tally export: every response under the route varies by Origin
UseConceptTallyCors replaces UseCors and appends Vary: Origin to every
response under the export route, preflights and 404s included, keeping any
Vary already set. A single-origin ASP.NET policy never adds it itself.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 21:46:51 +02:00
Meta Vens
624cfd1567 Concept tally export and its CORS policy move out of Program.cs
One owner for the route and the policy, so Stryker can mutate them: it
flags every mutant of Program.cs as a compile error (safe mode), which
left the export untested by mutation. Program.cs keeps UseCors and the
two registration calls.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 20:20:13 +02:00
Meta Vens
d13b808471 Public concept tally export with one-origin CORS
GET /public/concepts/{collection}/tallies returns per-live-subject up, down and
member counts only, anonymous, Cache-Control public max-age=60. CORS policy
ConceptTallies is built from ConceptVotes:AllowedOrigins, GET only, no
credentials, required on this route alone. Production startup refuses an
allowed origin that is not an exact https origin.

Not yet built or tested when committed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:59:51 +02:00
Meta Vens
3c135b8e67 Concept votes: subjects, appraisals, voter identity, network tag and their one writer
ConceptAppraisalService is the only appraisal writer; tallies are derived from
rows. VoterIdentity.For decides voter key and class; NetworkPrefix is the only
prefix computation (HMAC tag). NetworkTagSecret is required in production.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:31:43 +02:00
Meta Vens
2e0de9601c Trust loopback forwarded headers and pin the Data Protection key ring
UseForwardedHeaders runs first with KnownProxies exactly loopback and
ForwardLimit 1; Data Protection always uses application name "Bifrost";
the startup validator refuses production without DataProtection:KeysPath.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:26:38 +02:00
Meta Vens
cde3a78874 Move public crossings onto typed Bifrost transport 2026-07-15 22:16:07 +01:00
Meta Vens
bd3a5a974b Add project-scoped patronage checkout 2026-07-05 19:07:48 +01:00
Meta Vens
23c02be2a6 Add native Bifrost identity registration 2026-06-22 15:07:22 +01:00
Meta Vens
861dff3ed7 Add Stripe patronage checkout integration 2026-06-22 14:08:35 +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
cab9d22f78 Receipt governance activity in Bifrost 2026-06-17 05:21:29 +01:00
Meta Vens
118a3efc74 Receipt agent transport lifecycle in Bifrost 2026-06-17 04:49:22 +01:00
Meta Vens
2281b0e63d Gate GitHub bridge actions and receipt agent runs 2026-06-17 04:03:14 +01:00
Meta Vens
7354d482e8 Start Eve governance surface migration 2026-06-09 20:27:46 +01:00
Meta Vens
bb1b1056be Add Heimdall patron support intake 2026-06-09 17:16:27 +01:00
Meta Vens
ba09539561 Add patron support derived voting tiers 2026-06-09 16:28:30 +01:00
Meta Vens
53b8f9a9ab Add Heimdall Discord Patreon access 2026-06-08 21:04:51 +01:00
Meta Vens
f1823c2a59 Containerize Bifrost deployment 2026-05-20 19:07:45 +01:00
Meta Vens
3fd655e1f2 Implement alpha foundation workflow and GitHub sync 2026-04-22 09:50:31 +01:00
Meta Vens
7cbdb93639 Initial Scaffold 2026-04-21 20:08:49 +01:00