The CLI present command handed back loopback and LAN-only http(s) targets as if they were a published link.
The refusal
present now refuses those targets. Where it used to echo the address as a published link, it reports channel none with the reason “not reachable by the author”. The change shipped with tests.
The commit command changed too
commit now refuses to commit as a test identity: example.com, example.org or example.net addresses, t@t, or the name t. A further commit made the identity check refuse the commit when git var fails or times out, where it used to proceed.
What you get now
A loopback or LAN-only target returns channel none and “not reachable by the author”. It is no longer echoed as a published link.
AI Skills
Use this lesson with the AI assistant you already use
The CLI `present` command echoed loopback and LAN-only http(s) targets back as a published link. The fix makes it return `channel none` with the reason "not reachable by the author" instead.
Paste the prompt, share only the context needed to answer it, and treat the result as a draft for your review. Do not include confidential information or let an AI assistant make changes without your approval.
Optional: for a visual report and saved memory, run /dxdev first.
Don’t have it? Get it at dxdev.com/skills/dxdev. The prompt works without it.
dxdev LESSON · paste into your AI coding agent
LESSON: A Tool That Reports Success Must Only Report Reachability The Author Can Actually Verify
SOURCE: dxdev.com/blog/published-link-that-only-works-on-my-machine
WHAT HAPPENED: The `present` command used to take a loopback or LAN-only address and echo it back as if it were a published link. The fix makes `present` refuse those targets and report `channel none` with the reason "not reachable by the author". It shipped with tests. Two other commits changed `commit`: it now refuses test identities such as example.com addresses, `t@t`, or the name `t`. A further commit made the identity check refuse the commit when `git var` fails or times out, instead of proceeding.
THE RULE: When a tool reports that something was published or sent, it must refuse inputs it cannot confirm are reachable or valid for the intended audience, and report a failure instead of echoing them back as success. A check that cannot run, such as a timed out lookup, must also refuse rather than proceed.
CHECK MY CODE, then report PASS or FAIL with file:line for each:
1. Does your publish or share command reject loopback and LAN-only addresses and return an explicit no-channel result with a reason, instead of echoing the address as a link?
2. Is there a test that feeds a localhost or private-network target to the command and asserts it is refused rather than reported as published?
3. When a validation step fails or times out (for example reading the git identity), does the command refuse to continue instead of proceeding as if the check had passed?
THEN PRINT: a table (check, PASS/FAIL, evidence, fix) + a verdict (applies / partially / OUT_OF_SCOPE / no) + the single most important next action.