CHG-0018: Counting What Is Asked of Outside Services

Date2026-10-12
Change typeUpgrade
StatusIn progress
Systemsnpagent and its recognizer on the agent Pi (np-relay); nowplayd on the workload; the tenant’s Terraform (one dashboard added)
Howmake plan apply in infra/deevnet-tenant-eds; make -C deploy/relay push; make -C deploy deploy WHERE=builder
RiskLow. Nothing that lights the room changes. Most likely to go wrong: the log store refuses nowplayd, and its counts stay in the journal
DecisionsADR-0027, which this is the evidence for
RelatedCHG-0017, which is on the Pi and the workload from a branch of its own and is not in this one: see the procedure

Summary

npagent and nowplayd count what they ask of services that are not EdS’s, and say so once a minute. The agent’s counts arrive as events. nowplayd writes its own to the tenant’s log store, which no EdS workload has done before. A dashboard, Outside Services, shows both.

Goal

  • With a record playing, the dashboard shows the recognizer’s calls and Discogs’, by the minute.
  • “Refused for asking too often” says none.

Scope

In scope: the agent, the recognizer program, nowplayd, one dashboard.

Out of scope: lightd, palette, the console, every firmware, any broker account. Nothing is limited or slowed; calls are only counted.

Risk and impact

RiskWhereGuard
This branch is deployed without CHG-0017’s, and takes the gap and the short wait back off the Pi and the workloadthe Pi, the workloaddeploy from a tree that has both: merge CHG-0017’s branch first, or this into it
The plan changes something other than one dashboardthe tenantread before it is applied: one grafana_dashboard to add, nothing changed or destroyed
The log store refuses nowplayd, or its certificate is not the site CA’sthe workloadsaid once in the journal; the counts stay there and nothing else is affected
The recognizer’s new answer is not read by an agent that has not been updatedthe Pithe push installs both together; an old agent ignores a field it does not know
A panel that reads two partitions shows nothingGrafanaeach partition also has a panel of its own

Procedure

  1. The tenant. make plan, read it, make apply.
  2. The Pi. make -C deploy/relay push, then status.
  3. The workload. make -C deploy deploy WHERE=builder.

Any order. The dashboard is empty until the other two are done.

Verification

  • nowplayd’s journal says it is counting for the log store, and names the endpoint. It does not say the counts could not be written.
  • After a track has changed: a line N calls to discogs in the journal, and the same in the dashboard’s “from nowplayd” list.
  • With a record playing: N calls to shazam in the agent’s journal each minute, and in the “from the agent Pi” list.

Undo

  • The counts: deploy and push the commit before this one. Lines already in the store age out with its retention.
  • The dashboard: remove grafana_dashboard.outside_services and apply.

Outcome

When (UTC)What happened
21:53The agent and the recognizer were pushed to the Pi by its owner (23e4dfb, this branch on top of CHG-0017’s, which had been merged). The agent came back active with both drivers online. The turntable was silent and Spotify’s driver is off, so nothing was asked of anybody and there was no count to see.
21:54The workload was deployed by its owner (3de0662). All four services came back active. nowplayd said it was counting for the log store at https://logs.mobile.deevnet.net, and listed the collection, 226 records.
21:55The first summary: 3 calls to discogs, none refused, none failed, the slowest 993 ms, 58 left of Discogs’ sixty. Nothing was said about the store refusing it, and read back from the workload partition the line was there, with its numbers as fields and app as nowplayd.
21:58This branch was merged, and the tenant planned from the main checkout: 1 to add, grafana_dashboard.outside_services, 0 to change, 0 to destroy. The apply was left to its owner.
22:00Its owner applied it: 1 added, 0 changed, 0 destroyed. The dashboard is eds-outside-services, in the folder EdS. It has not yet been looked at.

Departures

  • The Pi and the workload were done before the tenant, and by the owner: the push and the merge were refused to the assistant. The dashboard waits on this branch being merged, because the tenant’s state settings are in the main checkout and the dashboard is not.

Follow-ups

  • The evidence ADR-0027 asks for.
  • The dashboard opened: whether the panels that read two partitions draw anything.
  • A count from the agent Pi, which waits on a record being played.