Files
backspace/packages/server/drizzle/meta/_journal.json
T
devsyncwrld bbb190cbda
OpenSSF Scorecard / Scorecard analysis (push) Waiting to run
CI / Build & test (Node 20) (push) Canceled after 0s
CI / Build & test (Node 24) (push) Canceled after 0s
CI / Build & test (push) Canceled after 0s
CodeQL / Analyze (javascript-typescript) (push) Canceled after 0s
Security / Secret scan (gitleaks) (push) Canceled after 0s
Security / Dependency scan (OSV-Scanner) (push) Canceled after 0s
Security / IaC/config scan (Trivy) (push) Canceled after 0s
Security / License compliance scan (Trivy) (push) Canceled after 0s
feat(audit): append-only audit log for spaces
Records who changed what, and is the mechanism statistics will read — one
event table rather than two logs that drift apart.

The table is deliberately generic (action + target + JSON metadata) so a new
action needs no migration. Writes never throw: a kick must not fail because
its log entry could not be written, since the kick already happened.

Leaving is recorded as a different action from being removed. The same route
serves both, and a log that conflates them misleads exactly when it matters.

Actor is nullable with ON DELETE SET NULL: the event outlives the account, and
a log that vanished with its actor would be worthless. Reads are gated on
MANAGE_SPACE rather than a new permission bit, which would default to nobody
until every role was re-edited. Paging uses the snowflake id, stable even for
two events in the same millisecond, and an action this build does not know
still renders a row.
2026-08-31 13:22:52 -03:00

104 lines
2.0 KiB
JSON

{
"version": "7",
"dialect": "sqlite",
"entries": [
{
"idx": 0,
"version": "6",
"when": 1777065939127,
"tag": "0000_lethal_wildside",
"breakpoints": true
},
{
"idx": 1,
"version": "6",
"when": 1777144927946,
"tag": "0001_complex_screwball",
"breakpoints": true
},
{
"idx": 2,
"version": "6",
"when": 1777196627239,
"tag": "0002_peer_approval_token",
"breakpoints": true
},
{
"idx": 3,
"version": "6",
"when": 1777229997210,
"tag": "0003_brave_inhumans",
"breakpoints": true
},
{
"idx": 4,
"version": "6",
"when": 1777395066272,
"tag": "0004_slim_mentallo",
"breakpoints": true
},
{
"idx": 5,
"version": "6",
"when": 1778428627458,
"tag": "0005_group_dm_metadata",
"breakpoints": true
},
{
"idx": 6,
"version": "6",
"when": 1782474063349,
"tag": "0006_spicy_scourge",
"breakpoints": true
},
{
"idx": 7,
"version": "6",
"when": 1782832912087,
"tag": "0007_nervous_orphan",
"breakpoints": true
},
{
"idx": 8,
"version": "6",
"when": 1782932926154,
"tag": "0008_cute_sebastian_shaw",
"breakpoints": true
},
{
"idx": 9,
"version": "6",
"when": 1783011477517,
"tag": "0009_uneven_red_ghost",
"breakpoints": true
},
{
"idx": 10,
"version": "6",
"when": 1783035334526,
"tag": "0010_broken_blazing_skull",
"breakpoints": true
},
{
"idx": 11,
"version": "6",
"when": 1788190305853,
"tag": "0011_lethal_bruce_banner",
"breakpoints": true
},
{
"idx": 12,
"version": "6",
"when": 1788192490711,
"tag": "0012_sour_pixie",
"breakpoints": true
},
{
"idx": 13,
"version": "6",
"when": 1788193162813,
"tag": "0013_fancy_betty_brant",
"breakpoints": true
}
]
}