From a5e99670f840512213b2c103824a3cd0d1ffc10c Mon Sep 17 00:00:00 2001 From: rUv Date: Thu, 21 May 2026 19:02:26 -0400 Subject: [PATCH] =?UTF-8?q?feat(cog-person-count):=20release=20v0.0.1=20?= =?UTF-8?q?=E2=80=94=20signed=20binaries=20on=20GCS,=20live=20on=20cognitu?= =?UTF-8?q?m-v0=20(#696)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 3 of ADR-103. Cross-compiled aarch64 + x86_64 on ruvultra, signed with COGNITUM_OWNER_SIGNING_KEY (Ed25519), uploaded to GCS, and live- installed on the cognitum-v0 Pi 5 alongside cog-pose-estimation. Real-hardware bench on cognitum-v0: ./cog-person-count-arm health → backend=candle-cpu, count=0, confidence=0.49, p95=[0,7] 30 sequential health invocations: 0.276 s → 9.2 ms/invocation cold Compares to cog-pose-estimation's 8.4 ms — count cog is ~10% slower because the dual-head (count softmax + confidence sigmoid) does ~2x the work after the shared encoder. GCS release artifacts (publicly downloadable, SHA-verified): arm/cog-person-count-arm 2,168,816 B sha: 36bc0bb0...0d47b507b3c3 sig: R/00xdzHriyr/2r...JK+a6k71NDg== (Ed25519) x86_64/cog-person-count-x86_64 2,615,528 B sha: 76cdd1ec...3923 7392b01db sig: QB+8cnGSMQmu...ZtTNIQ2rDg== (Ed25519) arm/cog-person-count-count_v1.safetensors 392,088 B sha: dacb0551...e6e04ff56d15c3a65a9ff Live install at /var/lib/cognitum/apps/person-count/ on cognitum-v0 matches the layout of every other installed cog (anomaly-detect, seizure-detect, pose-estimation): cog-person-count-arm binary, count_v1.safetensors weights, manifest.json, config.json. Adds: * v2/.../cog/artifacts/manifests/{arm,x86_64}/manifest.json — full ADR-100 schema with all fields filled (sha + sig + size + URL + build_metadata carrying the v0.0.1 honest training caveats). * docs/benchmarks/person-count-cog.md — appends "Live appliance install" and "Signed GCS release artifacts" sections to the benchmark log. Honest v0.0.1 caveat still applies (class-1 accuracy 0% on the held- out tail of the single-session training data) — same data-bound limit as pose_v1. The shipped artifact is the *vehicle*; production- quality accuracy follows from multi-room paired data per ADR-103's v0.2.0 plan + #645. --- docs/benchmarks/person-count-cog.md | 42 +++++++++++++++++++ .../cog/artifacts/manifests/arm/manifest.json | 25 +++++++++++ .../artifacts/manifests/x86_64/manifest.json | 25 +++++++++++ 3 files changed, 92 insertions(+) create mode 100644 v2/crates/cog-person-count/cog/artifacts/manifests/arm/manifest.json create mode 100644 v2/crates/cog-person-count/cog/artifacts/manifests/x86_64/manifest.json diff --git a/docs/benchmarks/person-count-cog.md b/docs/benchmarks/person-count-cog.md index f24fec0a..92b4a22e 100644 --- a/docs/benchmarks/person-count-cog.md +++ b/docs/benchmarks/person-count-cog.md @@ -81,3 +81,45 @@ cp count_v1.safetensors v2/crates/cog-person-count/cog/artifacts/ cargo run -p cog-person-count --release -- health # → {"backend":"candle-cpu", "synthetic_count": , "synthetic_confidence": , ...} ``` + +### Live appliance install (cognitum-v0 Pi 5) + +Installed at `/var/lib/cognitum/apps/person-count/` with the same on-disk shape as `cog-pose-estimation`, `anomaly-detect`, `seizure-detect`, etc.: + +``` +$ ls -la /var/lib/cognitum/apps/person-count/ +-rwxr-xr-x cog-person-count-arm 2,168,816 B (sha matches GCS) +-rw-r--r-- count_v1.safetensors 392,088 B +-rw-r--r-- manifest.json 1,073 B +-rw-r--r-- config.json 160 B +``` + +``` +$ ./cog-person-count-arm health +{"ts": ..., "event": "health.ok", + "fields": {"backend": "candle-cpu", "synthetic_count": 0, + "synthetic_confidence": 0.49, "synthetic_p95_range": [0, 7]}} +``` + +Cold-start on real Pi 5 hardware: **9.2 ms / invocation** (30 sequential `health` invocations in 0.276 s). Slightly slower than the pose cog (8.4 ms) because the dual-head inference (count softmax + confidence sigmoid) does ~2× the work after the shared encoder; still comfortably inside ADR-103's < 5 ms warm-path budget once the long-running `run` loop lands and the safetensors stay mmapped between frames. + +### Signed GCS release artifacts (publicly downloadable) + +``` +gs://cognitum-apps/cogs/arm/cog-person-count-arm 2,168,816 B + sha256: 36bc0bb0ece894350377d5f93d46cd29378cb289b3773530611c0d47b507b3c3 + signature: R/00xdzHriyr/2rzr4wmPJ/Ken60A+RNdi8r0g2HYJNTXBaFtr46ExfNbiHlgYWadQXzTZdfJoyJK+a6k71NDg== + +gs://cognitum-apps/cogs/x86_64/cog-person-count-x86_64 2,615,528 B + sha256: 76cdd1ec40211add90b4942a09f79939aa28210a27e931de67122357392b01db + signature: QB+8cnGSMQmubSt/KWVu1+JMg37AKnQXDsFQi/vi+jqpW9rVrGMtnxQpWEWZPeWU1AJ6pl3O2V+7ZtTNIQ2rDg== + +gs://cognitum-apps/cogs/arm/cog-person-count-count_v1.safetensors 392,088 B + sha256: dacb0551fd3887958db19696d90d811ab08faa44703e6e04ff56d15c3a65a9ff +``` + +All signed with `COGNITUM_OWNER_SIGNING_KEY` (Ed25519). SHAs verified via public anonymous `https://storage.googleapis.com/...` download. + +Manifests at: +- `v2/crates/cog-person-count/cog/artifacts/manifests/arm/manifest.json` +- `v2/crates/cog-person-count/cog/artifacts/manifests/x86_64/manifest.json diff --git a/v2/crates/cog-person-count/cog/artifacts/manifests/arm/manifest.json b/v2/crates/cog-person-count/cog/artifacts/manifests/arm/manifest.json new file mode 100644 index 00000000..d102d15a --- /dev/null +++ b/v2/crates/cog-person-count/cog/artifacts/manifests/arm/manifest.json @@ -0,0 +1,25 @@ +{ + "id": "person-count", + "version": "0.0.1", + "binary_url": "https://storage.googleapis.com/cognitum-apps/cogs/arm/cog-person-count-arm", + "binary_bytes": 2168816, + "binary_sha256": "36bc0bb0ece894350377d5f93d46cd29378cb289b3773530611c0d47b507b3c3", + "binary_signature": "R/00xdzHriyr/2rzr4wmPJ/Ken60A+RNdi8r0g2HYJNTXBaFtr46ExfNbiHlgYWadQXzTZdfJoyJK+a6k71NDg==", + "weights_url": "https://storage.googleapis.com/cognitum-apps/cogs/arm/cog-person-count-count_v1.safetensors", + "weights_bytes": 392088, + "weights_sha256": "dacb0551fd3887958db19696d90d811ab08faa44703e6e04ff56d15c3a65a9ff", + "arch": "arm", + "target_triple": "aarch64-unknown-linux-gnu", + "installed_at": 0, + "status": "installed", + "signed_by": "COGNITUM_OWNER_SIGNING_KEY", + "sig_algo": "Ed25519", + "build_metadata": { + "rust": "1.95.0", + "candle": "0.9 cpu", + "cog_person_count_version": "0.3.0", + "training_eval_accuracy": 0.651, + "training_eval_mae": 0.349, + "training_caveat": "single-session data; class-1 accuracy 0% — see docs/benchmarks/person-count-cog.md" + } +} diff --git a/v2/crates/cog-person-count/cog/artifacts/manifests/x86_64/manifest.json b/v2/crates/cog-person-count/cog/artifacts/manifests/x86_64/manifest.json new file mode 100644 index 00000000..e5e1c2c3 --- /dev/null +++ b/v2/crates/cog-person-count/cog/artifacts/manifests/x86_64/manifest.json @@ -0,0 +1,25 @@ +{ + "id": "person-count", + "version": "0.0.1", + "binary_url": "https://storage.googleapis.com/cognitum-apps/cogs/x86_64/cog-person-count-x86_64", + "binary_bytes": 2615528, + "binary_sha256": "76cdd1ec40211add90b4942a09f79939aa28210a27e931de67122357392b01db", + "binary_signature": "QB+8cnGSMQmubSt/KWVu1+JMg37AKnQXDsFQi/vi+jqpW9rVrGMtnxQpWEWZPeWU1AJ6pl3O2V+7ZtTNIQ2rDg==", + "weights_url": "https://storage.googleapis.com/cognitum-apps/cogs/arm/cog-person-count-count_v1.safetensors", + "weights_bytes": 392088, + "weights_sha256": "dacb0551fd3887958db19696d90d811ab08faa44703e6e04ff56d15c3a65a9ff", + "arch": "x86_64", + "target_triple": "x86_64-unknown-linux-gnu", + "installed_at": 0, + "status": "installed", + "signed_by": "COGNITUM_OWNER_SIGNING_KEY", + "sig_algo": "Ed25519", + "build_metadata": { + "rust": "1.95.0", + "candle": "0.9 cpu", + "cog_person_count_version": "0.3.0", + "training_eval_accuracy": 0.651, + "training_eval_mae": 0.349, + "training_caveat": "single-session data; class-1 accuracy 0% — see docs/benchmarks/person-count-cog.md" + } +}