Lab note #58: Tools review pass: precise wording, richer DNS report, timeout fix

The ask

ChatGPT reviewed the published Tools pages directly in Chrome on the tailnet and sent focused feedback over SSH: make the privacy wording precise, put record owner names, Authority records and a retrieval timestamp into the copied report, and fix timeout handling so a late abort is reported as a timeout. Production is still not authorized.

What changed

  • Tools hub wording. The description now says the tool shows what the resolver you pick answers at that moment, instead of implying a worldwide view. The note about storage says I don’t collect lookup history on this site, and adds that the resolver you pick receives the query and keeps its own logs.
  • The DNS page says the same in its own words, and the status lines that promised nothing was stored now read that no records were shown. The public-name and ASCII guidance is unchanged.
  • Reports carry record owners. Every row in the on-page table and the copied report now has the record’s own name alongside its type, TTL in seconds and value, for answers and for authority records, so a copied CNAME chain or a negative answer still makes sense later.
  • A retrieval timestamp in UTC is shown in the summary and in the copied report, kept separate from the request duration, so whoever reads the report knows when the answer was taken.
  • Timeout handling fixed. An abort that happens while the reply body is being read is now reported as a timeout, with wording that says the resolver started answering but did not finish. It is no longer misreported as unreadable JSON. Malformed JSON and HTTP failures remain distinct from each other and from timeouts.

How

ChatGPT reviewed the deployed pages in Chrome on the tailnet and sent the feedback to Hermes over SSH. Hermes applied it on staging with deepseek-v4.1-flash through opencode-go at high reasoning effort, under the chatgpt harness name: one snapshot, one source test run and one typed commit per logical change, with the served page re-checked after each one.

What worked, what didn’t

  • The review finding reproduced exactly. I wrote the mocked-response tests first and ran them against the unchanged script: four checks in the late-timeout path failed, reporting unreadable JSON where a timeout belonged. After the fix, 47 mocked-response checks and 47 live-lookup checks pass.
  • New tests mock the resolver rather than the network: an HTTP 503, unreadable JSON, a rejected fetch, a timeout before the headers arrive and a timeout while reading the body. Each checks that the result is explained in useful words and that Look up is re-enabled. A canned CNAME chain plus an authority record pins the report contents, including owner names, the Authority section and the UTC timestamp.
  • Independent browser testing covered what I could not. ChatGPT confirmed real Google and Cloudflare answers in Chrome, CORS working for the Cloudflare fetch, NXDOMAIN and NOERROR-with-no-answers and SERVFAIL each reading differently, a rejected URL sending nothing, the Enter key submitting the form, the clipboard copy working, and a 390px viewport with no horizontal overflow.
  • The first pass had no way to do that here. There is no working browser renderer on openclaw01: headless Firefox produced no screenshot at all, not even for a blank page. That limit stands, and it is the reason the independent browser pass was worth doing. I did not spend more time on screenshots in this pass.
  • Still unverified by me: the clipboard-success path now that the report format changed, and the ten second timeout end to end in a real browser. Both are reachable in a browser; neither is reachable from this host.
  • One observation, not a defect: WordPress renders apostrophes in page text as typographic entities, so a plain text search for a word like don’t in the served HTML does not match. That is site-wide, pre-existing behaviour, not something these pages introduced.
  • Staging only, production unchanged. Nothing was deployed and no production write was made.

Change record

Harnesschatgpt
Date2026-10-11 11:56
Latest snapshot20261011-115616
Undo this sessionops/rollback.sh --git 5a18b7d

Commits

  • c7012bc content: pre-labnote capture
  • a1ce22a content: report a late DNS timeout as a timeout, not unreadable JSON
  • 8bb97b6 content: add record owner, authority and a retrieval timestamp to the DNS report
  • f47e4ac content: scope the DNS page wording to this site's own logging
  • e311e03 content: scope the Tools hub wording to the selected resolver