Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
244 commits
Select commit Hold shift + click to select a range
03fec91
docs(projects): plan the SQL expression literals project
wmadden-electric Sep 29, 2026
17caeb1
docs(projects): brief for the sql/expression data type slice
wmadden-electric Sep 29, 2026
f7a210e
The framework has one kind of data type authoring entry and one tagge…
wmadden-electric Sep 29, 2026
b7c92be
The SQL family defines the data type sql/expression
wmadden-electric Sep 29, 2026
503300c
Both SQL targets register sql/expression; the prefixed sql tags are r…
wmadden-electric Sep 29, 2026
5768564
@default stores a sql/expression value and reports the general cast c…
wmadden-electric Sep 29, 2026
212dd81
contract infer prints raw defaults through the tagged literal printer
wmadden-electric Sep 29, 2026
9ef4955
docs: sql is the tag of the data type sql/expression
wmadden-electric Sep 29, 2026
2d3629d
Record upgrade instructions for the sql/expression data type
wmadden-electric Sep 29, 2026
4720818
docs(projects): manual QA script and run for the sql/expression data …
wmadden-electric Sep 29, 2026
ce2f576
docs(projects): correct file and line references for the sql/expressi…
wmadden-electric Sep 29, 2026
3b2a587
docs(projects): slice 2a implemented
wmadden-electric Sep 29, 2026
92a9f3a
docs(projects): record the slice 2a review state
wmadden-electric Sep 29, 2026
353dc6b
docs(projects): record the slice 2a code review
wmadden-electric Sep 29, 2026
f768a4e
docs(projects): decisions on the slice 2a review findings
wmadden-electric Sep 30, 2026
206e8ca
docs(projects): A01 stops at contract infer, which does not read the …
wmadden-electric Sep 30, 2026
02c6e2e
The infer printer has no special case for the sql entry
wmadden-electric Sep 30, 2026
ba2d961
Rename PSL_DEFAULT_TYPE_INCOMPATIBLE to PSL_DEFAULT_LIST_EXPECTED
wmadden-electric Sep 30, 2026
2452519
Test the two cast refusals of @default and assert whole messages
wmadden-electric Sep 30, 2026
7b3e221
@default reads the sql/expression value, not the written body
wmadden-electric Sep 30, 2026
37d3335
readTaggedLiteral reads a tag; PSL_INVALID_DEFAULT_SQL sits beside it…
wmadden-electric Sep 30, 2026
8f58899
Slice 2a no longer points ahead to slice 2b
wmadden-electric Sep 30, 2026
2cbb418
sql/expression is the data type of a SQL expression
wmadden-electric Sep 30, 2026
6e4c5f1
ADR 129 and ADR 254: a tag names a data type; one prefix rule; body a…
wmadden-electric Sep 30, 2026
269b34a
Framework parser tests use postgis.geometry as the dotted tag
wmadden-electric Sep 30, 2026
c75af45
The shared data type code no longer says the family defines no data type
wmadden-electric Sep 30, 2026
6806e54
The SQL family refuses a data type that casts from sql/expression
wmadden-electric Sep 30, 2026
f3c8637
Say which commands raise CONTRACT.DATA_TYPE_CASTS_FROM_SQL_EXPRESSION
wmadden-electric Sep 30, 2026
f747b80
Test that each assembled SQL stack registers the family sql/expression
wmadden-electric Sep 30, 2026
0758b26
Test the targets own authoring entries again
wmadden-electric Sep 30, 2026
c14ff89
Read back a json default that contract infer prints in the double-quo…
wmadden-electric Sep 30, 2026
3d9ef85
Upgrade fragments: a detection pattern that finds every pg.sql, and t…
wmadden-electric Sep 30, 2026
ebb9ba2
The editor tooling doc and the contract-psl README tell body and text…
wmadden-electric Sep 30, 2026
d9583a7
docs(projects): manual QA run after the slice 2a review fixes
wmadden-electric Sep 30, 2026
1e5e956
docs(projects): list the new cast check in the design diagnostics table
wmadden-electric Sep 30, 2026
b8cbc6d
The operation preview test stack has a family descriptor
wmadden-electric Sep 30, 2026
581b340
docs(projects): status after the slice 2a review fixes
wmadden-electric Sep 30, 2026
273731b
The SQL family registers sql/expression itself
wmadden-electric Sep 30, 2026
54680fc
Docs and upgrade fragments: the family registers sql/expression
wmadden-electric Sep 30, 2026
d94c4db
docs(projects): the family registers sql/expression in the design, sp…
wmadden-electric Sep 30, 2026
77fa856
docs(projects): handover and the slice 2a review reports
wmadden-electric Sep 30, 2026
ce5dacd
Merge remote-tracking branch 'origin/main' into tml-3296-sql-expressi…
wmadden-electric Sep 30, 2026
5b5ce1b
fix(sql-contract): the stack lists its declared data types, and the s…
wmadden-electric Sep 30, 2026
d671f9a
docs(adr-254): say where the SQL family checks casts from sql/expression
wmadden-electric Sep 30, 2026
597a20c
refactor(framework-components): publish the error envelope from the s…
wmadden-electric Sep 30, 2026
3911ae5
docs: the json entry reads the text, and @default reports an unknown …
wmadden-electric Sep 30, 2026
7870e28
docs: the spec and the extension fragment match who registers sql/exp…
wmadden-electric Sep 30, 2026
0fbf1f6
test(integration): pin the tag order of an assembled SQL stack, and r…
wmadden-electric Sep 30, 2026
2142987
test(family-sql): give the operation preview stub stack declaredDataT…
wmadden-electric Sep 30, 2026
dd09d8a
docs(projects): the slice 2a round 2 reviews, the fixes brief and the…
wmadden-electric Sep 30, 2026
666c182
docs(projects): slices run only the integration test files they touch…
wmadden-electric Sep 30, 2026
16c6e91
docs(projects): slice 2a has pull request #30534
wmadden-electric Sep 30, 2026
5d20e81
docs(projects): the slice 2t implementer brief
wmadden-electric Sep 30, 2026
6ce7f89
feat(framework-components): the ADR 254 cast rule for one written val…
wmadden-electric Sep 30, 2026
24c9347
refactor: the canonical value of a tagged literal is its text, not it…
wmadden-electric Sep 30, 2026
1e47750
feat(psl-parser): readWrittenLiteral reads a PSL expression as a writ…
wmadden-electric Sep 30, 2026
0f3d47e
feat(psl-parser): dataTypeValue, an argument typed by a data type
wmadden-electric Sep 30, 2026
42b9fc4
feat: attribute spec contexts carry the stack's data types
wmadden-electric Sep 30, 2026
32837b1
fix(sql-contract-psl): @default reports cast-rule refusals at the wri…
wmadden-electric Sep 30, 2026
bcae07f
docs: dataTypeValue in ADR 231, data types on the spec context in ADR…
wmadden-electric Sep 30, 2026
55f5c11
docs(upgrade-instructions): arguments typed by a data type
wmadden-electric Sep 30, 2026
9072486
docs(projects): the slice 2t manual QA script and run
wmadden-electric Sep 30, 2026
9265882
docs(projects): slice 2t status
wmadden-electric Sep 30, 2026
3facad4
refactor(sql-contract-psl): @default reports an unknown tag through t…
wmadden-electric Sep 30, 2026
c294bfd
fix(psl-parser): oneOf keeps the diagnostics of the function the auth…
wmadden-electric Sep 30, 2026
3ac77e2
docs: the oneOf rule for a named function in ADR 231 and the design; …
wmadden-electric Sep 30, 2026
30a0d70
docs(projects): slice 2t findings decided and fixed
wmadden-electric Sep 30, 2026
e4ca38e
docs(projects): slice 2t reviews and the review-fixes brief
wmadden-electric Sep 30, 2026
e6c2815
refactor(sql-contract-psl): one field name, dataTypes, for a stack's …
wmadden-electric Sep 30, 2026
93d49f7
refactor(framework-components): the control stack and the source cont…
wmadden-electric Sep 30, 2026
d5117ef
refactor(psl-parser): readWrittenLiteral is readWrittenScalar, return…
wmadden-electric Sep 30, 2026
a2c75c6
refactor(sql-contract): the default SQL checks take text, not a body
wmadden-electric Sep 30, 2026
249c4d7
docs(framework-components): WrittenValue says the family's default re…
wmadden-electric Sep 30, 2026
cbd529f
feat(framework-components): one wording for a refusal of the cast rule
wmadden-electric Sep 30, 2026
f70a219
feat(psl-parser): dataTypeValue labels a tagless type by its forms an…
wmadden-electric Sep 30, 2026
87581a7
feat(sql-contract-psl): @default words cast-rule refusals through the…
wmadden-electric Sep 30, 2026
5929d57
refactor(sql-contract-psl): @default finds its value only as the posi…
wmadden-electric Sep 30, 2026
30a4523
refactor(sql-contract-psl): createSqlBinder requires the stack's data…
wmadden-electric Sep 30, 2026
980f83e
test(mongo-contract-psl): a wrong argument of an @@index field functi…
wmadden-electric Sep 30, 2026
1360f60
test(integration): dataTypeValue on the assembled Postgres and SQLite…
wmadden-electric Sep 30, 2026
4d7d7a6
docs(adrs): ADR 254 states the end state of value positions; ADR 231 …
wmadden-electric Sep 30, 2026
47db2ee
docs: the new refusal wording in the error reference and the upgrade …
wmadden-electric Sep 30, 2026
d60177a
docs(projects): slice 2t review fixes in the design, design notes, pl…
wmadden-electric Sep 30, 2026
b1c4499
docs(error-reference): the Prisma 7 reason for a list on a column wit…
wmadden-electric Sep 30, 2026
b90636f
docs(projects): slice 2t manual QA cases for the new wording, and the…
wmadden-electric Sep 30, 2026
63b30c5
Merge remote-tracking branch 'origin/main' into tml-3296-sql-expressi…
wmadden-electric Sep 30, 2026
68b7fa5
docs(projects): slice 2t review fixes status
wmadden-electric Sep 30, 2026
5ddec3c
test(integration): a date or time text the authoring entry refuses is…
wmadden-electric Sep 30, 2026
b9a099e
Merge branch 'tml-3296-sql-expression-data-type' into tml-3367-data-t…
wmadden-electric Sep 30, 2026
656249c
test(integration): a date or time text the column type's cast refuses…
wmadden-electric Sep 30, 2026
9f8bd38
Merge branch 'tml-3296-sql-expression-data-type' into tml-3367-data-t…
wmadden-electric Sep 30, 2026
ebf074e
docs(projects): slice 2t round 2 reviews and fixes brief
wmadden-electric Sep 30, 2026
5adf991
refactor(family-sql): the contract print path carries the data types …
wmadden-electric Sep 30, 2026
39bb27d
fix(sql-contract-psl): an element a list cast does not take is its ow…
wmadden-electric Sep 30, 2026
f1ab5ab
refactor(framework-components): describeRefusal takes guidance, what …
wmadden-electric Sep 30, 2026
6d361db
docs: carry-over names @default; ADR 254 future tense for typed calls…
wmadden-electric Sep 30, 2026
3494a37
docs(upgrade-instructions): @default messages change for extensions t…
wmadden-electric Sep 30, 2026
2d788c2
docs(projects): record the no-list-cast decision under A08
wmadden-electric Sep 30, 2026
9b21e77
docs(projects): slice 2t manual QA cases for an element a list cast d…
wmadden-electric Sep 30, 2026
08db958
docs(projects): slice 2t round 2 review fixes status
wmadden-electric Sep 30, 2026
ec26916
docs(projects): quote the old Prisma 7 message exactly in the round 2…
wmadden-electric Sep 30, 2026
609d320
docs(projects): slice 2t has pull request #30539
wmadden-electric Sep 30, 2026
7833c3d
docs(projects): slice 2b places brief for dispatches (a) and (b)
wmadden-electric Sep 30, 2026
65bfc09
feat(psl-parser): block spec contexts carry the stack's data types
wmadden-electric Sep 30, 2026
8c7b51c
A default on a column whose type nothing writes says to write a sql l…
wmadden-electric Sep 30, 2026
0e83ea5
refactor(psl-parser): attribute spec contexts carry defaultFunctionRe…
wmadden-electric Sep 30, 2026
1560661
feat(sql-contract): sqlTextReadsBack says whether a text prints as a …
wmadden-electric Sep 30, 2026
c2ff027
feat(psl-parser): dataTypeValue offers an exact rewrite only when it …
wmadden-electric Sep 30, 2026
a0dbcbd
feat(scripts): codemod that rewrites plain-string SQL in PSL as sql l…
wmadden-electric Sep 30, 2026
984720a
feat(sql-contract-psl): @@index and @@check take sql literals
wmadden-electric Sep 30, 2026
907dfcb
feat(target-postgres): @@fullTextIndex(where:) and policy predicates …
wmadden-electric Sep 30, 2026
2227335
Merge remote-tracking branch 'origin/main' into tml-3296-sql-expressi…
wmadden-electric Sep 30, 2026
f4cc10e
feat(target-postgres): contract infer and contract print write raw SQ…
wmadden-electric Sep 30, 2026
913b8ba
test(target-postgres): wire names are the same for a text and its can…
wmadden-electric Sep 30, 2026
fb8d474
Merge branch 'tml-3296-sql-expression-data-type' into tml-3367-data-t…
wmadden-electric Sep 30, 2026
3196bb9
refactor(sql-contract-psl): @default literal arms yield written scala…
wmadden-electric Sep 30, 2026
71d9e63
docs(error-reference): a default on a column whose type nothing write…
wmadden-electric Sep 30, 2026
f91b121
refactor(psl-parser): writtenList lives beside writtenScalar
wmadden-electric Sep 30, 2026
c50b808
chore(extension-supabase): regenerate the pack contract with sql lite…
wmadden-electric Sep 30, 2026
44817e0
chore: rewrite plain-string SQL in committed PSL fixtures as sql lite…
wmadden-electric Sep 30, 2026
0a1b971
test(adapter-postgres): RLS integration tests write policy predicates…
wmadden-electric Sep 30, 2026
ce5991c
test(integration): sql literals in inline PSL, infer assertions, and …
wmadden-electric Sep 30, 2026
caa1f38
docs(adr): ADR 255 block specs may depend on the stack's data types
wmadden-electric Sep 30, 2026
dee2c93
docs(upgrade): placeholder fragments for sql-expression-literals-psl
wmadden-electric Sep 30, 2026
30184e8
docs(projects): slice 2b design corrections and findings
wmadden-electric Sep 30, 2026
c0abc48
test(language-server): name the @@check snippet placeholder
wmadden-electric Sep 30, 2026
a2dc716
Merge remote-tracking branch 'origin/main' into tml-3367-data-type-value
wmadden-electric Sep 30, 2026
4fbb9df
docs(projects): slice 2b dispatches (a) and (b) status
wmadden-electric Sep 30, 2026
1b66c15
docs(projects): slice 2b dispatches (c) and (d) brief
wmadden-electric Sep 30, 2026
1940a65
feat(target-postgres): contract print refuses SQL a sql literal canno…
wmadden-electric Sep 30, 2026
2437389
docs(projects): decide slice 2b findings 1 and 2
wmadden-electric Sep 30, 2026
13e27e6
feat(language-server): colour tagged literals
wmadden-electric Sep 30, 2026
9931bbb
feat(language-server): complete sql literals where an argument takes …
wmadden-electric Sep 30, 2026
558f77e
docs(adr): ADR 260 records that raw SQL is a value of sql/expression
wmadden-electric Sep 30, 2026
738289a
docs: raw SQL is written as a sql literal in every place
wmadden-electric Sep 30, 2026
6287c89
docs(upgrade): sql-expression-literals-psl instructions and codemod
wmadden-electric Sep 30, 2026
0d43e33
docs(projects): slice 2b manual QA script and run
wmadden-electric Sep 30, 2026
b2abeba
docs(projects): slice 2b dispatches (c) and (d) status
wmadden-electric Sep 30, 2026
d951834
Merge branch 'tml-3367-data-type-value' into tml-3288-sql-expression-…
wmadden-electric Sep 30, 2026
67bed2f
docs(projects): record the two slice 1 items deferred beyond the project
wmadden-electric Sep 30, 2026
5f44720
docs(projects): slice 2b review and review fixes brief
wmadden-electric Sep 30, 2026
497209f
refactor(framework-components): one tag-agnostic read-back predicate,…
wmadden-electric Sep 30, 2026
4c90654
fix(target-postgres): the sql printer owns read-back; infer skips onl…
wmadden-electric Sep 30, 2026
90190cf
refactor(contract-psl): @default argument values carry a kind
wmadden-electric Sep 30, 2026
6a58f2c
refactor(contract-psl): the interpreter passes the spec context to ev…
wmadden-electric Sep 30, 2026
37c3962
refactor(psl-parser): one helper builds a block spec context
wmadden-electric Sep 30, 2026
6fab1b5
test(target-postgres): every plain-string argument is listed as SQL o…
wmadden-electric Sep 30, 2026
e9a8124
docs(projects): carry the shared data type registration over to slice 3
wmadden-electric Sep 30, 2026
ddc6f1f
refactor(contract-psl): createSqlBinder requires the default function…
wmadden-electric Sep 30, 2026
d5739ce
fix(codemods): rewrite-sql-strings skips // and /// comments
wmadden-electric Sep 30, 2026
fcaf9e4
test(target-postgres): pin what migration plan does when a stored tex…
wmadden-electric Sep 30, 2026
2d0cfa1
test(target-postgres): whole assertions for the print refusal and the…
wmadden-electric Sep 30, 2026
4efec97
docs: the infer skip, the plan after a canonical text, and ADR 260 en…
wmadden-electric Sep 30, 2026
e939a94
fix(contract-psl): export the @default arm value types so dependent d…
wmadden-electric Sep 30, 2026
8b193d9
docs(projects): slice 2b review fixes status
wmadden-electric Sep 30, 2026
affe419
docs(projects): record the upgrade coverage result
wmadden-electric Sep 30, 2026
1c31e7e
docs(projects): slice 1 briefs, reviews and status
wmadden-electric Sep 30, 2026
589b2b4
docs(projects): slice 2b round 2 reviews and fixes brief
wmadden-electric Sep 30, 2026
6551fba
fix(framework-components): canonicalization drops every blank line at…
wmadden-electric Sep 30, 2026
9f8cbed
test(target-postgres): pin that a map-named policy whose text becomes…
wmadden-electric Sep 30, 2026
99e5fa7
docs: the map-named policy replacement, what a skipped object needs, …
wmadden-electric Sep 30, 2026
c605bf6
refactor(contract-psl): name the @default function-call arm DefaultFu…
wmadden-electric Sep 30, 2026
eb1a62f
refactor(framework-components): export TaggedLiteralCanonicalization …
wmadden-electric Sep 30, 2026
9289eb9
refactor(psl-parser): add mapArg, and build writtenScalar, writtenLis…
wmadden-electric Sep 30, 2026
143d7c9
test(scripts): find the fragment copies of the codemod wherever the r…
wmadden-electric Sep 30, 2026
5eeb1cc
docs(upgrade-instructions): every blank line at the start and end of …
wmadden-electric Sep 30, 2026
bbe056e
docs(projects): slice 2b round 2 review fixes status
wmadden-electric Sep 30, 2026
2f65d5c
docs(projects): record the round 2 upgrade coverage result
wmadden-electric Sep 30, 2026
ed1df11
docs(projects): slice 2b has pull request #30550
wmadden-electric Sep 30, 2026
ff0a677
The Bash hook also blocks pnpm --filter e2e-tests test
wmadden-electric Sep 30, 2026
03715bd
Merge remote-tracking branch 'origin/main' into tml-3367-data-type-value
wmadden-electric Oct 1, 2026
8c168cc
Merge branch 'tml-3367-data-type-value' into tml-3288-sql-expression-…
wmadden-electric Oct 1, 2026
5b5a853
test: tests added on this branch use the types main changed
wmadden-electric Oct 1, 2026
f41fc35
Merge remote-tracking branch 'origin/main' into tml-3367-data-type-value
wmadden-electric Oct 1, 2026
a521b8b
Merge remote-tracking branch 'origin/main' into tml-3367-data-type-value
wmadden-electric Oct 1, 2026
ffad19f
Merge branch 'tml-3367-data-type-value' into tml-3288-sql-expression-…
wmadden-electric Oct 1, 2026
0a58490
fix(codemod): an attribute or policy written inside a string or sql l…
wmadden-electric Oct 1, 2026
d71858a
Merge remote-tracking branch 'origin/main' into tml-3367-data-type-value
wmadden-electric Oct 1, 2026
cb3e322
Merge branch 'tml-3367-data-type-value' into tml-3288-sql-expression-…
wmadden-electric Oct 1, 2026
43c4211
test: the rename-table journey fixtures write their policy predicate …
wmadden-electric Oct 1, 2026
27a009e
Merge remote-tracking branch 'origin/main' into tml-3367-data-type-value
wmadden-electric Oct 2, 2026
b0a2b7d
Merge branch 'tml-3367-data-type-value' into tml-3288-sql-expression-…
wmadden-electric Oct 2, 2026
525c70c
Merge remote-tracking branch 'origin/main' into tml-3367-data-type-value
wmadden-electric Oct 2, 2026
3c88c0a
Merge branch 'tml-3367-data-type-value' into tml-3288-sql-expression-…
wmadden-electric Oct 2, 2026
6606f7e
refactor(psl-parser): an argument type claims its shape; oneOf knows …
wmadden-electric Oct 5, 2026
19914bb
Merge branch 'tml-3367-data-type-value' into tml-3288-sql-expression-…
wmadden-electric Oct 5, 2026
75b9b9e
Merge remote-tracking branch 'origin/main' into tml-3367-data-type-value
wmadden-electric Oct 5, 2026
8d2301c
Merge branch 'tml-3367-data-type-value' into tml-3288-sql-expression-…
wmadden-electric Oct 5, 2026
36d0a0f
Merge main into tml-3367-data-type-value
wmadden-electric Oct 6, 2026
8874be3
Merge tml-3367-data-type-value into tml-3288-sql-expression-places
wmadden-electric Oct 6, 2026
f30e961
ADR 231 says why dataTypeValue exists: grammar is typed by shape, a d…
wmadden-electric Oct 6, 2026
c0bcf96
Brief for the 2t refusal wording change
wmadden-electric Oct 6, 2026
c99fc1f
Cast-rule refusals lead with what to write (TML-3367)
wmadden-electric Oct 6, 2026
d8b7ff1
Docs quote the refusals that lead with what to write (TML-3367)
wmadden-electric Oct 6, 2026
96cdb4a
ADR 231 and ADR 254 agree on which arguments are database values; nan…
wmadden-electric Oct 6, 2026
204432e
Brief and reviews for the 2t wording fixes
wmadden-electric Oct 6, 2026
8beb6e1
The framework decides the exact rewrite and compares written forms by…
wmadden-electric Oct 6, 2026
3e247cf
Integration tests check value typing per stack and that @default and …
wmadden-electric Oct 6, 2026
8d75caf
Docs say @default offers the exact rewrite too and quote the new not-…
wmadden-electric Oct 6, 2026
993d104
Status records the 2t wording review fixes
wmadden-electric Oct 6, 2026
9ba3938
Merge main into tml-3367-data-type-value
wmadden-electric Oct 6, 2026
74ecbf0
Round-two review fixes for the refusal wording (TML-3367)
wmadden-electric Oct 6, 2026
a241517
Merge tml-3367-data-type-value into tml-3288-sql-expression-places
wmadden-electric Oct 6, 2026
cfd8a3c
ADR 129, ADR 260 and the contract-psl README quote the new refusal wo…
wmadden-electric Oct 6, 2026
e260e81
Merge main into tml-3367-data-type-value
wmadden-electric Oct 6, 2026
673cefd
Merge main into tml-3367-data-type-value
wmadden-electric Oct 6, 2026
f6952cc
Merge branch 'main' into tml-3367-data-type-value
wmadden Oct 6, 2026
d5e0d00
Merge main into tml-3367-data-type-value
wmadden-electric Oct 6, 2026
62a0d11
Merge tml-3367-data-type-value into tml-3288-sql-expression-places
wmadden-electric Oct 6, 2026
1f78dae
Merge main into tml-3367-data-type-value
wmadden-electric Oct 6, 2026
96e1242
Merge main into tml-3367-data-type-value
wmadden-electric Oct 6, 2026
4dad1a9
Merge main into tml-3367-data-type-value
wmadden-electric Oct 6, 2026
e43e8e0
Merge tml-3367-data-type-value into tml-3288-sql-expression-places
wmadden-electric Oct 7, 2026
0ee6de4
ADR 267 is the number of 'Raw SQL is a value of the data type sql/exp…
wmadden-electric Oct 7, 2026
b16ff3d
Merge main into tml-3367-data-type-value
wmadden-electric Oct 7, 2026
c42ec98
Merge tml-3367-data-type-value into tml-3288-sql-expression-places
wmadden-electric Oct 7, 2026
7719580
Merge main into tml-3288-sql-expression-places
wmadden-electric Oct 7, 2026
7bf8825
docs(projects): handover 2026-10-07
wmadden-electric Oct 7, 2026
7fa9184
Merge main into tml-3288-sql-expression-places
wmadden-electric Oct 7, 2026
20f0af8
ADR 268 is the number of 'Raw SQL is a value of the data type sql/exp…
wmadden-electric Oct 7, 2026
f7e022d
Round 3 review brief covers the branch as it is after the second merg…
wmadden-electric Oct 7, 2026
c64973d
Round 3 reviews of slice 2b and the brief for their code fixes
wmadden-electric Oct 7, 2026
97e8eed
Test that block value completion and block keyword snippets receive t…
wmadden-electric Oct 7, 2026
dfe39da
Name the block spec factory test for what it checks and assert the da…
wmadden-electric Oct 7, 2026
787549a
Build block spec contexts in the Postgres tests with blockSpecContext…
wmadden-electric Oct 7, 2026
16cf7ef
Put an attribute on the commented line of the unclosed-backtick codem…
wmadden-electric Oct 7, 2026
440d83f
Say the sql text print refusal drops blank lines at the start or end,…
wmadden-electric Oct 7, 2026
532a4ac
ADR 268, ADR 129 and the ADR index say canonicalization renames nothi…
wmadden-electric Oct 7, 2026
32d2c15
The extension upgrade fragment describes BlockSpecContext as the code…
wmadden-electric Oct 7, 2026
f19b108
Docs say a policy's using completes sql, the print refusal drops blan…
wmadden-electric Oct 7, 2026
de541dd
The Data Contract subsystem doc describes tagged literals as values o…
wmadden-electric Oct 7, 2026
16f9384
Project docs record round 3, the SQLite json limit and the current re…
wmadden-electric Oct 7, 2026
af330dc
End the partial index, CHECK and withCheck texts of the sql literals …
wmadden-electric Oct 7, 2026
5c5c7d1
Move the test that a policy's using completes sql to an integration t…
wmadden-electric Oct 7, 2026
1e6660c
Round 3 fixes check and status
wmadden-electric Oct 7, 2026
f056701
Manual QA of slice 2b after the round 3 review fixes: every case matches
wmadden-electric Oct 7, 2026
f43a1cb
Merge main into tml-3288-sql-expression-places
wmadden-electric Oct 8, 2026
452b7c9
Give the canonical sql text planner test main's planner inputs and ex…
wmadden-electric Oct 8, 2026
2f87b86
Write the raw SQL of main's rename and delete statement journeys as s…
wmadden-electric Oct 8, 2026
3dc8f59
ADR 268 says a policy drop needs no --delete answer, since it loses n…
wmadden-electric Oct 8, 2026
cd1ba5c
Merge main into tml-3288-sql-expression-places
wmadden-electric Oct 8, 2026
f5264d1
Print a full-text index's where as a sql literal, after the read-back…
wmadden-electric Oct 8, 2026
e787f95
Write the raw SQL main added as sql literals and list @relation(index…
wmadden-electric Oct 8, 2026
a044872
docs(projects): handover 2026-10-08
wmadden-electric Oct 8, 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
16 changes: 16 additions & 0 deletions .claude/scripts/enforce-tools.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ import { text } from 'node:stream/consumers';
const input = JSON.parse(await text(process.stdin));
const command = input.tool_input?.command ?? '';

const FULL_SUITE_REASON =
'Never run the full integration or e2e suites locally; run the test files your change touches (pnpm test <paths> inside the package) and leave the full suites to CI';

const rules = [
{ pattern: /\bnpm(\s|$)/, reason: 'Use pnpm, not npm' },
{ pattern: /\bnpx(\s|$)/, reason: 'Use pnpm, not npx' },
Expand All @@ -20,6 +23,19 @@ const rules = [
pattern: /\bpnpm (exec )?vitest(\s|$)/,
reason: "Use 'pnpm test' instead of running vitest directly",
},
{
pattern: /\bpnpm (run )?test:(integration|e2e|all)(:agent)?(\s|$)/,
reason: FULL_SUITE_REASON,
},
{
pattern: /\bpnpm\s+(-r|--recursive|-w|--workspace-root|--filter\s+(integration-tests|e2e-tests))\s+(run\s+)?test(\s|$)/,
reason: FULL_SUITE_REASON,
},
{ pattern: /\bturbo run test(\s|$)/, reason: FULL_SUITE_REASON },
{
pattern: /test\/integration.*\bpnpm (run )?test\s*($|[;&|>)])/,
reason: FULL_SUITE_REASON,
},
];

