Skip to content

DevContract

You already contract your development houses. You should contract your AI developers the same way. A DevContract is a machine-readable Statement of Work placed at .tickety/devcontract.json. The AI reads it at session start, works under it throughout, and produces a signed evidence receipt at delivery.

The shift: Most teams use AI coding assistants with no upfront agreement and no delivery receipt. DevContract adds the governance layer that professional engagements require — before the first line of code is written.

Three phases

Every DevContract engagement follows three phases:

Phase 1

Contract

You define devcontract.json. The AI reads it at session start via tickety-ai and explicitly acknowledges the terms before any work begins. The contract is the first thing in the system prompt.

Phase 2

Execution

The AI queries the contract on every material decision — stack choice, infrastructure, secrets handling, patterns. Each query, verdict, and action is logged in the evidence ledger.

Phase 3

Delivery

Gatekeep evaluates the definition_of_done clause. The evidence bundle is assembled, each clause is assessed pass/fail, and a signed receipt is produced — tied to the specific contract hash.

Eight clause families

A DevContract is not a list of scan gates. It is a structured SOW with eight clause families, each covering a different dimension of the engagement:

Clause What it governs Example constraint
stack Language, runtime, cloud region Python 3.12 · aws_lambda · eu-north-1
architecture Required and forbidden patterns single_table_dynamodb · no fat_handler
cost Budget envelope, forbidden resources aws_free_tier · no nat_gateway
security Auth mechanism, secrets store cognito_jwt · ssm_parameter_store only
quality Type hints, coverage, logging type_hints: required · coverage ≥ 80%
compliance Regulatory frameworks, data handling GDPR · hard_delete_only · eu_only
audit Evidence requirements, signing evidence_signed: true · 7 year retention
definition_of_done Acceptance criteria including scan gates tests_pass + coverage_met + scan gates

The scan gates that were previously the entire contract now live inside definition_of_done.scan_gates — their correct home as one part of a proper acceptance gate.

How it works end-to-end

  1. Place .tickety/devcontract.json in your project root.
  2. tickety-ai reads it at session start and injects it as the first block of the system prompt — before any steering files.
  3. Claude acknowledges the contract, then works under its terms for the session.
  4. At PR time, Gatekeep evaluates the definition_of_done clause against its scan findings.
  5. An evidence.json is produced, clause by clause, and signed against the contract hash.
  6. Violations are structured with the exact clause breached, evidence reference, severity, and remediation required.

In this section