points.json gains DID 881/882 (MixerTwo/ThreeCircuitCentralHeatingCurve)
and 988/989 (flow temperature target setpoints), 124 UDS points. The
device runs the fork build 0.3.0+ea30668, which marks 880-883 writable;
README names the fork and the build steps. S28-55.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
points.json and settings.json as loaded on the device (open3e-esp32
0.2.0+f84afe2), with the README covering how to apply them. They were
kept only on the workstation (~/source/vican/vitocal-can). S28-52.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
review-bot re-reviewed konairius/ical-proxy#22 at an unchanged head
(62cf054b) and wrote "I did not fetch the kaniko release notes, so I can't
say what changed between v1.25.20 and v1.25.21", with no web call. Two
causes:
- prompt.md: a re-review with an unchanged head only answers the author's
replies, and re-reviews never revisit code already judged, so the
"Dependency updates" checks never ran on a PR first reviewed under the
old prompt. Re-reviews now run those checks on every review of a
dependency update, for each dependency the newest earlier review did
not cover (upstream changes old -> new, or a digest-only rebuild), and
carry over the ones it did.
- No fetchable URL: the PR body has no link for the kaniko image
(registry.gitlab.com/gitlab-ci-utils/container-images/kaniko has no
source label), and Anthropic's web fetch only opens URLs already in the
conversation (user message, client tool results, earlier fetch/search
results; not the system prompt or MCP results). Following links from a
fetched page is unreliable because page-to-text conversion drops
relative links. The Anthropic backend now also offers the web search
server tool (web_search_20250305, basic, no code execution) on the same
WEB_FETCH_DOMAINS, max_uses WEB_SEARCH_MAX_USES (default 5); search
results are a valid fetch source. The prompt tells the agent to search
for a dependency without a link (package name or the upstream a wrapper
image builds, plus the new version). Web search is enabled per org by
default in the Claude Console; no manual step.
- Tool guard: web_search is allowed only while web tools are on, like
web_fetch; otherwise the review is not posted.
The renovate-config sourceUrl rule for this image (renovate-config #4)
puts notes into the PR body from the next scheduled Renovate run; this
covers the PRs that already exist and any other package without a source.
Renovate PR bodies do not cover every dependency (kaniko from
registry.gitlab.com has no source URL, so Renovate links no notes), and
the reviewer had no way to read upstream changes. The Anthropic backend
now offers the server-side web fetch tool when WEB_FETCH_DOMAINS is set;
the deployment sets github.com,gitlab.com.
- Version web_fetch_20250910 (basic): later versions turn on code
execution for dynamic filtering. max_uses 10 (WEB_FETCH_MAX_USES),
max_content_tokens 20000 per page.
- Anthropic only fetches URLs that appeared in a user message, a client
tool result or an earlier fetch/search result; MCP connector results do
not count. So the task message now lists the https links of the PR body
on the allowed domains (no userinfo, deduplicated, at most 20), marked
as untrusted data. Without web fetch the task is unchanged.
- Tool guard: a server_tool_use other than web_fetch, or web_fetch while
it is off, is a violation, so the review is not posted.
- Network policy: unchanged. The fetch runs on Anthropic's side; the pod
still only talks to Gitea (Traefik) and the model APIs.
The review-bot review of konairius/ical-proxy#22 (golang/alpine digests,
kaniko v1.25.20 -> v1.25.21) restated the diff and listed "digests and CI
not checked" as unverified. Three causes:
- Renovate wrote no release notes: it has no github.com token ("No
github.com token has been configured. Skipping release notes retrieval",
job renovate-29903220). The ExternalSecret now renders
RENOVATE_GITHUB_COM_TOKEN (the current name; GITHUB_COM_TOKEN is
deprecated) from its own OpenBao key apps/renovate/github, field `token`.
No other service reads that key.
- defaultMCPTools still named per-method tools that gitea-mcp 1.13 folded
into commit_read, branch_read, tag_read and release_read. tools/list on
gitea-mcp.renner.uno has none of get_commit, list_commits,
compare_commits, list_branches, get_tag, list_tags, get_release,
get_latest_release, list_releases, so 9 of the 20 enabled names matched
nothing and the prompt's compare_commits/list_commits steps had no tool.
The list now has the 1.13 names; a test keeps it read-only.
- prompt.md had no guidance for dependency updates. New "Dependency
updates" section: release notes between old and new version, the repo's
use of what they change (path:line), one line for digest-only rebuilds,
no unverified boilerplate. New mandatory check: CI status of the head
(pull_request_read get_status; Woodpecker reports commit statuses).
otbr installed socat from apt at every start, which the namespace
egress baseline denies, so it crash-looped. otbr-agent now speaks
spinel+hdlc+unix to a socket served by a native alpine/socat sidecar
that bridges to slzb-thread:6638 (openthread/otbr image of 2026-11-07;
Unix stream sockets landed in OpenThread #13785). otbr-egress allows
only that TCP link (S28-48).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
otbr comes back with its own network instead of joining the Nest's
NEST-PAN-339C, so the Nest Hub can leave the IoT VLAN (S28-46/S28-48).
The bootstrap Job forms it (dataset init new, channel 15, name
Suedstr28-Thread) on a fresh otbr-thread PVC; the Nest dataset
ExternalSecret is dropped and the Flux Kustomization un-suspended.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
error_reporting.enabled has been true since the first deploy. The server
hands the Sentry DSN (authentik.error-reporting.a7k.io) to every outpost
through /api/v3/root/config/, and the RADIUS and LDAP outposts then try
to send reports there; egress policy drops all of it. Reporting to a
third party was never intended to work here.
S28-43
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
matter-server fetches PAA root certificates, vendor names and OTA
metadata from the CSA DCL (on.dcl.csa-iot.org) and the development PAA
certificates from project-chip on GitHub (python-matter-server
helpers/paa_certificates.py, vendor_info.py, ota/dcl.py). zigbee2mqtt
fetches the Koenkk/zigbee-OTA index and images from
raw.githubusercontent.com (zigbee-herdsman ota.ts). The namespace
baseline denied all of it (~350 and ~200 drops a day), so certificate
refresh, vendor names and OTA silently failed. FQDN-scoped, 443 only.
S28-42
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both phone home on a timer: every alloy pod to stats.grafana.org (~135
a day each) and influxd to telemetry.influxdata.com (56 a day). Egress
policy denies it, so this only removed log noise and wasted SYNs; switch
it off at the source like Loki's reporting_enabled: false.
--disable-reporting per the "alloy run" reference (chart alloy.extraArgs);
INFLUXD_REPORTING_DISABLED per the InfluxDB v2 config options.
S28-41
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
immich-machine-learning has ~222k tags and immich-server ~33k, nearly
all PR builds. Each anonymous scan pages the full list (about 220
requests of 1000 tags for ML) and hourly scans hit ghcr.io's
TOOMANYREQUESTS. Immich releases a few times a week at most, so 6h
costs nothing.
S28-40
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New CIDR group udm-k8s-ingress (10.2.47.1/32, fd02:47::1/128); the LDAPS
rule references it instead of the whole net-k8s-ingress network.
S28-39
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The UDM authenticates admins against ldap.renner.uno:636 and syncs
hourly. It sources from its k8s-ingress address (10.2.47.1 /
fd02:47::1), which ldap-outpost-lan-ingress did not admit: 200 SYNs a
day dropped at :26 every hour. Same group the alloy-syslog and CoreDNS
policies use for the UDM; LDAPS only.
S28-39
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
About 43k POLICY_DENIED a day from trmnl-renderer to Google update and
account hosts. Source (OCI label): usetrmnl/trmnl-home-assistant dd556e6;
the Chromium flags are a fixed list in screenshot.ts:78 with no env or
option override, and --disable-background-networking is not among them.
Nothing on our side can switch it off; the denies are correct.
S28-4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sbr confines only the DHCP (IPv4) routes. net1 still takes a SLAAC address
and an RA default route, so socat-ipv6 sent every relayed datagram out the
IoT VLAN with source fd02:30::…; it came back through the UDM and HA's
CNP dropped it (37k POLICY_DENIED to home-assistant:5353 in 24 h). No IPv6
mDNS announcement reached HA. Same tuning as shelly-manager-iot. The
annotation bump re-attaches net1 with the new NAD.
S28-36
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>