plugin check without flags records a FAILED C1 that blocks a valid enable; corpus gates never run C1 #563

Closed
opened 2026-11-09 18:42:13 +01:00 by buildagent · 2 comments
Member

Found while auditing #531 (codex-531 D12) and investigated on the integration tree with rust 0.1.8 (sha256:039a50d1…). No bundled user is affected: bundled adoption and plugin add --grant requested run C1 under the requested grant, and it passes. Two defects remain.

1. A bare plugin check records a FAILED verdict, and that verdict blocks a valid enable.

Real operator flow in a scratch CODE_INDEX_HOME (pack, sign, trust add, install):

Command Result
plugin check $D --root <repo> verdict FAILED: fixtures/call_shapes.rs REFUSED fact.role_not_granted. The check ran with NO roles granted.
plugin enable $D --root <repo> --grant requested conformance_failed, even though C1 under exactly that grant passes
plugin check $D --root <repo> --capabilities lexical_local verdict passed; after this, enable --grant requested approves and indexes
  • call_shapes.rs emits lexical_local, one of the seven resolver roles the manifest requests (tests/packages/rust/plugin.toml:44).
  • check records its explicit authority (crates/cli/src/plugin.rs:2991).
  • enable requires a covering passing verdict (plugin.rs:3464).

A verdict recorded under a NARROWER grant should not block an enable under a wider grant. Expected, as one rule: enable with a grant the recorded verdict does not cover re-runs C1 under that grant, as add already does. A bare check either uses the manifest's requested grant or says in its output that it checked with no roles.

2. The corpus gates never run C1. install_shipped (crates/test-support/src/shipped.rs:142-161) writes a requested-grant approval directly. A corpus green therefore cannot show that an operator could actually admit the package. Expected: the gate runs C1 under the requested grant once per package before grading it.

Found while auditing #531 (codex-531 D12) and investigated on the integration tree with rust 0.1.8 (`sha256:039a50d1…`). **No bundled user is affected:** bundled adoption and `plugin add --grant requested` run C1 under the requested grant, and it passes. Two defects remain. **1. A bare `plugin check` records a FAILED verdict, and that verdict blocks a valid enable.** Real operator flow in a scratch `CODE_INDEX_HOME` (pack, sign, `trust add`, install): | Command | Result | |---|---| | `plugin check $D --root <repo>` | `verdict FAILED`: `fixtures/call_shapes.rs REFUSED fact.role_not_granted`. The check ran with NO roles granted. | | `plugin enable $D --root <repo> --grant requested` | `conformance_failed`, even though C1 under exactly that grant passes | | `plugin check $D --root <repo> --capabilities lexical_local` | `verdict passed`; after this, `enable --grant requested` approves and indexes | - `call_shapes.rs` emits `lexical_local`, one of the seven resolver roles the manifest requests (`tests/packages/rust/plugin.toml:44`). - `check` records its explicit authority (`crates/cli/src/plugin.rs:2991`). - `enable` requires a covering passing verdict (`plugin.rs:3464`). A verdict recorded under a NARROWER grant should not block an enable under a wider grant. Expected, as one rule: `enable` with a grant the recorded verdict does not cover re-runs C1 under that grant, as `add` already does. A bare `check` either uses the manifest's requested grant or says in its output that it checked with no roles. **2. The corpus gates never run C1.** `install_shipped` (`crates/test-support/src/shipped.rs:142-161`) writes a requested-grant approval directly. A corpus green therefore cannot show that an operator could actually admit the package. Expected: the gate runs C1 under the requested grant once per package before grading it.
Author
Member

Status with v0.41.49 (released)

  • Recorded derived-name and fact-role coverage is checked before the conformance outcome. A failed verdict measured under a narrower grant answers conformance_not_run and names the flags to run; only a covering failed verdict answers conformance_failed.
  • Bridge authority is reported as not_graded: a verdict neither records nor compares it.

Stays open for: enable does not re-run conformance for a wider grant (the operator has to run the check), verdicts do not grade bridge authority, and the corpus installer in the test support still writes requested-grant approvals without a conformance run.

**Status with v0.41.49** (released) - Recorded derived-name and fact-role coverage is checked before the conformance outcome. A failed verdict measured under a narrower grant answers `conformance_not_run` and names the flags to run; only a covering failed verdict answers `conformance_failed`. - Bridge authority is reported as `not_graded`: a verdict neither records nor compares it. **Stays open for:** `enable` does not re-run conformance for a wider grant (the operator has to run the check), verdicts do not grade bridge authority, and the corpus installer in the test support still writes requested-grant approvals without a conformance run.
Author
Member

Merged into #520.
conform.rs checks recorded grant coverage before outcome and returns conformance_not_run for a narrower failed verdict.
Remaining: Authority-matched conformance (wider-grant recheck, bridge authority and corpus C1).

Merged into #520. conform.rs checks recorded grant coverage before outcome and returns conformance_not_run for a narrower failed verdict. Remaining: Authority-matched conformance (wider-grant recheck, bridge authority and corpus C1).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
h-dv/code-index#563
No description provided.