Skip to content
Open
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
2739d56
feat(concord): route room reports and staff decisions through Coop
rabble Oct 14, 2026
ec85886
feat(moderation): show room evidence and independent delivery outcomes
rabble Oct 14, 2026
30e8eb3
test(moderation): use the configured type import convention
rabble Oct 14, 2026
2d85e77
fix(concord): preserve staff intent across retries and confirm guild …
rabble Oct 14, 2026
9a872e0
build(concord): restore source images and browser test dependencies
rabble Oct 14, 2026
fb030bb
fix(concord): validate browser dependencies and enforce moderation ch…
rabble Oct 14, 2026
98d73d0
fix(moderation): preserve room retries after JSON storage
rabble Oct 14, 2026
33c1a10
fix(concord): retain related room actions until delivery acceptance
dcadenas Oct 14, 2026
752ad65
fix(concord): reject invalid intent and preserve global retry recovery
dcadenas Oct 15, 2026
80483a8
fix(concord): preserve retries for ignored room reports
dcadenas Oct 15, 2026
3e795c8
fix(concord): validate staff authority before recording decisions
dcadenas Oct 15, 2026
668c149
fix(moderation): require reasons for room actions
rabble Oct 15, 2026
58a0576
test(moderation): reuse generated review fragments
rabble Oct 15, 2026
c96a10a
fix(mrt): preserve related action server scope through delivery
dcadenas Oct 15, 2026
38d26a9
fix(mrt): fail closed when room delivery configuration disappears
dcadenas Oct 15, 2026
4776be4
fix(moderation): keep room decision context out of global webhooks
dcadenas Oct 16, 2026
f346726
fix(mrt): retain unaccepted room decisions when dequeuing again
dcadenas Oct 16, 2026
d887f76
fix(mrt): resume recorded room intent when another reviewer dequeues
dcadenas Oct 16, 2026
86782b3
fix(concord): preserve the latest recorded membership decision
rabble Oct 17, 2026
94d8721
fix(concord): settle refused intents and run database checks in CI
rabble Oct 17, 2026
7226ac5
fix(concord): reject invalid membership configuration before recording
dcadenas Oct 18, 2026
3cfca02
fix(concord): recover fenced intents without relabeling legacy ops
dcadenas Oct 18, 2026
51886e5
fix(concord): flag cached legacy status for reconciliation
dcadenas Oct 18, 2026
3acf297
fix(concord): recover definitively rejected first attempts safely
NotThatKindOfDrLiz Oct 18, 2026
a497af2
test(concord): reuse generated mutation in retry transport coverage
NotThatKindOfDrLiz Oct 18, 2026
5772e7a
fix(concord): bind success cleanup to its room operation
dcadenas Oct 18, 2026
78f06e4
ci(concord): run room recovery and transport regressions
rabble Oct 18, 2026
65d915b
feat(concord): fence retired manual operations with durable receipts
rabble Oct 19, 2026
b433578
feat(concord): expose durable room recovery and lifecycle APIs
rabble Oct 19, 2026
f220c08
build(chat): prepare complete reviewed source artifact sets
rabble Oct 19, 2026
299254c
fix(concord): return current state in retirement conflicts
rabble Oct 19, 2026
1faab63
test(concord): exercise durable recovery in existing fixtures
rabble Oct 19, 2026
f2e1076
fix(build): verify OCI image archives and daemon handles
rabble Oct 19, 2026
b105738
fix(build): bind observed daemon handles to saved artifacts
rabble Oct 19, 2026
a23d660
fix(concord): expose send for registered unattempted receipts
dcadenas Oct 19, 2026
08c346e
fix(concord): prepare durable receipts before manual room actions
rabble Oct 19, 2026
c75930a
test: constrain valid datetime arbitrary to serializable dates
rabble Oct 19, 2026
e629c17
fix(concord): retain durable removal completion and retired closure
rabble Oct 19, 2026
53d6fc0
fix(concord): release matching retired browser receipts
dcadenas Oct 19, 2026
6a7be9f
fix(concord): stop recorded message removals before acceptance
rabble Oct 20, 2026
480cc24
test(concord): cover stopped removal settlement and lookup limits
rabble Oct 20, 2026
5a8975f
fix(concord): locate recorded recovery stops by primary decision
rabble Oct 20, 2026
1af6e0a
test(concord): mark asynchronous room resolver fixture explicitly
rabble Oct 20, 2026
5cb425a
fix(concord): document and derive audited MRT stop inputs
dcadenas Oct 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .github/workflows/apply_pr_checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,9 @@ jobs:
uses: actions/checkout@v4

