Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
314 commits
Select commit Hold shift + click to select a range
4f65057
test(persistence): limit supplemental RLS allowance to restrictive po…
seonghobae Sep 16, 2026
849fd8f
fix(persistence): respect restrictive RLS composition
seonghobae Sep 16, 2026
7215c51
test(persistence): reject restrictive alias spoofing
seonghobae Sep 16, 2026
17a72a7
fix(persistence): bind restrictive mode to policy header
seonghobae Sep 16, 2026
5e1867e
test(persistence): close remaining RLS evidence boundaries
seonghobae Sep 16, 2026
5ccce53
fix(persistence): reject qualified tenant-setting lookalikes
seonghobae Sep 16, 2026
dc4c678
fix(persistence): bind RLS evidence to policy statements
seonghobae Sep 16, 2026
523a2f7
test(persistence): reject RLS header tenant spoof
seonghobae Sep 16, 2026
ac299d5
fix(persistence): exclude RLS headers from tenant evidence
seonghobae Sep 16, 2026
9592d62
test(persistence): require relational tenant RLS binding
seonghobae Sep 16, 2026
8c4aaef
fix(persistence): bind tenant RLS identity to session key
seonghobae Sep 16, 2026
70967e9
test(persistence): reject weak explicit RLS write check
seonghobae Sep 17, 2026
d53453e
fix(persistence): bind every explicit RLS predicate
seonghobae Sep 17, 2026
edb9ccf
test(persistence): require RLS using for read-capable policies
seonghobae Sep 17, 2026
5f5b5e2
fix(persistence): enforce command-aware RLS predicates
seonghobae Sep 17, 2026
781d769
test(persistence): catch punctuation-adjacent RLS checks
seonghobae Sep 17, 2026
253628d
fix(persistence): parse RLS clauses at token boundaries
seonghobae Sep 17, 2026
1541e38
test(persistence): reject unbound RLS OR path
seonghobae Sep 17, 2026
0f601b4
fix(persistence): require tenant binding on each RLS OR path
seonghobae Sep 17, 2026
24de8e7
test(persistence): reject nested unbound RLS OR path
seonghobae Sep 17, 2026
222f45b
fix(persistence): parse RLS boolean guards structurally
seonghobae Sep 17, 2026
1d33374
test(persistence): reject tenant GUC fallback RLS bypass
seonghobae Sep 17, 2026
e6c359c
fix(persistence): bind RLS tenant to direct session value
seonghobae Sep 17, 2026
c8f2565
test(persistence): require permissive RLS coverage for restrictive po…
seonghobae Sep 17, 2026
46af418
fix(persistence): require permissive RLS coverage before restrictive …
seonghobae Sep 17, 2026
47354ec
test(persistence): bind restrictive RLS coverage to policy roles
seonghobae Sep 17, 2026
21a0188
test(persistence): make RLS role-liveness fixture executable
seonghobae Sep 17, 2026
f08d75c
fix(persistence): match restrictive RLS liveness by policy role
seonghobae Sep 17, 2026
81a4b97
test(persistence): reject malformed RLS policy role lists
seonghobae Sep 17, 2026
cbb11ee
fix(persistence): validate RLS policy role-list grammar
seonghobae Sep 17, 2026
ffc147a
test(persistence): reject RLS-bypassing runtime roles
seonghobae Sep 17, 2026
e561d27
fix(persistence): preserve runtime role RLS safety
seonghobae Sep 17, 2026
c6383c1
test(persistence): fail closed on malformed role lifecycle
seonghobae Sep 17, 2026
5de2342
fix(persistence): fail closed malformed role lifecycle
seonghobae Sep 17, 2026
b3b26b5
fix(persistence): restore user mapping regression assertion
seonghobae Sep 17, 2026
5474d33
test(persistence): cover malformed role lifecycle variants
seonghobae Sep 17, 2026
892f78b
test(persistence): reject dollar-like identifier bypass
seonghobae Sep 17, 2026
6e9d57b
fix(persistence): preserve dollar signs inside identifiers
seonghobae Sep 17, 2026
223bfbd
test(persistence): cover non-ASCII identifier dollar boundary
seonghobae Sep 17, 2026
5f3e555
test(persistence): preserve non-ascii dollar quote bodies
seonghobae Sep 17, 2026
866e9e3
fix(persistence): recognize non-ascii dollar quote tags
seonghobae Sep 17, 2026
d2ec8cc
test(persistence): reject non-identifier dollar quote tags
seonghobae Sep 17, 2026
a6e3f4f
fix(persistence): validate unicode dollar quote tags
seonghobae Sep 17, 2026
600c514
test(persistence): remove invalid unicode dollar tag assumption
seonghobae Sep 17, 2026
b7a891b
test(persistence): accept postgres high-bit dollar quote tags
seonghobae Sep 17, 2026
a16b919
fix(persistence): match postgres high-bit dollar tag grammar
seonghobae Sep 17, 2026
97b0bf5
test(persistence): reject malformed DROP ROLE lists
seonghobae Sep 17, 2026
391510c
fix(persistence): validate DROP ROLE separators
seonghobae Sep 17, 2026
8f0238d
test(persistence): reject empty CREATE TABLE elements
seonghobae Sep 17, 2026
f2e3549
fix(persistence): fail closed on empty table elements
seonghobae Sep 17, 2026
e380cae
test(persistence): preserve array constructor commas
seonghobae Sep 17, 2026
54a60d2
chore(persistence): park array-constructor RED for owner repair
seonghobae Sep 17, 2026
fcc509a
fix(persistence): preserve bracketed expression commas
seonghobae Sep 17, 2026
0228c0d
test(persistence): cover bracketed table expressions
seonghobae Sep 17, 2026
1d81562
test(persistence): reject truncated PostgreSQL identifier continuations
seonghobae Sep 17, 2026
c990f1e
fix(persistence): preserve PostgreSQL identifier continuations
seonghobae Sep 17, 2026
cde6312
test(persistence): cover identifier-prefixed RLS targets
seonghobae Sep 17, 2026
5284bf3
test(persistence): pin exact RLS enable targets
seonghobae Sep 17, 2026
0056932
docs(persistence): document migration core contracts
seonghobae Sep 17, 2026
e2e03b0
test(persistence): restore temporal fixture after rustdoc pass
seonghobae Sep 17, 2026
7eb03af
docs(persistence): document migration lexical contracts
seonghobae Sep 17, 2026
17986cf
docs(persistence): document tenant RLS parser contracts
seonghobae Sep 17, 2026
fc34f7f
test(persistence): expose table modifier validation bypass
seonghobae Sep 17, 2026
0cfca06
test(persistence): park table modifier RED pending parser repair
seonghobae Sep 17, 2026
6e186de
fix(persistence): canonicalize CREATE TABLE persistence modifiers
seonghobae Sep 17, 2026
1e6318d
test(persistence): prove valid table modifiers traverse shared contracts
seonghobae Sep 17, 2026
154d1c2
test(persistence): reject runtime SET ROLE RLS bypass paths
seonghobae Sep 17, 2026
c3dfaca
fix(persistence): model runtime SET ROLE membership safety
seonghobae Sep 17, 2026
108adf5
fix(persistence): enforce runtime SET ROLE isolation
seonghobae Sep 17, 2026
53b8514
fix(persistence): preserve final SET membership state
seonghobae Sep 17, 2026
50b88e4
test(persistence): pin final SET membership restoration
seonghobae Sep 17, 2026
840443c
test(persistence): reject quoted ON role membership spoof
seonghobae Sep 17, 2026
116ac77
fix(persistence): preserve quoted ON role membership evidence
seonghobae Sep 17, 2026
25ef96a
test(persistence): expose IN GROUP runtime membership bypass
seonghobae Sep 17, 2026
50ce1ab
fix(persistence): cover IN GROUP runtime membership alias
seonghobae Sep 17, 2026
216a114
test(persistence): pin IN GROUP across role aliases
seonghobae Sep 17, 2026
e7ee6ff
test(persistence): expose phantom SET revoke state bypass
seonghobae Sep 17, 2026
1849ff6
fix(persistence): ignore phantom SET option revokes
seonghobae Sep 17, 2026
670edfc
test(persistence): pin role identifier continuation aliasing
seonghobae Sep 17, 2026
29e9414
fix(persistence): preserve role identifier continuations
seonghobae Sep 17, 2026
52dbbdd
test(persistence): restore user mapping assertion
seonghobae Sep 17, 2026
91864ad
test(persistence): pin quoted role case identity
seonghobae Sep 17, 2026
1005128
test(persistence): pin quoted membership role identity
seonghobae Sep 17, 2026
798ee28
fix(persistence): fail closed on case-distinct quoted identifiers
seonghobae Sep 17, 2026
0f63d80
test(persistence): cover quoted grantee keyword positions
seonghobae Sep 17, 2026
b75729e
test(persistence): pin quoted membership keyword targets
seonghobae Sep 17, 2026
0d176c7
fix(persistence): parse membership role lists positionally
seonghobae Sep 17, 2026
6534214
test(persistence): reject admin self-escalation of SET ROLE
seonghobae Sep 17, 2026
e67caf9
fix(persistence): model admin membership self-escalation
seonghobae Sep 17, 2026
7600e5f
test(persistence): expose quoted role-specification alias
seonghobae Sep 17, 2026
a7a4783
fix(persistence): preserve role-specification quote identity
seonghobae Sep 17, 2026
465cf0d
test(persistence): expose inherited role privilege gap
seonghobae Sep 17, 2026
bf2d70f
fix(persistence): track inherited role privilege paths
seonghobae Sep 17, 2026
0dcfc4b
test(persistence): pin noninherit runtime membership safety
seonghobae Sep 17, 2026
a79b73c
test(persistence): RED preserve role membership grantor provenance
seonghobae Sep 17, 2026
e266fef
fix(persistence): track explicit role membership grantors independently
seonghobae Sep 17, 2026
f01d24b
fix(persistence): enforce grantor-aware runtime membership safety
seonghobae Sep 17, 2026
ddb97c8
test(persistence): pin grantor-specific membership recovery
seonghobae Sep 17, 2026
ea19db6
test(persistence): RED preserve quoted GRANTED BY identity
seonghobae Sep 17, 2026
3525435
fix(persistence): preserve grantor role-specification identity
seonghobae Sep 17, 2026
5ac8b35
fix(persistence): separate grantor identity projection from structura…
seonghobae Sep 17, 2026
731ef5c
chore(persistence): park grantor identity projection pending facade w…
seonghobae Sep 17, 2026
59b87c7
chore(persistence): restore grantor validation while identity repair …
seonghobae Sep 17, 2026
5388c80
test(persistence): park GRANTED BY identity RED pending facade wiring
seonghobae Sep 17, 2026
d6064dc
test(persistence): RED reattach quoted grantor identity contract
seonghobae Sep 17, 2026
a8a527c
fix(persistence): preserve quoted special-role grantor identity
seonghobae Sep 17, 2026
114b969
refactor(persistence): separate grantor-provenance validation copy
seonghobae Sep 17, 2026
9484471
fix(persistence): wire quoted grantor identity through shared normali…
seonghobae Sep 17, 2026
f4b4b22
fix(persistence): route grantor sentinels through core authority
seonghobae Sep 17, 2026
01263aa
fix(persistence): bound quoted-grantor projection to complete identif…
seonghobae Sep 17, 2026
7e4a255
test(persistence): RED preserve case-distinct quoted grantors
seonghobae Sep 17, 2026
f6d2236
test(persistence): park case-distinct quoted grantor RED
seonghobae Sep 17, 2026
c0a4405
test(persistence): RED preserve case-distinct quoted grantors
seonghobae Sep 17, 2026
c3de89b
fix(persistence): preserve case-distinct quoted grantor identity
seonghobae Sep 17, 2026
afded1e
test(persistence): RED preserve arbitrary quoted grantor identity
seonghobae Sep 17, 2026
1d22afb
test(persistence): park arbitrary quoted grantor RED
seonghobae Sep 17, 2026
87d87fc
fix(persistence): expose quoted grantor identity from shared lexer
seonghobae Sep 17, 2026
488adae
refactor(persistence): route grantor identity through shared lexer
seonghobae Sep 17, 2026
c107d7c
test(persistence): reattach arbitrary quoted grantor identity contract
seonghobae Sep 17, 2026
edbf903
test(persistence): RED preserve grantor identity across whitespace
seonghobae Sep 17, 2026
ab23f97
test(persistence): park grantor whitespace RED
seonghobae Sep 17, 2026
1b4ecbb
fix(persistence): preserve grantor slot across SQL whitespace
seonghobae Sep 17, 2026
49bbb74
test(persistence): expose SET ROLE grantor provenance collapse
seonghobae Sep 17, 2026
200adac
fix(persistence): model executor-relative grantor identity
seonghobae Sep 17, 2026
bdd3418
fix(persistence): project SET ROLE grantor provenance
seonghobae Sep 17, 2026
1df233a
docs(persistence): document executor grantor projection invariants
seonghobae Sep 17, 2026
070c67d
test(persistence): expose session authorization grantor collapse
seonghobae Sep 17, 2026
ec47a65
fix(persistence): track session authorization grantor identity
seonghobae Sep 17, 2026
d1b19b4
test(persistence): expose SET LOCAL grantor scope leak
seonghobae Sep 17, 2026
96fb22c
fix(persistence): restore SET LOCAL grantor transaction scope
seonghobae Sep 17, 2026
51d9d4a
test(persistence): expose rolled-back membership safety evidence
seonghobae Sep 17, 2026
7675c39
fix(persistence): project committed membership evidence
seonghobae Sep 17, 2026
26600c4
fix(persistence): filter rolled-back membership evidence
seonghobae Sep 17, 2026
043e8d7
test(persistence): expose rolled-back lifecycle and DDL evidence
seonghobae Sep 17, 2026
8d8a26a
test(persistence): park final-state transaction RED
seonghobae Sep 17, 2026
a954ccf
fix(persistence): honor transaction NO CHAIN scope
seonghobae Sep 17, 2026
88b5d02
fix(persistence): validate structural contracts on committed state
seonghobae Sep 17, 2026
e313a49
fix(persistence): fold role lifecycle on committed state
seonghobae Sep 17, 2026
6b8edb2
test(persistence): reattach transaction final-state contract
seonghobae Sep 17, 2026
fd822f1
test(persistence): expose rolled-back RLS policy evidence
seonghobae Sep 17, 2026
86c4d7e
fix(persistence): validate RLS composition on committed state
seonghobae Sep 17, 2026
e992ee9
test(persistence): prove committed RLS policy composition
seonghobae Sep 17, 2026
51439f3
test(persistence): expose rolled-back facade policy rejection
seonghobae Sep 17, 2026
608c7bd
fix(persistence): share transaction-control detection
seonghobae Sep 17, 2026
68b67bd
fix(persistence): expose shared transaction-control boundary
seonghobae Sep 17, 2026
7848bb2
fix(persistence): run facade RLS checks on committed state
seonghobae Sep 17, 2026
715b9a6
refactor(persistence): drop obsolete transaction detector
seonghobae Sep 17, 2026
48f6f64
refactor(persistence): retire transaction detector facade
seonghobae Sep 17, 2026
c9265e6
test(persistence): distinguish rolled-back and committed invalid policy
seonghobae Sep 17, 2026
78442ad
test(persistence): expose stale RLS table-state evidence
seonghobae Sep 17, 2026
a1d792a
fix(persistence): project final RLS table state
seonghobae Sep 17, 2026
c6f6ffb
fix(persistence): enforce final RLS enablement state
seonghobae Sep 17, 2026
fde1822
docs(persistence): explain final RLS state authority
seonghobae Sep 17, 2026
e9dde8f
test(persistence): bind RLS table state to transaction outcome
seonghobae Sep 17, 2026
bd8a39e
test(persistence): expose ALTER POLICY final-state bypass
seonghobae Sep 17, 2026
d65d02f
fix(persistence): fail closed on unmodeled ALTER POLICY state
seonghobae Sep 17, 2026
d30cf59
test(persistence): expose DROP POLICY final-state bypass
seonghobae Sep 17, 2026
f8e91e0
fix(persistence): fail closed on committed DROP POLICY
seonghobae Sep 17, 2026
c902e66
test(persistence): expose committed DROP TABLE final-state bypass (#567)
seonghobae Sep 18, 2026
3955d85
fix(persistence): fail closed on committed DROP TABLE (#567)
seonghobae Sep 18, 2026
71c3be4
test(persistence): require explicit DROP TABLE final-state error (#567)
seonghobae Sep 18, 2026
457698a
fix(persistence): name unsupported table final-state mutation (#567)
seonghobae Sep 18, 2026
9d8ebb3
fix(persistence): return explicit DROP TABLE final-state error (#567)
seonghobae Sep 18, 2026
fca9dea
test(persistence): pin ALTER TABLE final-state identity gap (#568)
seonghobae Sep 18, 2026
9e13e0a
fix(persistence): fail closed on committed table identity renames (#568)
seonghobae Sep 18, 2026
ed71a71
test(persistence): pin multi-action ALTER TABLE rename gap (#568)
seonghobae Sep 18, 2026
a8adc95
fix(persistence): scan every ALTER TABLE rename action (#568)
seonghobae Sep 18, 2026
0517e51
test(persistence): retire invalid multi-action RENAME fixture (#568)
seonghobae Sep 18, 2026
157b4d9
fix(persistence): restore PostgreSQL RENAME form boundary (#568)
seonghobae Sep 18, 2026
25cbb84
test(persistence): pin ALTER TABLE DROP final-state gap (#569)
seonghobae Sep 18, 2026
677cb7f
fix(persistence): fail closed on ALTER TABLE DROP actions (#569)
seonghobae Sep 18, 2026
2088b16
test(persistence): reject unsafe ALTER TABLE ADD COLUMN names (#570)
seonghobae Sep 18, 2026
e94f82d
fix(persistence): enforce ALTER TABLE ADD column naming (#570)
seonghobae Sep 18, 2026
21e609d
test(persistence): reject trigger final-state weakening (#571)
seonghobae Sep 18, 2026
bf418b9
fix(persistence): reject trigger final-state weakening (#571)
seonghobae Sep 18, 2026
b12c6b2
test(persistence): reject dropped trigger final state (#572)
seonghobae Sep 18, 2026
70fb4ea
fix(persistence): reject dropped trigger final state (#572)
seonghobae Sep 18, 2026
e07994e
test(persistence): expose append-only guard routine final-state bypass
seonghobae Sep 18, 2026
92aff89
fix(persistence): fail closed on append-only guard routine final-stat…
seonghobae Sep 18, 2026
b7dc763
test(persistence): cover DROP ROUTINE alias for append-only guard
seonghobae Sep 18, 2026
6a3f1ec
fix(persistence): cover PostgreSQL DROP ROUTINE guard removal
seonghobae Sep 18, 2026
29d0ec8
test(persistence): expose spaced guard-routine qualification bypass
seonghobae Sep 18, 2026
9a31382
fix(persistence): recognize spaced guard-routine qualification
seonghobae Sep 18, 2026
5530c31
test(persistence): expose retention guard final-state stale evidence
seonghobae Sep 18, 2026
240ee36
fix(persistence): preserve retention guard final state
seonghobae Sep 18, 2026
04bf7b7
test(persistence): reject cross-schema retention guard aliases
seonghobae Sep 18, 2026
1c30ecf
fix(persistence): bind protected guard routines to public schema
seonghobae Sep 18, 2026
ac4d1e1
test(persistence): expose replica trigger bypass #576
seonghobae Sep 18, 2026
aa451a5
test(persistence): map replica bypass to runtime safety #576
seonghobae Sep 18, 2026
e86def9
fix(persistence): reject committed replica trigger mode #576
seonghobae Sep 18, 2026
d95944c
test(persistence): expose set_config replica bypass #577
seonghobae Sep 18, 2026
831b6da
fix(persistence): reject set_config replica trigger mode #577
seonghobae Sep 18, 2026
ada5131
test(persistence): cover pg_catalog set_config #577
seonghobae Sep 18, 2026
5f541b6
fix(persistence): preserve pg_catalog set_config identity #577
seonghobae Sep 18, 2026
8327f93
fix(persistence): keep set_config function boundaries #577
seonghobae Sep 18, 2026
e5ca5f4
test(persistence): pin replica execution identity boundaries #576 #577
seonghobae Sep 18, 2026
bbfe821
test(persistence): expose pg_settings replication-role bypass
seonghobae Sep 18, 2026
dc73afb
fix(persistence): reject pg_settings replication-role bypass
seonghobae Sep 18, 2026
b613461
test(persistence): cover pg_settings alias execution bypass
seonghobae Sep 18, 2026
19cea5d
fix(persistence): cover pg_settings aliases and ONLY forms
seonghobae Sep 18, 2026
39152c1
test(persistence): expose CTE pg_settings execution bypass
seonghobae Sep 18, 2026
f8055c2
fix(persistence): cover CTE pg_settings execution mutations
seonghobae Sep 18, 2026
5f2ddc4
test(persistence): expose nested WHERE pg_settings bypass
seonghobae Sep 18, 2026
466c088
fix(persistence): bind pg_settings WHERE at top level
seonghobae Sep 18, 2026
79159f6
test(persistence): expose dynamic set_config replication-role bypass
seonghobae Sep 18, 2026
538b7a7
fix(persistence): fail closed on dynamic set_config replication values
seonghobae Sep 18, 2026
1cbe828
test(persistence): expose named set_config replication-role bypass
seonghobae Sep 18, 2026
5c50574
fix(persistence): fold named set_config arguments into execution guard
seonghobae Sep 18, 2026
81d7585
test(persistence): expose dynamic set_config setting-name bypass
seonghobae Sep 18, 2026
cb63e74
fix(persistence): fail closed on dynamic set_config setting names
seonghobae Sep 18, 2026
c9f9f38
test(persistence): expose adjacent-string set_config target bypass
seonghobae Sep 18, 2026
f241adc
fix(persistence): fail closed on compacted adjacent setting-name lite…
seonghobae Sep 18, 2026
e52c9b4
test(persistence): expose pg_settings predicate targeting gap (#581)
seonghobae Sep 18, 2026
68ffc8a
fix(persistence): fail closed on unproven pg_settings predicates (#581)
seonghobae Sep 18, 2026
9522f8a
fix(persistence): avoid borrowed predicate closure in #581 repair
seonghobae Sep 18, 2026
08fa131
test(persistence): expose committed DO execution-context bypass
seonghobae Sep 18, 2026
92a4df6
fix(persistence): fail closed on committed opaque DO execution
seonghobae Sep 18, 2026
8d6154f
test(persistence): expose committed CALL execution-context bypass
seonghobae Sep 18, 2026
5ff180f
fix(persistence): fail closed on committed procedure calls
seonghobae Sep 18, 2026
c8c0709
test(persistence): cover pg_settings row assignment bypass
seonghobae Sep 18, 2026
1afba08
fix(persistence): recognize pg_settings row assignments
seonghobae Sep 18, 2026
c7c4cb2
test(persistence): expose Unicode escaped identifier bypass #585
seonghobae Sep 18, 2026
da359c5
test(persistence): cover Unicode identifier UESCAPE form #585
seonghobae Sep 18, 2026
401e9fb
test(persistence): preserve unrelated Unicode relation control #585
seonghobae Sep 18, 2026
8a2c584
fix(persistence): bound Unicode escaped pg_settings targets #585
seonghobae Sep 18, 2026
33f842c
test(persistence): expose preserved UESCAPE atom bypass #585
seonghobae Sep 18, 2026
5e9f279
fix(persistence): consume preserved UESCAPE atom #585
seonghobae Sep 18, 2026
b4a9442
test(persistence): cover Unicode schema alias and column bypasses #585
seonghobae Sep 18, 2026
1880e78
fix(persistence): bound Unicode escaped schema alias and columns #585
seonghobae Sep 18, 2026
aa451a6
test(persistence): expose Unicode SET parameter bypass (#586)
seonghobae Sep 18, 2026
7f7a8d8
fix(persistence): guard Unicode SET parameter identity (#586)
seonghobae Sep 18, 2026
8cead20
test(persistence): expose Unicode set_config identity bypass
seonghobae Sep 18, 2026
6de2b13
fix(persistence): bound Unicode set_config identity
seonghobae Sep 18, 2026
9b47d91
test(persistence): harden Unicode set_config identity controls
seonghobae Sep 18, 2026
0790db3
fix(persistence): accept masked UESCAPE projection
seonghobae Sep 18, 2026
9fdd078
test(persistence): expose persistent replica login-default bypass
seonghobae Sep 18, 2026
7cf0f42
fix(persistence): reject persistent replica login defaults
seonghobae Sep 18, 2026
d1088e7
test(persistence): cover ALTER USER replica defaults
seonghobae Sep 18, 2026
8c2d868
fix(persistence): include ALTER USER login-default alias
seonghobae Sep 18, 2026
6473562
test(persistence): expose Unicode persistent default bypass
seonghobae Sep 18, 2026
f4e2aab
test(persistence): cover Unicode reset defaults
seonghobae Sep 18, 2026
41f9cb4
fix(persistence): bind Unicode persistent defaults
seonghobae Sep 18, 2026
5e356d6
test(persistence): preserve Unicode named special roles
seonghobae Sep 18, 2026
6583ac5
fix(persistence): preserve Unicode named role identity
seonghobae Sep 18, 2026
49e4000
test(persistence): expose whitespace-qualified RLS state aliasing
seonghobae Sep 18, 2026
156b873
test(persistence): cover adjacent qualified RLS target alias
seonghobae Sep 18, 2026
2279ede
fix(persistence): fail closed on qualified RLS targets
seonghobae Sep 18, 2026
b741bca
test(persistence): expose ALTER TABLE SET SCHEMA stale identity
seonghobae Sep 18, 2026
2e3c57b
revert(test): retire unsupported SET SCHEMA hypothesis
seonghobae Sep 18, 2026
0fa4b71
merge(foundation): inherit #538 CodeQL cache-boundary repair
seonghobae Sep 18, 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: 7 additions & 0 deletions crates/persistence_postgres/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,8 @@ pub enum MigrationContractError {
MissingTemporalColumns,
/// Embedded or supplied migration SQL was empty or unreadable.
EmptyMigrationSql,
/// A committed table mutation requires final-state semantics the bounded validator does not yet own.
UnsupportedTableFinalStateMutation,
/// Tenant RLS was declared without enabling FORCE RLS on a table.
MissingRlsEnable,
/// Tenant RLS was declared without a multi-word isolation policy.
Expand All @@ -150,6 +152,7 @@ impl fmt::Display for MigrationContractError {
Self::MissingTenantBoundary => "missing tenant boundary column",
Self::MissingTemporalColumns => "missing temporal columns",
Self::EmptyMigrationSql => "empty migration sql",
Self::UnsupportedTableFinalStateMutation => "unsupported table final-state mutation",
Self::MissingRlsEnable => "missing row level security enable",
Self::MissingRlsPolicy => "missing tenant isolation policy",
Self::MissingAppRuntimeRole => "missing application runtime role",
Expand Down Expand Up @@ -296,6 +299,10 @@ mod tests {
MigrationContractError::EmptyMigrationSql.to_string(),
"empty migration sql"
);
assert_eq!(
MigrationContractError::UnsupportedTableFinalStateMutation.to_string(),
"unsupported table final-state mutation"
);
assert_eq!(
MigrationContractError::MissingRlsEnable.to_string(),
"missing row level security enable"
Expand Down
Loading