Skip to content

0014: the two identity files, and what an appliance says about backup - #6

Open
marcos-mendez wants to merge 2 commits into
mainfrom
docs/decision-0014-appliance-identity
Open

marcos-mendez wants to merge 2 commits into
mainfrom
docs/decision-0014-appliance-identity

Conversation

@marcos-mendez

@marcos-mendez marcos-mendez commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Issue Keel-Linux/tracker#6 asked for an appliance to stop announcing
itself as TurnKey at login, and said the two hard parts belong in a
decision note rather than in a commit message. This is that note. It
covers those two questions and nothing else.

Does /etc/turnkey_version keep its name? Yes, and its format too.
It is a published interface, not branding: measured on a live appliance
on 2026-09-28, five things parse it (turnkey-version, the sysversion
library, keel.inspect.app, three inithooks files, and a tklbam hook),
and every one of those parsers is prefix sensitive. keel inspect
reports the appliance as missing for a string that does not begin
turnkey-. Keel writes /etc/keel_version beside it, the same four
fields with its own prefix, and everything an operator is shown reads
that one and falls back to the other.

The question uncovered a live defect. keel-core's changelog was renamed
to keel-core-19.0 on 2026-09-27 and fab derives /etc/turnkey_version
from the changelog's package name, so the next core layer would have
written keel-core-19.0-trixie-amd64 into a file none of those readers
accepts. The published layer predates the rename, so nothing shipped is
affected. Keel-Linux/common#5 normalises the prefix so the rule is
enforced rather than hoped for.

What does the appliance say about backup? One line: not configured,
no backup service yet, confconsole when there is one. No instruction to
run tklbam-init, because that links the machine to another project's
Hub, and no URL, because the documentation page it would point at
answers 404 today.

Implemented in Keel-Linux/common#5 and Keel-Linux/keel-core#9. Neither
this nor those should be merged before the maintainer has ruled on the
note: the status line says proposed.

…ackup

Issue Keel-Linux/tracker#6 asked for the login of an appliance to stop
announcing another distribution, and named two questions that had to be
answered before the text could be written: whether /etc/turnkey_version
keeps its name now that the distribution has another one, and what an
appliance says about backup now that TKLBAM is deferred by decision 0002.

The answers, with the evidence behind each: the TurnKey file is an
interface we honour, in its name and in its format, because five things
on a running appliance parse it and every one of those parsers is prefix
sensitive, and keel inspect drops the appliance identity outright for a
string that begins with anything else. Keel writes /etc/keel_version
beside it and that is what an operator is shown. On backup the appliance
says one true line and advertises nothing: not configured, no service
yet, confconsole when there is one. No URL, because the documentation
page it would point at answers 404 today.

The note records a defect the question uncovered: keel-core's changelog
was renamed to keel-core-19.0 on 2026-09-27, and fab derives
/etc/turnkey_version from that name, so the next core layer would have
written a string none of its readers accepts.
@marcos-mendez

Copy link
Copy Markdown
Contributor Author

Reviewed together with Keel-Linux/keel-core#9, Keel-Linux/common#5 and #4.

Checked the factual claims rather than taking them, because this note is what the next person will reason from:

  • The reader table is accurate. I confirmed sysversion (AppVer, get_turnkey_release, fmt_sysversion), keel.inspect.app.probe_appliance, inithooks/firstboot.d/29tagid with lib/tagid.sh, bin/secalerts.sh (which reads it indirectly, out of /etc/apt/apt.conf.d/01turnkey), and /etc/tklbam/hooks.d/maria-db-changes, whose sed -En "s|turnkey-[a-z0-9-]+-..." is prefix sensitive exactly as claimed.
  • The three parser quotations are correct verbatim, including that probe_appliance reports the appliance as missing rather than mis-parsing it.
  • "The published layer predates the rename" holds: the changelog rename is bf6d721 of 2026-09-27, the published core layer is 2026-09-26, and the booted core in keel-core's gate log still prints Welcome to Core, TurnKey GNU/Linux 19.0, which only a turnkey- string produces.
  • "It runs after every overlay, conf script, patch and removelist" is right, and stated more carefully here than in the companion pull request: root.patched/post follows root.patched/body, whose last action is the common removelists-final, and only root.patched/cleanup comes after it. The claim that a conf script could not do this job is also right, since conf scripts run in root.patched/body.
  • keellinux.org/docs/ is 404 and the site serves two pages, both measured today. The reasoning for printing no URL is sound, and the URL the login does print, https://github.com/keel-linux/confconsole, resolves and is public.
  • "It promises a place, not a service" survives contact with confconsole: it has no backup surface at all today, and the TKLBAM status it computes is only logged, never rendered, so an operator who follows the line finds nothing rather than finding another project's backup client.
  • 0014 is free; the open 0015 in Decision 0015: operator facing commands carry the Keel name #3 does not collide.

One observation rather than a finding: the reasoning in section 1 puts Keel-specific behaviour in common because it is shared by every appliance, while the companion recipe change keeps the login out of common to leave it offerable upstream (decision 0008). Both are defensible and both are argued, but the note is the place where the rule for choosing between them would live, and it does not state one. A sentence saying that the compatibility surface goes in common and the operator-facing surface goes in the product would settle the next case without another decision note.

Approve

Clean above LOW. The claims that would be expensive to be wrong about are each checkable and each checked out.

…ge lives

common#5 now writes both identity files from mk/turnkey-desktop.mk too,
the second copy of the same step, so the note says so.

Review asked for the rule behind putting the identity files in common and
the login in the product. Proposed: the compatibility surface goes in
common, the operator facing surface in the product, which is what keeps
common offerable upstream (0008).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant