# AEG-X-016 — KIS order-submission hard-off

## Scope

- **WBS ID:** `AEG-X-016`; **Requirement / API / DB / Job / UI / Test:** `REQ-KIS-OFF` / `Cross` / `Cross` / `Cross` / `Cross` / `Cross`.
- **Dependency / Gate:** `AEG-X-005` (completed) / `ALL`.
- **Acceptance:** zero external KIS order calls; capability override audit and kill switch pass.

## Source / Assumption / Unknown / Decision Required

- **Source:** `AGENTS.md` hard prohibition on automatic orders/KIS submission; `CapabilityOptions` startup validation; `TradeEndpoints`, `TradeHandlers`, `KisTradeExecutionService`, `TradeStatusPollingJob`, and Program recurring-job registration.
- **Assumption:** the user's instruction is an unconditional hard-off, not a feature flag. Buy, sell, poll, and settlement calls must remain blocked even if an environment value attempts to enable a capability.
- **Unknown:** there is no approved release that authorizes re-enabling KIS. This change supplies no activation path.
- **Decision Required:** a future enablement would require a separately approved release, complete capability/kill-switch audit, and revised WBS evidence; it is out of scope.

## Actual evidence and remaining acceptance

- `dotnet test tests/KArtSell.Integration.Tests/KArtSell.Integration.Tests.csproj -c Release --filter FullyQualifiedName~KisTradingHardOffTests --logger "trx;LogFileName=KisTradingHardOffTests_20260809.trx" --results-directory evidence/AEG-X-016`
- Result: passed `1/1`; artifact: `evidence/AEG-X-016/KisTradingHardOffTests_20260809.trx`; SHA-256: `F41D1DF823F91705D322A629B08ADF0BBA03EA1BEFA01DEF47E00C9DAFF2470D`.
- The test invokes submit, status, cancel, and settlement on the concrete KIS adapter and asserts that every call throws the hard-off exception before its HTTP handler is called (zero external calls).
- The submit/poll/settlement handlers guard before any database write or adapter access, and Program removes the historic `trade-status-polling` recurring job.
- `CreateTradeEndpoint` and `ListTradesEndpoint` are marked `[DontRegister]`; trade routes are not production-registered while KIS/order capability remains OFF.
- Architecture guard `KIS_trade_endpoints_must_remain_unregistered_while_capability_is_off` passed as part of `KArtSell.ArchitectureTests`: 17/17 tests passed on 2026-08-12.
- Post-change unit evidence: `KArtSell.ModelOperations.UnitTests` 51/51 PASS and `KArtSell.SignalEngine.UnitTests` 18/18 PASS.
- **Not complete:** endpoint-level disabled response and a startup configuration-override audit remain to be executed before the full WBS acceptance is claimed.
