Skip to content

feat(i18n): add owned Similar VOC translation draft - #1127

Draft
seonghobae wants to merge 43 commits into
feat/i18n-versioned-translation-ledgerfrom
codex/similar-voc-translation-ledger-20260924
Draft

seonghobae wants to merge 43 commits into
feat/i18n-versioned-translation-ledgerfrom
codex/similar-voc-translation-ledger-20260924

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Current authority

  • parent owner: feat: establish versioned UI translation ledger foundation #929 feat/i18n-versioned-translation-ledger@f076fa46976b2f68942a6e066cdbcf8895ba16f4
  • exact head: 6e5ba4773e5f21bafd7437986ec4b43bf5907639
  • ancestry: 43 ahead / 0 behind, exact merge-base = current parent owner head
  • state: open / Draft / mechanically mergeable; no auto-merge
  • owner boundary: PostgreSQL-authoritative LineageWeave presentation copy only; no ontology labels, VOC semantic truth, similarity adjudication, auth logic, or SimilarVocPanel source ownership moves into this PR

Parent convergence

#929 added buyer-copy RED 44c6ccc4... and causal Customer Master action-copy repair f076fa46.... This child adopted that exact parent through ordinary non-force two-parent convergence 6e5ba4773e5f21bafd7437986ec4b43bf5907639. The inherited change is limited to Customer Master 0248 draft copy plus its regression; this child’s Similar VOC migration/rollback/test/ADR delta remains unchanged. No force push, destructive rebase, or parent-source duplication was used.

The parent-side language correction does not count as Similar VOC language review and does not alter any of this PR’s 23×8 candidate copy.

Retained Similar VOC concurrency finding

The Similar VOC seed had replayed with ownership receipt FOR UPDATE -> resource FOR UPDATE, while ordinary exact-owned root deletion obtains the root row before the ownership-retirement trigger. RED 718dcd793cc6da2be0c836217bd9c4eab27a4f8e reproduced the inverse lock edge; repair 2c350be6fe3fd702b0813feb947e05a06fe577ec keeps the ownership receipt as serialization point and makes root identity a plain MVCC read. Proposed ADR 0377 convergence remains at bfb4c8780e05fb53b78d96cf6762ea4fe1b6f462 in this ancestry.

The earlier exact-owned rollback provenance, blocked operator-copy recovery, durable retired no-resurrection marker, child-move single-writer correction, generic-layer rollback/reapply, reverse-order base rollback guard, and parent-current fixture convergence also remain intact.

Deliberate non-completion

The 23×8 Similar VOC strings remain review candidates and are not published. #1126 remains the single writer for the material UI consumer and must consume a reviewed/published owner contract after this owner path is admissible.

Exact-head Tests 36023673992 are skipped by Draft policy and are not acceptance evidence. No exact-head hosted real-PostgreSQL/full-suite GREEN, complete Security/SAST/CodeQL/Strix/model-review acceptance, independent Similar VOC language/product review, immutable publication/API consumption, CJK/text-expansion/font-fallback evidence, #1126 final browser/accessibility acceptance, or qualifying independent current-head APPROVED is established.

Keep Draft. Do not Ready-cycle to materialize checks, enable auto-merge, add wake commits, synthesize status, blind-rerun, self-approve, dismiss reviews, weaken gates, force-push, destructively rebase, publish, merge, or release.

@coderabbitai