- name: Check Divine Coop setup guards
run: bash divine/test-coop-setup-guards.sh
run: |
bash divine/test-coop-setup-guards.sh
bash divine/test-coop-setup-concord.sh

# jobs have to be defined in the root workflow file in order to be marked as
# 'Required Checks' in GitHub CI
Expand Down Expand Up @@ -176,6 +178,9 @@ jobs:
- name: Lint client
run: docker compose run --rm --quiet-pull client npm run lint

- name: Test room moderation UI
run: docker compose run --rm --quiet-pull client npm test -- --run src/components/ConcordEnforcementStatus.test.tsx src/components/DiscordGuildConfirmation.test.tsx src/components/roomOperation.test.ts

- name: Build client
run: docker compose run --rm --quiet-pull client npm run build

8 changes: 4 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# Docker's cache will let us skip installs when the dependencies haven't changed.
# We build on debian because it has fewer dependency issues than Alpine for our
# native modules, and we don't really care about the larger image size.
FROM node:24.14.1-bullseye-slim AS server_base
FROM node:24.14.1-bookworm-slim@sha256:b506e7321f176aae77317f99d67a24b272c1f09f1d10f1761f2773447d8da26c AS server_base
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends git && rm -rf /var/lib/apt/lists/*

Expand All @@ -19,9 +19,9 @@ FROM server_base AS build_backend
RUN npm run build

# make a shared layer that can be the base for worker and api images.
FROM node:24.14.1-bullseye-slim AS backend_base
FROM node:24.14.1-bookworm-slim@sha256:b506e7321f176aae77317f99d67a24b272c1f09f1d10f1761f2773447d8da26c AS backend_base
WORKDIR /app
RUN apt-get update && apt-get install dumb-init
RUN apt-get update && apt-get install -y --no-install-recommends dumb-init && rm -rf /var/lib/apt/lists/*
COPY --from=build_backend ["/app/package.json", "/app/package-lock.json", "./"]
RUN npm ci --omit=dev
COPY --from=build_backend /app/transpiled ./
Expand Down Expand Up @@ -49,7 +49,7 @@ CMD ["node", "bin/run-worker-or-job.js"]
# The K8s db-migrate Job provides the command at runtime (e.g.,
# npm run db:update -- --env staging --db api-server-pg
# ). Falls back to --help if no command is given.
FROM node:24.14.1-bullseye-slim AS build_migrator
FROM node:24.14.1-bookworm-slim@sha256:b506e7321f176aae77317f99d67a24b272c1f09f1d10f1761f2773447d8da26c AS build_migrator
WORKDIR /app
RUN groupadd -r migrator && useradd -r -g migrator -u 1001 migrator
ENV NPM_CONFIG_CACHE=/tmp/.npm
Expand Down
2 changes: 1 addition & 1 deletion client/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node:24.14.1-bullseye-slim AS client_base
FROM node:24.14.1-bookworm-slim@sha256:b506e7321f176aae77317f99d67a24b272c1f09f1d10f1761f2773447d8da26c AS client_base
WORKDIR /app

# ARG is used to get the release id into the ENV from the command line, and then
Expand Down
Loading
Loading