Commit Graph
112817 Commits
Author SHA1 Message Date
Paulus SchoutsenandClaude Opus 4.7 6f72c79be9 sandbox: move STATUS files into status/
Tidy the directory: the 29 per-phase + per-plan landing records
(STATUS-phase-*.md, STATUS-plan-*.md) move out of the sandbox/ root into
sandbox/status/ (git mv, blame preserved). Live current-state docs
(CLAUDE.md, README.md, OVERVIEW.md, FOLLOWUPS.md, architecture.html, the
docker-compose harness comment) now point at status/. Historical records
(the STATUS bodies themselves, plans/*.md, plan.md) keep their original
text by convention.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.7 48f6990c2d sandbox: PLAN_RUNNER — multi-line briefs now paste directly, no tempfile
claude-screen pastes multi-line prompts directly: bracketed-paste markers
keep embedded newlines literal, and the submit \r is sent as a separate
keystroke a beat later (the concatenated \r was what raced the paste and
submitted mid-prompt). Verified live — a 3-line prompt lands as one
message. Doc no longer mentions any file-handoff.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.7 41711fe573 sandbox: PLAN_RUNNER — claude-screen now auto-handles multi-line briefs
The single-line file-handoff is now built into claude-screen itself (it
detects a newline in the piped prompt, stashes the brief to a tempfile,
and pastes a pointer). So the doc just pipes the brief straight in; the
manual "write to /tmp + echo a single line" dance is gone.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.7 5b3571b454 sandbox: PLAN_RUNNER — plans MUST be executed via the phx:work skill
Make explicit that each sub-session steps through its plan with the
phx:work skill (task-by-task with per-step compile/test verification),
not ad-hoc edits. Added as a brief hard rule + a why-this-shape bullet.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.7 83763c94b3 sandbox: add PLAN_RUNNER.md — the per-plan sub-session workflow
Documents the loop used to build this batch: write a brief to a tempfile,
spawn a fresh Claude in a screen window via single-line file-handoff, watch
for a STATUS marker, verify independently, push, kill the window. Captures
the gotchas that bit (single-line stdin, prompt-submit confirmation,
prefix-match window names, orchestrator-only push).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.8 16a3c17397 sandbox/tests: rename test_phase1_spike_late_additions_pin_to_main
Drop the build-phase scaffolding from the test name; it just verifies ai_task
and image pin to ALWAYS_MAIN. -> test_ai_task_and_image_pin_to_main.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.8 5433c8a558 sandbox: trim the compat lane to one runner
The one-shot full cross-sweep that produced the original backlog
(run_compat_full.py + categorize_failures.py + generate_backlog.py) and its
machine-generated outputs (COMPAT_FULL.md/.csv, COMPAT_LATEST.md, COMPAT.csv,
BACKLOG_FAILURES.json) were Phase-16 measurement scaffolding; the gate is long
cleared. Keep the single ongoing runner (run_compat.py) and the two curated
summaries (COMPAT.md, BACKLOG.md). Git-ignore the per-run machine output so it
stops being checked in. Living docs updated; recover the full-sweep tooling
from git history if a fresh tree-wide sweep is ever needed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.8 63ead8828c sandbox/bridge: route the service forwarder through _raw_call_service
The registered-service forwarder (_build_service_forwarder._forward) rebuilt its
own pb.CallService request and duplicated the ChannelRemoteError/
ChannelClosedError translation that _raw_call_service already does. With the
batcher gone, _raw_call_service is the single low-level send helper — have
_forward call it and keep only its response-extraction logic. No behaviour
change (the channel-closed error message is now the shared generic one).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.8 21dde0ab15 sandbox: remove the Option A/B spike harness
The spike (hass_client/spike/: bridge_a, bridge_b, rig, synthetic_light,
transport + tests/components/sandbox/test_spike.py) was a one-off bake-off to
choose between entity-bridge designs. Option B was chosen and shipped long ago;
nothing in production imports the spike, only its own test did. Delete it.

docs/entity-bridge-decision.md keeps the rationale and the measured numbers as
the decision record, with a note that the harness is recoverable from git
history.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.8 b8249ec9d9 sandbox: drop the call-service batcher; keep the first iteration simple
Each proxy entity service call now forwards as its own single
`sandbox/call_service` RPC. The per-loop-tick coalescing batcher
(_CallServiceBatcher / _BatchBucket) added complexity the first iteration
doesn't need, so it is removed; async_call_service calls _raw_call_service
directly. Behaviour is unchanged except a multi-entity area call now pays one
RPC per entity instead of one coalesced RPC.

Coalescing same-tick calls is recorded as a future optimisation in
docs/FOLLOWUPS.md (with the 200-light perf benchmark that validated it). Living
docs updated; the phase-history records are left as-is.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.8 f62efecc0f sandbox/bridge: correct misleading 'fire-and-forget' wording
A service call is never fire-and-forget: each batched caller awaits the
coalesced RPC's completion via its future, which resolves with the result or
the raised error, so every caller learns when its call finished. Batching only
shares the *wire* call, not the await; only a response *value* can't be
coalesced (hence the response bypass). Wording-only; no behaviour change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.8 ee74f766bb sandbox: drop development-phase references from code
The final deliverable should not carry the scaffolding of the phases it was
built in. Reword comments, docstrings, and generated-output strings that named
build phases (Phase N / T1-T3 / Phase A1-A2) to describe what the code does,
and rename the phase-numbered test files:

  test_phase4_subprocess  -> test_subprocess
  test_phase9_shutdown    -> test_shutdown
  test_phase13_proxies    -> test_domain_proxies
  test_phase14            -> test_schema_and_unload
  test_phase19_devices    -> test_device_registry

Comments/docstrings/filenames only; no logic changes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.8 f5518f3705 sandbox/bridge: use orjson helper for batch key; bypass batcher for responses
- Replace a stray function-local `import json` (json.dumps behind a bogus
  'keeps json off the integration boot path' noqa) with HA's orjson
  json_bytes_sorted helper for the call-service batch key.
- A response-returning entity call now bypasses the per-tick batcher.
  Coalescing forces every caller in a bucket to share one combined response,
  which is wrong when a caller needs its own value; response calls go out as
  their own single-entity RPC. The batcher is now fire-and-forget only, so its
  dead return_response plumbing is dropped.
- Also removes development-phase references from this file's docstrings.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.8 540607615e sandbox: document the current auth design (no credential + context restore)
Rewrite docs/auth-scoping-decision.md to lead with the shipped design: the
sandbox holds no credential and cannot fabricate a Context; main restores
attribution from a TTL cache of contexts it issued and falls back to
user_id=None. The reverted, never-shipped scoped-token mechanism is kept as a
clearly-marked appendix for whenever the sandbox->main websocket lands. Update
the CLAUDE.md pointer to match.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.8 1b36c55100 sandbox: drop V2 naming from living docs
Rename identifiers (SandboxV2Data->SandboxData, DATA_SANDBOX_V2->
DATA_SANDBOX, SandboxV2Error->SandboxError), env vars (SANDBOX_V2_*->
SANDBOX_*), and stale sandbox_v2/ paths in the current-state docs
(OVERVIEW, README, CLAUDE, plan, architecture.html, COMPAT*, docs/*),
and reword prose that named the current sandbox "v2". Historical
STATUS-phase-*/plans/* records are left intact as point-in-time history.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.8 e7c70c5fe9 sandbox: drop remaining V2 naming from live code and config
The rename sweep missed several identifiers, env vars, and the
pre-commit drift-guard hook (whose entry/files paths still pointed at
the non-existent sandbox_v2/ tree, leaving the hook broken). Rename:

- SandboxV2Data -> SandboxData, DATA_SANDBOX_V2 -> DATA_SANDBOX,
  SandboxV2Error -> SandboxError (+ all references and tests)
- SANDBOX_V2_ERRORS_DIR/TRANSPORT/SOCKET_PATH -> SANDBOX_* env vars
- pre-commit hook id/entry/files: sandbox_v2/proto -> sandbox/proto
- stale sandbox_v2 paths and 'v2' wording in .dockerignore + scripts

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Opus 4.8 12658eb990 sandbox: drop unreleased Phase-7 scopes back-compat shim
The reverted Phase-7 auth-scoping mechanism never shipped, so no
real auth store carries a legacy "scopes" key. Remove the defensive
pop in AuthStore (RefreshToken is built by explicit field mapping, so
unknown keys are ignored anyway) and its test. Reword the
ConfigEntry.sandbox load comment to state the real reason the key is
optional (non-sandboxed entries omit it) instead of referencing an
unreleased phase.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:23 -04:00
Paulus SchoutsenandClaude Fable 5 d4bee41f48 sandbox: consolidated early history (phases 0-20 + hass_client subtree graft)
Squash of the pre-83a0c28229f sandbox history onto current dev. The
original commits (including the grafted standalone hass-client repo,
root cc2428c2b56) cannot replay through git rebase; the full history
remains available at the local sandbox-backup-20260707 branch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QCotUYum6AoisyrxshoiJJ
2026-07-07 15:12:16 -04:00
Allen PorterandJoostlek 21e51b83d3 Add Google Health integration (#175417)
Co-authored-by: Joostlek <joostlek@outlook.com>
2026-07-07 10:42:36 -07:00
epenetandClaude Opus 4.8 411c2111e5 Use state attribute enums in energy (#175869)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 17:03:58 +01:00
Abílio CostaandCopilot Autofix powered by AI 3e06799f51 Add github PR comments skill and use it in pr reviewer skill (#175790)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-07 16:08:40 +01:00
Manuel StahlandClaude Sonnet 4.6 dec0c67bb2 Fix stiebel_eltron climate action exceptions to comply with action-exceptions rule (#175792)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 16:51:40 +02:00
hplato b440d798d0 Update Venstar Colortouch to increase padding in firmware display. (#175774) 2026-07-07 16:48:38 +02:00
Miloš Svašek 323a4d4af9 Add NeoPool integration (#173779) 2026-07-07 16:41:27 +02:00
Abílio CostaandCopilot Autofix powered by AI 97c9c680d0 Make copilot PR template check instruction stricter (#175864)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-07 15:30:18 +01:00
Michael Hansen 7fcffae19d Don't restart a Wyoming satellite pipeline if there's an error (#175798) 2026-07-07 16:22:22 +02:00
Crocmagnon e9968a4a35 data_grand_lyon: add TCL parks and rides (#174289) 2026-07-07 16:13:54 +02:00
Ludovic BOUÉandCopilot b47413ba34 Add Doorbell device type to discovery schemas in Matter event entities (#175802)
Co-authored-by: Copilot <copilot@github.com>
2026-07-07 16:11:32 +02:00
Tobias Sauerwein b4b11fa383 Migrate legacy data stores in Netatmo (#175620) 2026-07-07 16:08:17 +02:00
fdebrusandClaude da68bf36a4 Add dynamic device support to Vistapool (#172912)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-07 15:55:09 +02:00
9004f3a89a Add get_prices_for_date service action to OMIE (#175820)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-07 15:49:00 +02:00
Brett Adams 7a0f3124f8 Fix lexicographic firmware version comparison in teslemetry (#175745) 2026-07-07 15:46:13 +02:00
jameson_uk 7a6363f5cb Ensure http2 stream cleaned up on shudown for Alexa Devices (#175766) 2026-07-07 15:38:16 +02:00
G Johansson d2703fdbc3 Improve time handling in Nord Pool (#175771) 2026-07-07 15:27:58 +02:00
e18a08d870 Fix unhandled KeyError on Tesla Fleet homelink button (#175730)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Josef Zweck <josef@zweck.dev>
2026-07-07 15:25:02 +02:00
Matrix ad8b4b2d6e Fixed YoLink water meter controller valve status showing as "Unknown" (#175835) 2026-07-07 15:16:38 +02:00
Krisjanis Lejejs 426c77d9f7 Add cloud page onbording prefs (#175762) 2026-07-07 15:08:54 +02:00
epenetandClaude Opus 4.8 4114ab7b74 Use EntityStateAttribute enum in analytics (#175838)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:06:30 +02:00
G Johansson b984118367 Add missing holiday categories in holiday (#175841) 2026-07-07 15:06:19 +02:00
epenetandClaude Opus 4.8 6a927ad4f6 Use state attribute enums in August (#175840)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:05:55 +02:00
epenetandClaude Opus 4.8 97751e1e47 Use attribution property in Blink alarm control panel (#175842)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:05:27 +02:00
epenetandClaude Opus 4.8 6460ee7b72 Use EventEntityStateAttribute enum in Bring (#175843)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:05:13 +02:00
epenetandClaude Opus 4.8 023f8b03ef Use attribution property in buienradar (#175844)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:05:00 +02:00
epenetandClaude Opus 4.8 8f94c49a7c Use EntityStateAttribute enum in configurator (#175847)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 14:52:22 +02:00
epenetandClaude Opus 4.8 e5469dbc91 Use CounterEntityStateAttribute enum in counter triggers (#175853)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 14:51:51 +02:00
epenetandClaude Opus 4.8 fe212883be Use state attribute enums in Dynalite (#175850)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 14:50:40 +02:00
Mick Vleeshouwer 287b5743a6 Re-import Rexel client credential in Overkiz config flow (#175852) 2026-07-07 15:50:06 +03:00
fdebrusandClaude f110426542 Bump aioaquarite to 0.6.1 (#175857)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-07 15:46:44 +03:00
Raphael Hehl 1f83b29765 Bump uiprotect to 15.4.3 (#175861) 2026-07-07 15:44:51 +03:00
TomerandJoost Lekkerkerker 5955c658ed Bump victron-mqtt to 2026.7.0 (#175786)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2026-07-07 14:32:37 +02:00