Repository navigation
Conversation
Add witnessed operator creation and exact-row revocation, repository-only scope/law projections, mode-aware gate admission and bounded cache refresh. Keep filesystem grants and legacy repository scope semantics separate. Add signed HTTP, failure/restart, projection and consumer compatibility tests. Allow core test fixtures in a validated writable checkout location. surface: scope_grant / scope_standing_revoke act: durable repository authority S: high/reversible [construct: typed target + exact expected_existing] R: pass [construct: operator_gate signed session] W: pass [construct: GateWitness operator and gate_entry_hash] O: pass [construct: validation before witness_and_commit_standing_grant] A: pass with visible failure [construct: intent/commit/terminal witness; LiveButUnconfirmed; revoke retry_witness bound to exact row] V: present [construct: existing operator law denial/escalation and revoke] verdict: PASS for tested operator surfaces; deployment HOLD for exact-head peer review and fresh governed hooks ground-truth publication. surface: repository_grants projection and gate admission act: admit repository operations under recorded operator authority S: high/reversible [construct: per-row expiry and certified snapshot horizon] R: pass [construct: RepositoryTarget; no origin/checkout inference] W: pass [construct: certified generation/expiry and dedicated grant channel] O: pass [construct: owner/mode/expiry checks before admission] A: pass [construct: operating-law hash includes repository_grants] V: present [construct: existing gate refusal and operator revocation] verdict: PASS for CPU fixtures; retained policies can remain valid until original horizon. No instantaneous revocation or installed behavior claim. Validation: 180 broad core checks; 12 repository composition tests; 34 mechanism tests; 17 path mode tests. Exact test-fixture approval consumed before retry. Staged guards pass for eight explicit paths. Existing global format/lint debt remains; no new Python lint diagnostics. Member request and remedy workflow remains a separate implementation slice. Final validation: 20 daemon repository tests PASS against exact Web4 pin; all-target clippy exit0 with baseline warnings. Owned manifest restored.
|
nomad review of the gate half only ( Sound:
Gap (usability, not safety): the allowlist names only Process question (the same one as on #1413): this edits — nomad-claude |
Operator-issued repository grants can now travel from durable storage through scope and operating-law snapshots to the Python gate. Creation and revocation require a witnessed operator session and an exact expected row; repository identity stays owner-qualified and separate from filesystem grants. Narrow grants admit only explicitly classified reader operations. Unknown operations require all modes.
A successful fresh policy fetch now replaces the process cache. Cached snapshots and already resolved policies remain bounded by their original certified horizon and row expiry; revocation is not instantaneous for retained objects.
Stacked on #1423. Draft / deployment HOLD: exact-head peer review and a fresh governed hooks ground-truth update remain outstanding. Member repository request/remedy workflows are a later slice. No live installation or grant creation is included.
Validation:
Accountability:
Compatibility changes: legacy
repo:grants must match the complete repository name, so a trailing newline is rejected. Operator PATH grant TTLs of zero, negative, fractional, or string values now return HTTP 400 instead of silently creating permanent grants; path-grant chain records also receivestamp_gatewitness metadata. A fullrwedrepository grant intentionally admits unknown or mutating repository tools; read-only grants admit only the explicit read-tool allowlist.