The Pool adapter was only syncing write hooks (Permissions, Tenancy) for
plural document operations (createDocuments, updateDocuments) but not
singular ones (createDocument, updateDocument). This caused permission
rows to never be inserted for single-document creates, making newly
created users invisible to subsequent queries on SQL databases.
Also removes stale PHPStan baseline entries and fixes redundant null
coalesce in FunctionCache.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When --release=yes, the Appwrite spec version is not needed since
the release flow uses the SDK version from config. This moves the
version prompt and validation behind a !$createRelease guard and
hoists the release block before the spec/SDK generation setup.
Revert auth types in Bulk/Upsert.php back to [AuthType::ADMIN, AuthType::KEY]
and remove duplicate query filter in Databases/XList.php that were accidentally
introduced during the 1.9.x merge.
https://claude.ai/code/session_01JLPDurUgyj7qViA8JqQFTH
remove duplicate inject('user') from XList in DocumentsDB/VectorsDB
- DocumentsDB and VectorsDB Transactions/Operations/Create.php were
missing ->inject('user') needed by parent action method
- DocumentsDB and VectorsDB Collections/Documents/XList.php had
duplicate ->inject('user') calls - removed the extra one
https://claude.ai/code/session_01JLPDurUgyj7qViA8JqQFTH
The parent action methods in Databases/Collections/Documents require a
User $user parameter, but 10 child classes in DocumentsDB (6) and
VectorsDB (4) were missing the ->inject('user') call in their
constructor inject chains. This caused fatal errors when those
endpoints were hit during E2E tests.
Files fixed:
- DocumentsDB: Delete, Get, Update, XList, Attribute/Increment, Attribute/Decrement
- VectorsDB: Delete, Get, Update, XList
https://claude.ai/code/session_01JLPDurUgyj7qViA8JqQFTH
Since setDocumentType('users', User::class) is registered on all
database instances, getDocument('users', ...) already returns User
instances. The new User($doc->getArrayCopy()) pattern was redundant
and could lose internal state managed by the database layer.
https://claude.ai/code/session_01JLPDurUgyj7qViA8JqQFTH