for (const { pattern, reason } of rules) {
Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ This directory contains the primary documentation for the repository.
- [Scalar types](./reference/scalar-types.md) — every scalar type per target (PSL name, TS helper, codec, storage and application type) and a cross-target concept table with the Prisma 6/7 names
- [Integer representation types](./reference/integer-representation-types.md) — choosing `BigInt`, `BigIntNumber`, or `UnboundedInt` by target, storage, application value, and aggregate behavior
- [Aggregate descriptor guide](./reference/aggregate-descriptor-guide.md) — how a target or extension declares aggregate operations and their result codecs (`SqlAggregateDescriptor` on `types.aggregateDescriptors`)
- [PSL editor tooling for tagged literal defaults](./reference/psl-editor-tooling-tagged-literals.md) — what the language server, formatter and highlighting need for `` sql`...` `` and `` json`...` `` defaults, and what is not done yet
- [PSL editor tooling for tagged literals](./reference/psl-editor-tooling-tagged-literals.md) — what the language server, formatter and highlighting do for `` sql`...` `` and `` json`...` `` literals, and what is not done yet
- [TypeScript module settings for Prisma 8 projects](./reference/typescript-module-settings.md) — the `tsconfig.json` settings a Prisma 8 project needs, which fit which kind of project, and what `prisma orm init` writes
- [Naming model and result types](./reference/model-and-result-types.md) — `Models`, `Scalars`, `Shape`, and `ResultType` on ORM queries
- [Mongo Pipeline Builder](./reference/Mongo%20Pipeline%20Builder.md) — typed builder for MongoDB aggregation pipelines, reads, writes, and find-and-modify
Expand Down
5 changes: 3 additions & 2 deletions docs/architecture docs/ADR-INDEX.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,12 @@ This document provides a comprehensive index of all Architectural Decision Recor
| 249 | Central attribute-spec registry | Registers every model-level and field-level PSL attribute of both families in one place, keyed by level and name, as a spec *factory* over a framework-owned construction-time context (`AttributeSpecContext` / `FieldAttributeSpecContext`) — the uniform signature is what lets the language server invoke the same factories the interpreters run. `assembleAttributeSpecs` merges family built-ins with [ADR 236](adrs/ADR%20236%20-%20Target-contributed%20model%20attributes.md)'s model-attribute descriptors into frozen plain records and restores the factory types core erases (they return `AttributeSpec<never>`, because `refine` makes `Out` contravariant and `unknown` would reject every spec that refines). Registry keys drive unknown-attribute diagnostics at field and model level in both families; block attributes are declared on `AuthoringPslBlockDescriptor.attributes` and parsed by the kit. | [ADR 249 - Central attribute-spec registry.md](adrs/ADR%20249%20-%20Central%20attribute-spec%20registry.md) |
| 250 | Models and views are emitted from the contract | `contract.d.ts` gains a `Models` namespace (one member per model, `<ns>_<Model>`, plus `<ns>_Any<Base>` for each polymorphic base) and a type-only `models` constant; relations are typed as the related member with a phantom `RelationKeys` key so `Scalars<M>` names a default fetch's row and `Shape<M, Spec>` names an application data structure derived from the model, and both ORM collections carry `_row` so `ResultType` names any query's result. To-one nullability is a family hook (SQL reads foreign keys and column nullability; Mongo takes the nullable default); name collisions and non-identifier names are emitter errors | [ADR 250 - Models and views are emitted from the contract.md](adrs/ADR%20250%20-%20Models%20and%20views%20are%20emitted%20from%20the%20contract.md) |
| 253 | PSL red-root source ownership | A PSL parse registers the actual returned red document root with a named `SourceFile`; post-parse diagnostics resolve filenames from the node's owning root through `PslSources`, with no unnamed parse mode or singleton fallback. Output diagnostics may still serialize a `sourceId`, but it originates from `SourceFile.filename`; file-read errors and Prisma7 compatibility plumbing are explicit exceptions. | [ADR 253 - PSL red-root source ownership.md](adrs/ADR%20253%20-%20PSL%20red-root%20source%20ownership.md) |
| 254 | Data types and casts | A data type is the type of a value Prisma stores or passes to the database, most often a database type made first-class, registered per target or extension by id (`pg/int8`, `pg/jsonb`), owning the names the database writes and reports for it, its parameters with their bounds and rendering, its canonical contract form, and its casts from other types; a database type's data type is what the database stores; a codec is one representation of a data type and several may share one; a contract column stores its codec, its data type and its parameters, and no type name; a written value has a type of its own (a number takes the narrowest target integer type that holds it, so it never rounds; the `json` tag returns the JSON type) and is admitted when the column's type is its type or casts from it; enum members are references; `sql` is the tag of `sql/expression`, which the SQL family defines and registers, the one type a family registers; no family-level database types and no central convertibility rule. Replaces the PSL half of ADR 184 | [ADR 254 - Data types and casts.md](adrs/ADR%20254%20-%20Data%20types%20and%20casts.md) |
| 254 | Data types and casts | A data type is the type of a value Prisma stores or passes to the database, most often a database type made first-class, registered per target or extension by id (`pg/int8`, `pg/jsonb`), owning the names the database writes and reports for it, its parameters with their bounds and rendering, its canonical contract form, and its casts from other types; a database type's data type is what the database stores; a codec is one representation of a data type and several may share one; a contract column stores its codec, its data type and its parameters, and no type name; a written value has a type of its own (a number takes the narrowest target integer type that holds it, so it never rounds; the `json` tag returns the JSON type) and is admitted when the column's type is its type or casts from it; enum members are references; `sql` is the tag of `sql/expression`, which the SQL family defines and registers, the one type a family registers; a position with a fixed receiving type admits values through `dataTypeValue`; no family-level database types and no central convertibility rule. Replaces the PSL half of ADR 184 | [ADR 254 - Data types and casts.md](adrs/ADR%20254%20-%20Data%20types%20and%20casts.md) |
| 257 | Scalar types are named after the target on every surface | A scalar type's PSL name, TypeScript helper and codec id share one token taken from the codec id (`mongo/int32@1` → `Int32`, `field.int32()`), so a name says what the target stores; codec ids never rename. `Json` (the JSON-representable subset) and MongoDB's `Bson` (any BSON value) are the encoding-named exceptions. A renamed PSL name stays one release line as a deprecated alias that warns through the contract source's warning channel; a reserved mechanism covers a codec id that must change | [ADR 257 - Scalar types are named after the target on every surface.md](adrs/ADR%20257%20-%20Scalar%20types%20are%20named%20after%20the%20target%20on%20every%20surface.md) |
| 258 | List cardinality has independent container and element nullability | Nested list descriptors separate container and element nullability across SQL and Mongo, keep semantic nullability distinct from check waivers, and record the intentional legacy-list wire incompatibility and historical-snapshot upgrade obligations. Complements ADR 178's value-object cardinality model | [ADR 258 - List cardinality has independent container and element nullability.md](adrs/ADR%20258%20-%20List%20cardinality%20has%20independent%20container%20and%20element%20nullability.md) |
| 262 | Block specs bind top-level block values | A contributed top-level block declares its member-value grammar as a block spec built from the shared argument combinators — `structBlock` for closed key sets, `mapBlock` (with an optional bare-member sentinel) for arbitrary keys, `jsonValue()` for native JSON literals, `InferBlock` deriving the factory input type. Declarations are collected completely before any block is interpreted; only successful typed envelopes (`ParsedPslExtensionBlock`) are published and lowered, parsed AST is never stringified, and the print shape is constructed only by producers without an AST. SQL projects selected model references onto storage coordinates and lets factory outputs opt into destination placement via `pslPlacement`. Supersedes ADR 126's parameter-kind tables and descriptor-data validation. | [ADR 262 - Block specs bind top-level block values.md](adrs/ADR%20262%20-%20Block%20specs%20bind%20top-level%20block%20values.md) |
| 264 | A model names its storage verbatim, and a rename is an operation | A model names its table, or its MongoDB collection, exactly as the model is written, and a field names its column by its own name; a different storage name is always stated with `@@map` or `@map`. Changing a storage name renames existing storage: the author states it in a migration with `this.renameTable({ table, to })`, which also renames every object whose name the planner derives from the table name | [ADR 264 - A model names its storage verbatim, and a rename is an operation.md](adrs/ADR%20264%20-%20A%20model%20names%20its%20storage%20verbatim%2C%20and%20a%20rename%20is%20an%20operation.md) |
| 268 | Raw SQL is a value of the data type `sql/expression` | Every place that holds raw SQL (`@default`, `@@index(where:)`, `@@index(expression:)`, `@@fullTextIndex(where:)`, `@@check(expression:)`, a policy's `using` and `withCheck`) receives the data type `sql/expression`, which the SQL family defines and registers with the tag `sql` and from which nothing casts, so only a `sql` literal is admitted and a plain string is refused by the ADR 254 cast rule; specs declare the type with `dataTypeValue`; `@default` alone keeps checks on SQL text; one set of cast-rule codes; the TypeScript `sql` tag returns a `SqlExpression` value (planned) | [ADR 268 - Raw SQL is a value of the data type sql-expression.md](adrs/ADR%20268%20-%20Raw%20SQL%20is%20a%20value%20of%20the%20data%20type%20sql-expression.md) |

## Query System

Expand Down Expand Up @@ -144,7 +145,7 @@ This document provides a comprehensive index of all Architectural Decision Recor
| 118 | Bundle inclusion policy for packs | Establishes bundle inclusion policy and security constraints for packs | [ADR 118 - Bundle inclusion policy for packs.md](adrs/ADR%20118%20-%20Bundle%20inclusion%20policy%20for%20packs.md) |
| 121 | Contract.d.ts structure and relation typing | Complete specification for Tables, Models, and Relations namespaces with proper relation field typing | [ADR 121 - Contract.d.ts structure and relation typing.md](adrs/ADR%20121%20-%20Contract.d.ts%20structure%20and%20relation%20typing.md) |
| 126 | PSL top-level block SPI | Defines SPI for packs to register new top-level blocks (views, enums, etc.); its parameter value-kind tables and descriptor-data validation are superseded by [ADR 262](adrs/ADR%20262%20-%20Block%20specs%20bind%20top-level%20block%20values.md) | [ADR 126 - PSL top-level block SPI.md](adrs/ADR%20126%20-%20PSL%20top-level%20block%20SPI.md) |
| 129 | Tagged literals write values of data types | A qualified name followed by a string literal in backticks or quotes; the tag names the data type of the text; backtick strings only after a tag; one canonicalization for PSL and TypeScript; a tag is unprefixed when the family or a target owns its data type, by the rule in ADR 254; `sql` is the tag of the data type `sql/expression` and has no prefixed aliases; `` @default(sql`...`) `` is stored as the ordinary function-kind column default | [ADR 129 - Template-Tagged Literals for Extensions.md](adrs/ADR%20129%20-%20Template-Tagged%20Literals%20for%20Extensions.md) |
| 129 | Tagged literals write values of data types | A qualified name followed by a string literal in backticks or quotes; the tag names the data type of the text; backtick strings only after a tag; one canonicalization for PSL and TypeScript; a tag is unprefixed when the family or a target owns its data type, by the rule in ADR 254; `sql` is the tag of the data type `sql/expression` and has no prefixed aliases; `` @default(sql`...`) `` is stored as the ordinary function-kind column default; a position with a fixed data type checks the tag while parsing through `dataTypeValue`; `contract infer` prints the SQL of indexes, checks and policies as `sql` literals and skips an exact-named object whose text would not read back unchanged | [ADR 129 - Template-Tagged Literals for Extensions.md](adrs/ADR%20129%20-%20Template-Tagged%20Literals%20for%20Extensions.md) |
| 153 | Extension Package Naming Convention | Standardizes on `extension-*` prefix exclusively for extension pack npm names | [ADR 153 - Extension Package Naming Convention.md](adrs/ADR%20153%20-%20Extension%20Package%20Naming%20Convention.md) |
| 214 | Extension operator surface: namespaced replacement operators and the predicate/helper split | Pattern for extension operators whose codec output cannot back a framework built-in's wire semantics: declare zero of the relevant traits + ship namespaced replacements. Predicate operators register as column methods through the operation registry; non-predicate operators (sort comparators, SELECT-expression accessors) ship as free-standing helper functions. Cipherstash is the canonical worked example. | [ADR 214 - Extension operator surface namespaced replacement operators.md](adrs/ADR%20214%20-%20Extension%20operator%20surface%20namespaced%20replacement%20operators.md) |

Expand Down
Loading
Loading