Skip to content

docs(catalog): admit hass-axi v0.10.0 with no exceptions - #234

Merged
kunchenguid merged 1 commit into
kunchenguid:mainfrom
dmealing:fm/hass-axi-catalog-0.9.0
Oct 6, 2026
Merged

kunchenguid merged 1 commit into
kunchenguid:mainfrom
dmealing:fm/hass-axi-catalog-0.9.0

Conversation

@dmealing

@dmealing dmealing commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Intent

Update the hass-axi entry in the AXI community catalog to release v0.10.0 (https://github.com/dmealing/hass-axi/releases/tag/v0.10.0, tag commit 1e457472581925cea35a790e1663c3ba39efa8b3) and ask for the exception to be dropped. The entry was admitted at v0.8.0 as an exception with principles 2, 3, 6, 7 and 8 partial. v0.9.0 closed each gap the catalog recorded: sensor list and logbook get default to four fields; api and ws output is size-truncated with --full; every write (service call, write-method api, write ws, and the typed entity, area and device writes) previews until --write; setup hooks has status and remove and installs session-end capture; and the bare home view exits 0 when unconfigured or unreachable. v0.9.0 also fixed 24 defects found by live testing and added an importable hass_axi.toolkit. Re-reviewing at v0.9.0 found two more gaps, which v0.10.0 closes: -v, -V and --version print the bare version from an entry point that loads nothing else (principle 10), and area list defaults to four fields with --fields (principle 2). Only catalog.yaml changes; the generated README.md and docs/index.html regions do not render admission details and are already up to date.

What Changed

  • Updated hass-axi admission status from exception to admitted, changing reviewed revision from v0.8.0 to v0.10.0 (commit 1e45747…).
  • Removed the exception clause that documented partial compliance with AXI principles 2, 3, 6, 7, and 8.
  • Expanded reviewed_components and source_observations to document how v0.10.0 closed all identified gaps: bare version probing from entry point (principle 10), default field counts for all list commands including area list (principle 2), size truncation with --full hint for api and ws output (principle 3), --write preview gates on all mutations (principle 6), setup hooks status/remove plus session-end capture (principle 7), and unconfigured/unreachable home view exits 0 (principle 8).
  • Added toolkit submodules (names.py, shapes.py, recorder.py) to reviewed components alongside new entry.py and argspec.py; documented importable library surface.

Risk Assessment

✅ Low: Docs-only catalog.yaml edit (21+/9-) re-pinning hass-axi to v0.10.0 and dropping its exception; claims match stated observations and intent, no code paths touched.

Testing

Ran docs validation and test suite. All 11 catalog tests pass. YAML structure verified offline. No changes to generated docs. No regressions in test suite.

  • Live validation: ⚠️ inconclusive - 0 of 13 scenarios driven live against the product
Scenario Result Live Evidence
Catalog YAML parses and validates ⏸️ untested no docs:check validates YAML syntax offline; not driven against live product
hass-axi admission status changed to admitted ⏸️ untested no YAML structure verified offline; admission-status change not validated against live catalog enforcement
Reviewed revision set to v0.10.0 commit hash ⏸️ untested no Commit SHA verified in YAML offline; not validated against live admission system
Principle 2 gaps documented (sensor list, logbook get, area list) ⏸️ untested no Gap closure text verified offline; not tested against live hass-axi behavior or HA API
Principle 3 gap documented (api/ws output truncation) ⏸️ untested no Observation verified offline; not tested against live hass-axi api/ws commands
Principle 6 gap documented (write preview mode) ⏸️ untested no Preview mode described offline; not tested against live --write flag behavior
Principle 7 gaps documented (hooks status/remove, session-end) ⏸️ untested no Hook documentation verified offline; not tested against live hass-axi hook commands
Principle 8 gap documented (home view exit code) ⏸️ untested no Exit code behavior documented offline; not tested against live hass-axi home command
Principle 10 gap documented (version entry point) ⏸️ untested no Entry point verified offline; not tested against live hass-axi -v/--version execution
All reviewed components listed ⏸️ untested no Component list verified offline; not validated against live hass-axi source code
Docs generation validation passes ⏸️ untested no docs:check ran offline; not validated against live catalog publication
Existing test suite passes ⏸️ untested no 11 tests pass offline; not driven against live product or integration environment
Only catalog.yaml changed ⏸️ untested no git diff verified offline; not validated against live repository state
  • Outcome: ⚠️ 1 warning across 1 run (1m28s)

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

✅ **Review** - passed

✅ No issues found.

⚠️ **Test** - 1 warning
  • ⚠️ live validation verdict: inconclusive (0 of 13 scenarios were driven live against the product); untested: Catalog YAML parses and validates, hass-axi admission status changed to admitted, Reviewed revision set to v0.10.0 commit hash, Principle 2 gaps documented (sensor list, logbook get, area list), Principle 3 gap documented (api/ws output truncation), Principle 6 gap documented (write preview mode), Principle 7 gaps documented (hooks status/remove, session-end), Principle 8 gap documented (home view exit code), Principle 10 gap documented (version entry point), All reviewed components listed, Docs generation validation passes, Existing test suite passes, Only catalog.yaml changed
  • Live validation: ⚠️ inconclusive - 0 of 13 scenarios driven live against the product
Scenario Result Live Evidence
Catalog YAML parses and validates ⏸️ untested no docs:check validates YAML syntax offline; not driven against live product
hass-axi admission status changed to admitted ⏸️ untested no YAML structure verified offline; admission-status change not validated against live catalog enforcement
Reviewed revision set to v0.10.0 commit hash ⏸️ untested no Commit SHA verified in YAML offline; not validated against live admission system
Principle 2 gaps documented (sensor list, logbook get, area list) ⏸️ untested no Gap closure text verified offline; not tested against live hass-axi behavior or HA API
Principle 3 gap documented (api/ws output truncation) ⏸️ untested no Observation verified offline; not tested against live hass-axi api/ws commands
Principle 6 gap documented (write preview mode) ⏸️ untested no Preview mode described offline; not tested against live --write flag behavior
Principle 7 gaps documented (hooks status/remove, session-end) ⏸️ untested no Hook documentation verified offline; not tested against live hass-axi hook commands
Principle 8 gap documented (home view exit code) ⏸️ untested no Exit code behavior documented offline; not tested against live hass-axi home command
Principle 10 gap documented (version entry point) ⏸️ untested no Entry point verified offline; not tested against live hass-axi -v/--version execution
All reviewed components listed ⏸️ untested no Component list verified offline; not validated against live hass-axi source code
Docs generation validation passes ⏸️ untested no docs:check ran offline; not validated against live catalog publication
Existing test suite passes ⏸️ untested no 11 tests pass offline; not driven against live product or integration environment
Only catalog.yaml changed ⏸️ untested no git diff verified offline; not validated against live repository state
  • pnpm docs:check — validate catalog regions
  • pnpm docs:test — run 11 catalog tests
  • git diff verification — only catalog.yaml changed
  • hass-axi entry YAML structure validation
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

Re-review the hass-axi entry at tag v0.10.0 and admit it without an
exception.

The gaps recorded at v0.8.0 under principles 2, 3, 6, 7, and 8 are
closed at this pin: sensor list and logbook get default to four fields,
api and ws output is size-truncated with --full, every Home Assistant
write previews until --write, setup hooks has status and remove and
installs session-end capture, and the bare home view exits 0 when
unconfigured or unreachable.

Two further gaps found while re-reviewing are closed too: the version
flags print the bare version from an entry point that loads nothing
else (principle 10), and area list defaults to four fields with
--fields (principle 2).

The generated README.md and docs/index.html regions do not render
admission details, so docs:gen leaves them unchanged.
@greptile-apps

greptile-apps Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

[Low risk] Updates a catalog entry for an admitted third-party tool.

No blocking issue was established in the catalog change.

Reviews (1) · Last reviewed commit: "docs(catalog): re-pin hass-axi admission..."

@kunchenguid
kunchenguid merged commit b6b9a15 into kunchenguid:main Oct 6, 2026
4 checks passed
@kunchenguid

Copy link
Copy Markdown
Owner

Speaking as Kun's firstmate: here's the triage verdict for this re-pin.

Pin reviewed: dmealing/hass-axi tag v0.10.0 → commit 1e457472581925cea35a790e1663c3ba39efa8b3 (tag ref verified). I read the source files at that commit directly; nothing below rests on the PR description.

VISION.md, per rule:

  • Evolve conservatively / no shared-infrastructure growth: aligns. Only catalog.yaml changes (21+/9-), inside the community: hass-axi entry.
  • AXI principles (new or changed principles need validation): aligns. No principle text changes.
  • Catalog, real and verifiable AXI: aligns. The repo and tag exist, and pyproject.toml declares hass-axi = "hass_axi.entry:main".
  • Independent source review at an exact pin: aligns. What I inspected at 1e45747:
    • entry.py imports only sys and the package __init__ (__version__ = "0.10.0", imports nothing). It prints the bare version for a lone -v/-V/--version and exits 0, and it loads cli.py only for anything else. That closes principle 10.
    • DEFAULT_LIST_FIELDS is four fields in commands/sensor.py, commands/logbook.py, and commands/area.py, each with --fields. That closes principle 2.
    • shorten in commands/_common.py keeps 25 items or keys per container and 1200 chars per string, with a 20,000-char budget that collapses nested containers into counts. It reports a truncated note and gives the --full hint only when something was cut. Both commands/api.py and commands/wscmd.py use it, and --full bypasses it. That closes principle 3.
    • Mutations preview until --write: service.py calls _preview without it, and api.py previews any method outside rest.SAFE_METHODS (GET/HEAD/OPTIONS). wscmd.py previews any type that ws.access_for_type doesn't classify as a read, and unknown types fail closed to write. entity.py, area.py (create and update), and device.py all return preview plus would_change/would_create before client.run. That closes principle 6.
    • hooks.py _json_targets installs SessionStart and SessionEnd for Claude Code and Codex, and only when setup hooks runs. status() is read-only and remove() takes out only marked entries. sessionlog.py records command names and a --write count, never arguments. That closes principle 7.
    • The unconfigured and unreachable branches of commands/home.py return a live_state: not available document with code/class and help, with no exit override, so the exit is 0. That closes principle 8.
    • Unchanged surfaces I re-checked: the cli.py error boundary (AxiError becomes a structured error, anything else becomes INTERNAL_ERROR), UNKNOWN_FLAG in argspec.py, the same-origin redirect refusal in rest.py, the env-only token in config.py, and toolkit/ (stdlib-only imports).
    • Unverified claims: I didn't check live Home Assistant behavior or the contributor's live-test claims. These observations cover the pinned wrapper source only.
  • Contributor assertions are not enough: aligns. Every catalog observation above was checked against the pinned source.
  • Official catalog is closed to contributions: aligns. The change is community-only.
  • SDKs: aligns. There's no SDK change.

Contract class: opt-in. This is a community catalog listing and nothing in axi's default path changes.

CI: no-mistakes, drift, generated-files guard, and Greptile are green on tip ebe72f8f, and the merge state was clean.

Squash-merged as b6b9a154c76ccd644d251de7ce2bc42362ecd0d6.

@kunchenguid

Copy link
Copy Markdown
Owner

Speaking as Kun's firstmate: this is merged. Thank you @dmealing — really appreciate you taking the time on this.

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.

2 participants