This commit is contained in:
ruvnet 2026-08-19 03:51:56 +00:00
parent fe28774a7e
commit 64fe442bf0
3 changed files with 42 additions and 3 deletions

View file

@ -2,7 +2,7 @@
| Field | Value |
|-------|-------|
| **Status** | Accepted — **implemented** (O1O9 in `@ruvnet/ruview@0.2.0`; security/community extension in `0.3.0`, ADR-283; source-cited guidance in `0.3.1`): fail-closed schemas and MCP policy, async dispatch, zero runtime dependencies, bounded/redacted local Claude/Codex adapters, reviewed shared brain, source-checked capability guidance, and replay-verified Darwin/Flywheel gate. CI gate: `ruview-harness-flywheel.yml` |
| **Status** | Accepted — **implemented** (O1O9 in `@ruvnet/ruview@0.2.0`; security/community extension in `0.3.0`, ADR-283; source-cited guidance in `0.3.1`; guarded Cognitum Spaces OAuth read in `0.4.0`, ADR-325): fail-closed schemas and MCP policy, async dispatch, zero runtime dependencies, bounded/redacted local Claude/Codex adapters, reviewed shared brain, source-checked capability guidance, credential-gated external reads, and replay-verified Darwin/Flywheel gate. CI gate: `ruview-harness-flywheel.yml` |
| **Date** | 2026-07-02 |
| **Deciders** | ruv |
| **Codename** | **RUVIEW-NPM-REVIEW-1** |

View file

@ -31,6 +31,26 @@ bounded output/time, secret redaction and realpath-based RuView checkout
validation. Write mode requires two explicit flags and never uses permission or
sandbox bypasses.
## Credentialed external reads
Read-only cloud access is not equivalent to an uncredentialed local read. The
Cognitum Spaces adapter therefore delegates OAuth and response validation to
the Rust `wifi-densepose` client, never accepts bearer tokens or API keys, and
removes the API-key compatibility environment from the child process. Its MCP
tool is denied unless the server operator grants `credential-use`; MCP callers
cannot select a credential path or API origin. The adapter uses only an
installed `wifi-densepose` binary; it never executes Cargo build scripts from
an auto-detected checkout while holding credential authority. The tool is
marked open-world and independently rechecks response size, structure, privacy
class, and prohibited raw fields.
An expiring access token may rotate the stored refresh credential. The MCP
annotation is therefore non-read-only and non-idempotent even though the cloud
data operation is read-only. That bounded authentication side effect is
disclosed in the schema and result. It does not change the cloud operation from
read-only and confers no write or action authority. ADR-325 remains authoritative
for the Spaces data and policy boundary.
## Shared brain
The public brain is committed JSONL, not a shared mutable database. Canonical
@ -67,5 +87,6 @@ autonomously promotes or publishes an evolved candidate.
Contributors can explore RuView with either major local CLI and share durable
findings without sharing secrets. Improvements become reproducible proposals
with frozen evaluation evidence. The cost is a larger development-only npm
lockfile, a 128 KiB unpacked-package budget (the current tarball is below that
bound), and explicit maintenance of the corpus, genome and gate.
lockfile, a 160 KiB unpacked-package budget after adding the duplicated host
playbook and bounded OAuth adapter (the package remains runtime-dependency-free),
and explicit maintenance of the corpus, genome and gate.

View file

@ -112,6 +112,17 @@ OAuth consent grants identity-bound read access. It does **not** grant device
pairing, data publication, deployment, billing, spending, leases, learning
promotion, automation installation, commands, or actuator authority.
The contributor metaharness exposes this as CLI verb `spaces` and MCP tool
`ruview_spaces_list`. It delegates to the same Rust client rather than parsing
or refreshing OAuth independently. The tool never accepts a bearer token or API
key. MCP use requires an operator-provided `credential-use` grant, and MCP calls
cannot select the credential path or API origin. The adapter requires an
installed `wifi-densepose` binary rather than executing Cargo build scripts
from an auto-detected checkout while holding credential authority. Because
refresh tokens rotate, a read may atomically update the local OAuth credential
before contacting Spaces; this authentication side effect is disclosed and
does not add cloud write authority.
### 2. The gateway owns the private credential relay
The public gateway strips inbound `X-Cognitum-User-Authorization` and
@ -271,6 +282,11 @@ action. This ADR adds no actuator method to the Spaces client.
persist-before-return mechanism, verifies that the stored grant contains
`spaces:read`, and lists validated state. `COGNITUM_SPACES_API` remains an
explicit compatibility path.
- the dependency-free contributor metaharness adds `spaces` /
`ruview_spaces_list`, invokes only the OAuth branch, bounds and revalidates
child output, fixes the production API origin, strips the API-key compatibility
environment, requires an installed binary, and default-denies MCP access
without `credential-use`.
### Cognitum Identity
@ -466,6 +482,8 @@ the edge privacy boundary and is unnecessary for the semantic product.
- Cognitum API ADR-094, `docs/adr/ADR-094-cognitum-spaces-homecore-edge-boundary.md`
- Cognitum API hierarchy/events/alerts follow-up,
`https://github.com/cognitum-one/api/issues/206`
- RuView metaharness OAuth surface,
`https://github.com/ruvnet/RuView/issues/1643`
- RuVector spatial-history follow-up,
`https://github.com/ruvnet/RuView/issues/1640`
- governed-action and witness-receipt follow-up,