chore: enforce figma links in relevant prs - #734
Conversation
This comment has been minimized.
This comment has been minimized.
jvsena42
left a comment
There was a problem hiding this comment.
Both greptile findings and my parity note are closed — thanks.
The screens-map reference is gone repo-wide: git grep -E "screens-map|screens map|ltqvnKiejWj0JQiqtDf2JJ|figma\.com" at head returns zero hits, and the only Figma pointers are the three Bitkit - Handoff vNN mentions this PR adds. That was the right of the two options — the artifact didn't exist here. release.md:129-131 has ### Design, and the reviewer clauses now sit in pr.md:121-123 as well as AGENTS.md:347-349.
Minor, not worth changing on its own: the handoff page is named but no file key or URL travels with it, unlike the Android side which pins ltqvnKiejWj0JQiqtDf2JJ in docs/screens-map.md:3. Reaching the page still needs knowledge held outside the repo.
One thing Android fixed in its twin that this still carries — inline.
Cross-repo framing that's more useful than either note alone: Android's follow-up went the opposite direction. It closed the N/A loophole but narrowed its design case to mapped *Screen.kt only, dropping 44 sheets out of coverage. This repo's scope is the better one — it covers sheets, views, anything with a design — it just needs the exemption tightened. Between the two PRs, each has the half the other wants.
jvsena42
left a comment
There was a problem hiding this comment.
936b439e applies exactly the scoping I suggested, on both surfaces — AGENTS.md:348 and .agents/commands/pr.md:122 now read `N/A — no UI changes.` needs no review request; `N/A — no design available.` may receive the single advisory clarification. The self-declared branch is no longer blanket-exempt, which was the whole point. Thanks.
I also checked the two literal strings match byte-for-byte (em dash, trailing period) across every surface that emits or consumes them — .github/pull_request_template.md:15-16, AGENTS.md:343-344, .agents/commands/pr.md:117-118, and the release generator at .agents/commands/release.md:129-131. pr.md builds its body from the template and those two are the only PR-body generators in the tree, so no path can now emit a body without ### Design.
Nothing further from me.
jvsena42
left a comment
There was a problem hiding this comment.
Two LOWs inline. These are instruction documents — nobody executes them, but agents and humans follow them, so a wrong or unsatisfiable rule gets acted on repeatedly. That's the lens.
Verified sound:
- The missing
docs/screens-map.mdedit is correct, not a gap. The android twin (synonymdev/bitkit-android#1236) also edits its screens map, and I checked whether iOS should have an equivalent. It shouldn't:git grep -Ei "screens-map|screens map|ltqvnKiejWj0JQiqtDf2JJ|figma\.com"at head returns zero hits, there is nodocs/directory (onlyDocs/with eight unrelated files), and no map-drift test exists. Nothing here was missed. - Literal strings byte-identical across template
:15/:16,AGENTS.md:343/:344/:348,pr.md:117/:118/:122,release.md:131.release.md's body order matches the template (Description → Design → Screenshot / Video), and:116still reads the template first. - No unbacked enforcement claim —
AGENTS.md:349andpr.md:123say links never block approval or CI, and nothing in the repo reads the PR body. - Rule reaches all agent surfaces —
CLAUDE.mdsymlinks toAGENTS.md,.cursor/commands/pr.mdsymlinks to.agents/commands/pr.md.
Drift vs the android twin — mostly justified by the absence of a screens map, but three differences are not: android scopes the advisory request "per PR" where this doesn't scope it at all; android's pr.md:168 says links never block "approval, CI, PR creation, or review readiness" where every other surface on both repos says just "approval or CI"; and android deliberately drops "missing" from the uncertain-frame clause (its map makes a missing frame unreachable) where :345 here keeps "Missing or uncertain", which is right for this repo. Worth one pass to decide which wordings are meant to be identical.
jvsena42
left a comment
There was a problem hiding this comment.
Both fixes confirmed at e0f9bac2, and the drift closed. No findings.
Attribution first, because the diffstat looks alarming: git diff c88ad9d9 refs/remotes/pr/734 shows 23 files / +822 including PubkyService.swift and a pile of tests — but 19 of those are byte-identical to origin/master (git diff --quiet origin/master refs/remotes/pr/734 -- <path> exits 0 for every one), inherited from the 5ea3cf3d merge that brought in #697. git diff --stat origin/master refs/remotes/pr/734 returns exactly four files, all docs, +36/-0, matching gh pr diff --name-only. No source file is PR-authored and there is no evil merge — git diff origin/master…pr/734 touches zero non-doc files, so there was nothing for git show --cc to interrogate. A docs PR carrying no source changes is exactly right.
(a) resolved. pr.md:115 — "Include a ### Design section when the PR template contains a ### Design heading." Matches the file's own ### Preview gating at :188/:189, so the library-repo travelling case at :154 is handled. No behaviour change in this repo (the template does carry the heading) — this is purely portability.
(b) resolved, and the key is right. The file key landed in all three surfaces — pr.md:116, pull_request_template.md:14, AGENTS.md:342 — identical in each, as https://www.figma.com/design/ltqvnKiejWj0JQiqtDf2JJ/. Re-ran the grep at the new head: it now returns those three hits where it previously returned nothing, so the instruction is resolvable from inside the repo. I checked the key against android's docs/screens-map.md:3 — same file, and no typo drift between the three occurrences.
Drift, both items I flagged now fixed:
- Advisory-request scope: you adopted "per PR", matching android.
- Non-blocking wording: both repos now say "approval, CI, PR creation, or review readiness".
git grep "approval or CI"returns zero hits in both repos — four surfaces, one wording. Worth noting I'd assumed the android side would narrow to match iOS; converging on the long form is the better result. - Still different, and correctly so: this repo keeps "Missing or uncertain" where android drops "missing". Android's screens map makes a missing frame unreachable; you have no map, so "missing" is a live case here. Not asking you to match.
I also re-checked that the pr.md:115 gate doesn't contradict the unconditional "must … under ### Design" at AGENTS.md:342-344 — it doesn't, since AGENTS.md is repo-local and this template carries the heading. Android has the identical two-layer shape.
Clean from my side.
Closes #731
Description
This PR:
N/Aguidance.Linked Issues/Tasks
Design
N/A — no UI changes.
Preview
N/A — no user-visible changes.
QA Notes
Manual Tests
N/A
Automated Checks
git diff --checkpassed.