From 4e96ac856e0e4b8493b12c8d352f8f8c8c621243 Mon Sep 17 00:00:00 2001 From: echo6-autocommit Date: Tue, 14 Jul 2026 00:00:14 +0000 Subject: [PATCH] auto: docs sync 2026-07-14T00:00:14+00:00 Files changed: engine/lint-report.md engine/sweep.sh vault/.obsidian/workspace.json vault/docs/software/central.md --- engine/lint-report.md | 2 +- engine/sweep.sh | 12 ++++++------ vault/.obsidian/workspace.json | 12 ++++++------ vault/docs/software/central.md | 13 +++++++------ 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/engine/lint-report.md b/engine/lint-report.md index ac6ac8f..a9f8b18 100644 --- a/engine/lint-report.md +++ b/engine/lint-report.md @@ -1,6 +1,6 @@ # Vault Lint Report -Generated: 2026-07-13T12:00:23Z | Docs scanned: 105 | Elapsed: 0.0s +Generated: 2026-07-13T18:00:33Z | Docs scanned: 105 | Elapsed: 0.0s ## Summary diff --git a/engine/sweep.sh b/engine/sweep.sh index bba37f0..b3cfcad 100755 --- a/engine/sweep.sh +++ b/engine/sweep.sh @@ -133,7 +133,7 @@ if [ "$OPT_ALL" -eq 1 ] || [ ! -f "$LAST_SWEEP" ]; then fi while IFS= read -r -d '' f; do # Skip archive - if [[ "$f" == *"/archive/"* ]]; then + if [[ "$f" == *"/archive/"* || "$f" == *"/.trash/"* ]]; then continue fi DOC_LIST+=("$f") @@ -143,7 +143,7 @@ else echo " Mode: incremental — docs modified since ${LAST_TS}" # Compare file mtime to .last-sweep mtime (not contents) while IFS= read -r -d '' f; do - if [[ "$f" == *"/archive/"* ]]; then + if [[ "$f" == *"/archive/"* || "$f" == *"/.trash/"* ]]; then continue fi DOC_LIST+=("$f") @@ -204,10 +204,10 @@ if [ "$OPT_DRY" -eq 0 ]; then date -u +%Y-%m-%dT%H:%M:%SZ > "$LAST_SWEEP" { printf "\n## %s — sweep run\n" "$SWEEP_START" - printf "- end: %s\n" "$SWEEP_END" - printf "- mode: %s\n" "$([ "$OPT_ALL" -eq 1 ] && echo "--all" || echo "incremental")" - printf "- docs selected: %d\n" "$TOTAL" - printf "- processed: %d | written: %d | flagged: %d | errors: %d\n" \ + printf -- "- end: %s\n" "$SWEEP_END" + printf -- "- mode: %s\n" "$([ "$OPT_ALL" -eq 1 ] && echo "--all" || echo "incremental")" + printf -- "- docs selected: %d\n" "$TOTAL" + printf -- "- processed: %d | written: %d | flagged: %d | errors: %d\n" \ "$N_PROCESSED" "$N_WRITTEN" "$N_FLAGGED" "$N_ERRORS" } >> "$CHANGELOG" echo " .last-sweep updated. Changelog appended." diff --git a/vault/.obsidian/workspace.json b/vault/.obsidian/workspace.json index 7cd4a73..65390ce 100644 --- a/vault/.obsidian/workspace.json +++ b/vault/.obsidian/workspace.json @@ -199,17 +199,17 @@ }, "active": "17bd4a6166f789d0", "lastOpenFiles": [ + "docs/software/central.md.tmp.2217597.5f057dc86d0a", + "docs/software/central.md.tmp.2217597.f65fc65a678c", + "docs/software/central.md.tmp.2217597.51f154bfbc88", + "docs/software/central.md.tmp.2217597.5bf096d10d72", + "docs/software/central.md.tmp.2217597.ac900704af53", + "docs/software/central.md.tmp.2217597.24f28a928ea9", "runbooks/lxc-service-migration.md.tmp.2217597.ef0b7b5fefc5", "runbooks/lxc-service-migration.md.tmp.2217597.ff9206e1ecc9", "runbooks/authentik-create-invitation.md.tmp.2217597.48bf7c4dd5b1", "runbooks/authentik-create-invitation.md.tmp.2217597.e42e1524f89f", "runbooks/authentik-create-invitation.md.tmp.2217597.28c10044e078", - "runbooks/authentik-oidc-application.md.tmp.2217597.1beb148d6685", - "runbooks/authentik-oidc-application.md.tmp.2217597.8c872b0d8558", - "runbooks/authentik-oidc-application.md.tmp.2217597.f9c4cbed7ec4", - "runbooks/authentik-oidc-application.md.tmp.2217597.6838e5562889", - "glossary.md.tmp.2217597.98abda89426b", - "glossary.md.tmp.2217597.b4ff5128b973", "archive/projects/vaultwarden-plan.md", "archive/projects/meshai-native-fire-severity-audit-cc-handoff.md", "projects/meshai-native-fire-severity-audit-cc-handoff.md", diff --git a/vault/docs/software/central.md b/vault/docs/software/central.md index fd002d1..1f39243 100644 --- a/vault/docs/software/central.md +++ b/vault/docs/software/central.md @@ -20,7 +20,7 @@ central is a multi-domain real-time data-hub spine. Adapters normalize upstream - **URL (internal):** http://central.echo6.mesh:8000 (mesh-only, no public exposure) - **Host:** utility CT 104 (unprivileged Ubuntu LXC) -- **Repo:** github.com/zvx-echo6/central (public, Python, deployed at detached HEAD, tag v0.14.5) +- **Repo:** github.com/zvx-echo6/central (public, Python, deployed at detached HEAD, tag v0.15.0) - **Deploy path:** /opt/central (venv: /opt/central/.venv, env: /etc/central/central.env, system user: central) ## Host @@ -71,7 +71,7 @@ All three units are **enabled and active**; [[deployment]] survives reboot. Deps ## GUI / API Surface -Authenticated app with login/sessions/CSRF, first-run setup wizard, operator management, adapter configuration, stream viewer, **JetStream consumer management** (`/consumers` — view + delete consumers; central's own `archive-*` durable consumers are protected/non-deletable; CSRF + audit-logged), enrichment pipeline, monitoring-area management, API key management, audit log, and manual resend. +Authenticated app with login/sessions/CSRF, first-run setup wizard, operator management, adapter configuration (incl. **no-code creation of generic REST/GeoJSON sources**, v0.15.0), stream viewer, **JetStream consumer management** (`/consumers` — view + delete consumers; central's own `archive-*` durable consumers are protected/non-deletable; CSRF + audit-logged), enrichment pipeline, monitoring-area management, API key management, audit log, and manual resend. **Auth-exempt tile endpoints** (used by navi, verified HTTP 200): @@ -96,11 +96,12 @@ navi-traffic (navi's in-VM :8421 extraction service) was **retired on 2026-05-26 ## Data Plane -Single TimescaleDB hypertable `public.events` (~22 GB, ~3.19 M rows, 331 chunks, compression not enabled). JetStream ~5.86 GB / 20 GB across 12 streams. +Single TimescaleDB hypertable `public.events` (~40 GB, ~3.42 M rows, 331 chunks, compression not enabled). JetStream ~5.9 GB / 20 GB across 12 streams. -## Deploy / State Notes (as of 2026-06-29) +## Deploy / State Notes (as of 2026-07-13) -- **Deployed HEAD:** v0.14.7 (detached HEAD — the box tracks tags). All prior drift resolved: migration 036 committed, `pyproject.toml` version current, README operational. +- **Deployed HEAD:** v0.15.0 (detached HEAD — the box tracks tags; sha `3c8da28`, `pyproject.toml` 0.15.0). All 3 units active, `/health` 200, 23 adapters configured / 22 enabled (only `n2yo_visualpasses` disabled). +- **v0.15.0 (deployed 2026-07-02, PRs #120–124):** the GUI can now add public REST/GeoJSON data sources **no-code** — a generic adapter kind created and configured entirely through adapter management, no repo change. None enabled in this deployment yet; all 23 current adapters remain bespoke per-source kinds (each `config.adapters.kind` is unique to its source). - **Deploy mechanism:** manual, tag-based (`git checkout ` → `uv sync` → `central-migrate` → restart). One-command `scripts/deploy.sh` ships in-repo; full procedure in the [[central-deploy-cutover]] runbook. No CI/CD; no automated DB backup (pre-flight `pg_dump` is the only migration safety net; migrations are forward-only). - **`central-migrate` env gotcha:** manual calls need `cd /opt/central && set -a && . /etc/central/central.env && set +a && …` (the units supply this via WorkingDirectory + EnvironmentFile). - **EONET:** now **global** as of v0.14.6 (2026-06-28) — `bypass_bbox_filter=True` + the adapter `region` key removed. NOTE: its `events`-table row count is a misleading health signal (dedup + partition expiry); use the CENTRAL_DISASTER stream as the EONET flow signal. `avalanche_org` zero-events is expected (off-season gate). @@ -108,4 +109,4 @@ Single TimescaleDB hypertable `public.events` (~22 GB, ~3.19 M rows, 331 chunks, --- -*Last updated: 2026-06-29 — v0.14.7 deployed (consumers admin page); drift cleared, EONET global, perf fixes verified.* +*Last updated: 2026-07-13 — v0.15.0 deployed & verified (GUI no-code generic REST/GeoJSON adapters, PRs #120–124); 3.42 M events / ~40 GB, all units active.*