mirror of
https://github.com/ruvnet/RuView.git
synced 2026-08-26 02:04:55 +00:00
feat: implement ADR-292/293/294/295/296 — provenance, UDP hardening, multi-node, model gates, CSI policy
ADR-292 (sensing-server): SourceState enum + pure transition (provenance.rs); auth-error/unknown can never resolve to LiveVerified; synthetic exports watermarked. Pose-fusion simulator starts SYNTHETIC and only shows LIVE on a real decoded frame (#1557); sensing client no longer labels an unauthorized status endpoint as live (#1526). ADR-294 (sensing-server): NodeInference distinct from RoomInference (inference.rs); deterministic freshness-weighted fuse_room; RateLimiter re-keyed to (NodeId,EntityKind) so nodes do not starve each other (#1541); stale nodes go unavailable not frozen-online (#1555). ADR-293 (sensing-server): --udp-bind (default 127.0.0.1) + --udp-allow allowlist + fail-closed refusal of routable bind without allowlist unless --udp-insecure-lan (udp_bind.rs); crate SECURITY.md documents the threat model and the deferred per-device-auth step two. ADR-295 (train): model_gates.rs — constant-output, unreachable-boundary (the issue-1521 degenerate presence head), class-balance, baseline, and metric-name-provenance gates. ADR-296 (ci): scripts/csi-data-policy-check.sh (+ allowlist) and a workflow that fails on tracked CSI-format/oversized-JSONL files; 6/6 self-tests pass. Per-crate suites reported green by the swarm; CSI policy self-test 6/6 and JS syntax verified here. Full workspace re-verification deferred until the concurrent phase-1 spine build frees the target dir (disk pressure). Co-Authored-By: claude-flow <ruv@ruv.net> Claude-Session: https://claude.ai/code/session_015TcKegTS7QqhWPC2L2SzaS
This commit is contained in:
53
.github/workflows/csi-data-policy.yml
vendored
Normal file
53
.github/workflows/csi-data-policy.yml
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
name: CSI data policy (ADR-296)
|
||||
|
||||
# ADR-296 repository CSI data-incident guard. Fails when CSI-format files
|
||||
# (*.csi.jsonl / *.csi.meta.json) or oversized JSONL captures are tracked in
|
||||
# git. Raw CSI is person data and must never be committed (CLAUDE.md, ADR-296).
|
||||
#
|
||||
# NOTE: the tree currently still contains the pre-existing incident recordings
|
||||
# under data/recordings/ and v2/data/recordings/, whose removal is gated on
|
||||
# data-owner sign-off (ADR-296). Until they are removed this job is EXPECTED to
|
||||
# fail, and that failure documents the incident. To make it green in a
|
||||
# follow-up without weakening the guard for NEW files, set CSI_POLICY_BASELINE
|
||||
# to a file listing the acknowledged paths (see the script header).
|
||||
#
|
||||
# Checker: scripts/csi-data-policy-check.sh Run locally: bash the same script.
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
csi-data-policy:
|
||||
name: CSI data policy check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Self-test the policy checker (deterministic, offline)
|
||||
run: bash scripts/csi-data-policy-check.sh --self-test
|
||||
|
||||
- name: Enforce CSI data policy on tracked files
|
||||
# CSI_POLICY_BASELINE can point at an acknowledged-paths file once the
|
||||
# owner remediates the tree; unset here so a regression fails loudly.
|
||||
run: bash scripts/csi-data-policy-check.sh --tracked
|
||||
|
||||
- name: Summarize result
|
||||
if: always()
|
||||
run: |
|
||||
{
|
||||
echo '### CSI data policy (ADR-296)'
|
||||
echo ''
|
||||
echo '```'
|
||||
bash scripts/csi-data-policy-check.sh --tracked 2>&1 || true
|
||||
echo '```'
|
||||
} >> "$GITHUB_STEP_SUMMARY"
|
||||
Reference in New Issue
Block a user