Skip to Content

A backup nobody has restored, and a door nobody remembers opening

before anything breaks
KNXD Guide · Part 7

A backup nobody has restored, and a door nobody remembers opening

This is where the guide turns to running the thing and recovering it, and the first move is not a backup job. Chapter 17 defines what gets saved, who holds it, who is allowed to decide that it goes back, and exactly which sentence the existence of a copy entitles you to write. Chapter 18 asks the awkward question underneath every commissioning weekend: which doors did not need to be open at all. Two worksheets, about thirty-five minutes, no credential typed, no firewall rule changed, and no restore attempted — because the point of both sheets is to stop a restore being attempted by whoever happens to be holding the laptop.

3 tiers
Copy exists, offline integrity record, recoverable — and only the third one is a restore
4 columns
Secrets, permissions, network exposure, approval records
about 35 min
Around 20 minutes on the backup card, around 15 on the exposure sheet
Why recovery starts on paper

Two chapters in the recovery half, and neither one presses a button

You have come through the commissioning half of this guide: the daemon, the interface, the driver, the INI, the ETS preflight, the Home Assistant entity model, the safety test matrix. Part 7 opens the third stretch — running it, and recovering when it breaks — and an installer reasonably expects it to open with a backup job and a firewall review. It does not. It opens with two sheets of paper.

Chapter 17 defines backup scopes, restoration responsibilities and a de-identified evidence index. Chapter 18 identifies gaps in permissions, secrets, network exposure and approval workflows. Neither creates a backup. Neither restores one. Neither modifies a firewall, a credential, an account or a network. The output of both is a record, and the record is the thing you will be glad of at two in the morning when someone with physical access to the cabinet asks whether it is safe to put the project back.

ChapterWhat comes out of itTimeSystem change
17 — Project backups Backup scope, custody, checks and restoration gates, written as a privacy-safe index About 20 minutes None. Do not create or restore real environment backups; compile only de-identified offline backup and restore drill lists
18 — Security baseline A gap list across secrets, permissions, network exposure and approval records About 15 minutes None. Do not modify permissions, secrets or networks; perform only an offline minimum-exposure review

Each chapter carries its own stop conditions, and they are worth reading before you pick up a pen rather than after somebody has already pasted something into a work order.

Ch 17 stops ifA backup or record contains confidential, environment-identifying, or unapproved content.
Ch 17 stops ifThe task requires restoring a backup or overwriting state in a real environment.
Ch 18 stops ifThe task requires exposing credentials, tokens, endpoints, accounts, or network topology.
Ch 18 stops ifThe task requires relaxing permissions, opening a network, or disabling security controls.

Both chapters sort every proposed action into the same four tiers, and the sorting does not change because the action sounds harmless.

