hard-cut module manifests to v8 and add strict optional database.abi = 1
select one stable database service per module, with distinct attributed ABI-v1 executors
add ORM-neutral schema metadata plus a module-side Drizzle metadata helper
validate legacy and ABI-v1 schema paths in Core, Doctor, and modules:validate
document the one-slice template/package transition boundary
Type design
Module runtime definitions are discriminated by database: { abi: 1 }. The SDK gives ABI modules ModuleDatabaseExecutor and legacy v8 modules ModuleDatabase without exposing a union to module authors. Core rejects runtime/manifest discriminator mismatches.
All final gates passed. An initial saturated full-suite run had two unrelated 5-second import-safety timeout flakes; both passed immediately in isolation and the complete verify rerun passed.
Deliberate scope
The template manifest is v8 but remains in legacy database mode. Package transitional.databaseRuntime behavior, packageFormat, Signage, and rog-ekklesia-instance are unchanged.
## Summary
- hard-cut module manifests to v8 and add strict optional database.abi = 1
- select one stable database service per module, with distinct attributed ABI-v1 executors
- add ORM-neutral schema metadata plus a module-side Drizzle metadata helper
- validate legacy and ABI-v1 schema paths in Core, Doctor, and modules:validate
- document the one-slice template/package transition boundary
## Type design
Module runtime definitions are discriminated by database: { abi: 1 }. The SDK gives ABI modules ModuleDatabaseExecutor and legacy v8 modules ModuleDatabase without exposing a union to module authors. Core rejects runtime/manifest discriminator mismatches.
## Verification
- pnpm verify
- pnpm test:migrations:integration (15 files, 396 tests)
- pnpm infrastructure:config
- pnpm deploy:config
- pnpm deploy:smoke
- focused contracts, module SDK, module database, Core, API, and module package tests
All final gates passed. An initial saturated full-suite run had two unrelated 5-second import-safety timeout flakes; both passed immediately in isolation and the complete verify rerun passed.
## Deliberate scope
The template manifest is v8 but remains in legacy database mode. Package transitional.databaseRuntime behavior, packageFormat, Signage, and rog-ekklesia-instance are unchanged.
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.
Summary
Type design
Module runtime definitions are discriminated by database: { abi: 1 }. The SDK gives ABI modules ModuleDatabaseExecutor and legacy v8 modules ModuleDatabase without exposing a union to module authors. Core rejects runtime/manifest discriminator mismatches.
Verification
All final gates passed. An initial saturated full-suite run had two unrelated 5-second import-safety timeout flakes; both passed immediately in isolation and the complete verify rerun passed.
Deliberate scope
The template manifest is v8 but remains in legacy database mode. Package transitional.databaseRuntime behavior, packageFormat, Signage, and rog-ekklesia-instance are unchanged.