coderabbitai Bot commented Sep 24, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current-head source review on 75fefc4e599f35fd7f24862ea0496d7c89717eb0: the owner-path delta is bounded to ADR-0362 presentation-copy authority, generic seed ownership/recovery, the Similar VOC v1 draft, and real-PostgreSQL contracts. The initial generic DELETE lookup was unsafe for blocked/pending rows because their resource_id is null; RED f0e79fd... and fix 2e673c1e... now resolve rollback provenance by immutable product/screen/version identity and require exact owned-resource equality before destructive deletion. Generic-layer recovery is separately guarded by RED 27e8d53... and rollback 057eb6ed..., which restores the pre-existing Customer Master owner lane only after dependent generic owners are gone. This is not an approval. Exact-head PostgreSQL/hosted execution, independent language/product review, publication, consumer/browser acceptance, parent-owner acceptance, and qualifying independent approval remain outstanding; keep Draft and do not Ready-cycle or arm auto-merge.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current-head source review on 714d828fa5ecfc85962737eb43cc374b476daa00: fresh review found that rollback provenance was enforced for the root resource but not for child-table mutations. Under rollback/0249_z_similar_voc_translation_draft.sql, a blocked operator-owned Similar VOC draft could still lose ui_translation_key/ui_translation_text rows because the generic child guard only recognized the forward seed migration key. RED 73c7397e... fixes the reproducer boundary; causal repair dde6ea34... now requires exact owned + matching resource_id for rollback-labelled child mutation and permits only DELETE, preserving the intended cascade while denying INSERT/UPDATE authority over reviewed copy. ADR 0377 converges at 714d828f.... This is not an approval. Exact-head PostgreSQL/hosted GREEN, language/product review, immutable publication/API consumption, #1126 consumer/browser acceptance, parent #929 acceptance, and qualifying independent approval remain outstanding; keep Draft and do not Ready-cycle or arm auto-merge.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current-head source review on 2d08963b46f57d106549296874bb4d8f4f925b7d: fresh review found an UPDATE provenance escape in the generic child guard. The predecessor resolved child ownership through NEW.resource_id for UPDATE, so a rollback-labelled statement could move a key/text row out of a blocked or owned resource into an unrelated resource with no seed-ownership row and make the guard return early. RED eaf25d06... fixes that realistic PostgreSQL boundary. Causal hardening cf14dc81... installs a source-first child UPDATE guard in sorted migration order before 0249_z_similar_voc_translation_draft.sql; 61378357... exercises the hardened migration and 86c6863d... pins replay ordering. ADR 0377 converges at this exact head. This is not an approval and not hosted GREEN: Tests 35961707502 are Draft-policy skipped, exact-head PostgreSQL/full-suite and required hosted security/static/model acceptance are not established, language/product review and immutable publication are absent, and no qualifying independent APPROVED review exists. Keep Draft; do not Ready-cycle or arm auto-merge.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current-head source review on 9f5a1e398f16767fc6095ef0004b200ed18f7e82: fresh review invalidated the predecessor child resource-move provenance repair as a duplicated owner boundary. Migration 0246 already rejects every ui_translation_key / ui_translation_text resource_id move through guard_ui_translation_child_mutation(), and the base ui_translation_*_mutation_guard fires before the later seed-ownership trigger by PostgreSQL's same-event trigger-name ordering. Correction RED 6ed44ea... pins that real boundary under rollback-labelled context and rejects a second seed-specific move migration; causal correction 8d220fbc... removes 0249_ui_translation_seed_ownership_generic_b.sql; ADR 0377 converges at this head and restores ADR 0362 as the single owner of child identity. Intermediate eaf25d06... / cf14dc81... / 61378357... / 86c6863d... remain ordinary history but are superseded as non-causal evidence. This is not an approval. Tests 35966319704 are Draft-policy skipped, only Devin Review/CodeRabbit statuses are currently successful, and exact-head PostgreSQL/full-suite, required security/static/model acceptance, language/product review, immutable publication/API consumption, #1126 browser acceptance, parent #929 acceptance, and qualifying independent approval remain outstanding. Keep Draft; do not Ready-cycle or arm auto-merge.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current-head source review on 260296705871eefd03219523dd9fe7cccc5aac4f: the child resource-move correction is now narrowed to the actual DDD boundary. Migration 0246 already makes resource_id immutable for both translation-key and translation-text children. PostgreSQL's alphabetical same-kind trigger order differs between the two tables here, but that does not create a move escape: an earlier seed guard may reject first; otherwise it returns the row and the ADR-0362 base mutation guard rejects the cross-resource move. RED 6ed44ea... pins the no-duplicate-owner invariant, causal correction 8d220fbc... removes the duplicate companion migration, coverage 0d598231... exercises both key and text orderings, and Proposed ADR 0377 converges at this head. Intermediate eaf25d06... / cf14dc81... / 61378357... / 86c6863d... remain ordinary history but are superseded as non-causal evidence. This is not an approval. Tests 35966812823 are Draft-policy skipped; current combined statuses expose Devin Review/CodeRabbit success only. Exact-head PostgreSQL/full-suite, required security/static/model acceptance, independent language/product review, immutable publication/API consumption, #1126 browser acceptance, parent #929 acceptance, and qualifying independent approval remain outstanding. Keep Draft; do not Ready-cycle or arm auto-merge.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current-head source review on c519138c54d3b68e52d1cda4cacdc0d64a9e74c8: fresh recovery review found that the generic ownership rollback used mere existence of lineageweave/similar-voc/v1 as a dependency, even when the seed receipt was blocked. In that state the resource predates the seed, resource_id on the receipt is NULL, and the seed owns no product data, so the predecessor made a failed deployment non-recoverable without deleting operator-owned copy. RED e9eb4699... exercises that real PostgreSQL recovery path with an operator-owned root+child and requires generic rollback to preserve both while restoring the Customer Master trigger lane. Causal fix df9a39e9... makes the ownership receipt the boundary: pending|blocked|retired NULL-resource receipts can be removed, while an owned receipt and any other generic owner still block shared-layer rollback. Proposed ADR 0377 converges at this head. This is not an approval and not hosted GREEN: Tests 35971931132 are Draft-policy skipped; exact-head PostgreSQL/full-suite, Security/SAST/CodeQL/Strix/model acceptance, independent language/product review, immutable publication/API consumption, #1126 browser acceptance, parent #929 acceptance, and qualifying independent approval remain outstanding. Keep Draft; do not Ready-cycle or arm auto-merge.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current-head source review on 9c35c477d9bed0acee7720d4e4737024dd7f0461: fresh replay review found that generic ownership rollback deleted retired Similar VOC receipts together with pending|blocked. That breaks the one-time seed invariant: retired is the durable no-resurrection marker created by ordinary product deletion, so deleting it during shared-trigger rollback lets a later forward reapply create a new pending reservation and reseed historical 23×8 copy. RED 12e48573... exercises materialize -> ordinary retire -> generic rollback -> generic reapply -> seed replay and requires the resource to remain absent with the receipt still retired. Causal fix 88601285... withdraws only pending|blocked, preserves valid retired NULL-resource history, and allows other generic retired markers to coexist with restoration of the Customer Master trigger lane. Proposed ADR 0377 converges at this head. This is not an approval. Tests 35977832957 are Draft-policy skipped (Full test suite 107562407767, frontend 107562438137); exact-head real-PostgreSQL/full-suite, required security/static/model acceptance, independent language/product review, immutable publication/API consumption, #1126 browser acceptance, parent #929 acceptance, and qualifying independent approval remain outstanding. Keep Draft; do not Ready-cycle or arm auto-merge.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current-head review: #1127 has ordinary/non-force converged on parent #929 314be833... via two-parent 5e28873...; current parent is the exact merge-base and the effective child delta remains the nine Similar VOC translation/provenance files. The newly inherited parent repair preserves Customer Master retired seed history and does not alter Similar VOC semantics. Exact-head Tests are Draft-policy skipped and publication/language/product/browser/security acceptance remains incomplete, so keep Draft; this COMMENT is not approval.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fresh recovery review found a valid stacked-rollback defect after parent #929's ownership rollback hardening. Exact Similar VOC draft rollback can legitimately remove the descendant ownership row while 0249_ui_translation_seed_ownership_generic.sql trigger/functions remain installed. On the predecessor, rollback/0247_z_customer_master_translation_seed_ownership.sql could then delete the final Customer Master pending reservation, see an empty ownership table, drop ui_translation_seed_ownership, and leave the generic triggers/functions live against a missing relation. RED 7a01cfbf3e892b2a8f86a5c395ee1ba88f9c32a2 reproduces that reverse-order recovery path on isolated PostgreSQL. Causal repair 200110f5a2677ba59c63be32867ef242cfd7e0f9 makes the base ownership rollback fail closed whenever any generic ownership function remains installed; 2c2d20f9ec28eb39f2448b7e7b7159859da94ed4 converges Proposed ADR 0377 on that reverse-dependency rule. The generic rollback still removes those functions and restores the Customer Master lane, after which the base rollback may proceed normally. This is a COMMENT review only, not approval. Exact-head hosted PostgreSQL/full-suite acceptance remains required and Draft must remain unchanged.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current-head review: reverse-order recovery defect is repaired by RED 7a01cfbf3e892b2a8f86a5c395ee1ba88f9c32a2 -> fail-closed base rollback 200110f5a2677ba59c63be32867ef242cfd7e0f9, with Proposed ADR 0377 converged at 2c2d20f9ec28eb39f2448b7e7b7159859da94ed4. A second evidence finding was also valid: the shared Similar VOC PostgreSQL fixture lagged parent #929 and omitted 0247_za ownership-TRUNCATE protection plus 0247_zz Customer Master replay protection. Structural RED 220bda0f92f09d1b230ce200371f59a605d63b15 -> current fix 4ae8b1d364deb2ac2fb04d7e1ada23b2e80eeece makes the seed/replay/collision/retirement/rollback scenarios apply the parent-current guard chain before migration 0249. Source review finds no reason to publish or Ready-cycle. This is COMMENT only, not approval; Tests 36005953967 are Draft-policy skipped and exact-head hosted PostgreSQL/full-suite plus required independent/security/language/product acceptance remain outstanding.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current-head review: after adopting parent #929's lock-order repair, the Similar VOC seed itself still took ownership -> root FOR UPDATE on replay while ordinary root deletion takes root -> ownership through the generic BEFORE DELETE guard. RED 718dcd79... reproduces that exact-owned replay/delete cycle on real PostgreSQL; causal fix 2c350be6... keeps the ownership receipt as the serialization point and changes the root identity check to a plain MVCC read. No copy bytes, publication state, UI source ownership, or semantic authority changed. Source-level evidence only; keep Draft and do not treat this comment as approval.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current-head review after ADR convergence: RED 718dcd79... and causal fix 2c350be6... remain the code repair; bfb4c878... only makes Proposed ADR 0377 code-current by recording the rejected ownership→root lock order, the ownership-receipt serialization decision, DDD invariant, and exact evidence. No product copy, runtime publication state, or UI source changed. Hosted PostgreSQL/full-suite acceptance and independent approval are still absent, so keep Draft. This is not an approval.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant