diff --git a/api-docs/adr/ADR-263-ruview-npm-harness-deep-review.md b/api-docs/adr/ADR-263-ruview-npm-harness-deep-review.md index a7b4e7c7..d2b239fc 100644 --- a/api-docs/adr/ADR-263-ruview-npm-harness-deep-review.md +++ b/api-docs/adr/ADR-263-ruview-npm-harness-deep-review.md @@ -2,7 +2,7 @@ | Field | Value | |-------|-------| -| **Status** | Accepted — **implemented** (O1–O9 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** (O1–O9 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** | diff --git a/api-docs/adr/ADR-283-ruview-community-metaharness-flywheel.md b/api-docs/adr/ADR-283-ruview-community-metaharness-flywheel.md index 1edaca35..87a24135 100644 --- a/api-docs/adr/ADR-283-ruview-community-metaharness-flywheel.md +++ b/api-docs/adr/ADR-283-ruview-community-metaharness-flywheel.md @@ -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. diff --git a/api-docs/adr/ADR-325-cognitum-spaces-activation-and-governed-spatial-exchange.md b/api-docs/adr/ADR-325-cognitum-spaces-activation-and-governed-spatial-exchange.md index 14cccbd4..98aaa77a 100644 --- a/api-docs/adr/ADR-325-cognitum-spaces-activation-and-governed-spatial-exchange.md +++ b/api-docs/adr/ADR-325-cognitum-spaces-activation-and-governed-spatial-exchange.md @@ -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,