Skip to content

fix(scope-audit): put the collector links where a reader with data sees them - #9

Closed
efiten wants to merge 1 commit into
masterfrom
fix/scope-audit-neutral-unobserved
Closed

fix(scope-audit): put the collector links where a reader with data sees them#9
efiten wants to merge 1 commit into
masterfrom
fix/scope-audit-neutral-unobserved

Conversation

@efiten

@efiten efiten commented Sep 6, 2026

Copy link
Copy Markdown
Owner

The collector links lived only in the empty state, which never renders on an instance that has data. On this deployment (197 rows, 199 collected targets) the provenance note named both collectors in prose and linked neither. sourcesLineHtml now carries them and is exported so it is tested: two links, rel=noopener on both, the declared-vs-observed distinction, and the newest-answer-wins rule. CoreDrive RX points at https://rx.on8ar.eu/ here; upstream keeps the repo URL. 680 passed.

…urs is empty

Nobody reading this page could tell how the declared list reaches the database
or why theirs might hold nothing. The old empty state said it "fills in as
devices drive and answer over RF", which is CoreDrive-specific jargon that says
nothing to an operator running the observer firmware instead, and names no
collector at all.

Two changes:

- A provenance line under the intro, always visible: the declared side is the
  repeater's own answer read back off the node, the observed side is forwarding
  CoreScope already sees in its own traffic. That distinction is the whole point
  of the page and it was never stated.

- The empty state now carries the full explanation, because on a stock install
  it IS the page. It names both collectors with links (the ESP32 neighbour-report
  firmware and the CoreDrive RX app), states that neither ships with CoreScope so
  an empty table is the normal state rather than a fault, gives the precedence
  rule now that there are two sources, and says the thing that justifies the page
  existing: nothing else in CoreScope knows which regions a repeater is
  CONFIGURED for, only which ones its traffic was seen under.

emptyStateHtml is extracted and exported rather than left inline so it can be
asserted. Six tests: both collectors named, both linked, empty-is-normal stated,
precedence stated, the configured-vs-observed distinction present, and the old
drive-around wording gone. 670 to 676 passed, 0 failed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PQS3XLoPD98yu9pxdRujqg
@efiten

efiten commented Sep 6, 2026

Copy link
Copy Markdown
Owner Author

Wrong branch state: this branch name was already rebase-merged, so the remote still points at the merged commit and this PR shows that instead of the fix. Reopening from a clean branch rather than force-pushing over it.

@efiten efiten closed this Sep 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant