chore: typescript 7, test tier split, on-demand rule docs - #46
Open
zaxovaiko wants to merge 19 commits into
Open
chore: typescript 7, test tier split, on-demand rule docs#46zaxovaiko wants to merge 19 commits into
zaxovaiko wants to merge 19 commits into
Conversation
Files using createTestDb/createTestRedis are renamed *.int.test.ts and run in test:integration (docker pg + redis); test:unit is the infra-free suite and drops to ~4s. A new oss-module-shape/int-test-file-naming lint rule keeps the split from rotting. vite-tsconfig-paths makes @openora/core/* resolve to src in core's suites, so vitest related/watch see cross-module edges.
Appending a final newline changes a migration file's bytes, and drizzle hashes those bytes to decide what is already applied - an applied migration then re-runs and fails. db:setup:test gains a --fresh flag to recover a local test db that already recorded a stale hash.
…nd detail conventions.md drops from 236 to ~60 lines - philosophy, a hard Never list, a hard Always list, and a table routing to the file that covers the change. clean-architecture.md folds into docs/standards/module-structure.md. The nine docs/standards files live outside .rulesync, so they are read on demand instead of being injected into every agent context.
Core's suite flushes Redis logical DBs 0-15 (VITEST_POOL_ID % 16) while a bootTestApp e2e claims its own downward from 15, so running both concurrently lets one wipe the other's cache, streams and job queue mid-test. Verify runs them back to back instead.
tsc 7.0.2 miscompiles a ternary's numeric-literal branch in the linux CI build: analytics' `dropOffRate: previousStage ? rate(...) : 0` lands in dist as `: null`, so the funnel route serves null and the analytics e2e fails. The mac build of the same version emits 0 correctly, so it is platform-dependent - not worth carrying until it is understood upstream.
167ea67 made the first funnel stage return null and the contract nullable but left the e2e asserting 0. Nothing caught it because verify never ran this suite until test:integration joined the gate. Restores typescript 7.0.2 too - the null came from dev, not from the compiler.
zaxovaiko
marked this pull request as ready for review
July 31, 2026 12:32
zaxovaiko
requested review from
agniev-a-hub and
klaudia-blazyczek-blurify
as code owners
July 31, 2026 12:32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Tooling, test, and documentation improvements - no runtime product behavior changes. TypeScript 7, Docker-free unit tests, migration-byte safety, and on-demand rule docs improve the local development loop.
Why
Typechecks were slow, routine tests required infrastructure, and all agent guidance was loaded by default. More importantly, formatting generated Drizzle migrations could change their hashes and cause already-applied migrations to run again.
Alternatives considered
Risks
Existing local test databases with a stale migration hash need recreation through the fresh setup path. The e2e suite now runs after core integration tests to avoid their shared Redis logical databases colliding.