Skip to content

Releases: TheDancingDeveloper-org/cadastre

v0.2.4

Choose a tag to compare

@thedancingdeveloper thedancingdeveloper released this 06 Sep 09:32
b9f4e6a

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 in lookup. The new hypervisor-hyperv collector reads a
    read-only JSON inventory of the host's guests (the Get-VM shape, exposed
    over HTTP by a small read-only shim) and emits the same neutral host
    observations Proxmox does — each guest as a server with hosted_in, the
    host itself as a hypervisor — reflecting only what the model already
    carries. A guestless host is a credible empty, so it keeps the default
    empty_expected rather than Proxmox's override. (#35)

  • Tailnet liveness on the Tailscale collector. vpn-tailscale already
    emitted hosts, but nothing distinguished a live tailnet node from a dormant
    one, so an offline node read as a current host. It now attaches online,
    last_seen, addresses, and os as x-tailscale evidence — the same
    attribute mechanism orchestrator-gitops uses — because the neutral host
    has no home for any of it and inventing a state field would put the two host
    collectors at odds. (#34)

Fixed

  • lookup no longer reads a stale collector as confirmation. The v0.2.3
    confirmation status read confirmed whenever any collector had reported an
    id — including one whose most recent run failed (unreachable) or is past
    its TTL, whose prior entities collect deliberately 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 a stale status ("no fresh
    collection has confirmed it since <as_of>") rather than confirmed, 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 drops FastMCP from mcp.server.fastmcp; the adapter already falls
    back to mcp.server.mcpserver.MCPServer, so both transports are unchanged for
    callers. The node, nginx, and python base 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

Choose a tag to compare

@thedancingdeveloper thedancingdeveloper released this 03 Sep 04:12

Added

  • lookup distinguishes 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 a confirmation status: confirmed (a
    collector reported this id), unconfirmed (collectors of this kind ran but
    none reported it), or unobserved (no collector reports this kind at all, so
    the state shown is the declaration only). (#28)

Fixed

  • check validates 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 —
    !reset to null, !override to 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)
  • lookup finds observed-only entities by natural name or reference.
    Observed-only secrets are keyed infisical:<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)
  • brief counts observed-only secrets instead of hiding them. The secrets
    section listed only the declared secret_refs and 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)
  • drift filters reach the CLI and the remote MCP bridge. The query layer
    and stdio tool already supported category / kind / source / limit /
    summary_only, but the remote MCP bridge forwarded an empty argument map and
    the CLI wired only --exit-code — so over MCP drift stayed 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

Choose a tag to compare

@thedancingdeveloper thedancingdeveloper released this 19 Aug 22:59

Fixed

  • lookup resolves against observed evidence, not just declared/.
    Cadastre returned missing_entity for 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
    drift dump 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 and as_of with declared: false, no
    declared_at and no relations — reachable, never promoted (DESIGN §1.3).
    The missing_entity message 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-gitops emits one entity per compose stack, which is the right
    altitude, but the constituent names survived only inside an attribute block
    nothing indexed — so lookup loki failed even though grafanaloki was
    known. Any x-* block listing mappings with a name is 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, so runs_on was 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-gitops now records host_attribution: unknown
    in its x-orchestrator block and warns how many stacks it could not place,
    and lookup <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)