## 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