2.2 KiB
2.2 KiB
ADDED Requirements
Requirement: Remote adapters are declared and scoped
The system SHALL accept only typed adapter kinds and logical target keys declared by the installed plugin/runtime profile and selected Run endpoint.
Scenario: Undeclared adapter
- WHEN a request names an adapter or target not declared for the server and endpoint
- THEN Platform MUST reject it before creating a job
Scenario: Unsafe target data
- WHEN a request contains shell source, raw socket addresses, host paths, credentials, or unbounded inline query/command data
- THEN validation MUST reject it and MUST NOT persist the unsafe fields
Requirement: Adapter lifecycle is bounded and fenced
The system SHALL enforce timeout, cancellation, retry, endpoint/session, attempt, and lease fencing using the existing job channel.
Scenario: Cancelled adapter
- WHEN cancellation arrives before or during adapter execution
- THEN Run MUST stop at a bounded checkpoint and return a cancelled safe result; Platform MUST not apply a stale terminal result
Scenario: Stale attempt result
- WHEN an older attempt reports success after a newer attempt owns the lease
- THEN Platform MUST reject the result and retain the newer job state
Requirement: Adapter results are auditable projections
The system SHALL persist an audit event for authorization, timeout, cancellation, success, and failure outcomes and expose only adapter kind, target key, status, bounded message, and safe result references.
Scenario: Successful scoped adapter
- WHEN a declared adapter completes within its deadline
- THEN the operator MUST see a safe status and audit summary without raw host/credential/socket details
Requirement: Channel isolation is maintained
Remote adapter work and artifact transfer SHALL use lower-priority independent work paths and MUST NOT delay control heartbeat, job ack/result, or log upload acknowledgement beyond their deadlines.
Scenario: Slow adapter and artifact transfer
- WHEN adapter or chunk work blocks or retries
- THEN control, job lifecycle, and log acknowledgement calls MUST remain independently completable