12 Commits
Author SHA1 Message Date
mrcharles 0674fb6adc ci: runs-on ultix — fleet runner label scoping [#784]
ci / lint-and-test (push) Successful in 24s
2026-09-04 14:38:37 -05:00
mrcharles 92930b6597 ci(gitea): workflow — shellcheck + functional tests + secret scan [#784]
ci / lint-and-test (push) Waiting to run
Fleet CI standard adoption (Discourse t/333); 16 tests existed but
nothing enforced them mechanically.
https://projects.knownelement.com/issues/784
2026-09-04 07:43:49 -05:00
mrcharles 681cb56421 docs(doorman): showpiece README — mermaid scan lifecycle, badges, security model [#345]
Detail: https://projects.knownelement.com/issues/345
2026-09-03 13:34:22 -05:00
mrcharles 31de03d401 feat(doorman): break-glass local unlock — disaster path without HA [#345]
Founder ruling 2026-09-03: cover HA-down / network-down / power
recovery. DOORMAN_BREAKGLASS_IDS badges fire the relay LOCALLY (no HA
dependency), then best-effort POST flagged local_unlock:true so HA
logs without re-dispatching. --check-breakglass decision mode; 7/7
breakglass tests, full suites green.

https://projects.knownelement.com/issues/345
2026-09-03 08:10:29 -05:00
mrcharles 4fefd10abb feat(doorman): doorctl unlock endpoint — HA->Pi callback over Tailscale [#345]
Founder-approved 2026-09-03 (relay load side disconnected during
build). systemd socket-activated, Tailscale-bound, token+source
allowlist, EXIT-trap self-securing relay. 9/9 doorctl tests (auth
matrix + relay cycle, mocked relay), full suite + shellcheck clean.

https://projects.knownelement.com/issues/345
2026-09-03 07:04:12 -05:00
mrcharles 37d27f1158 docs(agents): gate re-scope — code fast-moving, human gate moved to KNEL/access-roster [#345]
Founder ruling 2026-09-02: no gates for code/host work; two-human
approval applies to the badge-ID control file (separate private repo).

https://projects.knownelement.com/issues/345
2026-09-02 21:59:06 -05:00
mrcharles f6357418e9 fix(doorman): stdbuf cannot exec shell functions — buffer inside decode_stream [#355]
Deployment rehearsal on ultix-field 2026-09-02 caught it live: the
listener showed active but decode_stream never ran (stdbuf exec's
binaries only). Line-buffering moved inside decode_stream; the od
stage keeps its own stdbuf.

Rehearsal note: https://projects.knownelement.com/issues/355
2026-09-02 21:45:44 -05:00
mrcharles 92956a9ae4 docs(governance): PR template + two-approver human gate for access work [#345]
Founder ruling 2026-09-02: physical server-room access 100% human
required — logged, approved, signed off. Branch protection lands
immediately after this commit. Also excludes .gitea/ from the
doc-pointer scan (framework dir, not docs).

https://projects.knownelement.com/issues/345
2026-09-02 21:27:16 -05:00
mrcharles 5ae0e7d5be docs(agents): scope ruling — server-room door only, no other locks [#345]
Founder directive 2026-09-02: badge work fully contained to the
server-room door; no other smart locks in scope.

https://projects.knownelement.com/issues/345
2026-09-02 21:18:46 -05:00
mrcharles 704b671d92 chore(doorman): close session WORKING.md scratchpad [#355] 2026-09-02 21:14:48 -05:00
mrcharles fbb43e7035 docs(doorman): README — architecture, webhook contract, deploy runbook [#355]
Cross-links: Discourse t/318 (docs SoR), Redmine #345/#355/#356,
PFVCluster, LegacyTechops lineage.

https://community.turnsys.com/t/318
2026-09-02 21:13:07 -05:00
mrcharles 84ea6e931e feat(doorman): badge listener + decoder TDD + deploy scaffolding [#355]
Modern successor of the 2018 Perl doorman (snapshot in legacy/):
bash+coreutils HID decoder, HA webhook dispatch, systemd unit.
Offline decoder suite green (9 tests); shellcheck zero-warning.

Umbrella #345. Work item: https://projects.knownelement.com/issues/355
2026-09-02 21:11:13 -05:00