feat(studio): server-side ownership enforcement + org rename (CS-76 phase C) - #38
Merged
Merged
Conversation
…hase C) - saveKanbanBoard refuses any local-column write on a CS that GitHub owns, re-reading the authoritative git state (cached) instead of trusting the payload — a stale tab can no longer overwrite an annotation satellite - findOwnershipViolations/gitOwnedCsNumbers: pure, tested; CS keys normalized case-insensitively so a 'CS-37B' vs 'CS-37b' mismatch can't slip past - surface the refusal in the UI: error banner with a reload action, instead of leaving optimistic state that was never persisted - GITHUB_REPO_SLUG as the single source for the repo (limiarcore/Lyfx), used by both the API client and the PR links — repo moved to the org - AGENTS.md: rewrite the roadmap discipline for the dual-source board (local Postgres vs GitHub-owned), document the automated Revisão/Concluídas transitions, and forbid hand-editing docs/cs-board.json
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
Final phase of CS-76. The lock on git-owned cards becomes real: the server re-reads the authoritative git state on every save and refuses any local-column write on a CS that GitHub owns. Also renames the repo slug after the transfer to the
limiarcoreorg, and rewrites the roadmap contract in AGENTS.md.Changes
saveKanbanBoardcomputes the git-owned set (merged cards + open-PR cards) from GitHub, never from the submitted payload, and rejects violations. Closes the corruption path where a stale tab could overwrite a merged card's annotation satellite with pre-promotion data.CS-37bwhile PR titles may sayCS-37B, and an exact match would have let a write slip past.GITHUB_REPO_SLUGis now the single source for the repo (limiarcore/Lyfx), consumed by both the API client and the card PR links. Repo transfer was a one-line change.docs/cs-board.json.Verification
Browser round-trip on 3000, then state restored to exactly as found:
draggable=false, modal fieldset disabledlimiarcore/LyfxChecklist
References
CS-76 (phase C of 3 — completes the dual-source roadmap; unblocks the v1.16.0 release)