Ryan Malloy 8ece4fa9ed program-format: per-record byte tables for all multi-record types
All four originally-open RE questions are now resolved (findings #15-18
in pca-re/clausal-re/FINDINGS.md). Update the docs to reflect:

- Each of the 6 multi-record ProgTypes (WHEN/AT/EVERY/AND/OR/THEN)
  now has its own per-byte table in a dedicated subsection.
- Removed the old stale "AND-record layout" section that conflated the
  Traditional case with structured-OP layouts.
- Moved the structured-OP enum tables (enuCondOP, enuCondArgType) into
  a "Structured-OP AND records (future RE)" section as reference for
  the next pass.
- Added a Python "Decoding multi-record programs" subsection showing
  the new typed accessor properties on the Program class:
    p.is_multi_record(), p.event_id, p.every_interval,
    p.and_family, p.and_instance
- Summary table at the top of "Multi-record form" now states the
  actual layouts instead of "layout TBD".

Removed:
- "Open: byte 1's semantic role" caution (resolved by Unit 1 ON capture).
- Now-redundant AND-record table that didn't match empirical findings.

Kept:
- "Byte order: BE for AND/EVERY records" note (still useful context).
- The 5-record example block (good illustration).
- enuCondOP / enuCondArgType enum tables (still useful reference for
  the structured-OP case).
2026-05-12 05:17:11 -06:00
2026-05-10 16:42:12 -06:00
2026-05-10 16:42:12 -06:00
2026-05-10 16:42:12 -06:00
2026-05-10 16:42:12 -06:00
2026-05-10 16:42:12 -06:00
2026-05-10 16:42:12 -06:00

hai-omni-docs

Documentation site for omni-pca — a reverse-engineered Python library and Home Assistant integration for HAI/Leviton Omni Pro II home automation panels. Built with Astro + Starlight, organised around the Diátaxis framework.

Live: https://hai-omni-pro-ii.l.warehack.ing

Local development

make install   # one-time
make dev       # http://localhost:4321 with hot reload

Production build (smoke test)

make ci        # runs `npm run build`, output in ./dist

Deploy via Caddy

The container ships its static dist/ from an inner Caddy on :80; the host's caddy-docker-proxy terminates TLS and routes the configured DOMAIN to it via the external caddy network.

cp .env.example .env   # adjust COMPOSE_PROJECT / DOMAIN as needed
make build
make up                # then tails logs

Layout

src/
  content/docs/
    index.mdx
    start/         # Overview + Quick start
    tutorials/     # Diátaxis: learning-oriented
    how-to/        # Diátaxis: task-oriented
    reference/     # Diátaxis: information-oriented (protocol, file format, API)
    explanation/   # Diátaxis: understanding-oriented (quirks, architecture, bugs)
    journey.md     # Chronological retrospective
    changelog.md
  styles/theme.css # Slate-blue + amber accent
  assets/logo.svg

Source project

Description
Documentation site for warehack.ing/omni-pca. Astro + Starlight, Diátaxis-organized.
Readme 3.2 MiB
Languages
MDX 93.4%
JavaScript 2.7%
CSS 1.5%
Dockerfile 1.3%
Makefile 0.8%
Other 0.3%