flowchart TB
  subgraph OUT["Not done here"]
    direction LR
    O1["Isolated test
written approval, non-production rig,
admin present, limited network exposure,
stop-and-recovery plan"] O2["Approval required
viewing or changing a running
environment, read-only included"] O3["Never automate
group read or write, telegram,
ETS programming or downloads,
interface or bus connection,
control of physical equipment"] end subgraph IN["Safe: what Part 7 does"] direction LR I1["Offline pinned sources,
read only"] I2["Category and placeholder
worksheets, no live values"] end
Two columns, and only the left one is this partThe left column, the shorter of the two, holds everything Part 7 performs. The right column is the rest of the ladder — three tiers, each needing something this part does not have. Note where read-only sits in it: viewing a live environment is approval-required, and does not become safe because it changes nothing.
The bottom tier is a prohibition, and the test bus is no exception. Never automate: do not read or write groups, send a KNX telegram, perform ETS programming or downloads, connect a KNX interface or bus, or control physical equipment. The test bus is no exception — a rig on the bench does not move the tier, and neither does a telegram you are confident about.
The provenance gate is unchanged, and it applies to both chapters. Joining the repository, installing or starting also requires full isolation gates, written approval, an approved immutable artifact or image digest, and source-to-build attestation. Stop if any item is missing. Neither of these chapters performs those actions, and neither chapter's worksheet is an authorization to perform them.

One more framing to keep hold of, because it governs every sentence in both chapters. Everything this guide states is bounded by pinned sources — for Chapter 17, knxd/DOCS.md at the pinned KNXD Add-on 0.6.1 commit; for Chapter 18, that same file together with knxd/config.yaml. Those sources support what a field is called, what a document says, and what an options schema declares. They support nothing at all about what is running in your building, what is reachable on your network, or what is on your bus. Publication is not site validation.

The box and the catalog card

Two claims you may write, and one you may not

Chapter 17 turns on a single distinction: the saved content is one thing, the index of the saved content is another. An external reviewer, an insurer, a client's IT department or the next installer on site usually needs only the second one.

In plain terms

A backup is a sealed file box. The card on the outside of the box carries the content category, who holds it, whether it has been checked and when it lapses. It does not copy out what is inside. Someone reading the card learns that a box exists and who is responsible for it. They learn nothing whatsoever about whether the papers inside can still be read.

The formal names for the four things that card is doing are backup scope, chain of custody, restoration responsibilities and de-identified evidence indexing. In this chapter you complete the card only. The existence of a backup does not prove a successful restore, and the integrity of a copy does not prove that an application can read it or restore state from it.

That gives three separate kinds of evidence, and the whole discipline of the chapter is refusing to let the cheap two vouch for the expensive one.

flowchart TD
  A["A copy exists"] --> A2["You may write:
copy recorded"] B["An offline integrity record matches"] --> B2["You may write:
controlled replica consistent"] A2 -.->|"does not prove"| C["Recoverable"] B2 -.->|"does not prove"| C C --> D["Needs accurate versioning, compatibility,
scope of approval, stopping conditions
and evidence of an independent exercise"] D --> E["Pinned sources do not support
that set of procedures.
Mark restoration unverified"]
Two cheap claims and one expensive oneThe two dotted arrows are the crossing this chapter forbids. Both of them arrive at the same box, from different starting points, and neither is allowed to license what that box says.
Kind of evidenceWhat it actually showsWhat it does not license you to claim
Copy existence Someone saved something, and it is recorded on the index That the scope is right, that custody is defined, that anything can be read back
Offline integrity record A comparison saying the controlled replica remains consistent That an application can parse it, that versions are compatible, that state can be restored
Recoverability Nothing yet — it needs accurate versioning, compatibility, scope of approval, stopping conditions and evidence of an independent exercise Anything at all, until that separate exercise has happened under its own approval
The ETS project case is explicitly unproven. The pinned sources do not contain precise backup or restore procedures for ETS projects. Procedures, formats, compatibility and restoration results are therefore all marked unverified on your card. That is not caution for its own sake: on a KNX job the thing being restored eventually goes back to devices that move blinds and drive heating, and a card claiming more than the source supports is how a restore gets attempted on a Friday afternoon on the strength of a checkbox.

Responsibility splits the same way. The backup role manages retention and expiration. The restoration role decides when a separate restoration exercise may begin. The independent-review role checks scope, evidence limits and privacy. A statement that “someone is responsible” cannot replace these three distinct assignments.

Five columns, six steps

Filling in the card without filling in a single live value

Prepare a blank index that contains no live values, and fill every field with a category, a role or a status. Five columns, and each has a rule about what may go in it.

ColumnWhat goes inWhat must not
Purpose Save, audit, or restore plan Do not default to restore because restore is the word everyone reaches for
Scope Data categories, exclusion categories, retention policy Project names, or any listing of contents
Responsibility The roles of creation, custody, restoration decision-making, independent review and exception approval Individual names in place of roles
Evidence Source version, creation record type, completeness status, review status, evidence gaps Any conclusion about restorability
Privacy check A confirmation that the row is clean Secrets, accounts, endpoints, hosts, networks, paths, serial numbers, addresses, scopes, environment names

The responsibility column lists five roles and the step that fills it in names four of them — creation being the one the step leaves implicit, since somebody has already made the copy by the time the card is written. Fill in all five and you have satisfied both readings, which is the cheaper option when a reviewer is reading your card rather than the source.

In plain terms

The person who keeps the archive key is not the person who decides a file goes back into circulation. That separation feels like bureaucracy right up to the week the archivist, alone on a Saturday, puts back the version everyone had agreed to abandon. Custody is a duty of care. Deciding it goes back is a different job with a different signature.

Six steps, in order. They organize paper management information and nothing else — you will not open a formal project, nor create, import, or overwrite any content.

  1. Step 1

    Write down the purpose of saving

    Explain in one sentence why backup management is needed, and state on the card that this chapter does not perform backup or restore. That second sentence is doing real work: the card outlives the afternoon you wrote it, and its next reader will not have this page open.

  2. Step 2

    Define the backup scope

    List only the data categories that need to be saved and those that must be excluded. Do not fill in any live values. An exclusion category is as much a decision as an inclusion, and it is the half that gets left blank.

  3. Step 3

    Assign responsibilities

    Assign custody, restoration decision-making, independent review and exception approval roles respectively. Then write the retention policy and the handover conditions. If a role has nobody, leave it visibly unassigned rather than quietly attaching it to whoever is nearest.

  4. Step 4

    Create a privacy-safe index

    For each preservation category, document the status, the source version, the retention policy and the evidence limit. Replace actual content with Redacted or Pending Verification. Those two placeholders are not the same claim, and choosing between them honestly is most of the value of the row.

  5. Step 5

    Mark the evidence limit

    Separate copy existence, offline integrity record and recoverability. The first two items cannot endorse the last one. Write the limit on the row itself, where the next reader will meet it, not in a note at the bottom of the sheet.

  6. Step 6

    Submit the index for independent review

    Confirm that the index does not identify the environment and does not state unverified results as facts. If anything is missing, return it for correction rather than approving it with a comment.

The gate that matters most on this card is the one in front of an actual restore, because that is the request that arrives under pressure and from someone senior.

flowchart TD
  R["Someone asks for a restore"] --> Q1{"Is a restoration decision
role named on the card?"} Q1 -->|"no"| N1["Leave it unassigned and stop.
Custody does not inherit
the decision"] Q1 -->|"yes"| Q2{"Scope, written approval and
stopping conditions all present?"} Q2 -->|"no"| N2["Treat it as unapproved
and keep it stopped"] Q2 -->|"yes"| Y["A separate restoration exercise
can be planned under its own
approval. Chapter 17 presses nothing"]
Three ways this ends, and two of them are a stopBoth decision diamonds send their no branch to a stop, and the yes route that survives to the bottom still does not reach a restore — it reaches the planning of a separate exercise that has to be approved on its own terms.
Read your finished card back as a stranger. Before it goes for review, look at every cell and ask whether it could be used to identify this building, this client or this installation. Names, paths, serial numbers and scopes creep in through the evidence column more often than through the scope column, because the evidence column is where people paste.
The rule about time

The one instruction both chapters repeat, word for word

Each chapter states it four times over: in the preparation, in the steps, in the completion check and again in the FAQ. When a source repeats an instruction eight times across two short chapters it is not padding; it is a rule the author expects to be broken.

Not allowed on either worksheet: environment or event timestamps, log timestamps, backup creation times, execution times, or any time that can be associated with family activities or system events.

What you may use instead is narrow and conditional. When there is a real need for governance, and the data is not derived from live events and the environment cannot be identified, a reviewed formalized policy deadline or an abstract expiration status can be used. When precise dates are not required — and on these two sheets they generally are not — relative or status classifications are preferred.

not expired — the item is inside its policy window, and the window itself is a policy, not an event
to be renewed — the window is closing and a named role has to act
expired — the window has passed, which is a governance fact and not a log line
In plain terms

A delivery card left on a doorstep saying “called Tuesday, 14:05, no answer” tells anyone walking past when that house is empty. The card only needed to say that a delivery is waiting. A backup index carrying creation times, execution times and log timestamps does the same trick for a building: it hands a reader the daily rhythm of a house, or a maintenance window, alongside the list of what is worth taking.

This is why a status classification is the default and a date is the exception. A deadline that came out of a reviewed policy document describes an intention. A timestamp scraped from a log describes an event that happened in a real building, and once it is in a shared worksheet you cannot get it back.

Four columns of exposure

Which doors did not need to be open in the first place

Chapter 18 starts from the opposite end to the way commissioning usually goes. Rather than asking what still needs opening to make the job work, it asks which openings could be closed without anybody noticing. Convenience is not a reason to retain exposure.

In plain terms

A building does not give every key to everyone, and it does not prop every door open because the last contractor found it handy. Each person gets the keys their work needs. Each door opens for a stated scope and a stated period. Anything outside that is an exception, and an exception has a name against it and a date it comes back.

The formal names are least privilege, minimal network exposure, minimized secrets and traceable approvals. The worksheet turns them into four questions asked of every row: what is needed, who is responsible, when, and how to cancel. You record only categories and decisions — never a key's contents, never a door's location.

Draw the four columns before you collect any information. Every column carries the same six attributes: requirements, ownership roles, approval status, expiration policy, revocation method and evidence limit. What differs is what is permitted inside.

ColumnWhat you writeWhat never appears
Secrets Only exists, not entered into the record, or pending controlled review No values are copied, in any form, masked or otherwise
Permissions Capability categories only: reading, changing, approving, reviewing Account numbers, or a person's name
Network exposure Trust boundary category, the requirement it serves, and the deadline policy Host, address, endpoint, or topology
Approval records The approval role, a controlled record reference, the scope, and an abstract expiration status Signatures, or personal certification

Two categories of information get confused constantly on jobs like this, and they leak by different routes. Secrets grant access directly. Environment-identifying data reveals asset relationships. Neither belongs in public guides, screenshots, log excerpts, work orders, or submission records — and the second one is the one that gets pasted, because it does not look like a secret.

Five triggers that stop the worksheet immediately. Stop the process the moment any of these appears: a secret; environmental identification; an unknown source; a request to extend rights; or a request to modify security controls. Stopping is the deliverable in that case. A partially completed sheet with an honest stop on it is a better artifact than a complete one that had to swallow a credential to finish.
A schema describes structure, not security status. The pinned Add-on options schema supports field names, types and structure boundaries. It does not prove that an execution environment has restricted networks, reduced privileges, or kept secrets secure. Keep document facts and environment state in separate columns of your head, because a schema is a very convincing-looking piece of evidence for a claim it cannot make.
Six passes, three verdicts

The review produces a gap list, not a configuration

This review produces a list of gaps. It does not produce settings, commands, or live results. Six passes, in order.

  1. Pass 1

    State the necessary purpose first

    Each column addresses only one requirement. Mark any item without an explainable purpose as a risk to remove. “It was already like that” is not a purpose, and neither is “the last engineer needed it.”

  2. Pass 2

    Check the secret column

    Confirm that public records only show confidential processing status. Sharing stops the moment any secret value appears — not after the sheet is finished, and not after it has been sent to one more person for a quick look.

  3. Pass 3

    Check the permissions column

    Separate reads, changes, approvals and reviews. Record a missing expiration policy, a missing revocation method or a missing owning role as a gap. These are three different absences and each gets its own line.

  4. Pass 4

    Check the network-exposure column

    Use trust boundary categories to describe the necessary interfaces. Any exposure without a purpose, a role or a duration policy is listed as a gap. On a KNX job this is the column where a commissioning convenience quietly becomes a permanent route into the bus side of the building.

  5. Pass 5

    Check the approval record column

    Verify that each exception has a scope, an approval role, an expiration policy, revocation conditions and a controlled record reference. An exception missing any one of those five is an exception in name only.

  6. Pass 6

    Do an independent review

    A different role checks the four columns and the data minimization. The conclusion is written as one of three words, and no other.

Verdictcomplete — the four columns are filled to the rules, and minimization holds
Verdictwith gaps — the sheet is honest, and the named gaps are the work list
Verdictstopped due to insufficient data — a real result, and often the correct one

Inside those passes, one row at a time, the sheet is really a four-gate test. A row that clears all four gates is complete; a row that fails any gate produces a named gap rather than a permission.

flowchart TD
  A["One row: a secret, a permission,
an exposure or an exception"] --> Q1{"Purpose
explainable?"} Q1 -->|"no"| G1["Risk to remove"] Q1 -->|"yes"| Q2{"Owning role
named?"} Q2 -->|"no"| G2["Governance gap.
Add no new permissions"] Q2 -->|"yes"| Q3{"Expiration
policy set?"} Q3 -->|"no"| G3["Incomplete. Do not replace
a missing decision with
permanent exposure"] Q3 -->|"yes"| Q4{"Revocation method and
controlled record reference?"} Q4 -->|"no"| G4["Exception in name only"] Q4 -->|"yes"| OK["Row recorded as complete"]
Four gates, four ways to fail, one way throughEvery gap box hangs off a no branch, and the four of them are worded differently on purpose — the fix for a missing purpose is deletion, while the fix for a missing expiry is a decision somebody still has to make.

What each chapter counts as finished

Chapter 17 is complete when the index is safe for review — not when the environment is restorable. Eight checks:

  • The purpose of preservation and the inclusion and exclusion categories are all clear, with no environmental values.
  • Custody, restoration decision-making, independent review and exception approval each have a responsible role.
  • The evidence index contains only category, status, retention policy and source version.
  • No environment or event timestamps, log timestamps, backup creation times, execution times, or any time associable with family activities or system events.
  • Where governance genuinely required a date, it is a reviewed formalized policy deadline or an abstract expiration status, not derived from live events and not identifying the environment.
  • A copy's existence and its offline integrity are not described as proof of a successful restore.
  • Accurate backup procedures, compatibility and restore results are still marked unverified.
  • All environment, KNX bus, ETS and integration results remain unproven.

Chapter 18 is complete when the result is a de-identified governance list. It does not indicate that any control has been applied in a production environment. Eight checks:

  • The secret field has no credentials, tokens, sessions, passwords, cookies, or retrievable connection information.
  • The permission column separates read, change, approval and review, and records deadline policies and cancellation responsibilities.
  • The network exposure column contains only requirements, trust boundary categories, owning roles and expiration policies.
  • Each exception has an approval role, a scope, an abstract expiration status and revocation conditions.
  • The record has no host, endpoint, account, path, serial number, address, topology or environment name.
  • No environment or event timestamps, log timestamps, backup creation times, execution times, or any time associable with family activities or system events.
  • Where a date was genuinely required for governance, it is a reviewed formalized policy deadline or an abstract expiration status.
  • All field controls, execution environments, buses, ETS and integration results remain unproven.
When someone pushes

The twelve ways these two sheets go wrong

Both chapters ship a troubleshooting list, and the entries are less about mistakes than about pressure — the moment where the honest answer is inconvenient and the sheet quietly gets a better one. Six from the backup card first.

What you noticeWhat to do
The scope column reads like a list of contentsReplace it with data categories, and remove names, locations and values
The restore responsible role cannot be foundLeave it unassigned and stop. Do not automatically assume the custodial role is the restoration decision-making role
A copy is described as restorable merely because it existsLimit the conclusion to “copy recorded,” and mark parsing, compatibility and restoration as unverified
The index contains sensitive informationStop sharing and withdraw the copy. Minimize it again, and give it to a different role for review
Someone asks for the operation screenRefuse. There is no live backup or restore procedure in this chapter
Someone asks to join or start the toolStop. In the absence of an approved immutable provenance gate, it will not join, install or start

Six more from the exposure sheet.

What you noticeWhat to do
A field appears to require live valuesChange it to a data category and mark it “controlled review required.” Do not bring values into the worksheet
A permission has no owning roleMark it as a governance gap, and stop adding new permissions
A network exposure has no expiration policyMark it incomplete. Do not replace a missing decision with permanent exposure
Only verbal approval existsTreat the item as unapproved and keep it stopped
Someone asks you to modify the firewall or the credentialsRefuse. This chapter is an offline worksheet and does not provide firewall, credential or live system change procedures
The environment can still be identified after maskingRemove more context, or use a text-only category summary instead
Two of those twelve are the same instruction from different directions. “Give it to a different role for review” and “a different role checks the four columns” both exist because the person who wrote a row is the worst possible person to judge whether it identifies the environment. They already know what it means, so the missing context is invisible to them and only to them.
Questions people ask

The ones that come up on site

We found a backup. Does that mean we are safe?
No. You also need to know the scope, the custodial roles, the retention policy, the privacy position and the evidence limits. A found backup answers one question — something was saved — and leaves the four that matter open. It is common to discover, once the card is filled in, that the found copy has no named custodian and an unknown scope, which is a different situation from having no backup but not a much better one.
The worksheet asks for a deadline. Can I put today's date in?
No. Environment or event timestamps, log timestamps, backup creation times, execution times, or any time that can be associated with family activities or system events are not allowed. Where there is a real need for governance, and the data is not derived from live events and the environment cannot be identified, a reviewed formalized policy deadline or an abstract expiration status can be used. When precise dates are not required, prefer relative or status classifications: not expired, to be renewed, expired.
Can the index contain file names?
Do not put in file names that can identify the environment. Use stable data categories and anonymous status instead. File names are one of the most reliable leaks on a job like this, because a project file is usually named after the building or the client and nobody thinks of that as sensitive information until it is in a shared document.
Can the custodian decide to restore?
This chapter requires that preservation and restoration decisions be documented separately. Actual responsibilities are approved separately by the organization — this guide defines the separation, not who fills each slot in your company. What it will not accept is the two roles collapsing into one because the same person happens to be doing both jobs today.
Will this chapter validate my ETS project?
No. There is no evidence of precise procedures in the pinned sources, and this chapter performs no ETS actions at all. Procedures, formats, compatibility and restoration results stay marked unverified on the card until a separate exercise, under its own approval, produces evidence for them.
Once the checklist is complete, can I say the system is recoverable?
No. You may say only that the paper record defines the scope, the responsibilities and a de-identified index. Recoverability is a separate class of evidence and needs accurate versioning, compatibility, scope of approval, stopping conditions and evidence of an independent exercise. Completing a checklist about backups is not the same act as restoring one.
Can I put a full log on the worksheet if it is masked?
No. Capture the smallest category needed to answer the question first, then remove context and identifying data. Masking a complete log is the wrong order of operations: it starts from everything and tries to subtract, and what survives is usually still enough to identify the environment through timing, sequence and structure.
Is read-only access to the live settings safe?
No. Read-only viewing of any live or running environment is approval-required. It does not become safe because it makes no changes — the classification is about what is exposed to the viewer and to the record, not about what is written back.
Can secrets be disclosed if the disclosure is approved?
No. Approval does not turn secrets into public information. An approval can authorize an action; it cannot change the class of the data. If a task cannot be completed without a secret value appearing in a shared record, the task stops.
Does the listener status prove that the network is restricted?
No. Neither document vocabulary nor program messages demonstrate trust boundaries and endpoint restrictions. A daemon reporting that it is listening tells you about the daemon. It says nothing about which networks can reach it, which is the question the network-exposure column is actually asking.
Does completing the checklist demonstrate the state of our security controls?
No. It means the offline governance record has been completed, or that the gaps have been marked. All field controls, execution environments, buses, ETS and integration results remain unproven. That gap between a good record and a verified installation is exactly the gap the record exists to keep visible.
Why does a completeness record not count as a recoverability record?
Integrity records only compare whether the controlled replica remains consistent. Recoverability also requires accurate versioning, compatibility, scope of approval, stopping conditions and evidence of an independent exercise. The current pinned sources do not support that set of procedures, so this chapter cannot support a recoverability conclusion — and neither can you, on the strength of a hash that matches.
Next

Where to go from here

still offline

The record is defined. Now the symptoms.

Part 8 stays off the bus and works through failure: link symptoms sorted into an offline distribution table, then the USB side. Same discipline — categories, not captured values — and the card and worksheet you have just built are what those symptom tables get filed against.

Open the full guide

Part 7 of the WoowTech KNXD Complete Tutorial series on the Apporo blog.

Adapted from the WoowTech KNXD complete tutorial, produced by WoowTech and republished by Apporo.

Versions and claims are bounded by the pinned sources. Publication does not represent validation of any live site, hardware, network or KNX bus, and is not an authorization to operate KNX, ETS, Home Assistant, group objects or physical control.

Light · Air · Water · Control · apporo

in KNXD
The entity is not the address, and a classification ticket is not permission