fix(data): retire legacy auth tables from clean bootstrap - #155
fix(data): retire legacy auth tables from clean bootstrap#155seonghobae wants to merge 7 commits into
Conversation
|
Warning Review limit reached
Next review available in: 52 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review |
|
Purpose
Execute issue #150 as a non-destructive first slice: stop creating abandoned local-auth tables in new default Docker PostgreSQL installations while preserving an explicit opt-in compatibility artifact for installations that still require the historical schema. Existing PostgreSQL volumes are intentionally not destructively migrated here.
Exact current identity
develop@622e5e6c3d534f230c390f10e3832efadfc01825;fix/retire-legacy-auth-bootstrap;50c7211dd1f80098ecec1069eebcedb8d4a5e96a;f65c9305cf2e6d2618ccfff6052bb7cade2f5b3b;Every old-head check/review is stale and does not transfer.
Consumer-inventory RCA
Protected source inspection finds
users,roles, anduser_rolescreated bydocker/postgres/init/01_schema.sql, but no shipped local authentication controller/runtime SQL path that requires them. Organization-wide public-code search did not find a separate public consumer. That narrows the likely blast radius but does not prove absence of private or external consumers, so silent DROP/rename is rejected.Chosen bounded remedy:
docker/postgres/compat/legacy_auth_tables.sqlpreserves the historical schema only as an explicit deprecated compatibility artifact outsidedocker/postgres/init/;TDD
Creation head
1adaa2bfda57411569b45b379ec4ebe1628219a9addedLegacyAuthBootstrapRetirementTestbefore the bootstrap/compatibility files changed. A later audit found the first repair still lacked authoritative recovery/compatibility evidence, soe89ef37720bf635d4e858301a523edf8ae5b50f6extended the test first to require an operator runbook and changelog contract.The branch then:
docker/postgres/compat/legacy_auth_tables.sqloutside the default init path;docs/data/legacy-auth-bootstrap-retirement.mddocumenting clean-install behavior, untouched existing volumes, explicit compatibility restoration, rollback/forward recovery, external-consumer uncertainty, and data-security boundaries;CHANGELOG.md.Remaining database-realism boundary
This PR deliberately does not claim that static SQL/source assertions prove a safe destructive migration of existing PostgreSQL volumes. Issue #150's full retirement acceptance requires private/external consumer inventory plus representative real-PostgreSQL upgrade/rollback or forward-recovery rehearsal before any future DROP/rename. Adding a new Flyway version here would collide with the active durable-job migration stack and create false sequencing authority, so it is rejected for this slice.
Current workflow evidence and source identity
All exposed aggregate workflows associated with exact source head
50c7211dd1f80098ecec1069eebcedb8d4a5e96acompleted successfully:31314123991: success;31314123965: success;31314123967: success;31314124017: success;31314123984: success;These aggregate greens are not accepted as literal-source proof under mightyETL's exact-source governance. CI macOS job
93246494460used ordinaryactions/checkoutwith no explicit source ref, fetchedf65c9305cf2e6d2618ccfff6052bb7cade2f5b3basrefs/remotes/pull/155/merge, and checked out that synthetic merge (Merge 50c7211... into 622e5e6...) before running the reactor. The job itself was healthy: it ranLegacyAuthBootstrapRetirementTest3/3 green, the etl-service suite reported 278 tests with zero failures/errors/skips, CDC reported 106/0/0/0, gateway 3/0/0/0, and the reactor finished BUILD SUCCESS. This is strong merged-tree compatibility evidence, but it cannot be relabeled literal-head source evidence.The same current CI log exposes an independent shared protected-base quality-gate defect: JaCoCo
report-durable-job-coverageloggedAnalyzed bundle 'etl-service' with 0 classes, andcheck-durable-job-coveragethen loggedAll coverage checks have been met.Therefore this CI success is also not valid 100% owned-production coverage evidence. Issue #162 records the RCA and acceptance contract; active Draft PR #164 repairs the filter semantics and adds a non-empty selected-class invariant. No #164 checks or future coverage results transfer to this PR after any head/base change.The current protected source-executing workflows predate #121's explicit source-head checkout controls. No qualifying independent non-author formal
APPROVEDreview exists on this exact head. Therefore this PR remains Draft and not merge-eligible even though aggregate workflows are green.Scope guard
Do not combine this PR with gateway #142, canonical documentation #149, licensing issue #151, #162/#164 coverage repair, or the durable-job stack. Do not treat the compatibility artifact as a supported authentication product or silently auto-create it at runtime. After literal-source and non-vacuous coverage controls integrate, rerun the unchanged head against the resulting protected base and regenerate every affected check/review; predecessor, synthetic-merge, and other-PR evidence does not transfer.