# Coding Patterns - NT8 SDK Required Patterns **Last Updated:** 2026-04-05 All production code must use these implementation patterns. ## Scope Discipline and Minimum Diff - [ ] Edit only files in task scope. - [ ] Make the smallest safe change that resolves the issue. - [ ] Do not change interfaces/contracts unless explicitly required. - [ ] Do not mix functional changes with style-only cleanup. ## C# 5.0 and .NET 4.8 Compatibility - [ ] Use C# 5.0 syntax only. - [ ] Avoid C# 6+ features (`$""`, `?.`, `nameof`, expression-bodied members, `out var`, etc.). - [ ] Keep compatibility with .NET Framework 4.8. - [ ] Use `string.Format` style logging/messages. ## Core Implementation Patterns - [ ] Validate inputs at method entry. - [ ] Wrap public method logic in `try/catch` with meaningful logging. - [ ] Protect shared mutable collections/state with `lock (_lock)`. - [ ] Do not raise events while holding locks. - [ ] Keep public members documented with XML comments where required by project standards. ## NinjaScript Coding Patterns (When Applicable) - [ ] Keep `OnStateChange` responsibilities separated by state. - [ ] Guard `OnBarUpdate` by `BarsInProgress` and bar readiness. - [ ] In managed order flow, set stop/target before entry on the same bar. ## Authoritative Rule References (Do Not Duplicate) - Syntax constraints: `.kilocode/rules/csharp_50_syntax.md` - NT8 compile and API constraints: `.kilocode/rules/nt8compilespec.md` - Verification commands and gates: `.kilocode/rules/verification_requirements.md`