Adds link_discovery.py: sitemap-first, same-domain-crawl-fallback
discovery of sub-pages from a single index URL, so a source with many
sub-pages no longer needs each page entered by hand. Never pulls page
titles or body text into a ticket field, only URLs, to avoid a
prompt-injection path into tickets Claude Code later reads. Adds a
review-and-approve screen so nothing is queued without a human
checking the actual discovered list first.
Replaces the free-text licence field with a required typed permission
question, since licence itself is better researched from the source
during actual processing rather than typed in at ticket time. Replaces
the priority dropdown with a single urgent checkbox.
Fixes a few real bugs found along the way: colliding ticket filenames
when writing many tickets in one batch, a couple of layout issues
where long labels or URLs were getting clipped instead of wrapping or
scrolling, and dead links slipping through discovery from malformed
relative link resolution