[E00-S03-T03] Migration ledger created #178
Closed
opened 2026-08-27 00:07:21 +00:00 by kpcto
·
18 comments
Labels
Clear labels
agent/analyst-drafted
agent/analyst-drafted
needs/human-decision
needs/human-decision
needs/security-review
needs/security-review
tier/t0
tier/t1
tier/t2
tier/t3
kind
bug
kind
bug
kind
epic
kind
epic
kind
initiative
EPPP programme initiative
kind
story
kind
story
kind
task
EPPP engineering card/task decomposed from a story
kind
toil
kind
toil
loop
1
loop
1
loop
2
loop
2
loop
3
loop
3
risk
agent-full
risk
agent-full
risk
human-gated
risk
human-gated
risk
human-only
risk
human-only
size
l
size
l
size
m
size
m
size
s
size
s
status
blocked
status
blocked
status
done
Workflow: Done
status
in-progress
status
in-progress
status
proposed
status
proposed
status
ready
status
ready
status
review
status
review
stream
checkout
stream
checkout
stream
onboarding
stream
onboarding
stream
platform
stream
platform
trivial — implementer only, auto-merge
standard — implementer + reviewer + tester
complex — security if triggered, human merge
critical — full chain + security, human merge
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Fabrika/PersonalBlog#178
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Intent
Create the migration ledger that records applied migrations.
Acceptance criteria
database-postgres-ledgerjob runstests/database-postgres-ledger.test.mjson every PR, so the ledger tests gate mergesExplicitly out of scope
Test plan
record(),has()/applied()reads, boundary re-export)database-postgres-ledgerjob runs the suite on every PRRollback note
database-postgres-ledgerCI job)Owning stream
platform
Risk quadrant
agent-full
status/readymay only be applied by a human maintainer.Reworking issue #178 acceptance criteria to resolve the security review findings on PR #392 (verdict:
request-changes, #issuecomment-2975).This comment marks rework start; the
rework-completecomment follows once the issue body is edited.Acceptance criteria reworked — security review findings on PR #392 resolved at the issue level.
I have reviewed the
.gitea/workflows/ci.ymlchange and explicitly sign off on the newdatabase-postgres-ledgermerge gate: it is additive (the four existing jobs are untouched), triggers arepull_request+push: mainonly (nopull_request_target), nosecrets:context, no${{ }}interpolation (staticrun:steps), same action majors already in the file, and a frozen-lockfile install. The ledger implementation itself is approve-quality: all runtime SQL values are bound parameters ($1), the only interpolated value is the compile-timeschema_migrationstable-name constant, andrecord()is idempotent (ON CONFLICT (version) DO NOTHING). I accept the new merge gate and its scope (now an explicit acceptance criterion per the analyst rework).