test(identity): bind data-rights ownership to recent authenticated session - #137
Merged
github-actions[bot] merged 4 commits intoAug 9, 2026
Merged
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
seonghobae
changed the base branch from
feat/data-rights-recent-auth-policy
to
main
August 9, 2026 18:09
seonghobae
marked this pull request as ready for review
August 9, 2026 18:56
Contributor
Author
|
@coderabbitai review |
seonghobae
added a commit
that referenced
this pull request
Aug 9, 2026
* test(planning): define durable Today synchronization contract * feat(planning): implement durable Today domain contract * test(planning): define atomic Today persistence contract * feat(planning): persist Today with atomic optimistic writes * feat(planning): add durable Today persistence schema * feat(planning): compose durable Today runtime * test(planning): define Today HTTP precondition boundary * feat(planning): enforce authenticated Today HTTP preconditions * feat(planning): expose authenticated Today sync API * fix(planning): avoid duplicate migration ordinal * fix(planning): order durable Today migration after repository constraints * test(planning): verify durable Today PostgreSQL behavior * test(web): define authenticated Today sync BFF contract * feat(web): add authenticated durable Today BFF * feat(web): expose same-origin Today sync route * test(web): include durable Today sync in quality gates * test(web): define explicit local-to-workspace Today migration * feat(web): implement explicit local-to-workspace Today migration * test(web): verify workspace Today migration path * feat(web): label local and durable Today states * feat(web): localize durable Today sync states * feat(web): add explicit durable Today controls * feat(web): connect explicit workspace Today controls * test(web): verify explicit durable Today migration * test(ci): require browser journey verification * ci(web): execute Playwright buyer journeys * test(web): verify stale Today reconciliation * docs(research): ground durable Today synchronization * docs(planning): add durable Today operations runbook * docs(planning): design durable Today workspace sync * docs(planning): plan durable Today workspace sync * test(web): preserve local Today across retry * test(web): scope accessibility live-region assertions * test(web): bind durable search acceptance to semantic controls * test(web): follow the current Today capture label * style(planning): restore canonical provider formatting * style(planning): format concurrent Today assertion * fix(web): remove unreachable Today save disabled check * fix(web): narrow optional Today request body * test(web): make Today fetch fixtures exact-optional safe * test(web): preserve explicit optional fetch init in Today sync * style(web): format Today workspace synchronization * fix(planning): acquire Today advisory locks in order * test(planning): enforce deterministic Today lock order * test(planning): stress identical Today replay concurrency * style(web): format Today sync boundary * style(web): format Today workspace client * style(web): format Today sync tests * style(web): format Today workspace tests * test(planning): match SQL client result contract * test(planning): isolate lock-order integration fixture * test(planning): move lock-order fixture out of production source * test(planning): remove dynamic SQL from lock-order fixture * style(web): format Today workspace sync client * style(web): format Today sync boundary * style(web): format Today sync tests * fix(web): parse strong ETags with valid regex syntax * fix(web): use valid strong ETag parser in BFF * feat(identity): enforce recent-authentication policy for data rights (#136) Add a fail-closed recent-authentication policy that uses the preserved authentication provenance from #134, distinguishing authentication age from session rotation. Includes test-first boundary, stale/future/malformed provenance rejection, and exact-head CI/security validation. * test(planning): exercise Today concurrency independently * fix(planning): make Today date constraint DateStyle-independent * fix(planning): type Today SQL parameters explicitly * test(identity): bind data-rights ownership to recent authenticated session (#137) * test(identity): define recent authentication gate for data rights * feat(identity): enforce recent authentication policy * test(identity): define authenticated data-rights context boundary * feat(identity): bind data-rights export to recent authenticated session * fix(planning): serialize Today writes in explicit transactions * fix(planning): pin Today transactions to one PostgreSQL connection * test(planning): cover transactional Today persistence * test(planning): verify transaction lifecycle and cleanup * test(ci): bind Today concurrency to contributor head * test(planning): remove SQL-text lock-order surrogate * ci: capture exact Today prettier patch * test(web): expose in-flight Today save overwrite * fix(web): preserve edits during Today save * ci: apply bounded Today formatting * ci: expose read-only Today format patch * style(web): format Today sync client * style(web): format Today workspace sync * style(web): format Today sync tests * chore(ci): remove Today format diagnostic * test(planning): reject malformed Today lookup scope before SQL * ci: verify Today lookup validation red * ci: apply verified Today lookup validation * fix(ci): compare repair lease to contributor head * fix(ci): include staged self-removal in repair lease * test(planning): reject malformed Today repository lookups * test(planning): distinguish corrupted Today persistence * fix(planning): classify invalid Today persistence separately * fix(planning): validate Today lookup scope before SQL * test(planning): fail explicitly on leaked Today connections * chore(ci): remove superseded Today repair workflow * fix(web): lint complete source globs * test(planning): make Today concurrency cleanup deterministic * docs(today): classify standards publication status * docs(today): align validation and readiness plan * test(planning): define shared Today invariants contract * feat(planning): centralize Today validation invariants * refactor(planning): reuse shared Today invariants * refactor(planning): share Today invariants with persistence * refactor(planning): reuse Today invariants at HTTP boundary * test(planning): import Today persistence error from domain boundary * test(planning): use shared Today persistence error boundary * fix(web): preserve destructive-copy warning in Korean * test(ci): bind browser acceptance to its workflow job * test(web): close Today BFF authority branch gaps * ci(web): stage one-shot canonical formatter * style(web): apply canonical formatter output * feat(identity): persist data-rights request receipts (#138) * test(identity): define durable data-rights request ledger * feat(identity): persist data-rights request state * feat(identity): add data-rights request ledger schema * test(identity): preserve data-rights receipts through erasure * fix(identity): retain data-rights receipts after erasure * chore(identity): sequence data-rights request migration * chore(identity): remove duplicate migration sequence * docs(identity): record durable data-rights ledger boundary * test(identity): expose request-id collision as domain conflict * fix(identity): normalize request ledger conflicts * test(identity): harden data-rights ledger integration harness * test(identity): cover dual request conflict evidence * docs(identity): align data-rights ledger implementation status * docs(changelog): record durable data-rights ledger * fix(identity): resolve ledger migration path portably * test(identity): require immutable terminal receipt storage * test(identity): model pg timestamp rows as Date values * test(identity): satisfy pg parameter mutability contract * fix(identity): enforce immutable terminal data-rights receipts * test(identity): assert immutable receipt no-op at database boundary * test(identity): bind migration fixture lock to one PostgreSQL session * test(web): expose Today media-type and conflict coupling * test(web): execute Today review regressions * fix(web): preserve existing test dependencies * fix(web): normalize Today media types and conflict semantics --------- Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.
Intent
Continue #55 with one main-based TDD slice that advances the already-protected recent-authentication policy into session-derived data-rights ownership. The slice remains intentionally bounded: it establishes the authenticated application boundary for export; it does not claim the complete export/deletion orchestration from #55.
Live dependency state
Protected
mainnow contains #136 as68074830d952e209497e576f0af5ded6d83f8121. This branch still descends from the pre-squash #136 lineage, so predecessor checks are historical and the current PR synthetic merge must be revalidated against the live base. No predecessor review/check evidence transfers.Implemented on the current head
AuthenticatedDataRightsApplicationauthenticates the opaque application session through the existing identity HTTP application boundary.workspaceIdandactorUserIdare derived exclusively from the authenticated session.DataRightsWorkspaceContextis passed toDataRightsApplication.exportWorkspace.Current exact-head evidence
At head
aa9e809bd2d37914b288d233e8b2b2f7f3fb3ab2, CI, Compose runtime, AppGuardrail, Semgrep, Security Scan, and Commercial Readiness completed successfully before the protected-main #136 squash moved the live base. Those runs are useful source-head evidence but are not treated as current-base merge evidence.Remaining before merge
main;Refs #55, #136, #134, #21.