feat: follow dependencies on every pull by default #36
Reference in New Issue
Block a user
Delete Branch "feat/deps-by-default"
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?
Closes #21.
Stacked on #22 — the base branch is
fix/limit-bounds-the-write, notmain. Merge this after #22. It edits the same walk loop and the same argparse block inpull.py, and it depends on #22'skeeppredicate accounting, which it does not change.What changes
pull.pyfilleddepends:and followed blockers only under--deps, so the plainpull.py <n>— the only way to get a pushed issue back — answered with an empty graph. The edge cannot be recovered locally either:map.from_apiwrites slugs into the## Depends onprose and never#N, so Gitea's native graph is the only source there is.A pull now returns the unit of work: the issue and what blocks it, recursively, down to
--depth(default 3).--no-depsopts out of both halves and spends no request on either.--depsstays accepted and is a no-op, so existing calls and/tea:sync's command tables keep working.The cost, stated rather than hidden
The native links are now fetched once per issue instead of twice — the same links both fill
depends:and steer the walk — and only for an issue that lands in the store. A closed issue that filter mode drops no longer drags its blockers in behind it.That makes the number quotable, and
pull.py's docstring quotes it:--milestone Xover 50 open issues costs one list request + 50 link requests + one pair per blocker outside the milestone, where it used to cost one request flat.--no-depsis the way back to one.Two behaviours documented as deliberate, in
pull.py's docstring and inskills/sync/SKILL.md:--limit(#22's rule, unchanged): a blocker is followed because a stored issue named it, not because the filter selected it.--limit 20can therefore leave more than 20 files behind.depends:edge to it goes with it — nothing is left pointing at a file that is not there. Key mode has no such rule and stores it.Files
skills/sync/scripts/pull.py— the default,--no-deps, one link fetch per stored issue, the docstringskills/sync/scripts/push.py,skills/sync/SKILL.md,AGENTS.md— docs follow the new defaulttests/test_pull_deps_default.py— new, 19 teststests/test_checkbox_merge.py— its fake tracker now answers/dependencies, which a default pull asks forTests
python3 -m unittest discover -s tests— 270 tests, OK. #22'stests/test_pull_limit.pyis untouched and still passes.🤖 Generated with Claude Code