<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>eds-inventory</title><link>https://cdeever.github.io/eds-inventory/</link><description>Recent content on eds-inventory</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://cdeever.github.io/eds-inventory/index.xml" rel="self" type="application/rss+xml"/><item><title>ADR-0001: Go Services and a SQLite Store</title><link>https://cdeever.github.io/eds-inventory/docs/architecture/decisions/0001-go-services-and-a-sqlite-store/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/eds-inventory/docs/architecture/decisions/0001-go-services-and-a-sqlite-store/</guid><description>&lt;h1 id="adr-0001-the-services-are-go-and-the-inventory-is-kept-in-sqlite-with-no-cgo"&gt;ADR-0001: The Services Are Go, and the Inventory Is Kept in SQLite, with No cgo&lt;a class="anchor" href="#adr-0001-the-services-are-go-and-the-inventory-is-kept-in-sqlite-with-no-cgo"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Status&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;span class="status-badge inc-green"&gt;Accepted&lt;/span&gt;&#10; 2026-10-24&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2026-10-24&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Scope&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;The language of eds-inventory&amp;rsquo;s services, and the database the inventory is kept in. Not how sources are matched to one another, which is later.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="context"&gt;Context&lt;a class="anchor" href="#context"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The inventory needs a store from its first slice, the owner&amp;rsquo;s iTunes&#10;library. It holds one owner&amp;rsquo;s music: a few thousand albums, not millions.&#10;It runs in EdS&amp;rsquo;s tenant, where EdS&amp;rsquo;s back end may run on one Pi or several&#10;(EdS ADR-0033), so whatever it is made of must run there.&lt;/p&gt;</description></item><item><title>Change Record Template (CHG)</title><link>https://cdeever.github.io/eds-inventory/docs/develop/records/change-record/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/eds-inventory/docs/develop/records/change-record/</guid><description>&lt;h1 id="change-record-template-chg"&gt;Change Record Template (CHG)&lt;a class="anchor" href="#change-record-template-chg"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;The shape every &lt;a href="https://cdeever.github.io/eds-inventory/docs/changes/"&gt;change record&lt;/a&gt; takes. Copy the skeleton into&#10;a new file, fill it in &lt;strong&gt;before&lt;/strong&gt; the change runs, and complete &lt;strong&gt;Outcome&lt;/strong&gt;&#10;after.&lt;/p&gt;&#10;&lt;p&gt;It follows Deevnet IoTaaS&amp;rsquo;s template, trimmed to what an application needs: no&#10;site or maintenance window, because eds-inventory changes one tenant.&lt;/p&gt;&#10;&lt;h2 id="where-it-goes"&gt;Where it goes&lt;a class="anchor" href="#where-it-goes"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Number&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;The next unused &lt;code&gt;CHG-NNNN&lt;/code&gt;, in the order records are opened. Runs across years, never reused, and kept even if the change is abandoned.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;File&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;docs/content/docs/changes/&amp;lt;YYYY&amp;gt;/&amp;lt;NNNN&amp;gt;-&amp;lt;slug&amp;gt;.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Title&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;CHG-NNNN: &amp;lt;What changed&amp;gt;&lt;/code&gt;, from the point of view of what is running&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;The day execution starts. While it is still planned, the planned date; with none yet, &lt;strong&gt;Unscheduled&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Weight&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;NNNN&lt;/code&gt;, so records sort by number&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Index&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Add a row to &lt;a href="https://cdeever.github.io/eds-inventory/docs/changes/"&gt;Change Records&lt;/a&gt; and to that year&amp;rsquo;s page&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="status"&gt;Status&lt;a class="anchor" href="#status"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;Planned&lt;/code&gt; → &lt;code&gt;In progress&lt;/code&gt; → &lt;code&gt;Complete&lt;/code&gt;, or &lt;code&gt;Rolled back&lt;/code&gt; or &lt;code&gt;Abandoned&lt;/code&gt;. A&#10;record is never deleted: a change that was abandoned or rolled back is exactly&#10;the one worth keeping.&lt;/p&gt;</description></item><item><title>CHG-0001: inventoryd on EdS's Workload</title><link>https://cdeever.github.io/eds-inventory/docs/changes/2026/0001-inventoryd-on-eds-workload/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/eds-inventory/docs/changes/2026/0001-inventoryd-on-eds-workload/</guid><description>&lt;h1 id="chg-0001-inventoryd-on-edss-services-workload-with-the-owners-itunes-library"&gt;CHG-0001: inventoryd on EdS&amp;rsquo;s Services Workload, with the Owner&amp;rsquo;s iTunes Library&lt;a class="anchor" href="#chg-0001-inventoryd-on-edss-services-workload-with-the-owners-itunes-library"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2026-10-24&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Change type&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Deployment&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Status&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;span class="status-badge status-complete"&gt;Complete&lt;/span&gt;&#10; 2026-10-24&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Systems&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;EdS&amp;rsquo;s services workload (&lt;code&gt;services.eds.mobile.deevnet.net&lt;/code&gt;): the image &lt;code&gt;localhost/eds-inventory&lt;/code&gt;, &lt;code&gt;eds-inventory.service&lt;/code&gt;, &lt;code&gt;/var/lib/eds-inventory&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;How&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;make -C deploy image load WHERE=builder&lt;/code&gt;, &lt;code&gt;make -C deploy unit&lt;/code&gt;, &lt;code&gt;make -C deploy library XML=…&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Risk&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Low. Nothing running asks it until EdS&amp;rsquo;s voiced is pointed at it (EdS CHG-0041). Most likely to go wrong: the Builder&amp;rsquo;s first build of the image&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Decisions&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://cdeever.github.io/eds-inventory/docs/architecture/decisions/0001-go-services-and-a-sqlite-store/"&gt;ADR-0001&lt;/a&gt;, &lt;a href="https://cdeever.github.io/eds-inventory/docs/architecture/decisions/0002-the-itunes-library-is-collected-from-its-xml/"&gt;ADR-0002&lt;/a&gt;, &lt;a href="https://cdeever.github.io/eds-inventory/docs/architecture/decisions/0003-it-deploys-itself-to-eds-workload/"&gt;ADR-0003&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Related&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;EdS CHG-0041, which points voiced at it&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="summary"&gt;Summary&lt;a class="anchor" href="#summary"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The first deployment of eds-inventory: inventoryd onto EdS&amp;rsquo;s services&#10;workload, answering on &lt;code&gt;127.0.0.1:8740&lt;/code&gt;, with the owner&amp;rsquo;s iTunes library&#10;collected into it.&lt;/p&gt;</description></item><item><title>Sources, Store and Clients</title><link>https://cdeever.github.io/eds-inventory/docs/architecture/system/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/eds-inventory/docs/architecture/system/</guid><description>&lt;h1 id="sources-store-and-clients"&gt;Sources, Store and Clients&lt;a class="anchor" href="#sources-store-and-clients"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;&lt;a href="https://cdeever.github.io/eds-inventory/docs/architecture/system/system.svg"&gt;&lt;img src="https://cdeever.github.io/eds-inventory/docs/architecture/system/system.svg" alt="eds-inventory: sources (Discogs, iTunes, MusicBee, Spotify, Tidal, and by hand) are collected into the inventory&amp;rsquo;s store; enrichment asks outside services once per album; clients such as EdS ask over HTTP." /&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;A first picture, drawn before anything is built. It shows the shape the&#10;requirements so far describe, and will change as they settle.&lt;/p&gt;&#10;&lt;h2 id="sources"&gt;Sources&lt;a class="anchor" href="#sources"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Where the owner&amp;rsquo;s music is kept today. Each stays the truth for what it&#10;holds.&lt;/p&gt;</description></item><item><title>ADR-0002: The iTunes Library Is Collected from Its XML</title><link>https://cdeever.github.io/eds-inventory/docs/architecture/decisions/0002-the-itunes-library-is-collected-from-its-xml/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/eds-inventory/docs/architecture/decisions/0002-the-itunes-library-is-collected-from-its-xml/</guid><description>&lt;h1 id="adr-0002-the-itunes-library-is-collected-from-its-xml-and-asked-for-by-nearest-name"&gt;ADR-0002: The iTunes Library Is Collected from Its XML, and Asked for by Nearest Name&lt;a class="anchor" href="#adr-0002-the-itunes-library-is-collected-from-its-xml-and-asked-for-by-nearest-name"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Status&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;span class="status-badge inc-green"&gt;Accepted&lt;/span&gt;&#10; 2026-10-24&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2026-10-24&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Scope&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;The first source, the owner&amp;rsquo;s iTunes library: how it is read, how its albums are kept, and the first version of the contract that answers for it. Not how the XML reaches the inventory, which waits on where the inventory runs.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Takes over&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;EdS ADR-0046, whose index of the library this replaces&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="context"&gt;Context&lt;a class="anchor" href="#context"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;EdS&amp;rsquo;s voiced matches spoken requests against an index of the owner&amp;rsquo;s iTunes&#10;library: &lt;code&gt;library.json&lt;/code&gt;, made by EdS from the XML iTunes writes and copied&#10;to voiced by hand (EdS ADR-0046). It asks four things of it: the artist&#10;nearest a name, the album nearest a title, the first of several titles the&#10;library has, and an artist&amp;rsquo;s own albums by year. That index is an inventory&#10;concern living in EdS.&lt;/p&gt;</description></item><item><title>Database Schema</title><link>https://cdeever.github.io/eds-inventory/docs/reference/schema/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/eds-inventory/docs/reference/schema/</guid><description>&lt;h1 id="database-schema"&gt;Database Schema&lt;a class="anchor" href="#database-schema"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;The inventory&amp;rsquo;s database, as &lt;code&gt;internal/store&lt;/code&gt; creates it: SQLite, schema&#10;version &lt;strong&gt;1&lt;/strong&gt; (kept in &lt;code&gt;PRAGMA user_version&lt;/code&gt;). Nothing but &lt;code&gt;internal/store&lt;/code&gt;&#10;reads or writes it&#10;(&lt;a href="https://cdeever.github.io/eds-inventory/docs/architecture/decisions/0001-go-services-and-a-sqlite-store/"&gt;ADR-0001&lt;/a&gt;).&lt;/p&gt;&#10;&lt;p&gt;This schema is being reworked; the changes agreed so far are on&#10;&lt;a href="../schema-proposed/"&gt;Proposed Schema&lt;/a&gt;, and this page stays what runs until&#10;they are built.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://cdeever.github.io/eds-inventory/docs/reference/schema/schema.svg"&gt;&lt;img src="https://cdeever.github.io/eds-inventory/docs/reference/schema/schema.svg" alt="The inventory&amp;rsquo;s tables: artists, albums, holdings and collections, and how they refer to one another." /&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;An album is the inventory&amp;rsquo;s; a holding is a source&amp;rsquo;s.&lt;/strong&gt; Each source that&#10;holds an album has a holding of it, found again on every collection by the&#10;key the source knows it by, so the album keeps its ID. A collection replaces&#10;its source&amp;rsquo;s holdings; an album no holding refers to is removed, and then&#10;an artist with no albums.&lt;/p&gt;</description></item><item><title>Incident Record Template (INC)</title><link>https://cdeever.github.io/eds-inventory/docs/develop/records/incident-record/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/eds-inventory/docs/develop/records/incident-record/</guid><description>&lt;h1 id="incident-record-template-inc"&gt;Incident Record Template (INC)&lt;a class="anchor" href="#incident-record-template-inc"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;The shape every &lt;a href="https://cdeever.github.io/eds-inventory/docs/incidents/"&gt;incident record&lt;/a&gt; takes. Copy the skeleton&#10;into &lt;code&gt;docs/content/docs/incidents/&amp;lt;YYYY&amp;gt;/&amp;lt;NNNN&amp;gt;-&amp;lt;slug&amp;gt;.md&lt;/code&gt;, numbered with the&#10;next unused &lt;code&gt;INC-NNNN&lt;/code&gt;, and add a row to the index.&lt;/p&gt;&#10;&lt;p&gt;Start the record while the incident is fresh, even with most sections empty.&#10;The timeline and the wrong turns are the parts memory loses first.&lt;/p&gt;&#10;&lt;h2 id="status"&gt;Status&lt;a class="anchor" href="#status"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;An incident carries a &lt;strong&gt;status&lt;/strong&gt; and a &lt;strong&gt;substatus&lt;/strong&gt;. The status says whether&#10;anything is left to do; the substatus says how far along it is, and only moves&#10;forward.&lt;/p&gt;</description></item><item><title>Where It Runs</title><link>https://cdeever.github.io/eds-inventory/docs/architecture/tenant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/eds-inventory/docs/architecture/tenant/</guid><description>&lt;h1 id="where-it-runs"&gt;Where It Runs&lt;a class="anchor" href="#where-it-runs"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;eds-inventory runs in &lt;strong&gt;EdS&amp;rsquo;s Deevnet IoTaaS tenant&lt;/strong&gt;, beside EdS&amp;rsquo;s own&#10;services. It is its own project, in its own repository, with its own&#10;releases; it shares a tenant with its first client, not a codebase.&lt;/p&gt;&#10;&lt;h2 id="why-the-same-tenant"&gt;Why the same tenant&lt;a class="anchor" href="#why-the-same-tenant"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;A tenant has no way in.&lt;/strong&gt; Deevnet IoTaaS&amp;rsquo;s tenant fabric has no inbound&#10;path by design (Deevnet ADR-0001, Deevnet ADR-0003); it is why EdS&amp;rsquo;s&#10;broker lives outside EdS&amp;rsquo;s tenant. A service in another tenant could not be&#10;asked over HTTP by EdS&amp;rsquo;s services without a path Deevnet IoTaaS does not&#10;offer. In the same tenant, EdS asks the inventory as &lt;code&gt;lightd&lt;/code&gt; asks&#10;&lt;code&gt;palette&lt;/code&gt;: one service to another, on the same network.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Nothing is invented for it.&lt;/strong&gt; No new path between tenants, and no&#10;Deevnet IoTaaS decision to wait on.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Sharing a tenant does not change the boundary. The inventory still knows&#10;nothing about EdS, and is still reached only through its contract.&lt;/p&gt;</description></item><item><title>ADR-0003: It Deploys Itself to EdS's Workload</title><link>https://cdeever.github.io/eds-inventory/docs/architecture/decisions/0003-it-deploys-itself-to-eds-workload/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/eds-inventory/docs/architecture/decisions/0003-it-deploys-itself-to-eds-workload/</guid><description>&lt;h1 id="adr-0003-eds-inventory-deploys-itself-onto-edss-services-workload-from-its-own-repository"&gt;ADR-0003: eds-inventory Deploys Itself onto EdS&amp;rsquo;s Services Workload, from Its Own Repository&lt;a class="anchor" href="#adr-0003-eds-inventory-deploys-itself-onto-edss-services-workload-from-its-own-repository"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Status&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;span class="status-badge inc-green"&gt;Accepted&lt;/span&gt;&#10; 2026-10-24&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2026-10-24&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Scope&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;How inventoryd reaches the machine it runs on, and how a library reaches it. Not which machine that is in the long run: EdS&amp;rsquo;s back end may become several Pis, and which services go where is open.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Extends&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://cdeever.github.io/eds-inventory/docs/architecture/tenant/"&gt;Where It Runs&lt;/a&gt;: EdS&amp;rsquo;s tenant, since a tenant has no way in from another&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="context"&gt;Context&lt;a class="anchor" href="#context"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The inventory runs in EdS&amp;rsquo;s Deevnet IoTaaS tenant, and its first client,&#10;EdS&amp;rsquo;s voiced, runs on EdS&amp;rsquo;s services workload. EdS deploys its own services&#10;there from its repository (&lt;code&gt;make -C deploy&lt;/code&gt;), as container images under&#10;systemd, built on the Builder and sent at a capped rate after its deploys&#10;hung the core router (EdS INC-0002).&lt;/p&gt;</description></item><item><title>Proposed Schema</title><link>https://cdeever.github.io/eds-inventory/docs/reference/schema-proposed/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/eds-inventory/docs/reference/schema-proposed/</guid><description>&lt;h1 id="proposed-schema"&gt;Proposed Schema&lt;a class="anchor" href="#proposed-schema"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;&lt;strong&gt;Not built.&lt;/strong&gt; This is the database as it is being reworked, table by table,&#10;in conversation with the owner (started 2026-10-24). What is agreed is in&#10;color; what is still to review, or proposed but not agreed, is gray. When the&#10;review is done, the schema is rebuilt as one clean version 1, the workload&amp;rsquo;s&#10;database is wiped, and the library collected again. Until then,&#10;&lt;a href="../schema/"&gt;Database Schema&lt;/a&gt; is what runs.&lt;/p&gt;</description></item></channel></rss>