NAME
App::karr::Cmd::Needs - Report and resolve cross-board dependencies
VERSION
version 0.600
SYNOPSIS
karr needs # what is this board waiting on?
karr needs --board other-repo=/srv/other # ... and where that board is
karr needs --resolve # settle what has been finished
karr needs 5 --json
DESCRIPTION
The reading and resolving end of cross-board dependencies (ticket #192). A card that cannot be worked on until something is fixed in another repository records that as needs:<board>#<id> (karr create --needs, karr edit --add-needs); the card raised in the other repository records the other half as escalated-from:<board>#<id>. This command is what reads both ends back.
Without --resolve it reports and changes nothing: every card carrying a link, what the far card's status is where the far board can be read, and whether that far card names this one back. With --resolve it drops every link whose far card has reached one of the far board's own terminal statuses, and when that was a card's last outstanding link it lifts the blocked flag as well, printing the reason it lifted so nothing is cleared silently.
Board names, not paths. See "What the card carries, and what it does not" in App::karr::CrossBoard: the card carries the other board's name, this machine supplies the directory -- from --board NAME=PATH, or from the fleet config the rest of karr-foundation already reads. A name this machine cannot place is reported and the command still exits 0: a machine holding four repositories of a six-repository fleet has an honest report to give about the four, and failing on the first unplaceable name would give none.
What it does not do
It does not fetch. The far board is read as it stands in that working copy, so the answer is as fresh as that repository's last karr sync.
It does not block anything, and neither does the link it reports. depends_on warns and hands the card over (ticket #123), App::karr::Foundation::Picker does not filter on it (ticket #185), and a cross-board link follows both. The flag that actually keeps the waiting card out of karr pick is blocked, set deliberately by the escalating agent -- the link is the fact, blocked is the decision -- and lifting it once the last link settles is the whole point of --resolve.
SEE ALSO
karr, App::karr, App::karr::CrossBoard, App::karr::Cmd::Create, App::karr::Cmd::Edit, App::karr::Cmd::Show, App::karr::Foundation
SUPPORT
Issues
Please report bugs and feature requests on GitHub at https://github.com/Getty/karr/issues.
IRC
Join #langertha on irc.perl.org or message Getty directly.
CONTRIBUTING
Contributions are welcome! Please fork the repository and submit a pull request.
AUTHOR
Torsten Raudssus <getty@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2026 by Torsten Raudssus <torsten@raudssus.de> https://raudssus.de/.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)