Update repository URLs after fallow-py rename #48
Labels
No labels
area:ci
area:docs
area:engineering
area:framework-fp
area:test-coverage
dogfood:fn
dogfood:fp
dogfood:friction
dogfood:tp
phase:b
phase:c
severity:critical
severity:high
severity:low
severity:medium
source:deepseek-v4-pro
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/fallow-py!48
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "rename/repo-url-cleanup"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Canary Context Pack
Product story
Close the ADR 0012 rename loop after the operator renamed the Forgejo and GitHub repositories to
fallow-py, so package metadata and public docs no longer point at the old active URL.What changed
[project.urls]fromgithub.com/pdurlej/pyfallowtogithub.com/pdurlej/fallow-py.docs/rename-plan.md.oursmerge parent for the existing public GitHub snapshot history so the GitHub mirror can later fast-forward without dropping its public-only commit.Why it changed
You completed the admin repo rename on Forgejo and GitHub. This PR updates the remaining active links and prepares a non-destructive GitHub mirror sync path.
Files touched
pyproject.tomlmcp/pyproject.tomldocs/dogfood.mddocs/rename-plan.mdREADME.mdAGENTS.mdRelevant context
mainhad commite834728 Tighten pyfallow demo excerpts; this PR carries that content into the canonical tree and records that history as merged.Runtime evidence
python3.13 -m compileall -q src tests mcp/src mcp/testspython3.13 -m pytest -qpython3.13 -m pytest -q mcp/testsPYTHONPATH=src python3.13 -m fallow_py analyze --root . --fail-on warning --min-confidence mediumPYTHONPATH=src:mcp/src python3.13 -m fallow_py analyze --root mcp --fail-on warning --min-confidence mediumpython3.13 -m build && (cd mcp && python3.13 -m build) && python3.13 -m twine check dist/* mcp/dist/*git diff --checkKnown constraints
Historical mentions of
pdurlej/pyfallowinside the rename plan remain as history. LegacypyfallowCLI/package names remain intentionally supported for 0.3.x.Explicit out-of-scope
Requested decision
Approve merge if the active URL cleanup and GitHub-history reconciliation approach are acceptable.
Merge blockers
Wrong public URL, accidental tree changes from the GitHub snapshot merge, failing CI, or a reviewer objecting to preserving GitHub history through an
oursmerge parent.Mandatory non-author review (ADR 0010 / AGENTS.md)
Terminal action:
approve_mergeReviewed by
claude(Opus 4.7). PR authored bycodex, non-author requirement satisfied. PR #4 of the rename plan per ADR 0012 +docs/rename-plan.md— closing the loop after operator's admin rename on Forgejo + GitHub.Claim vs. implementation
[project.urls]flipped tofallow-py(root + MCP)pyproject.tomlupdated;git diff main...HEAD | grep '+'... pdurlej/pyfallowreturns emptydocs/dogfood.mdline points atraw.githubusercontent.com/pdurlej/fallow-py/main/...<owner>/pyfallow→<owner>/<repo>— clever; survives any future repo rename without doc churndocs/rename-plan.mdreflects current stateadmin rename completed; URL cleanup in progress; update log adds 2026-05-15 entry for admin renameoursmerge for GitHub public snapshote834728reachable from HEAD as ancestor; canonical tree unchangedoursmerge verification (the technically interesting part)The commit graph on this branch:
Verification:
Result: the merge commit's tree is byte-identical to the canonical parent (
cd93453), so e834728's content does NOT altermain's working state. The GitHub-public history is preserved as ancestry only. After this merges,git push github mainwill fast-forward without rewriting history, and operator's GitHub-public commits (606d277→e834728) stay in the audit trail.This is the right move. Alternative "discard GitHub history and force-push canonical" would have been simpler but would have erased real commits the public could already have cloned/forked.
Build + test + self-audit
python3 -m compileall -q src tests mcp/src mcp/tests→ rc 0python3 -m pytest -q→ 91/91 passpython3 -m pytest -q mcp/tests→ 22/22 passPYTHONPATH=src python3 -m fallow_py analyze --root . --fail-on warning --min-confidence medium→ 0 findings, rc 0python3 -m build --wheel(root) →fallow_py-0.3.0a3-py3-none-any.whlbuiltpython3 -m build --wheel(mcp) →fallow_py_mcp-0.1.0a3-py3-none-any.whlbuilttwine check→ PASSED on both wheelsMatches Codex's runtime evidence list.
Scope discipline
pyfallowconsole script + import shim +[tool.pyfallow]fallback all intactschemas/pyfallow-*.jsonuntouched;examples/cursor-rules/pyfallow.mdcandexamples/ci/render_pyfallow_comment.pyuntouchedDiff scope is tight: 6 files, +18/-17. Exactly the URL-cleanup surface ADR 0012 reserved for PR #4.
Codex-reported merge blockers
pdurlej/pyfallowon the+side of the diff is empty.tree(960fd3b) == tree(cd93453); no leakage.oursmerge — explicit reasoning above; the alternative (force-push) was worse.None tripped.
Non-blocking observations (fodder, not blockers)
Repo visibility flipped to
private: false. Forgejo metadata now reports the repo as public (was private through PR #47). The PR body doesn't surface this; presumably it's the operator's deliberate admin action alongside the rename. Per ADR 0006 (anti-AI-slop, evidence-bounded Show HN), worth confirming this matches the operator's qualitative-read threshold rather than being an incidental flip of the visibility checkbox during the admin rename. If intentional, ADR 0008 could be marked asclosed (evidence threshold met 2026-05-15)in a future docs PR. If not yet intended, the Forgejo setting can be flipped back without a PR.README "Abbreviated text output excerpt" format differs from actual analyzer output. The README now shows a column-aligned
RULE_ID severity rule-name path:linetable; the analyzer actually emitspath:line: RULE_ID severity confidence rule-name - description. The README heading says "Abbreviated" which signals it's stylized, so this is documentation style, not a regression. Worth a one-line note (e.g., "actual output includes confidence + finding description") if a future doc pass touches this section. Not blocking.Rootless
606d277 Public release snapshothas author emailcodex@users.noreply.example— a placeholder/test domain, not the canonicalcodex@noreply.git.pdurlej.com. It's now baked into the canonical history via theoursmerge. Historical curiosity; doesn't affect attribution of future commits. Worth noting if a future identity-audit pass scans the full repo log.docs/rename-plan.mdStatus field for PR #4 is nowadmin rename completed; URL cleanup in progress. After this PR merges, the status flips tomerged (#48)and the rename plan is observably complete. Worth either updating in this PR (small follow-on commit) or in a tiny housekeeping PR right after merge — operator's call. Not blocking; the update log line is already accurate.Verdict
approve_merge. Closing PR of the four-PR rename plan executes the URL-cleanup correctly, theoursmerge strategy is mathematically sound and preserves GitHub-public commit reachability without altering canonical state, build/test/self-audit all green, scope discipline holds. After operator's second approval and merge, ADR 0012's rename loop is observably closed;pdurlej/fallow-pybecomes the durable canonical name across Forgejo + GitHub + PyPI metadata + docs.