Root causes of the remaining 5 CI PG failures (and the hidden flaky set):
1. All PG-integration packages shared ONE database under parallel package
execution - migrations/seeds/truncates raced (nondeterministic failure
sets, locally and in CI).
Fix: RequireTestDatabaseURL/SkipIfNoTestDatabaseURL now derive a
per-package database (<base>_<pkgHash>, advisory-lock-guarded
CREATE); 9 raw-env straggler tests funnelled through the helpers;
db-package tests call it unqualified (no import cycle).
2. Approval-chain fixtures were not production-shaped: freezeReviewSnapshot
only honors head_snapshot_id, fake content hashes never froze a
snapshot, so ApproverApprove rejected with 'approved requires frozen
review_snapshot_id'. Errors were swallowed (_, _ =) hiding this.
Fix (ownership-respecting, arch-enforced):
- docrevision.SeedContentSnapshotForTest seeds the ledger tables it owns
- docgov GovernanceEngine.FreezeHeadSnapshotForTest freezes head/review
pointers on document_records (docgov-owned) and clears engine cache
- all four integration fixtures use the pair; swallowed errors checked
3. Fixed-name fixtures collide once a package shares one DB (projects
uq_projects_name_global): uniquified in projectinstance + server tests.
4. CAS/ctxmgr tests never bootstrapped migrations (relied on other packages
having migrated the shared DB): explicit RunMigrationsOnceForTest.
Verified: full parallel short suite = 75 packages, 0 failures against an
isolated throwaway PG. CI skip list removed - short tests fully required.
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.
Root causes of the remaining 5 CI PG failures (and the hidden flaky set): 1. All PG-integration packages shared ONE database under parallel package execution - migrations/seeds/truncates raced (nondeterministic failure sets, locally and in CI). Fix: RequireTestDatabaseURL/SkipIfNoTestDatabaseURL now derive a per-package database (<base>_<pkgHash>, advisory-lock-guarded CREATE); 9 raw-env straggler tests funnelled through the helpers; db-package tests call it unqualified (no import cycle). 2. Approval-chain fixtures were not production-shaped: freezeReviewSnapshot only honors head_snapshot_id, fake content hashes never froze a snapshot, so ApproverApprove rejected with 'approved requires frozen review_snapshot_id'. Errors were swallowed (_, _ =) hiding this. Fix (ownership-respecting, arch-enforced): - docrevision.SeedContentSnapshotForTest seeds the ledger tables it owns - docgov GovernanceEngine.FreezeHeadSnapshotForTest freezes head/review pointers on document_records (docgov-owned) and clears engine cache - all four integration fixtures use the pair; swallowed errors checked 3. Fixed-name fixtures collide once a package shares one DB (projects uq_projects_name_global): uniquified in projectinstance + server tests. 4. CAS/ctxmgr tests never bootstrapped migrations (relied on other packages having migrated the shared DB): explicit RunMigrationsOnceForTest. Verified: full parallel short suite = 75 packages, 0 failures against an isolated throwaway PG. CI skip list removed - short tests fully required.issue#2 收官批准:全量短测必需门禁首次全绿。