Releases: TheDancingDeveloper-org/cadastre
Release list
v0.2.4
Added
-
Hyper-V hypervisor collector. Cadastre had a Proxmox collector but none
for Hyper-V, so a Hyper-V guest was unobserved where an equivalent Proxmox
guest resolved inlookup. The newhypervisor-hypervcollector reads a
read-only JSON inventory of the host's guests (theGet-VMshape, exposed
over HTTP by a small read-only shim) and emits the same neutralhost
observations Proxmox does — each guest as aserverwithhosted_in, the
host itself as ahypervisor— reflecting only what the model already
carries. A guestless host is a credible empty, so it keeps the default
empty_expectedrather than Proxmox's override. (#35) -
Tailnet liveness on the Tailscale collector.
vpn-tailscalealready
emitted hosts, but nothing distinguished a live tailnet node from a dormant
one, so an offline node read as a current host. It now attachesonline,
last_seen,addresses, andosasx-tailscaleevidence — the same
attribute mechanismorchestrator-gitopsuses — because the neutralhost
has no home for any of it and inventing a state field would put the two host
collectors at odds. (#34)
Fixed
lookupno longer reads a stale collector as confirmation. The v0.2.3
confirmationstatus readconfirmedwhenever any collector had reported an
id — including one whose most recent run failed (unreachable) or is past
its TTL, whose prior entitiescollectdeliberately retains. The record then
read as probe-backed while its only evidence had since gone dark — the same
"looks current while unverified" failure the confirmation work set out to
close. A match from a stale source now yields astalestatus ("no fresh
collection has confirmed it since<as_of>") rather thanconfirmed, and a
fresh collector still confirms despite a stale one beside it. ([#28])
Changed
- MCP SDK and base-image bumps. The MCP SDK moves from 2.0.0 to 2.1.1,
which dropsFastMCPfrommcp.server.fastmcp; the adapter already falls
back tomcp.server.mcpserver.MCPServer, so both transports are unchanged for
callers. Thenode,nginx, andpythonbase images and the GUI toolchain
are bumped alongside it. These change the bytes of the released images and
wheel without changing behaviour.
v0.2.3
Added
lookupdistinguishes a declaration from a collector's confirmation. A
declared entity with no collector behind it read as current truth while being
unverifiable — the way an offline host or an un-enumerated hypervisor guest
keeps mirroring its declaration with nothing to signal that no collector ever
looked. A declared lookup now carries aconfirmationstatus:confirmed(a
collector reported this id),unconfirmed(collectors of this kind ran but
none reported it), orunobserved(no collector reports this kind at all, so
the state shown is the declaration only). (#28)
Fixed
checkvalidates Compose overlays that use!reset/!override. The
shared YAML loader had no constructor for the Compose-spec merge tags, so an
overlay stopped at the loader with "could not determine a constructor for the
tag" while its base composed clean. The loader now sees through both tags —
!resetto null,!overrideto the value beneath it — so overlays are
checkable like any base file. The tags appear only in Compose, never in a
declared catalog file. (#22)lookupfinds observed-only entities by natural name or reference.
Observed-only secrets are keyedinfisical:<store>-<lowercased-key>while a
human types the bare name; exact-id matching missed them and then asserted
"no collector has observed one" — the confidently-wrong answer that had a
session ask for a credential already in the store. On an exact miss,lookup
now falls back to a normalised name/reference match and returns the
candidates. (#23)briefcounts observed-only secrets instead of hiding them. The secrets
section listed only the declaredsecret_refsand presented them as the
whole set; the observed-only secrets a collector had seen were invisible, so
an agent reading the brief as the estate map concluded "no such credential"
for secrets already in the store. It now shows a declared / observed-only
split with per-store counts (names stay out, so context cost stays bounded).
(#24)driftfilters reach the CLI and the remote MCP bridge. The query layer
and stdio tool already supportedcategory/kind/source/limit/
summary_only, but the remote MCP bridge forwarded an empty argument map and
the CLI wired only--exit-code— so over MCPdriftstayed one monolithic
dump that overruns the tool-result cap, and from the shell the filters were
unreachable. The bridge now forwards the arguments and the CLI grows the
matching flags, including--summary-only. (#25)
v0.2.2
Fixed
lookupresolves against observed evidence, not justdeclared/.
Cadastre returnedmissing_entityfor infrastructure it had itself observed
from a fresh collector run, and the message told the caller the catalog was
wrong. The observation was retained the whole time, reachable only inside a
driftdump large enough to exceed an MCP tool result limit. Resolution is
now declared, then observed, then containment. An observed-only hit is
labelled as one, carrying its source andas_ofwithdeclared: false, no
declared_atand no relations — reachable, never promoted (DESIGN §1.3).
Themissing_entitymessage is unchanged for the case it was written for,
and now also says that nothing observed the id either. (#19)- A container inside a stack is reachable by the name a human uses.
orchestrator-gitopsemits one entity per compose stack, which is the right
altitude, but the constituent names survived only inside an attribute block
nothing indexed — solookup lokifailed even thoughgrafanalokiwas
known. Anyx-*block listing mappings with anameis now indexed as
member names. No plugin key is special-cased, no value is interpreted, and
the answer is the containing entity marked as a containment hit, never a new
entity. (#19) - An unattributable host is stated rather than left empty. A GitOps repo
does not know its deployment target, soruns_onwas empty for every
observed service — which compares as agreement with a declared host rather
than as a gap, and made "what runs on this host?" unanswerable from
observation.orchestrator-gitopsnow recordshost_attribution: unknown
in itsx-orchestratorblock and warns how many stacks it could not place,
andlookup <host>reports both what collectors attributed to that host and
how many observations could not be attributed at all. Guessing a host from a
directory name stays refused. (#19)