feat: capability-bound lifecycle hook update authorization by ruvnet · Pull Request #65 · ruvnet/rvm · GitHub
Skip to content

feat: capability-bound lifecycle hook update authorization - #65

Open
ruvnet wants to merge 4 commits into
mainfrom
sota/hook-update-authorization-v1
Open

ruvnet wants to merge 4 commits into
mainfrom
sota/hook-update-authorization-v1

Conversation

@ruvnet

@ruvnet ruvnet commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Tracks #64.

Implements ADR 162 as an additive rvm-cap primitive for lifecycle-hook updates that execute outside the model decision path.

The deterministic gate binds plugin identity, exact prior manifest digest, permitted lifecycle events, maximum effective CapRights, capability epoch, expiry, next manifest digest, and command digest. It fails closed on plugin substitution, stale manifest continuity, event widening, rights widening, epoch mismatch, and expiry.

The returned binding is evidence only. Grant issuance must remain bound to an independently authenticated RVM capability. No existing hook or plugin path is enabled or migrated by this PR.

Validation included in the branch: unit tests for legitimate updates, plugin substitution, manifest discontinuity, event widening, rights escalation, epoch mismatch, expiry, boundary expiry, and attenuated rights. MetaHarness #281 owns independent HookPry-style reproduction.

Promotion gate: zero unauthorized bindings on the frozen attack set, zero rights widening, legitimate acceptance within 1 absolute point of baseline, local validation below 100 microseconds p95, full repository CI and RustSec green. No autonomous merge or deployment.

@ruvnet
ruvnet marked this pull request as ready for review September 5, 2026 13:35

@ruvnet ruvnet left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exact-head evidence review (db56d4b4).

The allocation-free rvm-cap primitive binds plugin identity, prior manifest, event scope, rights ceiling, epoch, expiry, next manifest, and command digest. Its focused adversarial cases cover substitution, discontinuity, event/rights widening, epoch mismatch, and expiry; exact-head CI run 33872196557 passes.

The issue's operational hypothesis is not yet demonstrated: no p95 measurement proves the <100 µs threshold, no lifecycle installer consumes the returned binding at the effectful boundary, no independently authenticated grant issuance is wired, and no witness receipt or MetaHarness HookPry-style frozen attack set is present. The primitive is promising but cannot yet authorize an end-to-end security claim.

SOTA applicability: HookPry (submitted 2026-09-03) specifically identifies update-time lifecycle hooks outside the model decision path: https://arxiv.org/abs/2609.03884

INCONCLUSIVE

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant