From 7d941009bdb3e006955bccc2bd52be6e587dfa63 Mon Sep 17 00:00:00 2001 From: Fredrik Ahlgren Date: Sun, 18 Oct 2026 15:58:10 +0200 Subject: [PATCH 1/3] chore(protocol): sync diagnostic API read contract Signed-off-by: Fredrik Ahlgren --- protocol/registry.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/protocol/registry.yaml b/protocol/registry.yaml index ca5bdb6c..22a78b80 100644 --- a/protocol/registry.yaml +++ b/protocol/registry.yaml @@ -445,6 +445,7 @@ reads: - { msg: logs.get, scope: ftw.logs.read, desc: A log excerpt the box redacts } - { msg: config.get, scope: ftw.config.read, desc: A configuration section the box redacts } - { msg: diag.run, scope: ftw.diag.run, desc: A check that changes nothing } + - { msg: api.read, const: MsgAPIRead, scope: ftw.diag.run, desc: Read a diagnostic API route within its data scope } # --------------------------------------------------------------------------- # Cars. A car belongs to its owner, not to the home, and visits chargers. The From 5cbbdc5694b8228f47110e2256d50192342ca7bd Mon Sep 17 00:00:00 2001 From: Fredrik Ahlgren Date: Sun, 18 Oct 2026 16:18:38 +0200 Subject: [PATCH 2/3] Keep the full diagnostic read contract in sync --- protocol/registry.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protocol/registry.yaml b/protocol/registry.yaml index 22a78b80..0ae5357a 100644 --- a/protocol/registry.yaml +++ b/protocol/registry.yaml @@ -141,7 +141,7 @@ scopes: - { name: ftw.members.write, desc: Invite and revoke } - { name: ftw.logs.read, desc: Log excerpts the box redacts } - { name: ftw.config.read, desc: Configuration the box redacts } - - { name: ftw.diag.run, desc: Checks that change nothing } + - { name: ftw.diag.run, desc: Full technical diagnostics and read API } - { name: ftw.dispatch.hold, desc: Hold energy assets for a capped time } - { name: ftw.goals.request, desc: Ask an owner to change a durable goal } # Reserved: no op asks for an update yet, and no role but owner carries it. @@ -445,7 +445,7 @@ reads: - { msg: logs.get, scope: ftw.logs.read, desc: A log excerpt the box redacts } - { msg: config.get, scope: ftw.config.read, desc: A configuration section the box redacts } - { msg: diag.run, scope: ftw.diag.run, desc: A check that changes nothing } - - { msg: api.read, const: MsgAPIRead, scope: ftw.diag.run, desc: Read a diagnostic API route within its data scope } + - { msg: api.read, const: MsgAPIRead, scope: ftw.diag.run, desc: Read the full technical diagnostic API } # --------------------------------------------------------------------------- # Cars. A car belongs to its owner, not to the home, and visits chargers. The From 0d4e11a7d519fd1b95c713c3a5bc1df283082bb5 Mon Sep 17 00:00:00 2001 From: Fredrik Ahlgren Date: Sun, 18 Oct 2026 16:23:12 +0200 Subject: [PATCH 3/3] Keep the Swift diagnostic scope description in sync --- appleApp/FTWKit/Sources/FTWKit/Protocol/Contract.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appleApp/FTWKit/Sources/FTWKit/Protocol/Contract.swift b/appleApp/FTWKit/Sources/FTWKit/Protocol/Contract.swift index 5b82788f..384d6d14 100644 --- a/appleApp/FTWKit/Sources/FTWKit/Protocol/Contract.swift +++ b/appleApp/FTWKit/Sources/FTWKit/Protocol/Contract.swift @@ -83,7 +83,7 @@ public enum Contract { "ftw.members.write": "Invite and revoke", "ftw.logs.read": "Log excerpts the box redacts", "ftw.config.read": "Configuration the box redacts", - "ftw.diag.run": "Checks that change nothing", + "ftw.diag.run": "Full technical diagnostics and read API", "ftw.dispatch.hold": "Hold energy assets for a capped time", "ftw.goals.request": "Ask an owner to change a durable goal", "ftw.update.request": "Ask an owner to install a version",