> For the complete documentation index, see [llms.txt](https://framework.aic.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://framework.aic.io/technical-guidelines-code-standards-and-tech-stack/engineering-operating-model/technical-mission-and-principles.md).

# Technical Mission and Principles

### Mission

AIC engineering exists to deliver secure, maintainable, testable and commercially controlled software at pace.

The technical mission is to make delivery repeatable. Each project should leave the company with better accelerators, stronger patterns, clearer evidence and fewer unknowns than when it started.

AIC does not optimise only for code completion. We optimise for the complete delivery lifecycle:

* discovery and feasibility
* solution architecture
* secure design
* implementation
* testing
* deployment
* assurance
* operations
* handover
* support
* reuse

### Engineering Principles

#### 1. Production code is evidence-backed

Every meaningful technical choice must be supported by evidence. Evidence may include a design note, ADR, test result, performance measurement, security review, code review, architecture diagram or customer approval.

#### 2. Secure by design is a delivery behaviour, not a late gate

Security requirements are captured early, implemented in normal engineering work, tested continuously and evidenced before release.

#### 3. Boring technology wins by default

Use proven, supported, well-understood technology unless the project has a clear reason to do otherwise. New technology is valuable only when it reduces risk or creates measurable value.

#### 4. Modern .NET first

For new AIC software, modern .NET is the default platform. The production baseline is .NET 10 LTS and C# 14. .NET 11 and C# 15 are treated as innovation or preview technology until approved for production use.

#### 5. APIs are contracts

Public and integration-facing APIs must be designed as stable contracts. They require versioning, compatibility thinking, OpenAPI documentation, defined error behaviour, security controls and tests.

#### 6. Tests are part of the design

Testing is not a phase after development. TDD, test-first thinking and executable specifications shape the design and protect future change.

#### 7. Automation is the default control

Formatting, static analysis, unit tests, security scans, package checks and builds should be automated. Manual checks should be reserved for judgement, design and risk decisions.

#### 8. Observability is a feature

A service that cannot be diagnosed is not complete. Logs, metrics, traces, health checks and correlation identifiers are part of the Definition of Done.

#### 9. Simplicity is a security and delivery control

Prefer simple designs, explicit dependencies, clear boundaries and small units of work. Complexity must be justified.

#### 10. Reusable IP must remain controlled

Frameworks, templates, components, patterns and accelerators are AIC assets. Use them to move faster, but preserve ownership, licensing and customer separation.

### What Good Looks Like

A good AIC engineering project has:

* a pinned SDK and supported target framework
* a clear solution structure
* automated build and test pipeline
* analyzers and ReSharper inspections configured
* warnings treated as errors for production code
* nullable reference types enabled
* secure configuration and secrets handling
* automated tests at appropriate levels
* OpenAPI documentation for APIs
* architecture decisions recorded
* security controls evidenced
* deployment and rollback approach defined
* operational telemetry available
* code review before merge
* release evidence for every deployable version

### What Bad Looks Like

A poor engineering project has:

* unclear target framework or unsupported runtime
* inconsistent formatting and naming
* warnings ignored
* no automated tests
* fragile manual deployment
* unclear ownership of architecture decisions
* secrets in source code or configuration files
* business logic hidden in controllers, views or event handlers
* uncontrolled dependencies
* no audit trail for releases
* no acceptance evidence

### Mandatory Rules

* Every production project MUST target a supported .NET version.
* Every repository MUST include an AIC-approved `.editorconfig`.
* Every solution MUST have a repeatable build command.
* Every production solution MUST have automated tests.
* Every merge to the main branch MUST pass the defined quality gate.
* Every exception MUST be recorded and time-bound.
