Address CodeRabbit follow-up review fixes

This commit is contained in:
barlind
2026-06-18 00:41:58 -07:00
committed by Bret Mogilefsky
parent 6c6934c29c
commit 9d676351e3
6 changed files with 56 additions and 23 deletions
+22 -1
View File
@@ -64,6 +64,27 @@ Required args:
Outcomes: `handled`, `validation-failed`, `incompatible-version`, `denied`.
### `unregister-provider`
Unregisters a provider and settles provider-owned active jobs to terminal state.
Required args:
```json
{
"providerId": "string"
}
```
Rules:
- Command is privileged and host-owned.
- Missing/unknown provider returns `no-owner`.
- Registered provider emits `provider-unregistered`.
- Any active jobs owned by the provider transition to terminal unavailable/orphaned state with a safe reason.
Outcomes: `handled`, `no-owner`, `failed`.
### `list-providers`
Returns redaction-safe provider summaries. Prompt-free and side-effect-free.
@@ -92,7 +113,7 @@ Rules:
- Privileged work requires `authorization: "user-action"` or an approved continuation matching provider, job type, target, requester, and inputs.
- Missing or mismatched approval returns `denied` or `user-action-required` before provider operation callbacks run.
- If exactly one compatible provider exists, it may be selected automatically.
- If exactly one compatible provider exists, it MUST be selected automatically.
- If multiple compatible providers exist, `providerId` or selected/default provider is required; otherwise return `provider-selection-required`.
- Validation happens before provider work starts.
- Provider capacity controls whether the job enters `queued` or `running`.
+2 -2
View File
@@ -121,8 +121,8 @@ A user or maintainer troubleshooting long-running work can tell whether a job fa
- **FR-004**: System MUST support job states including queued, running, paused, cancellation-requested, cancelled, completed, failed, provider-unavailable, and orphaned.
- **FR-005**: System MUST expose explicit outcomes including handled, queued, denied, user-action-required, unavailable, no-owner, no-handler, no-target, unsupported-command, unsupported-operation, incompatible, incompatible-version, provider-selection-required, validation-failed, stale, cancelled, completed, failed, timeout, and retry-started.
- **FR-006**: System MUST allow users and authorized requesters to inspect current jobs and providers without triggering privileged work, file writes, downloads, subprocesses, or external-service calls.
- **FR-007**: System MUST require explicit user action before enqueueing any job that can create, modify, delete, download, export, convert, or publish user-visible files or plugin state; approval applies only to one job request and provider-declared retry or continuation attempts for the same provider, job type, target, and requester.
- **FR-008**: System MUST reject background or plugin-initiated privileged jobs without user approval using a distinct denied or user-action-required outcome.
- **FR-007**: System MUST require explicit user action before enqueueing any job that can create, modify, delete, download, export, convert, or publish user-visible files or plugin state; approval applies only to one job request and provider-declared retry or continuation attempts for the same provider, job type, target, requester, and inputs.
- **FR-008**: System MUST reject background or plugin-initiated privileged jobs without user approval using a distinct denied or user-action-required outcome, including approved-continuation attempts whose inputs do not match the original approved scope.
- **FR-009**: System MUST apply provider-declared scheduling limits so queued jobs do not exceed provider capacity and running jobs do not silently overrun declared concurrency; user-approved interactive jobs MUST run before background or maintenance jobs, with FIFO ordering within each priority.
- **FR-010**: System MUST make provider registration idempotent so repeated hydration updates provider state without duplicate providers or duplicated active jobs.
- **FR-011**: System MUST auto-select only when exactly one compatible provider can handle the job type; when multiple compatible providers exist, the system MUST use a user-selected/default provider or return provider-selection-required.