{
  "description": "Defra architecture guardrails and principles with their metadata",
  "source": "https://github.com/DEFRA/architecture",
  "version": "0.3.0",
  "version_date": "6 October 2026",
  "includes_unreleased_changes": false,
  "guardrails": [
    {
      "id": "GR-PRIN-01",
      "title": "Delivery-focused architecture",
      "level": "principle",
      "statement": "Architecture is a service to delivery teams. Architecture principles will support seamless delivery pipelines, enabling rapid, low-risk releases.",
      "area": "Architecture principles",
      "page": "principles/architecture-principles.md",
      "status": "endorsed",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "",
      "lead_roles": [],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/principles/architecture-principles/#gr-prin-01",
      "why": "The core purpose of these principles is to support Defra's ability to deliver value continuously and reliably. Without delivery-focused principles, architecture can become a bottleneck rather than a business enabler. Streamlining change with predictable, low-risk releases improves user satisfaction and business responsiveness.",
      "how_to_meet": "- Keep architectural governance lightweight and built into delivery workflows - automated guardrails over manual reviews.\n- Give timely, context-aware guidance aligned with product and delivery cadences.\n- Design services for observability so teams can learn quickly and roll back when needed.\n- Invest in automation and standardised environments.\n- Keep services loosely coupled to allow incremental changes and isolated deployments.\n\n<!-- trace:principle GR-PRIN-01 -->",
      "see_also": "[governance](https://defra.github.io/architecture/governance/), the [decision check](https://defra.github.io/architecture/governance/decision-check/), [software development](https://defra.github.io/architecture/guardrails/software-development/), [hosting and platforms](https://defra.github.io/architecture/guardrails/hosting-and-platforms/), [observability and operations](https://defra.github.io/architecture/guardrails/observability-and-operations/)."
    },
    {
      "id": "GR-PRIN-02",
      "title": "Design for users",
      "level": "principle",
      "statement": "Create intuitive, accessible, user-friendly and consistent solutions that simplify access and improve user experience.",
      "area": "Architecture principles",
      "page": "principles/architecture-principles.md",
      "status": "endorsed",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "",
      "lead_roles": [],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-06",
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/principles/architecture-principles/#gr-prin-02",
      "why": "Technology should serve the needs of the people using it. Services that are not accessible or fail to meet users' needs introduce friction, reduce adoption and create inequality. Designing with empathy, grounded in research and aligned with accessibility standards, makes solutions inclusive, usable and effective. Use user-centred design methods from inception through delivery.",
      "how_to_meet": "- Use the common user interface standards and design templates agreed across Defra group, based on government (GDS) standards.\n- Design every solution around the customer, colleague and partner experience, to meet agreed service levels.\n- Assess off-the-shelf systems against Defra user interface standards to maximise compliance.\n- Reuse existing processes for similar user-facing tasks across Defra and its arm's length bodies - issuing permits, managing customer cases - so they feel familiar to users.\n\n<!-- trace:principle GR-PRIN-02 -->",
      "see_also": "[front end and accessibility](https://defra.github.io/architecture/guardrails/front-end-and-accessibility/), [identity and access](https://defra.github.io/architecture/guardrails/identity-and-access/), the [Defra Digital Service Manual](https://digital.defra.gov.uk/service-manual)."
    },
    {
      "id": "GR-PRIN-03",
      "title": "Maximise value, minimise waste",
      "level": "principle",
      "statement": "Focus on delivering greater value to customers and citizens through reuse of common capabilities and effective technology management.",
      "area": "Architecture principles",
      "page": "principles/architecture-principles.md",
      "status": "endorsed",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "",
      "lead_roles": [],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/principles/architecture-principles/#gr-prin-03",
      "why": "Architecture should guide Defra towards the most value with the least effort and risk. Reusing existing, compliant capabilities reduces duplication, gets services live faster and keeps them consistent and compliant. Minimising waste - of time, budget, technology and effort - supports strategic alignment, efficiency and sustainability. Architecture should help teams \"build less and deliver more\".",
      "how_to_meet": "- Evaluate and prioritise reuse of existing platforms, APIs, components and services before starting custom development.\n- Maintain an up-to-date catalogue of approved, reusable capabilities - see [technology capabilities](https://defra.github.io/architecture/handrail/technology-capabilities/).\n- Make the health, compliance and ownership of reusable components visible, so teams can make informed reuse decisions.\n- Include cost-benefit analysis in architectural decisions to find high-impact, low-effort options.\n- Discourage one-off solutions and use patterns that minimise technical debt.\n- Include reuse checks in architecture reviews, and require justification for duplicating a capability.\n\n<!-- trace:principle GR-PRIN-03 -->",
      "see_also": "[choosing technology](https://defra.github.io/architecture/guardrails/choosing-technology/), the [handrail](https://defra.github.io/architecture/handrail/), [hosting and platforms](https://defra.github.io/architecture/guardrails/hosting-and-platforms/), [open source](https://defra.github.io/architecture/guardrails/open-source/), [sustainability](https://defra.github.io/architecture/guardrails/sustainability/)."
    },
    {
      "id": "GR-PRIN-04",
      "title": "Clean data, clear decisions",
      "level": "principle",
      "statement": "Ensure data is clean, accurate, consistent, timely and accessible, using AI to enhance data quality, integration and insights.",
      "area": "Architecture principles",
      "page": "principles/architecture-principles.md",
      "status": "endorsed",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "",
      "lead_roles": [],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/principles/architecture-principles/#gr-prin-04",
      "why": "High-quality data is the foundation of good decisions and operational excellence. Inaccurate or unavailable data undermines trust, leads to poor outcomes and increases risk. Services must protect data integrity and accessibility so insight and action can be timely. AI and automation can improve data quality, streamline integration and generate deeper insight.",
      "how_to_meet": "- Set clear ownership, accountability and policies to maintain data quality standards.\n- Automate detecting and correcting data errors at ingestion and throughout the data lifecycle.\n- Align data definitions and formats across services and platforms.\n- Design for timely data updates and low-latency access.\n- Use AI for anomaly detection, predictive data quality, intelligent integration and richer analytics.\n- Provide secure, scalable data platforms and APIs for easy, governed access.\n- Treat data quality as a prerequisite for analytical and operational decisions.\n\n<!-- trace:principle GR-PRIN-04 -->",
      "see_also": "[data guardrails](https://defra.github.io/architecture/guardrails/data/), [Defra on a page](https://defra.github.io/architecture/data/defra-on-a-page/), [data standards](https://defra.github.io/architecture/data/data-standards/), [artificial intelligence](https://defra.github.io/architecture/guardrails/ai/)."
    },
    {
      "id": "GR-PRIN-05",
      "title": "Connect and collaborate",
      "level": "principle",
      "statement": "Create a flexible, connected and interoperable ecosystem through integration, automation and AI, to give streamlined user journeys and seamless data flows.",
      "area": "Architecture principles",
      "page": "principles/architecture-principles.md",
      "status": "endorsed",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "",
      "lead_roles": [],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/principles/architecture-principles/#gr-prin-05",
      "why": "Defra relies on a network of systems, services and partner organisations. Services designed in isolation fragment journeys and duplicate effort. Services must be interoperable - able to exchange data, trigger actions and adapt across systems - using APIs, integration patterns, automation and orchestration, so Defra can scale and evolve as needs change.",
      "how_to_meet": "- Expose well-documented, secure, reusable APIs by default.\n- Consider how each service fits into wider workflows, data flows and [business capabilities](https://defra.github.io/architecture/handrail/business-capabilities/).\n- Use industry standards to maximise compatibility and future-proofing.\n- Invest in a robust integration platform for real-time and batch processing.\n- Support event-driven architecture and intelligent automation.\n- Enable single sign-on and consistent identity management across services.\n- Share clean, consistent, context-rich data while respecting privacy, ethics and compliance.\n\n<!-- trace:principle GR-PRIN-05 -->",
      "see_also": "[APIs and integration](https://defra.github.io/architecture/guardrails/apis-and-integration/), [identity and access](https://defra.github.io/architecture/guardrails/identity-and-access/), [data guardrails](https://defra.github.io/architecture/guardrails/data/)."
    },
    {
      "id": "GR-PRIN-06",
      "title": "Secure today, safe tomorrow",
      "level": "principle",
      "statement": "Implement robust security measures to protect data and systems and maintain a secure environment.",
      "area": "Architecture principles",
      "page": "principles/architecture-principles.md",
      "status": "endorsed",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "",
      "lead_roles": [],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-02"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/principles/architecture-principles/#gr-prin-06",
      "why": "Security must be part of the architecture, not an afterthought. As threats become more sophisticated, building security in from the outset protects users, safeguards data and keeps Defra compliant. Secure-by-design approaches reduce vulnerabilities early, cut the cost of rework and build trust.",
      "how_to_meet": "- Manage security in proportion to risk - for example, balancing data security with the need to share data.\n- Follow the Defra group Security (DgS) strategy and recommendations.\n- Use role-based access control to manage access to system functions and data.\n\n<!-- trace:principle GR-PRIN-06 -->",
      "see_also": "[security guardrails](https://defra.github.io/architecture/guardrails/security/), [Secure by Design in Defra](https://defra.github.io/architecture/security/secure-by-design/), [threat modelling](https://defra.github.io/architecture/security/threat-modelling/)."
    },
    {
      "id": "GR-PRIN-07",
      "title": "Empower to innovate",
      "level": "principle",
      "statement": "Give the business the knowledge and tools to use its creativity to deliver innovative change.",
      "area": "Architecture principles",
      "page": "principles/architecture-principles.md",
      "status": "endorsed",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "",
      "lead_roles": [],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/principles/architecture-principles/#gr-prin-07",
      "why": "Innovation keeps Defra resilient and adaptive. It only happens when it is enabled by intentional structures, culture and support: people need the right tools, spaces to experiment and the knowledge to decide well. Architecture should guide technology exploration, lower barriers to experimentation and build innovation into delivery.",
      "how_to_meet": "- Provide reusable frameworks, playbooks and technology sandboxes for low-friction experimentation.\n- Use lightweight governance and automated controls so teams can explore safely within defined boundaries.\n- Promote communities of practice, design patterns and internal case studies.\n- Encourage experimentation with emerging technologies (such as AI, low-code and digital twins) through pilots.\n- Provide non-production environments where teams can test bold ideas safely.\n- Bring architects, technologists and business units together to act on innovation opportunities aligned to outcomes.\n- Track innovation by value, scalability and learning - not just technical novelty.\n\n<!-- trace:principle GR-PRIN-07 -->",
      "see_also": "[artificial intelligence](https://defra.github.io/architecture/guardrails/ai/), the [decision check](https://defra.github.io/architecture/governance/decision-check/), [open source and working in the open](https://defra.github.io/architecture/guardrails/open-source/)."
    },
    {
      "id": "GR-PRIN-08",
      "title": "Right tools, right place",
      "level": "principle",
      "statement": "Equip staff with the tools and devices they need to communicate and operate effectively in all conditions.",
      "area": "Architecture principles",
      "page": "principles/architecture-principles.md",
      "status": "endorsed",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "",
      "lead_roles": [],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/principles/architecture-principles/#gr-prin-08",
      "why": "One-size-fits-all solutions fail people working in laboratories, in the field or in remote areas with limited connectivity. Architecture must support flexible, secure, context-aware device strategies - rugged hardware, offline working, reliable connectivity - so staff can work productively and safely anywhere. Fit-for-purpose equipment directly affects service quality, resilience and user satisfaction.",
      "how_to_meet": "- Guide the procurement and support of devices suited to the user's context - rugged tablets for fieldwork, secure laptops for remote access, specialist laboratory equipment.\n- Support offline-first working and resilient syncing where connectivity is unreliable or absent.\n- Provide portable connectivity, mobile data access and satellite support where infrastructure is lacking.\n- Extend security policies and controls to every device type and location, with remote updates, encryption and endpoint protection.\n- Design IT support for diverse contexts: self-service, remote diagnostics and on-site support.\n- Keep devices easy to replace or upgrade as needs change.\n\n<!-- trace:principle GR-PRIN-08 -->",
      "see_also": "[front end and accessibility](https://defra.github.io/architecture/guardrails/front-end-and-accessibility/#gr-fe-05) (low bandwidth), [field work and inspection](https://defra.github.io/architecture/handrail/technology-capabilities/#manufacturing-and-delivery), [staff identity](https://defra.github.io/architecture/guardrails/identity-and-access/#gr-iam-02).\n\n---\n\n<small>Source: Defra Strategic Architecture Principles, owned by the Strategic Architecture team. Changes to these principles are approved by the [Technology Governance Board](https://defra.github.io/architecture/governance/tgb/).</small>"
    },
    {
      "id": "GR-AI-01",
      "title": "Consider AI first",
      "level": "should",
      "statement": "When designing a service or process, actively explore whether AI can improve quality, productivity, user experience or outcomes before choosing a traditional approach, and record the reasoning either way.",
      "area": "Artificial intelligence",
      "page": "guardrails/ai.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha"
      ],
      "evidence": "ADR recording the AI options considered and why they were or were not used",
      "lead_roles": [
        "product-manager",
        "service-designer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        11
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/ai/#gr-ai-01",
      "why": "the DDTS doctrine says [assume AI until proven otherwise](https://defra.github.io/architecture/principles/doctrine/#ddts-05). That does not mean AI everywhere; it means deliberately considering the opportunity before dismissing it.",
      "how_to_meet": "in discovery and alpha, look for repetitive tasks, triage, summarising, classification or decision support that AI could help with. Note in your ADR what you considered and why you did or did not use AI.\n\n**In the AI digital toolkit:** start with [check if AI is right for your idea](https://digital.defra.gov.uk/ai-toolkit/triage/question-1), five questions about the problem, users, data, benefits and what you have tried."
    },
    {
      "id": "GR-AI-02",
      "title": "Use approved AI services and tenancies",
      "level": "must",
      "statement": "Services you build run their AI in Defra's cloud tenancies or under approved enterprise agreements. When anyone uses an AI tool, they put Defra data into it only as the using data with AI rules in the AI digital toolkit allow - for example, never OFFICIAL-SENSITIVE or personal data in a public consumer tool.",
      "area": "Artificial intelligence",
      "page": "guardrails/ai.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "List of the AI services the service uses and the Defra tenancy or enterprise agreement each runs under",
      "lead_roles": [
        "technical-architect",
        "security-architect"
      ],
      "evidence_by_phase": {
        "discovery": "Any AI services you are exploring identified, with the Defra tenancy or enterprise agreement they would run under",
        "alpha": "AI services chosen for the design, each confirmed as running in a Defra tenancy or under an approved agreement",
        "beta": "The AI services in the built service run only in approved tenancies, shown in the hosting design and configuration",
        "live": "List of AI services in use, reviewed when services or agreements change"
      },
      "automated_check": "manual",
      "service_standard_points": [
        9
      ],
      "tcop_points": [
        6,
        7
      ],
      "sbd_principles": [
        2
      ],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/ai/#gr-ai-02"
    },
    {
      "id": "GR-AI-03",
      "title": "Keep a human accountable",
      "level": "must",
      "statement": "Decisions with legal or significant effects on people or organisations - such as licensing, enforcement or payments - have meaningful human oversight, and the ability to challenge.",
      "area": "Artificial intelligence",
      "page": "guardrails/ai.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Design of the human oversight and challenge route, tested with users",
      "lead_roles": [
        "service-designer",
        "user-researcher"
      ],
      "evidence_by_phase": {
        "alpha": "Design of the human oversight and challenge route for decisions with significant effects, tested with users in prototypes",
        "beta": "Human review and challenge built into the service and tested with users and staff",
        "live": "Records of human review, challenges raised and their outcomes, reviewed regularly"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/ai/#gr-ai-03"
    },
    {
      "id": "GR-AI-04",
      "title": "Be transparent",
      "level": "must",
      "statement": "Publish an Algorithmic Transparency Recording Standard record for algorithmic tools that meet its scope, and tell users when they are interacting with AI.",
      "area": "Artificial intelligence",
      "page": "guardrails/ai.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Link to the published Algorithmic Transparency Recording Standard record and the AI notice shown to users",
      "lead_roles": [
        "content-designer",
        "interaction-designer"
      ],
      "evidence_by_phase": {
        "beta": "Draft Algorithmic Transparency Recording Standard record, and the notice telling users about AI tested with them",
        "live": "Link to the published Algorithmic Transparency Recording Standard record, kept current"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/ai/#gr-ai-04"
    },
    {
      "id": "GR-AI-05",
      "title": "Evaluate, monitor and threat model",
      "level": "should",
      "statement": "Evaluate models for accuracy, bias and safety before release, monitor them in live, and include AI-specific threats (prompt injection, data leakage, model abuse) in your threat model.",
      "area": "Artificial intelligence",
      "page": "guardrails/ai.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Model evaluation results for accuracy, bias and safety, live monitoring, and a threat model that covers AI-specific threats",
      "lead_roles": [
        "data-architect",
        "security-architect"
      ],
      "evidence_by_phase": {
        "alpha": "Evaluation plan for accuracy, bias and safety, and AI-specific threats in the threat model",
        "beta": "Evaluation results for accuracy, bias and safety before release, and mitigations for AI threats tested",
        "live": "Monitoring of model performance and drift in live, with evaluation repeated when the model or data changes"
      },
      "automated_check": "manual",
      "service_standard_points": [
        9
      ],
      "tcop_points": [],
      "sbd_principles": [
        3,
        9
      ],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/ai/#gr-ai-05"
    },
    {
      "id": "GR-AI-06",
      "title": "Talk to the TDA about novel use",
      "level": "should",
      "statement": "Novel uses of AI, and any use of generative AI in decision making, are reviewed by the Technical Design Authority.",
      "area": "Artificial intelligence",
      "page": "guardrails/ai.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha"
      ],
      "evidence": "Technical Design Authority review outcome recorded in the ADR",
      "lead_roles": [
        "technical-architect"
      ],
      "evidence_by_phase": {
        "discovery": "Novel or generative AI use in decision making identified, and a conversation with the Technical Design Authority booked",
        "alpha": "Technical Design Authority review outcome recorded in the ADR",
        "significant-change": "Technical Design Authority review of any new AI use introduced by the change"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/ai/#gr-ai-06"
    },
    {
      "id": "GR-AI-07",
      "title": "Suppliers use AI coding assistants openly and safely",
      "level": "should",
      "statement": "Delivery partners who use AI coding assistants on Defra work agree which tools they use with Defra, use them only under terms that meet GR-AI-02, have a person review every change before it is merged, and say in pull requests or delivery reports where AI did significant work.",
      "area": "Artificial intelligence",
      "page": "guardrails/ai.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Supplier's agreed list of AI coding assistants and how each runs within Defra-approved terms, the review process for generated code, and disclosure in pull requests or delivery reports",
      "lead_roles": [
        "delivery-manager",
        "developer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [
        2,
        10
      ],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/ai/#gr-ai-07",
      "why": "AI coding assistants can speed up delivery, but they can also leak code, secrets or data to a third party, bring in code with unclear licences, and produce plausible but wrong code. Defra owns the code it pays for and must be able to trust it.",
      "how_to_meet": "- Follow [choosing a tool](https://digital.defra.gov.uk/ai-toolkit/guidance/choosing-a-tool) and [using data with AI](https://digital.defra.gov.uk/ai-toolkit/guidance/using-data-with-ai) in the AI digital toolkit: what matters is the data you put in, and privacy settings must be on.\n- Tell the Defra engagement lead which tools you use at [mobilisation](https://defra.github.io/architecture/partners/mobilisation/), and record them in the repository.\n- Follow [AI security](https://digital.defra.gov.uk/ai-toolkit/guidance/security) in the AI digital toolkit: AI-written code clears the same Defra security gates as any other code.\n- Never put secrets into prompts.\n- Review AI-generated code with the same care as any other code ([GR-DEV-03](https://defra.github.io/architecture/guardrails/software-development/#gr-dev-03)), including licences of any suggested code.\n\nThis guardrail is a **draft** proposal. Comment on it by [opening an issue](https://github.com/DEFRA/architecture/issues)."
    },
    {
      "id": "GR-AI-08",
      "title": "Give agents the least privilege they need",
      "level": "should",
      "statement": "AI agents act under their own identity, with access only to the tools, data and actions their task needs, and never with a person's full permissions.",
      "area": "Artificial intelligence",
      "page": "guardrails/ai.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "List of each agent's tools and permissions, granted to the agent's own identity and reviewed",
      "lead_roles": [
        "technical-architect",
        "security-architect"
      ],
      "evidence_by_phase": {
        "alpha": "Each agent's tools and permissions listed in the design, with a workload identity for the agent",
        "beta": "Agent permissions configured as designed and tested, including that the agent cannot reach tools it should not",
        "live": "Agent permissions reviewed regularly, as for a privileged user"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [
        7
      ],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/ai/#gr-ai-08",
      "why": "an agent can be tricked, or can be wrong. Limiting what it can reach limits the damage ([GR-IAM-03](https://defra.github.io/architecture/guardrails/identity-and-access/#gr-iam-03)).",
      "how_to_meet": "list each agent's tools and permissions, grant them to a workload identity for the agent, and review them as you would a privileged user's.\n\n**In the AI digital toolkit:** [working with AI agents](https://digital.defra.gov.uk/ai-toolkit/guidance/working-with-agents)."
    },
    {
      "id": "GR-AI-09",
      "title": "Get human approval for consequential actions",
      "level": "should",
      "statement": "An agent does not take an action with legal, financial or significant effects on people, or one that cannot easily be undone, without approval from an accountable person.",
      "area": "Artificial intelligence",
      "page": "guardrails/ai.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Design showing which agent actions need human approval, and tests proving they cannot happen without it",
      "lead_roles": [
        "service-designer",
        "technical-architect"
      ],
      "evidence_by_phase": {
        "alpha": "Agent actions classified, and the actions that need human approval identified in the design",
        "beta": "Approval enforced in the tool layer, with tests showing the agent cannot act without it",
        "live": "Approval records reviewed, and the classification updated when the agent gains new tools"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [
        4
      ],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/ai/#gr-ai-09",
      "why": "[GR-AI-03](https://defra.github.io/architecture/guardrails/ai/#gr-ai-03) keeps a human accountable for decisions. Agents act faster than people can notice, so approval has to be designed in, not assumed.",
      "how_to_meet": "classify the agent's actions in alpha. Enforce approval in the tool layer, not only in the prompt, and test that the agent cannot bypass it.\n\n**In the AI digital toolkit:** [working with AI agents](https://digital.defra.gov.uk/ai-toolkit/guidance/working-with-agents)."
    },
    {
      "id": "GR-AI-10",
      "title": "Keep an audit trail of what agents do",
      "level": "should",
      "statement": "Record what each agent was asked, what it read, which tools it called with what inputs, who approved what, and the outcome - and send security-relevant events to security monitoring.",
      "area": "Artificial intelligence",
      "page": "guardrails/ai.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Audit records of agent inputs, tool calls, approvals and outcomes, sent to security monitoring",
      "lead_roles": [
        "developer",
        "security-architect"
      ],
      "evidence_by_phase": {
        "beta": "Audit records of agent inputs, tool calls, approvals and outcomes produced and sent to security monitoring",
        "live": "Audit records retained and reviewed, and used to investigate any problem"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [
        5
      ],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/ai/#gr-ai-10",
      "why": "without a full record, nobody can explain, challenge or reverse what an agent did.",
      "how_to_meet": "log at the tool layer with correlation ids ([GR-OPS-02](https://defra.github.io/architecture/guardrails/observability-and-operations/#gr-ops-02)), and keep records for as long as the decisions they support.\n\n**In the AI digital toolkit:** [working with AI agents](https://digital.defra.gov.uk/ai-toolkit/guidance/working-with-agents)."
    },
    {
      "id": "GR-AI-11",
      "title": "Defend agents against prompt injection",
      "level": "should",
      "statement": "Treat everything an agent reads - documents, emails, web pages, tool results - as untrusted input that may try to change its instructions, and design controls that hold even if it does.",
      "area": "Artificial intelligence",
      "page": "guardrails/ai.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Threat model covering prompt injection through every input the agent reads, with tested mitigations",
      "lead_roles": [
        "security-architect",
        "developer"
      ],
      "evidence_by_phase": {
        "alpha": "Threat model covering prompt injection through every input the agent reads",
        "beta": "Prompt injection mitigations tested, including attempts to misuse tools and leak data",
        "live": "Prompt injection defences re-tested when inputs, tools or models change"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [
        3,
        8
      ],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/ai/#gr-ai-11",
      "why": "prompt injection is the most common way to make an agent misuse its tools or leak data.",
      "how_to_meet": "include injection through every input in your [threat model](https://defra.github.io/architecture/security/threat-modelling/) ([GR-AI-05](https://defra.github.io/architecture/guardrails/ai/#gr-ai-05)), separate untrusted content from instructions, restrict tools as in GR-AI-08 and require approval as in GR-AI-09.\n\n**In the AI digital toolkit:** [working with AI agents](https://digital.defra.gov.uk/ai-toolkit/guidance/working-with-agents)."
    },
    {
      "id": "GR-API-01",
      "title": "API first",
      "level": "should",
      "statement": "Design the API for a capability before (or with) the user interface, so other services and partners can use it.",
      "area": "APIs and integration",
      "page": "guardrails/apis-and-integration.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta"
      ],
      "evidence": "API specification written before or alongside the user interface",
      "lead_roles": [
        "technical-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        13
      ],
      "tcop_points": [
        9
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/apis-and-integration/#gr-api-01"
    },
    {
      "id": "GR-API-02",
      "title": "Describe APIs with open specifications",
      "level": "should",
      "statement": "Synchronous APIs are described with OpenAPI 3, and asynchronous/event interfaces with AsyncAPI, kept in the same repository as the code.",
      "area": "APIs and integration",
      "page": "guardrails/apis-and-integration.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "OpenAPI 3 or AsyncAPI documents in the service repository that match the running API",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {
        "alpha": "Draft OpenAPI 3 or AsyncAPI documents for the interfaces you are prototyping",
        "beta": "OpenAPI 3 or AsyncAPI documents in the repository, checked in the pipeline against the running API",
        "live": "Specifications kept in step with every released change"
      },
      "automated_check": "Guardrail check (tools/guardrail-check): OpenAPI 3 and AsyncAPI documents present and well formed",
      "service_standard_points": [
        13
      ],
      "tcop_points": [
        4,
        9
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/apis-and-integration/#gr-api-02",
      "why": "Machine-readable contracts make APIs discoverable, testable and safe to change."
    },
    {
      "id": "GR-API-03",
      "title": "Follow government API standards",
      "level": "should",
      "statement": "Follow the API technical and data standards: RESTful resources, JSON, HTTPS only, consistent error formats and standard identifiers from the data standards.",
      "area": "APIs and integration",
      "page": "guardrails/apis-and-integration.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "API design reviewed against the GDS API technical and data standards",
      "lead_roles": [
        "developer",
        "technical-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        13
      ],
      "tcop_points": [
        4
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/apis-and-integration/#gr-api-03"
    },
    {
      "id": "GR-API-04",
      "title": "Version and deprecate deliberately",
      "level": "should",
      "statement": "Breaking changes are versioned, consumers are told in advance, and old versions have a published retirement date.",
      "area": "APIs and integration",
      "page": "guardrails/apis-and-integration.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Published versioning policy, deprecation notices sent to consumers and retirement dates for old versions",
      "lead_roles": [
        "technical-architect",
        "product-manager"
      ],
      "evidence_by_phase": {
        "beta": "Versioning approach published for each API and event",
        "live": "Deprecation notices sent to consumers and retirement dates published for old versions",
        "significant-change": "Consumers told about breaking changes in advance, with a new version and a retirement date for the old one",
        "retire": "Consumers told the retirement date in advance, and moved to a replacement"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        9
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/apis-and-integration/#gr-api-04"
    },
    {
      "id": "GR-API-05",
      "title": "No integration through shared databases",
      "level": "should",
      "statement": "Services do not read or write another service's database directly. Integrate through APIs, events or governed data products.",
      "area": "APIs and integration",
      "page": "guardrails/apis-and-integration.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Container diagram showing integration only through APIs, events or governed data products",
      "lead_roles": [
        "technical-architect"
      ],
      "evidence_by_phase": {
        "alpha": "Container diagram showing integration only through APIs, events or governed data products",
        "beta": "Built integrations match the container diagram, with no access to another service's database",
        "live": "Integrations reviewed when the service or its dependencies change"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        9
      ],
      "sbd_principles": [
        6
      ],
      "doctrine": [
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/apis-and-integration/#gr-api-05",
      "why": "Shared databases tightly couple services and make both impossible to change safely."
    },
    {
      "id": "GR-API-06",
      "title": "Use events for change notifications",
      "level": "should",
      "statement": "Use asynchronous messages or events when other services need to react to something that happened (an application submitted, a permit issued), rather than polling.",
      "area": "APIs and integration",
      "page": "guardrails/apis-and-integration.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta"
      ],
      "evidence": "Event and message definitions described in AsyncAPI",
      "lead_roles": [
        "technical-architect",
        "developer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/apis-and-integration/#gr-api-06"
    },
    {
      "id": "GR-API-07",
      "title": "Secure every API",
      "level": "must",
      "statement": "All APIs authenticate callers (OAuth 2.0 / OpenID Connect or mutual TLS), authorise every request, validate input and apply rate limiting. No API is \"internal so it's safe\".",
      "area": "APIs and integration",
      "page": "guardrails/apis-and-integration.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Authentication and authorisation design, rate limits and input validation, covered by security testing",
      "lead_roles": [
        "security-architect",
        "developer"
      ],
      "evidence_by_phase": {
        "alpha": "Authentication, authorisation, input validation and rate limiting designed for each API",
        "beta": "These controls built and covered by security testing",
        "live": "API access reviewed, and controls re-tested after significant change"
      },
      "automated_check": "manual",
      "service_standard_points": [
        9
      ],
      "tcop_points": [
        6
      ],
      "sbd_principles": [
        7,
        8
      ],
      "doctrine": [
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/apis-and-integration/#gr-api-07"
    },
    {
      "id": "GR-API-08",
      "title": "Make APIs discoverable",
      "level": "should",
      "statement": "Register APIs in the platform API catalogue and, where they are useful beyond Defra, the government API catalogue.",
      "area": "APIs and integration",
      "page": "guardrails/apis-and-integration.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Entry in the platform API catalogue",
      "lead_roles": [
        "technical-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        8
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/apis-and-integration/#gr-api-08"
    },
    {
      "id": "GR-TECH-01",
      "title": "Look for something to reuse first",
      "level": "must",
      "statement": "Before buying or building, check the technology capability catalogue and cross-government components for something that already meets the need.",
      "area": "Choosing technology",
      "page": "guardrails/choosing-technology.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha"
      ],
      "evidence": "ADR listing the reuse options considered from the technology capability catalogue and cross-government components",
      "lead_roles": [
        "technical-architect"
      ],
      "evidence_by_phase": {
        "discovery": "Existing Defra and cross-government options for the need identified from the technology capability catalogue",
        "alpha": "ADR recording the reuse options considered and why they did or did not fit",
        "significant-change": "ADR showing reuse options considered for any new component"
      },
      "automated_check": "manual",
      "service_standard_points": [
        13
      ],
      "tcop_points": [
        8
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/choosing-technology/#gr-tech-01",
      "why": "Duplicate capabilities multiply cost, security risk and support effort.",
      "how_to_meet": "Record in your ADR which strategic options you considered and why they did or did not fit. If a strategic option is close but not quite right, talk to the owning platform team before building around it."
    },
    {
      "id": "GR-TECH-02",
      "title": "Buy commodity, build differentiating",
      "level": "should",
      "statement": "Buy or use SaaS for commodity needs (email, HR, finance, CRM, document management). Build only where the capability is specific to Defra's mission and no product fits without heavy customisation.",
      "area": "Choosing technology",
      "page": "guardrails/choosing-technology.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha"
      ],
      "evidence": "Buy or build options appraisal in the ADR or business case",
      "lead_roles": [
        "technical-architect",
        "product-manager"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        11
      ],
      "tcop_points": [
        11
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/choosing-technology/#gr-tech-02",
      "why": "Heavily customised products combine the cost of building with the constraints of buying.",
      "how_to_meet": "If you are configuring more than you are using out of the box, stop and reconsider. Prefer configuration over customisation; avoid modifying vendor code."
    },
    {
      "id": "GR-TECH-03",
      "title": "Plan your exit before you enter",
      "level": "should",
      "statement": "Any new product, platform or significant supplier dependency has a documented exit plan covering data export in open formats, contract terms and an estimate of switching cost.",
      "area": "Choosing technology",
      "page": "guardrails/choosing-technology.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Exit plan covering data export in open formats, contract terms and an estimate of switching cost",
      "lead_roles": [
        "technical-architect",
        "delivery-manager"
      ],
      "evidence_by_phase": {
        "alpha": "Draft exit plan for each new product, platform or significant supplier",
        "beta": "Exit plan agreed, with contracts giving Defra its data and the right to export it in open formats",
        "live": "Exit plan reviewed at contract renewal, with switching cost estimated",
        "significant-change": "Exit plan updated for any new product or supplier",
        "retire": "Exit plan carried out - data exported in open formats and contracts ended"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        11
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/choosing-technology/#gr-tech-03",
      "why": "Lock-in is sometimes a sensible trade-off, but it must be a deliberate one.",
      "how_to_meet": "Include an exit section in your ADR or business case. Make sure contracts give Defra ownership of its data and the right to export it."
    },
    {
      "id": "GR-TECH-04",
      "title": "Assess SaaS before you adopt it",
      "level": "must",
      "statement": "SaaS and third-party hosted products are assessed for security, data protection, data location, accessibility and integration before contract.",
      "area": "Choosing technology",
      "page": "guardrails/choosing-technology.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha"
      ],
      "evidence": "Supplier security assessment, DPIA where personal data is involved, data location, accessibility and single sign-on confirmed before contract",
      "lead_roles": [
        "security-architect",
        "technical-architect"
      ],
      "evidence_by_phase": {
        "discovery": "SaaS and third-party products under consideration listed, with the assessments they will need",
        "alpha": "Security, data protection, data location, accessibility and single sign-on assessed before contract"
      },
      "automated_check": "manual",
      "service_standard_points": [
        9
      ],
      "tcop_points": [
        6,
        7,
        11
      ],
      "sbd_principles": [
        2
      ],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/choosing-technology/#gr-tech-04",
      "why": "Supply chain risk is one of the biggest sources of security incidents in government.",
      "how_to_meet": "Use the [Secure by Design](https://defra.github.io/architecture/security/secure-by-design/) supplier assurance activities, complete a DPIA if personal data is involved and confirm the product supports single sign-on with Microsoft Entra ID for staff ([GR-IAM-02](https://defra.github.io/architecture/guardrails/identity-and-access/#gr-iam-02))."
    },
    {
      "id": "GR-TECH-05",
      "title": "Prefer open standards and portable technology",
      "level": "should",
      "statement": "Choose products and components that use open standards and can be run on more than one provider.",
      "area": "Choosing technology",
      "page": "guardrails/choosing-technology.md",
      "status": "draft",
      "phases": [
        "alpha"
      ],
      "evidence": "ADR noting the open standards used and how portable the choice is",
      "lead_roles": [
        "technical-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        13
      ],
      "tcop_points": [
        4
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/choosing-technology/#gr-tech-05",
      "why": "Portability keeps our options open and our commercial position strong."
    },
    {
      "id": "GR-TECH-06",
      "title": "Get spend approval early",
      "level": "must",
      "statement": "Spend that falls under the government digital and technology spend control is discussed with the architecture team before procurement starts.",
      "area": "Choosing technology",
      "page": "guardrails/choosing-technology.md",
      "status": "draft",
      "phases": [
        "discovery"
      ],
      "evidence": "Record of the conversation with the architecture team before procurement started",
      "lead_roles": [
        "delivery-manager",
        "product-manager"
      ],
      "evidence_by_phase": {
        "discovery": "Architecture team consulted before any procurement under spend control starts",
        "significant-change": "Architecture team consulted before new procurement for the change"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        11
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/choosing-technology/#gr-tech-06",
      "why": "Architecture questions raised at the end of a procurement are expensive to answer."
    },
    {
      "id": "GR-DATA-01",
      "title": "Every data set has an owner",
      "level": "should",
      "statement": "Each data set a service creates or holds has a named business owner (information asset owner) and is recorded in the information asset register.",
      "area": "Data",
      "page": "guardrails/data.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Information asset register entries with a named owner for each data set",
      "lead_roles": [
        "data-architect",
        "product-manager"
      ],
      "evidence_by_phase": {
        "alpha": "Each data set the service will create or hold identified, with a proposed information asset owner",
        "beta": "Information asset register entries with a named owner for each data set",
        "live": "Register entries and owners kept current",
        "retire": "Information asset register updated to show what happened to each data set"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        10
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Enterprise data architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/data/#gr-data-01",
      "why": "Data without an owner is not maintained, not trusted and not deleted when it should be."
    },
    {
      "id": "GR-DATA-02",
      "title": "Use authoritative sources",
      "level": "should",
      "statement": "Use the authoritative source for shared entities - customers, organisations, land parcels, holdings, locations, species - rather than creating local copies that drift. See Defra on a page.",
      "area": "Data",
      "page": "guardrails/data.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Data flow diagram naming the authoritative source for each shared entity, with refresh arrangements for any copies",
      "lead_roles": [
        "data-architect"
      ],
      "evidence_by_phase": {
        "discovery": "Shared entities the service needs identified, with their authoritative sources",
        "alpha": "Data flow diagram naming the authoritative source for each shared entity, and how any copies are refreshed",
        "beta": "The service reads from the authoritative sources as designed, tested with the source owners",
        "live": "Copies and refresh arrangements reviewed when sources change"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        10
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Enterprise data architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/data/#gr-data-02",
      "how_to_meet": "If you must cache or replicate, record the source, refresh frequency and how you handle changes."
    },
    {
      "id": "GR-DATA-03",
      "title": "Use agreed data standards and identifiers",
      "level": "should",
      "statement": "Use the data standards for dates, addresses, locations, identifiers and code lists, so data can be joined across services.",
      "area": "Data",
      "page": "guardrails/data.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta"
      ],
      "evidence": "Data model that uses the agreed data standards and identifiers",
      "lead_roles": [
        "data-architect"
      ],
      "evidence_by_phase": {
        "alpha": "Data model using the agreed data standards and identifiers",
        "beta": "Data stored and exchanged using the agreed standards, checked in testing"
      },
      "automated_check": "manual",
      "service_standard_points": [
        13
      ],
      "tcop_points": [
        4,
        10
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Enterprise data architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/data/#gr-data-03"
    },
    {
      "id": "GR-DATA-04",
      "title": "Collect once, share safely",
      "level": "should",
      "statement": "Do not ask users for information Defra already holds. Share data between services through APIs or governed data products, with data sharing agreements where required.",
      "area": "Data",
      "page": "guardrails/data.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta"
      ],
      "evidence": "Journey design showing users are not asked for information Defra already holds, and data sharing agreements where required",
      "lead_roles": [
        "service-designer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        8,
        10
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Enterprise data architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/data/#gr-data-04"
    },
    {
      "id": "GR-DATA-05",
      "title": "Describe your data",
      "level": "should",
      "statement": "Publish metadata for data sets so they can be found and understood - UK GEMINI for geospatial data and DCAT for other data sets.",
      "area": "Data",
      "page": "guardrails/data.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Published metadata records in UK GEMINI or DCAT",
      "lead_roles": [
        "data-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        10
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Enterprise data architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/data/#gr-data-05"
    },
    {
      "id": "GR-DATA-06",
      "title": "Protect personal data by design",
      "level": "must",
      "statement": "Complete a data protection impact assessment (DPIA) before processing personal data, minimise what you collect, and apply retention and deletion automatically.",
      "area": "Data",
      "page": "guardrails/data.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Approved DPIA, and retention and deletion built into the service",
      "lead_roles": [
        "data-architect",
        "product-manager"
      ],
      "evidence_by_phase": {
        "discovery": "DPIA screening completed, showing whether personal data is involved",
        "alpha": "Draft DPIA, with data minimisation and retention designed in",
        "beta": "Approved DPIA, and retention and deletion built and tested",
        "live": "DPIA reviewed when processing changes, and deletion running as designed",
        "significant-change": "DPIA updated for any change in how personal data is processed",
        "retire": "Personal data deleted or transferred lawfully, as set out in the DPIA"
      },
      "automated_check": "manual",
      "service_standard_points": [
        9
      ],
      "tcop_points": [
        7
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Enterprise data architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/data/#gr-data-06",
      "why": "UK GDPR and the Data Protection Act 2018; TCoP point 7."
    },
    {
      "id": "GR-DATA-07",
      "title": "Open by default",
      "level": "should",
      "statement": "Publish non-personal, non-sensitive data as open data under the Open Government Licence, through the Defra Data Services Platform or data.gov.uk.",
      "area": "Data",
      "page": "guardrails/data.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Link to the published open data and its licence",
      "lead_roles": [
        "data-architect",
        "product-manager"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        10
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Enterprise data architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/data/#gr-data-07"
    },
    {
      "id": "GR-DATA-08",
      "title": "Manage data quality",
      "level": "should",
      "statement": "Define, measure and report data quality using the Government Data Quality Framework, especially for data that feeds payments, regulatory decisions or official statistics.",
      "area": "Data",
      "page": "guardrails/data.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Data quality measures and regular reports",
      "lead_roles": [
        "data-architect",
        "performance-analyst"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        10
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Enterprise data architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/data/#gr-data-08"
    },
    {
      "id": "GR-DATA-09",
      "title": "Retain and dispose of records properly",
      "level": "must",
      "statement": "Apply Defra's retention schedules. Records of permanent value are identified for transfer to The National Archives.",
      "area": "Data",
      "page": "guardrails/data.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Retention schedule applied and records of permanent value identified",
      "lead_roles": [
        "data-architect"
      ],
      "evidence_by_phase": {
        "beta": "Retention schedule identified for each type of record, and disposal built in",
        "live": "Retention applied and records of permanent value identified for The National Archives",
        "retire": "Records kept, transferred to The National Archives or destroyed, as agreed with the information asset owner"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Enterprise data architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/data/#gr-data-09"
    },
    {
      "id": "GR-DATA-10",
      "title": "Handle research data safely",
      "level": "should",
      "statement": "Collect research data only with informed consent, store recordings and notes only in Defra-approved places, delete them when they are no longer needed, use only Defra-approved research tools, and screen research for a DPIA.",
      "area": "Data",
      "page": "guardrails/data.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Research plan showing consent, where recordings and notes are stored, when they are deleted, the approved tools used and DPIA screening",
      "lead_roles": [
        "user-researcher"
      ],
      "evidence_by_phase": {
        "discovery": "Consent forms and privacy notice in use, recordings and notes stored only in approved places, and a deletion date set",
        "alpha": "The same for alpha research, with DPIA screening done for the research and any new research tool assessed",
        "beta": "Research data from earlier phases deleted on schedule, and the same controls for beta research",
        "live": "Research data handled the same way for ongoing research, and deletion checked"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Enterprise data architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.3.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/data/#gr-data-10",
      "why": "Research recordings and notes are personal data about real people. Keeping them in personal accounts, unapproved tools or for longer than needed puts participants at risk and breaks data protection law.",
      "how_to_meet": "- Get informed consent before each session, using the templates in the manual's [standards and guidance](https://digital.defra.gov.uk/user-research/standards-and-guidance).\n- Store recordings and notes only where the manual's participant data storage and retention guidance says, and set a deletion date when you collect them.\n- Use only the manual's [approved research tools](https://digital.defra.gov.uk/user-research/tools), and check a tool can hold the data you plan to collect. Assess any new tool before using it ([GR-TECH-04](https://defra.github.io/architecture/guardrails/choosing-technology/#gr-tech-04)).\n- Screen the research for a DPIA ([GR-DATA-06](https://defra.github.io/architecture/guardrails/data/#gr-data-06)), especially for new tools, sensitive topics or recordings of people's homes or farms.\n- Do not put recordings or transcripts into AI tools except as the [AI digital toolkit](https://digital.defra.gov.uk/ai-toolkit/guidance/keeping-data-safe) allows.\n\nThis guardrail is a **draft** proposal. Comment on it by [opening an issue](https://github.com/DEFRA/architecture/issues)."
    },
    {
      "id": "GR-DATA-11",
      "title": "No real personal data in prototypes",
      "level": "should",
      "statement": "Prototypes, research materials and test environments use made-up or anonymised data, never real personal data copied from a live service or spreadsheet.",
      "area": "Data",
      "page": "guardrails/data.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha",
        "beta"
      ],
      "evidence": "Prototypes and test environments use made-up or anonymised data, never real personal data",
      "lead_roles": [
        "interaction-designer",
        "user-researcher",
        "developer"
      ],
      "evidence_by_phase": {
        "discovery": "Any prototype uses made-up data",
        "alpha": "Prototypes and research materials use made-up data, including data a participant types in during a session",
        "beta": "Test and research environments use synthetic or anonymised data; any exception agreed through a DPIA"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-04",
        "ddts-05"
      ],
      "owner": "Enterprise data architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.3.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/data/#gr-data-11",
      "why": "Prototypes are shared widely, hosted on less protected platforms and shown to participants. Real data in them can be seen by people who should not see it.",
      "how_to_meet": "make up realistic names, addresses, holdings and reference numbers. Tell participants not to enter their own real details into a prototype unless the research plan allows it and the data is handled under [GR-DATA-10](https://defra.github.io/architecture/guardrails/data/#gr-data-10). If a test genuinely needs real data, agree it through a DPIA first.\n\nThis guardrail is a **draft** proposal. Comment on it by [opening an issue](https://github.com/DEFRA/architecture/issues)."
    },
    {
      "id": "GR-DIG-01",
      "title": "Challenge paper and manual processes",
      "level": "should",
      "statement": "Do not put a paper or email process online as it is. Find out why each step exists, and remove, automate or redesign it.",
      "area": "Digital first and end-to-end services",
      "page": "guardrails/digital-first.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha"
      ],
      "evidence": "Discovery findings showing paper, email and manual steps in the current process and how the new design removes or justifies each one",
      "lead_roles": [
        "service-designer",
        "user-researcher"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        2
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-06",
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/digital-first/#gr-dig-01",
      "why": "digitising a broken process makes it faster to fail. The biggest gains come from removing steps, not speeding them up.",
      "how_to_meet": "map the current process in discovery, including the parts staff do by hand. For each step, record whether it is needed, and why."
    },
    {
      "id": "GR-DIG-02",
      "title": "Design across organisational boundaries",
      "level": "should",
      "statement": "Design the end-to-end service from the user's point of view, even when parts of it are delivered by other Defra organisations or other parts of government.",
      "area": "Digital first and end-to-end services",
      "page": "guardrails/digital-first.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha",
        "beta"
      ],
      "evidence": "A map of the whole service, including the parts other teams and organisations deliver, and agreed hand-offs between them",
      "lead_roles": [
        "service-designer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        2,
        3
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-06",
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/digital-first/#gr-dig-02",
      "why": "users do not care which organisation does what. Many Defra users deal with several Defra bodies for one task.",
      "how_to_meet": "identify the whole service your work is part of, talk to the teams delivering the other parts, and agree how users and data move between them."
    },
    {
      "id": "GR-DIG-03",
      "title": "Provide assisted digital and offline routes",
      "level": "should",
      "statement": "Make sure people who cannot use the online service, or cannot use it alone, can still get what they need - with help, by phone or on paper - and that those routes lead to the same outcome and data.",
      "area": "Digital first and end-to-end services",
      "page": "guardrails/digital-first.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Assisted digital and offline routes designed and tested with users who need them",
      "lead_roles": [
        "service-designer",
        "user-researcher"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        3,
        5
      ],
      "tcop_points": [
        2
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-06",
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/digital-first/#gr-dig-03",
      "why": "some Defra users have limited internet access, skills or confidence, particularly in rural areas. Service Standard point 5 asks that everyone can use the service.",
      "how_to_meet": "design assisted routes in alpha, so staff-assisted applications go through the same system as online ones rather than a separate process."
    },
    {
      "id": "GR-FIELD-01",
      "title": "Choose devices that suit the job",
      "level": "should",
      "statement": "Choose devices for field work from research into where and how people work - outdoors, in bad weather, wearing gloves, in the dark - not from what is already on the desk.",
      "area": "Field working and devices",
      "page": "guardrails/field-working-and-devices.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha"
      ],
      "evidence": "User research on the working environment, and the device choice recorded in an ADR",
      "lead_roles": [
        "user-researcher",
        "service-designer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        1
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/field-working-and-devices/#gr-field-01",
      "why": "a tool that cannot be used in the rain or with gloves on will not be used, and staff fall back to paper.",
      "how_to_meet": "observe field work in discovery, and record the device choice and the reasons in an ADR."
    },
    {
      "id": "GR-FIELD-02",
      "title": "Design field tools to work offline",
      "level": "should",
      "statement": "Field tools work without a connection: they download what is needed before a visit, save work on the device, and sync safely when back in signal.",
      "area": "Field working and devices",
      "page": "guardrails/field-working-and-devices.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Field journeys tested with no connection, including sync after reconnecting and conflict handling",
      "lead_roles": [
        "interaction-designer",
        "developer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        5
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/field-working-and-devices/#gr-field-02",
      "why": "much of rural England and the sea has poor or no mobile coverage. Losing work because the signal dropped destroys trust in digital tools.",
      "how_to_meet": "test every field journey in flight mode, and decide in an ADR how conflicts are resolved when two people change the same record offline."
    },
    {
      "id": "GR-FIELD-03",
      "title": "Manage and secure every device",
      "level": "should",
      "statement": "Devices that hold or access Defra data are enrolled in Defra device management, encrypted, kept patched, protected by a screen lock and able to be wiped remotely if lost.",
      "area": "Field working and devices",
      "page": "guardrails/field-working-and-devices.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Devices enrolled in Defra device management, with encryption, patching and remote wipe confirmed",
      "lead_roles": [
        "security-architect"
      ],
      "evidence_by_phase": {
        "alpha": "Device management approach agreed for the devices the service will use",
        "beta": "Devices enrolled in Defra device management, with encryption, patching, screen lock and remote wipe confirmed",
        "live": "Device compliance monitored, and lost devices wiped"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        6
      ],
      "sbd_principles": [
        7,
        8
      ],
      "doctrine": [
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/field-working-and-devices/#gr-field-03",
      "why": "field devices are lost and stolen more often than office equipment, and may hold personal and sensitive data.",
      "how_to_meet": "use Defra-managed devices. If a supplier or partner device is needed, agree how it meets the same controls before it is used."
    },
    {
      "id": "GR-FIELD-04",
      "title": "Check connectivity before you design",
      "level": "could",
      "statement": "Check the mobile and broadband coverage where the service will be used before choosing an approach, rather than assuming it.",
      "area": "Field working and devices",
      "page": "guardrails/field-working-and-devices.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha"
      ],
      "evidence": "Connectivity in the places the service will be used checked, and the approach recorded",
      "lead_roles": [
        "user-researcher",
        "technical-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/field-working-and-devices/#gr-field-04",
      "why": "coverage maps and real-world signal often differ, especially inside farm buildings and in valleys.",
      "how_to_meet": "use public coverage data and ask users, and plan for the worst case."
    },
    {
      "id": "GR-FE-01",
      "title": "Meet WCAG 2.2 AA",
      "level": "must",
      "statement": "Public and staff-facing services meet WCAG 2.2 level AA, are tested with assistive technology and publish an accessibility statement.",
      "area": "Front end and accessibility",
      "page": "guardrails/front-end-and-accessibility.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Accessibility audit, assistive technology testing results and a published accessibility statement",
      "lead_roles": [
        "interaction-designer",
        "developer"
      ],
      "evidence_by_phase": {
        "alpha": "Prototypes built with accessible components, and a plan for an accessibility audit and assistive technology testing",
        "beta": "Accessibility audit and assistive technology testing completed, issues fixed, and an accessibility statement published",
        "live": "Accessibility statement kept current, and accessibility re-tested after significant change"
      },
      "automated_check": "Automated accessibility tests such as axe in the pipeline. These find some issues only; manual testing is still needed.",
      "service_standard_points": [
        5
      ],
      "tcop_points": [
        2
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-06",
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/front-end-and-accessibility/#gr-fe-01",
      "why": "It is the law (Public Sector Bodies Accessibility Regulations 2018) and Service Standard point 5.",
      "service_manual": "[make sure everyone can use the service](https://digital.defra.gov.uk/accessibility), including the assistive technologies Defra staff use and when exemptions apply, [manage accessibility in your project](https://digital.defra.gov.uk/accessibility/manage-accessibility) and [test for accessibility](https://digital.defra.gov.uk/accessibility/test-for-accessibility)."
    },
    {
      "id": "GR-FE-02",
      "title": "Use the GOV.UK Design System",
      "level": "must",
      "statement": "Public-facing services use GOV.UK Frontend and patterns. Staff-facing services should use them too.",
      "area": "Front end and accessibility",
      "page": "guardrails/front-end-and-accessibility.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "The service uses GOV.UK Frontend and design decisions record where it departs from the patterns",
      "lead_roles": [
        "interaction-designer",
        "developer"
      ],
      "evidence_by_phase": {
        "alpha": "Prototypes built with the GOV.UK Design System, with departures recorded and researched",
        "beta": "The service uses GOV.UK Frontend, with design decisions recording any departures",
        "live": "GOV.UK Frontend kept up to date"
      },
      "automated_check": "manual",
      "service_standard_points": [
        4,
        13
      ],
      "tcop_points": [
        2
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-06",
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/front-end-and-accessibility/#gr-fe-02",
      "service_manual": "[components and patterns](https://digital.defra.gov.uk/design/components-and-patterns)."
    },
    {
      "id": "GR-FE-03",
      "title": "Progressive enhancement",
      "level": "should",
      "statement": "Core journeys work without JavaScript, and are server-rendered. Use JavaScript to enhance, not to make things work.",
      "area": "Front end and accessibility",
      "page": "guardrails/front-end-and-accessibility.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta"
      ],
      "evidence": "Core journeys tested with JavaScript turned off",
      "lead_roles": [
        "developer",
        "interaction-designer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        5
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-06",
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/front-end-and-accessibility/#gr-fe-03"
    },
    {
      "id": "GR-FE-04",
      "title": "Consider forms platforms first",
      "level": "should",
      "statement": "For form-based services, consider the forms options under Customer Service before building a bespoke front end.",
      "area": "Front end and accessibility",
      "page": "guardrails/front-end-and-accessibility.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha"
      ],
      "evidence": "ADR noting whether the forms capability was considered",
      "lead_roles": [
        "service-designer",
        "technical-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        8
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-06",
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/front-end-and-accessibility/#gr-fe-04",
      "service_manual": "[Defra Forms](https://digital.defra.gov.uk/architecture-and-software-development/defra-forms)."
    },
    {
      "id": "GR-FE-05",
      "title": "Design for low bandwidth and rural users",
      "level": "should",
      "statement": "Many Defra users - farmers, land managers, field staff - work in places with poor connectivity. Keep pages light, support saving progress, and consider offline working for field tools.",
      "area": "Front end and accessibility",
      "page": "guardrails/front-end-and-accessibility.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta"
      ],
      "evidence": "Page weight budget, save-progress design and testing on slow connections",
      "lead_roles": [
        "service-designer",
        "user-researcher"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        5
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-06",
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/front-end-and-accessibility/#gr-fe-05"
    },
    {
      "id": "GR-FE-06",
      "title": "Support Welsh where required",
      "level": "must",
      "statement": "Services used in Wales meet the Welsh Language Standards where they apply. Design for translation from the start.",
      "area": "Front end and accessibility",
      "page": "guardrails/front-end-and-accessibility.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Assessment of whether the Welsh Language Standards apply and translated content where they do",
      "lead_roles": [
        "content-designer"
      ],
      "evidence_by_phase": {
        "alpha": "Whether the Welsh Language Standards apply decided, and the service designed for translation",
        "beta": "Welsh content and journeys built and tested where the standards apply",
        "live": "Welsh content kept in step with English content"
      },
      "automated_check": "manual",
      "service_standard_points": [
        5
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-06",
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/front-end-and-accessibility/#gr-fe-06",
      "service_manual": "[Welsh language translation](https://digital.defra.gov.uk/content/welsh-language-translation)."
    },
    {
      "id": "GR-FE-07",
      "title": "Tell users what is happening when things fail or are slow",
      "level": "should",
      "statement": "When a service is slow, a dependency fails or something is still being processed, users see a clear message saying what has happened, whether their work is saved, and what to do next - not a generic error or a page that seems to hang.",
      "area": "Front end and accessibility",
      "page": "guardrails/front-end-and-accessibility.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Designed and tested content for each way the service can fail or slow down, and the front end showing it",
      "lead_roles": [
        "content-designer",
        "developer",
        "interaction-designer"
      ],
      "evidence_by_phase": {
        "alpha": "Each dependency that can fail or be slow identified with the developers, and what users see in each case designed and tested in the prototype",
        "beta": "The front end shows the designed content when a dependency fails or is slow, tested by switching dependencies off",
        "live": "Failure and delay content kept accurate as dependencies and processing times change"
      },
      "automated_check": "manual",
      "service_standard_points": [
        5,
        14
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-06",
        "ddts-07"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.3.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/front-end-and-accessibility/#gr-fe-07",
      "why": "Defra services depend on platforms and back-office systems that will sometimes be slow or unavailable. Users who are not told what is happening give up, try again and create duplicates, or phone for help.",
      "how_to_meet": "- With the developers, list each dependency that can fail or be slow, and decide what users see for each. This is the user-facing side of [GR-OPS-04](https://defra.github.io/architecture/guardrails/observability-and-operations/#gr-ops-04), which designs the service to degrade gracefully.\n- Use the GOV.UK Design System [problem with the service pages](https://design-system.service.gov.uk/patterns/problem-with-the-service-pages/) and [service unavailable pages](https://design-system.service.gov.uk/patterns/service-unavailable-pages/), and say whether the user's answers are saved.\n- For work that is processed later, show a status and a realistic time, as in the [asynchronous submission](https://defra.github.io/architecture/patterns/async-submission/#content-to-design) pattern.\n- Test these messages with users in alpha, and test the real failures in beta by switching dependencies off.\n\nThis guardrail is a **draft** proposal. Comment on it by [opening an issue](https://github.com/DEFRA/architecture/issues)."
    },
    {
      "id": "GR-HOST-01",
      "title": "Use Defra's strategic delivery platform by default",
      "level": "must",
      "statement": "New digital services are hosted on the Defra Core Delivery Platform (CDP) unless an exception has been agreed.",
      "area": "Hosting and platforms",
      "page": "guardrails/hosting-and-platforms.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "The service runs on the Core Delivery Platform, or an approved exception",
      "lead_roles": [
        "technical-architect"
      ],
      "evidence_by_phase": {
        "discovery": "Platform team engaged, and any hosting needs the Core Delivery Platform might not meet identified",
        "alpha": "The design runs on the Core Delivery Platform, or an exception has been requested",
        "beta": "The service runs on the Core Delivery Platform, or under an approved exception",
        "live": "The service still runs on the platform, and any exception is reviewed before it expires"
      },
      "automated_check": "manual",
      "service_standard_points": [
        11
      ],
      "tcop_points": [
        5,
        8
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/hosting-and-platforms/#gr-host-01",
      "why": "CDP provides secure-by-default hosting, CI/CD, observability, secrets management and protective monitoring once, for everyone. Each team that builds its own platform recreates this at its own cost and risk.",
      "how_to_meet": "In discovery or alpha, work with the Delivery Architecture team to decide whether CDP is right for your service - the expectation is that it will be - and engage the platform team. If CDP cannot meet a requirement (for example specialist compute, a SaaS product or a legacy migration), raise an [exception](https://defra.github.io/architecture/governance/exceptions/) early and tell the platform team - the gap may be something they should solve for everyone.",
      "service_manual": "[Core Delivery Platform](https://digital.defra.gov.uk/architecture-and-software-development/core-delivery-platform). The manual says a service not on CDP is managed as an exception through the Delivery Architecture team's governance process; how that relates to exceptions on this site is [still being agreed](https://defra.github.io/architecture/governance/exceptions/#exceptions-to-the-software-development-standards)."
    },
    {
      "id": "GR-HOST-02",
      "title": "Public cloud first",
      "level": "should",
      "statement": "Where a service cannot use a strategic platform, it is hosted in a Defra-managed public cloud tenancy. New on-premises hosting is not permitted.",
      "area": "Hosting and platforms",
      "page": "guardrails/hosting-and-platforms.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Hosting design showing a Defra-managed public cloud tenancy",
      "lead_roles": [
        "technical-architect"
      ],
      "evidence_by_phase": {
        "alpha": "Where the platform cannot be used, the hosting design uses a Defra-managed public cloud tenancy",
        "beta": "The service runs in a Defra-managed public cloud tenancy",
        "live": "No on-premises hosting introduced"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        5
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/hosting-and-platforms/#gr-host-02",
      "why": "Government [Cloud First policy](https://www.gov.uk/guidance/government-cloud-first-policy) and Defra's data centre exit."
    },
    {
      "id": "GR-HOST-03",
      "title": "Everything as code",
      "level": "should",
      "statement": "Infrastructure, configuration, pipelines and policies are defined as code, version-controlled and deployed through automated pipelines. No manual changes to production.",
      "area": "Hosting and platforms",
      "page": "guardrails/hosting-and-platforms.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Infrastructure, configuration and pipeline code in the repository, and drift detection results",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {
        "beta": "Infrastructure, configuration and pipelines defined as code in the repository, with no manual changes to production",
        "live": "Drift detection running, and no manual changes to production in the change history"
      },
      "automated_check": "manual",
      "service_standard_points": [
        14
      ],
      "tcop_points": [],
      "sbd_principles": [
        10
      ],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/hosting-and-platforms/#gr-host-03",
      "why": "Repeatable, reviewable, recoverable environments. Manual changes cause drift and incidents.",
      "how_to_meet": "Use the platform's provided templates. Where you manage your own infrastructure, use a declarative tool such as Terraform and run drift detection."
    },
    {
      "id": "GR-HOST-04",
      "title": "Use managed services before self-managed",
      "level": "should",
      "statement": "Prefer managed cloud services (databases, queues, storage) over running your own on virtual machines.",
      "area": "Hosting and platforms",
      "page": "guardrails/hosting-and-platforms.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta"
      ],
      "evidence": "Hosting design listing the managed services used",
      "lead_roles": [
        "technical-architect",
        "developer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        5
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/hosting-and-platforms/#gr-host-04",
      "why": "Managed services remove patching and much operational toil."
    },
    {
      "id": "GR-HOST-05",
      "title": "Consistent, disposable environments",
      "level": "should",
      "statement": "Have at least development, test and production environments, created from the same code, with production data never copied to lower environments unless anonymised.",
      "area": "Hosting and platforms",
      "page": "guardrails/hosting-and-platforms.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Environments created from the same code, and how lower environments avoid real personal data",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/hosting-and-platforms/#gr-host-05"
    },
    {
      "id": "GR-HOST-06",
      "title": "Host data in the UK",
      "level": "should",
      "statement": "Data classified OFFICIAL is held in UK regions unless an assessed and approved exception exists.",
      "area": "Hosting and platforms",
      "page": "guardrails/hosting-and-platforms.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Data location confirmed for every data store and backup",
      "lead_roles": [
        "technical-architect",
        "security-architect"
      ],
      "evidence_by_phase": {
        "alpha": "Hosting design places every data store and backup in UK regions",
        "beta": "Data location confirmed for every data store and backup as built",
        "live": "Data location checked when new stores or services are added"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/hosting-and-platforms/#gr-host-06",
      "why": "Data protection, sovereignty and Defra's information risk appetite."
    },
    {
      "id": "GR-HOST-07",
      "title": "Design for the resilience the service needs",
      "level": "should",
      "statement": "Agree recovery time and recovery point objectives with the service owner, design to them across availability zones, and test recovery at least once a year.",
      "area": "Hosting and platforms",
      "page": "guardrails/hosting-and-platforms.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Agreed recovery time and recovery point objectives, a multi-zone design and the date of the last recovery test",
      "lead_roles": [
        "technical-architect",
        "product-manager"
      ],
      "evidence_by_phase": {
        "alpha": "Recovery time and recovery point objectives agreed with the service owner, and a design that meets them",
        "beta": "Multi-zone design built, and recovery tested before go-live",
        "live": "Recovery tested at least once a year, with the date of the last test",
        "significant-change": "Recovery objectives and design checked for the change"
      },
      "automated_check": "manual",
      "service_standard_points": [
        14
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/hosting-and-platforms/#gr-host-07",
      "why": "Some Defra services, such as flood warnings and disease control, are critical during emergencies - exactly when infrastructure is under stress."
    },
    {
      "id": "GR-IAM-01",
      "title": "Use the strategic customer identity services",
      "level": "must",
      "statement": "Services for citizens, farmers and businesses use Defra Customer Identity (Defra ID), which uses GOV.UK One Login and Government Gateway as identity providers, for authentication. Services do not build their own sign-in. See Defra Customer Identity in the Defra Digital Service Manual.",
      "area": "Identity and access",
      "page": "guardrails/identity-and-access.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Integration with Defra Customer Identity and the agreed level of identity assurance",
      "lead_roles": [
        "technical-architect",
        "service-designer"
      ],
      "evidence_by_phase": {
        "discovery": "Identity team engaged about the level of identity assurance needed and how users act for organisations",
        "alpha": "Sign-in designed with Defra Customer Identity, and tested with users",
        "beta": "Integration with Defra Customer Identity built and tested",
        "live": "No other sign-in introduced"
      },
      "automated_check": "manual",
      "service_standard_points": [
        9,
        13
      ],
      "tcop_points": [
        8
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-02",
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/identity-and-access/#gr-iam-01",
      "why": "Users get one account across Defra services, we manage relationships between people and organisations (including agents) once, and we avoid storing credentials.",
      "how_to_meet": "Talk to the Customer Identity team in discovery about the level of identity assurance you need and how the service will represent organisations and agents."
    },
    {
      "id": "GR-IAM-02",
      "title": "Staff sign in with Microsoft Entra ID",
      "level": "must",
      "statement": "Staff-facing services and products, including SaaS, use single sign-on through Microsoft Entra ID with multi-factor authentication. No local staff accounts.",
      "area": "Identity and access",
      "page": "guardrails/identity-and-access.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Single sign-on through Microsoft Entra ID with multi-factor authentication and no local staff accounts",
      "lead_roles": [
        "technical-architect"
      ],
      "evidence_by_phase": {
        "beta": "Staff sign in through Microsoft Entra ID with multi-factor authentication, and there are no local staff accounts",
        "live": "Staff access reviewed regularly through Entra ID groups"
      },
      "automated_check": "manual",
      "service_standard_points": [
        9
      ],
      "tcop_points": [
        6
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-02",
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/identity-and-access/#gr-iam-02",
      "why": "Joiners, movers and leavers are handled in one place, and conditional access protects every product."
    },
    {
      "id": "GR-IAM-03",
      "title": "Authorise on least privilege",
      "level": "must",
      "statement": "Users, services and pipelines get only the permissions they need, granted through roles or groups, and reviewed regularly.",
      "area": "Identity and access",
      "page": "guardrails/identity-and-access.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Role and group model and a record of access reviews",
      "lead_roles": [
        "security-architect",
        "developer"
      ],
      "evidence_by_phase": {
        "beta": "Role and group model built, with users, services and pipelines given only the permissions they need",
        "live": "Record of regular access reviews",
        "retire": "All access to the service's systems and data removed"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        6
      ],
      "sbd_principles": [
        7
      ],
      "doctrine": [
        "ddts-02",
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/identity-and-access/#gr-iam-03"
    },
    {
      "id": "GR-IAM-04",
      "title": "Separate authentication from authorisation",
      "level": "should",
      "statement": "Use the identity provider to establish who someone is; keep business authorisation rules (for example \"can act for this holding\") explicit, testable and in the right service.",
      "area": "Identity and access",
      "page": "guardrails/identity-and-access.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta"
      ],
      "evidence": "Authorisation rules written down and covered by automated tests",
      "lead_roles": [
        "developer",
        "technical-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-02",
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/identity-and-access/#gr-iam-04"
    },
    {
      "id": "GR-IAM-05",
      "title": "No secrets in code",
      "level": "must",
      "statement": "Secrets, keys and credentials are held in a managed secrets store, rotated, and never committed to source control. Use workload identity in preference to long-lived keys.",
      "area": "Identity and access",
      "page": "guardrails/identity-and-access.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Secrets held in a managed store with rotation and secret scanning enabled",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {
        "alpha": "Secret scanning on from the first commit, and secrets held in a managed store from the start",
        "beta": "All secrets in a managed store with rotation, using workload identity where possible",
        "live": "Secrets rotated, and secret scanning alerts dealt with",
        "retire": "Secrets, keys and credentials revoked"
      },
      "automated_check": "GitHub secret scanning with push protection",
      "service_standard_points": [],
      "tcop_points": [
        6
      ],
      "sbd_principles": [
        7
      ],
      "doctrine": [
        "ddts-02",
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/identity-and-access/#gr-iam-05",
      "how_to_meet": "Enable secret scanning on every repository ([GR-OPEN-03](https://defra.github.io/architecture/guardrails/open-source/#gr-open-03))."
    },
    {
      "id": "GR-IAM-06",
      "title": "Privileged access is controlled and audited",
      "level": "must",
      "statement": "Production and administrative access is just-in-time, uses phishing-resistant MFA, and is logged to the security operations centre.",
      "area": "Identity and access",
      "page": "guardrails/identity-and-access.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Just-in-time privileged access with phishing-resistant MFA and logs reaching the security operations centre",
      "lead_roles": [
        "security-architect"
      ],
      "evidence_by_phase": {
        "beta": "Just-in-time privileged access with phishing-resistant MFA configured, and logged to the security operations centre",
        "live": "Privileged access reviewed regularly"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [
        5,
        8
      ],
      "doctrine": [
        "ddts-02",
        "ddts-04",
        "ddts-06"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/identity-and-access/#gr-iam-06"
    },
    {
      "id": "GR-OPS-01",
      "title": "Use the platform's observability tooling",
      "level": "should",
      "statement": "Send structured logs, metrics and traces to the platform's observability tooling, and security events to the security operations centre.",
      "area": "Observability and operations",
      "page": "guardrails/observability-and-operations.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Dashboards and alerts in the platform's observability tooling and security events reaching the security operations centre",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {
        "beta": "Logs, metrics and traces reaching the platform's observability tooling, and security events reaching the security operations centre",
        "live": "Dashboards and alerts in use by the team that runs the service"
      },
      "automated_check": "manual",
      "service_standard_points": [
        14
      ],
      "tcop_points": [],
      "sbd_principles": [
        5
      ],
      "doctrine": [
        "ddts-01",
        "ddts-02"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/observability-and-operations/#gr-ops-01"
    },
    {
      "id": "GR-OPS-02",
      "title": "Log in a structured, safe way",
      "level": "should",
      "statement": "Use structured (JSON) logs with correlation identifiers across service boundaries. Never log secrets, tokens or unnecessary personal data.",
      "area": "Observability and operations",
      "page": "guardrails/observability-and-operations.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Sample logs showing structured fields and correlation identifiers and no secrets",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {
        "beta": "Structured logs with correlation identifiers, tested to show no secrets or unnecessary personal data are logged",
        "live": "Logging reviewed when new data or features are added"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [
        5
      ],
      "doctrine": [
        "ddts-01",
        "ddts-02"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/observability-and-operations/#gr-ops-02"
    },
    {
      "id": "GR-OPS-03",
      "title": "Define and measure service levels",
      "level": "should",
      "statement": "Agree service level objectives for availability, latency and correctness with the service owner, monitor them, and alert on what matters to users rather than on every metric.",
      "area": "Observability and operations",
      "page": "guardrails/observability-and-operations.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Agreed service level objectives with monitoring and alerts",
      "lead_roles": [
        "product-manager",
        "performance-analyst",
        "technical-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        14
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/observability-and-operations/#gr-ops-03"
    },
    {
      "id": "GR-OPS-04",
      "title": "Health checks and graceful degradation",
      "level": "should",
      "statement": "Expose health endpoints, set timeouts and retries on dependencies, and degrade gracefully (for example save progress and tell the user) when a dependency fails.",
      "area": "Observability and operations",
      "page": "guardrails/observability-and-operations.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Health endpoints, timeout and retry settings, and a design for when dependencies fail",
      "lead_roles": [
        "developer",
        "interaction-designer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        14
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/observability-and-operations/#gr-ops-04"
    },
    {
      "id": "GR-OPS-05",
      "title": "Be ready for live before you go live",
      "level": "must",
      "statement": "Before public beta, agree the support model, on-call arrangements, runbooks, incident process and who owns the service in live. Register the service in the service catalogue.",
      "area": "Observability and operations",
      "page": "guardrails/observability-and-operations.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Support model, on-call arrangements, runbooks, incident process, named live owner and service catalogue entry",
      "lead_roles": [
        "delivery-manager",
        "product-manager"
      ],
      "evidence_by_phase": {
        "beta": "Before public beta, the support model, on-call arrangements, runbooks, incident process and live owner agreed, and the service catalogue entry made",
        "live": "Runbooks and support arrangements tested and kept current",
        "significant-change": "Runbooks and support arrangements updated before the change goes live"
      },
      "automated_check": "manual",
      "service_standard_points": [
        14
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/observability-and-operations/#gr-ops-05"
    },
    {
      "id": "GR-OPS-06",
      "title": "Learn from incidents",
      "level": "should",
      "statement": "Hold blameless post-incident reviews for significant incidents and share the lessons in the open where appropriate.",
      "area": "Observability and operations",
      "page": "guardrails/observability-and-operations.md",
      "status": "draft",
      "phases": [
        "live"
      ],
      "evidence": "Post-incident reviews and the actions taken",
      "lead_roles": [
        "delivery-manager"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        14
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/observability-and-operations/#gr-ops-06"
    },
    {
      "id": "GR-OPS-07",
      "title": "Measure performance and cost",
      "level": "should",
      "statement": "Publish the mandatory key performance indicators and tag cloud resources so cost can be attributed to the service and business capability.",
      "area": "Observability and operations",
      "page": "guardrails/observability-and-operations.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Published key performance indicators and cost tags on cloud resources",
      "lead_roles": [
        "performance-analyst",
        "product-manager"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        10
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/observability-and-operations/#gr-ops-07"
    },
    {
      "id": "GR-OPEN-01",
      "title": "Code in the open",
      "level": "must",
      "statement": "New source code is public from the start, in a Defra GitHub organisation, unless there is a recorded reason to keep a specific repository private (for example fraud rules or unannounced policy).",
      "area": "Open source and working in the open",
      "page": "guardrails/open-source.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Public repository in a Defra GitHub organisation, or a recorded reason for keeping it private",
      "lead_roles": [
        "developer",
        "delivery-manager"
      ],
      "evidence_by_phase": {
        "alpha": "Code public in a Defra GitHub organisation from the first commit, or a recorded reason for keeping a repository private",
        "beta": "Repositories public, or the reasons for keeping them private reviewed",
        "live": "Repositories still public, or private for a recorded reason",
        "retire": "Repositories archived, not deleted, so the code and decisions stay available"
      },
      "automated_check": "manual",
      "service_standard_points": [
        12
      ],
      "tcop_points": [
        3
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-03",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/open-source/#gr-open-01",
      "why": "[Service Standard point 12](https://www.gov.uk/service-manual/service-standard/point-12-make-new-source-code-open). Openness also makes teams more careful about secrets and quality."
    },
    {
      "id": "GR-OPEN-02",
      "title": "Licence clearly",
      "level": "should",
      "statement": "Code is released under the Open Government Licence or the MIT licence, with a LICENCE file in every repository.",
      "area": "Open source and working in the open",
      "page": "guardrails/open-source.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "LICENCE file with the Open Government Licence or MIT licence in every repository",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {
        "alpha": "LICENCE file in every repository from the start",
        "beta": "LICENCE file with the Open Government Licence or MIT licence in every repository",
        "live": "LICENCE file in every new repository"
      },
      "automated_check": "Guardrail check (tools/guardrail-check): LICENCE file with the Open Government Licence or MIT",
      "service_standard_points": [
        12
      ],
      "tcop_points": [
        3
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-03",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/open-source/#gr-open-02"
    },
    {
      "id": "GR-OPEN-03",
      "title": "Publish safely",
      "level": "should",
      "statement": "Enable secret scanning and push protection on every repository. Keep secrets, credentials and sensitive configuration out of code.",
      "area": "Open source and working in the open",
      "page": "guardrails/open-source.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Secret scanning and push protection enabled on every repository",
      "lead_roles": [
        "developer",
        "security-architect"
      ],
      "evidence_by_phase": {
        "alpha": "Secret scanning and push protection on for every repository from the first commit",
        "beta": "Secret scanning and push protection on for every repository",
        "live": "Secret scanning alerts dealt with promptly"
      },
      "automated_check": "Guardrail check (tools/guardrail-check): secret scanning and push protection turned on, with a token that can read security settings",
      "service_standard_points": [
        12
      ],
      "tcop_points": [
        3,
        6
      ],
      "sbd_principles": [
        7
      ],
      "doctrine": [
        "ddts-01",
        "ddts-03",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/open-source/#gr-open-03"
    },
    {
      "id": "GR-OPEN-04",
      "title": "Reuse and contribute back",
      "level": "should",
      "statement": "Use and improve existing open source and Defra components rather than forking or rewriting. Contribute fixes back upstream.",
      "area": "Open source and working in the open",
      "page": "guardrails/open-source.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Reuse and upstream contributions noted in ADRs and pull requests",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        13
      ],
      "tcop_points": [
        3,
        8
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-03",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/open-source/#gr-open-04"
    },
    {
      "id": "GR-OPEN-05",
      "title": "Blog and show the thing",
      "level": "could",
      "statement": "Share what you learn on the Defra Digital blog, at show and tells, and in this repository.",
      "area": "Open source and working in the open",
      "page": "guardrails/open-source.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Blog posts, show and tells or contributions to this site",
      "lead_roles": [
        "delivery-manager"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        8
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-03",
        "ddts-05"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/open-source/#gr-open-05"
    },
    {
      "id": "GR-PROD-01",
      "title": "Fund and run products, not projects",
      "level": "should",
      "statement": "Build and run digital services as products, owned by a long-lived team that keeps improving them, rather than as projects that end at go-live.",
      "area": "Products and platforms",
      "page": "guardrails/products-and-platforms.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "A named, long-lived team responsible for the product, with a roadmap beyond the current funding period",
      "lead_roles": [
        "product-manager"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        6
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/products-and-platforms/#gr-prod-01",
      "why": "services are used for years. When the team that built a service disbands at launch, knowledge is lost, technical debt grows and the service slowly fails its users.",
      "how_to_meet": "plan funding and team continuity beyond go-live from the start. If a project model is unavoidable, agree before go-live which product team will own the service in live ([GR-OPS-05](https://defra.github.io/architecture/guardrails/observability-and-operations/#gr-ops-05))."
    },
    {
      "id": "GR-PROD-02",
      "title": "Name the product owner and service owner",
      "level": "should",
      "statement": "Every product has a named product owner, and every service a named service owner, who are accountable for it throughout its life.",
      "area": "Products and platforms",
      "page": "guardrails/products-and-platforms.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Named product owner and service owner, recorded in the service catalogue",
      "lead_roles": [
        "product-manager",
        "delivery-manager"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        6
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/products-and-platforms/#gr-prod-02",
      "why": "decisions about priorities, risk and retirement need someone with the authority to make them.",
      "how_to_meet": "record both in the service catalogue and in the repository README, and keep them current when people move on."
    },
    {
      "id": "GR-PROD-03",
      "title": "Contribute to platforms rather than working around them",
      "level": "should",
      "statement": "When a shared platform does not meet a need, raise it with the platform team and contribute to fixing it, rather than building a local workaround.",
      "area": "Products and platforms",
      "page": "guardrails/products-and-platforms.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Requests and contributions raised with platform teams, and ADRs where the team worked around a platform",
      "lead_roles": [
        "technical-architect",
        "product-manager"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        13
      ],
      "tcop_points": [
        8
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/products-and-platforms/#gr-prod-03",
      "why": "every workaround becomes something else to secure, support and eventually remove, and other teams have the same need.",
      "how_to_meet": "talk to the platform team first. If you must work around a gap to meet a deadline, record it in an ADR with a plan to move back on to the platform."
    },
    {
      "id": "GR-PROD-04",
      "title": "Plan for the end of a product's life",
      "level": "should",
      "statement": "Know where each product is in its lifecycle - growing, stable, being replaced or retiring - and plan its retirement as deliberately as its launch.",
      "area": "Products and platforms",
      "page": "guardrails/products-and-platforms.md",
      "status": "draft",
      "phases": [
        "live"
      ],
      "evidence": "Product lifecycle stage recorded, with a retirement plan for products being replaced",
      "lead_roles": [
        "product-manager"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        11
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/products-and-platforms/#gr-prod-04",
      "why": "products that linger after they are replaced keep costing money and carrying risk.",
      "how_to_meet": "record the lifecycle stage in the service catalogue, and follow [retire a service](https://defra.github.io/architecture/deliver/retire/) when the time comes."
    },
    {
      "id": "GR-SEC-01",
      "title": "Follow Secure by Design",
      "level": "must",
      "statement": "Every new service and significant change follows the Secure by Design activities, with a named risk owner, from discovery onward.",
      "area": "Security",
      "page": "guardrails/security.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Named risk owner and the Secure by Design activities completed for the phase",
      "lead_roles": [
        "security-architect"
      ],
      "evidence_by_phase": {
        "discovery": "Named risk owner, and the information and threats the service is likely to face identified",
        "alpha": "Secure by Design activities for alpha completed, including security requirements in the backlog",
        "beta": "Secure by Design activities for beta completed, including controls built and tested",
        "live": "Secure by Design activities for live continuing, including monitoring and review",
        "significant-change": "Secure by Design activities repeated for the change, with the risk owner involved"
      },
      "automated_check": "manual",
      "service_standard_points": [
        9
      ],
      "tcop_points": [
        6
      ],
      "sbd_principles": [
        1,
        3
      ],
      "doctrine": [
        "ddts-02"
      ],
      "owner": "Enterprise security architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/security/#gr-sec-01",
      "how_to_meet": "start from the patterns and checklists in the [Secure by Design artefact library](https://github.com/co-cddo/SbD) rather than designing controls from scratch."
    },
    {
      "id": "GR-SEC-02",
      "title": "Keep a current threat model",
      "level": "must",
      "statement": "Each service has a threat model, created by the team in alpha and revisited at every significant change and at least annually.",
      "area": "Security",
      "page": "guardrails/security.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Current, dated threat model, reviewed at the last significant change and at least annually",
      "lead_roles": [
        "security-architect",
        "developer"
      ],
      "evidence_by_phase": {
        "alpha": "First threat model, created by the team",
        "beta": "Threat model updated as controls are built and tested",
        "live": "Threat model reviewed at least once a year, with the date of the last review",
        "significant-change": "Threat model revisited for the change before it is built"
      },
      "automated_check": "manual",
      "service_standard_points": [
        9
      ],
      "tcop_points": [
        6
      ],
      "sbd_principles": [
        3
      ],
      "doctrine": [
        "ddts-02"
      ],
      "owner": "Enterprise security architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/security/#gr-sec-02"
    },
    {
      "id": "GR-SEC-03",
      "title": "Classify information",
      "level": "must",
      "statement": "Identify the government security classification and data types the service handles, and design controls to match.",
      "area": "Security",
      "page": "guardrails/security.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha"
      ],
      "evidence": "Security classification and data types recorded with the controls that match them",
      "lead_roles": [
        "security-architect",
        "data-architect"
      ],
      "evidence_by_phase": {
        "discovery": "Security classification and the types of data the service will handle identified",
        "alpha": "Controls in the design that match the classification"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        6
      ],
      "sbd_principles": [
        3
      ],
      "doctrine": [
        "ddts-02"
      ],
      "owner": "Enterprise security architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/security/#gr-sec-03"
    },
    {
      "id": "GR-SEC-04",
      "title": "Encrypt in transit and at rest",
      "level": "must",
      "statement": "Use TLS 1.2 or higher for all traffic, internal and external, and encrypt data at rest using platform-managed or customer-managed keys.",
      "area": "Security",
      "page": "guardrails/security.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "TLS configuration and encryption at rest settings for every data store",
      "lead_roles": [
        "developer",
        "security-architect"
      ],
      "evidence_by_phase": {
        "beta": "TLS 1.2 or higher for all traffic and encryption at rest for every data store, confirmed as built",
        "live": "Encryption settings checked when new stores or connections are added"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        6
      ],
      "sbd_principles": [
        8
      ],
      "doctrine": [
        "ddts-02"
      ],
      "owner": "Enterprise security architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/security/#gr-sec-04"
    },
    {
      "id": "GR-SEC-05",
      "title": "Scan continuously and fix quickly",
      "level": "must",
      "statement": "Run static analysis, dependency, container and infrastructure scanning in the pipeline. Fix critical vulnerabilities within 14 days and high within 30 days, or record a risk decision.",
      "area": "Security",
      "page": "guardrails/security.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Pipeline scanning results and the time taken to fix critical and high vulnerabilities",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {
        "beta": "Static analysis, dependency, container and infrastructure scanning running in the pipeline",
        "live": "Time taken to fix critical and high vulnerabilities, within 14 and 30 days, or a recorded risk decision"
      },
      "automated_check": "Static analysis, dependency, container and infrastructure scanning in the pipeline",
      "service_standard_points": [],
      "tcop_points": [
        6
      ],
      "sbd_principles": [
        9
      ],
      "doctrine": [
        "ddts-02"
      ],
      "owner": "Enterprise security architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/security/#gr-sec-05"
    },
    {
      "id": "GR-SEC-06",
      "title": "Test before go-live and after major change",
      "level": "must",
      "statement": "Commission an independent IT health check (penetration test) proportionate to risk before go-live and after significant change, and track remediation.",
      "area": "Security",
      "page": "guardrails/security.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "IT health check report and remediation tracker",
      "lead_roles": [
        "security-architect",
        "delivery-manager"
      ],
      "evidence_by_phase": {
        "beta": "IT health check before go-live, and a remediation tracker",
        "live": "IT health check after significant change, with remediation tracked",
        "significant-change": "IT health check scoped and booked for the change where it is significant"
      },
      "automated_check": "manual",
      "service_standard_points": [
        9
      ],
      "tcop_points": [],
      "sbd_principles": [
        9
      ],
      "doctrine": [
        "ddts-02"
      ],
      "owner": "Enterprise security architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/security/#gr-sec-06"
    },
    {
      "id": "GR-SEC-07",
      "title": "Log for detection and response",
      "level": "must",
      "statement": "Send security-relevant events (authentication, authorisation failures, administrative actions, data exports) to the security operations centre. See GR-OPS-01.",
      "area": "Security",
      "page": "guardrails/security.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Security-relevant events reaching the security operations centre",
      "lead_roles": [
        "developer",
        "security-architect"
      ],
      "evidence_by_phase": {
        "beta": "Authentication, authorisation failures, administrative actions and data exports sent to the security operations centre, and tested",
        "live": "Security events reviewed and alerts acted on"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [
        5
      ],
      "doctrine": [
        "ddts-02"
      ],
      "owner": "Enterprise security architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/security/#gr-sec-07"
    },
    {
      "id": "GR-SEC-08",
      "title": "Protect the supply chain",
      "level": "should",
      "statement": "Assess suppliers and third-party products for security before use, pin and verify dependencies, and know what is in your software (keep a software bill of materials).",
      "area": "Security",
      "page": "guardrails/security.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Supplier security assessments, pinned dependencies and a software bill of materials",
      "lead_roles": [
        "security-architect",
        "developer"
      ],
      "evidence_by_phase": {
        "alpha": "Security assessment of suppliers and third-party products in the design",
        "beta": "Dependencies pinned and verified, and a software bill of materials produced in the pipeline",
        "live": "Software bill of materials kept current, and supplier assessments reviewed at renewal"
      },
      "automated_check": "Dependency review and software bill of materials generation in the pipeline",
      "service_standard_points": [],
      "tcop_points": [
        6
      ],
      "sbd_principles": [
        2
      ],
      "doctrine": [
        "ddts-02"
      ],
      "owner": "Enterprise security architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/security/#gr-sec-08"
    },
    {
      "id": "GR-SEC-09",
      "title": "Manage risk explicitly",
      "level": "must",
      "statement": "Where a control cannot be met, record the risk and get it accepted by the right owner through the security exception process. Accepted risks are time-limited.",
      "area": "Security",
      "page": "guardrails/security.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Risk register entries with an owner and an expiry date for every accepted risk",
      "lead_roles": [
        "security-architect",
        "product-manager"
      ],
      "evidence_by_phase": {
        "alpha": "Risks from controls that cannot be met recorded, with an owner",
        "beta": "Residual risks accepted by the right owner through the security exception process, each with an expiry date",
        "live": "Accepted risks reviewed before they expire"
      },
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [
        1,
        3
      ],
      "doctrine": [
        "ddts-02"
      ],
      "owner": "Enterprise security architecture",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/security/#gr-sec-09"
    },
    {
      "id": "GR-DEV-01",
      "title": "Use the supported languages and frameworks",
      "level": "should",
      "statement": "Use Defra's approved technologies and languages for new services so that skills, libraries and support are shared.",
      "area": "Software development",
      "page": "guardrails/software-development.md",
      "status": "draft",
      "phases": [
        "alpha"
      ],
      "evidence": "ADR recording the reason wherever the service uses a different stack",
      "lead_roles": [
        "technical-architect",
        "developer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [
        11
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/software-development/#gr-dev-01",
      "why": "A small, well-supported set of technologies makes it easier to move people between teams, share components and support services for the long term.",
      "how_to_meet": "If you need something else, request it through the Tools Radar and record the reason in an ADR, including how the service will be supported after the team moves on. The Delivery Architecture team handles exceptions to the software development standards."
    },
    {
      "id": "GR-DEV-02",
      "title": "All code in Defra source control",
      "level": "must",
      "statement": "All source code, including infrastructure and pipeline code written by suppliers, lives in a Defra-owned GitHub organisation from day one.",
      "area": "Software development",
      "page": "guardrails/software-development.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "All source code in a Defra-owned GitHub organisation from the first commit",
      "lead_roles": [
        "developer",
        "delivery-manager"
      ],
      "evidence_by_phase": {
        "alpha": "All code, including prototypes and infrastructure code written by suppliers, in a Defra-owned GitHub organisation from the first commit",
        "beta": "All source, infrastructure and pipeline code in the Defra GitHub organisation, with nothing held only by a supplier",
        "live": "All changes made in the Defra GitHub organisation"
      },
      "automated_check": "manual",
      "service_standard_points": [
        12
      ],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/software-development/#gr-dev-02",
      "why": "Defra owns what it pays for and must be able to change supplier without losing code or history."
    },
    {
      "id": "GR-DEV-03",
      "title": "Protect the main branch",
      "level": "should",
      "statement": "Main branches are protected: changes arrive through pull requests with at least one review and passing automated checks.",
      "area": "Software development",
      "page": "guardrails/software-development.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Branch protection on the main branch requiring a review and passing checks",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {
        "alpha": "Main branch protected from the start, with changes through reviewed pull requests",
        "beta": "Branch protection requiring at least one review and passing checks",
        "live": "Branch protection still in place on every repository"
      },
      "automated_check": "Guardrail check (tools/guardrail-check): default branch protected by branch protection or a ruleset",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [
        10
      ],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/software-development/#gr-dev-03"
    },
    {
      "id": "GR-DEV-04",
      "title": "Continuous integration and delivery",
      "level": "should",
      "statement": "Every change is built, tested, scanned and deployed by an automated pipeline. Releases to production are small, frequent and reversible.",
      "area": "Software development",
      "page": "guardrails/software-development.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Pipeline definition in the repository and deployment history",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {
        "beta": "Every change built, tested, scanned and deployed by an automated pipeline, with rollback tested",
        "live": "Deployment history showing small, frequent, reversible releases"
      },
      "automated_check": "manual",
      "service_standard_points": [
        14
      ],
      "tcop_points": [],
      "sbd_principles": [
        10
      ],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/software-development/#gr-dev-04"
    },
    {
      "id": "GR-DEV-05",
      "title": "Automated testing at the right levels",
      "level": "should",
      "statement": "Use a balanced set of automated tests - unit, integration/contract, end-to-end journey, accessibility, performance and security - run in the pipeline.",
      "area": "Software development",
      "page": "guardrails/software-development.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Test results from the pipeline at each level",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/software-development/#gr-dev-05"
    },
    {
      "id": "GR-DEV-06",
      "title": "Manage dependencies actively",
      "level": "should",
      "statement": "Use automated dependency updates and software composition analysis, and keep runtimes on supported versions.",
      "area": "Software development",
      "page": "guardrails/software-development.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Dependabot or Renovate configuration and runtimes on supported versions",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {
        "beta": "Dependabot or Renovate configured, software composition analysis in the pipeline, and runtimes on supported versions",
        "live": "Dependency updates merged promptly and runtimes upgraded before they go out of support"
      },
      "automated_check": "Guardrail check (tools/guardrail-check): Dependabot or Renovate configured",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/software-development/#gr-dev-06",
      "why": "Unpatched dependencies are one of the most common ways services are compromised."
    },
    {
      "id": "GR-DEV-07",
      "title": "Follow shared coding standards",
      "level": "should",
      "statement": "Use automated linting and formatting, and follow the Defra software development standards, so code looks and behaves consistently across teams.",
      "area": "Software development",
      "page": "guardrails/software-development.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Linting and formatting checks in the pipeline",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {},
      "automated_check": "Lint and format checks in the pipeline",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/software-development/#gr-dev-07"
    },
    {
      "id": "GR-DEV-08",
      "title": "Document as you go",
      "level": "should",
      "statement": "Each repository has a README explaining what it does, how to run it locally, how to test it and how to deploy it, and links to its ADRs.",
      "area": "Software development",
      "page": "guardrails/software-development.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "README explaining what the service does and how to run, test and deploy it, with links to its ADRs",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {},
      "automated_check": "Guardrail check (tools/guardrail-check): README sections on running, testing and deploying, and a link to ADRs",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/software-development/#gr-dev-08"
    },
    {
      "id": "GR-DEV-09",
      "title": "Record significant decisions as ADRs",
      "level": "should",
      "statement": "Record significant architecture decisions as architecture decision records (ADRs), kept with the code or linked from the repository's README.",
      "area": "Software development",
      "page": "guardrails/software-development.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "ADR log in the repository or linked from its README",
      "lead_roles": [
        "technical-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "Guardrail check (tools/guardrail-check): ADRs in docs/adr",
      "service_standard_points": [],
      "tcop_points": [],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-02",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.2.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/software-development/#gr-dev-09",
      "why": "the reasons behind a design are lost when people move on. ADRs let the next team, an assessor or a partner taking over the service understand what was decided and why, and change it safely.",
      "how_to_meet": "keep ADRs in a `docs/adr` folder in the service repository, using the [ADR template](https://defra.github.io/architecture/governance/templates/adr/). Write one when you make a decision that is hard to reverse, departs from a guardrail, or that someone will later ask \"why did we do this?\"."
    },
    {
      "id": "GR-SUS-01",
      "title": "Consider sustainability in design decisions",
      "level": "should",
      "statement": "Include environmental impact as a factor in ADRs for hosting, architecture and technology choices.",
      "area": "Sustainability",
      "page": "guardrails/sustainability.md",
      "status": "draft",
      "phases": [
        "discovery",
        "alpha"
      ],
      "evidence": "Environmental impact recorded in ADRs for hosting and technology choices",
      "lead_roles": [
        "technical-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        12
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/sustainability/#gr-sus-01",
      "service_manual": "[assess risks and record sustainability actions](https://digital.defra.gov.uk/sustainability/process) - record the decisions in your sustainability statement as well as your ADRs."
    },
    {
      "id": "GR-SUS-02",
      "title": "Right-size and switch off",
      "level": "should",
      "statement": "Use autoscaling, scale non-production environments down out of hours, and delete unused resources.",
      "area": "Sustainability",
      "page": "guardrails/sustainability.md",
      "status": "draft",
      "phases": [
        "beta",
        "live"
      ],
      "evidence": "Autoscaling and out-of-hours schedules for non-production environments",
      "lead_roles": [
        "developer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        12
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/sustainability/#gr-sus-02"
    },
    {
      "id": "GR-SUS-03",
      "title": "Choose lower-carbon regions and services",
      "level": "could",
      "statement": "Where data rules allow, prefer cloud regions and services with lower carbon intensity, and use providers' carbon reporting.",
      "area": "Sustainability",
      "page": "guardrails/sustainability.md",
      "status": "draft",
      "phases": [
        "alpha"
      ],
      "evidence": "Region and service choice recorded with its carbon intensity",
      "lead_roles": [
        "technical-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        12
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/sustainability/#gr-sus-03"
    },
    {
      "id": "GR-SUS-04",
      "title": "Keep data and pages lean",
      "level": "should",
      "statement": "Store only the data you need, for as long as you need it, and keep page weight low - which also helps users on slow connections (GR-FE-05).",
      "area": "Sustainability",
      "page": "guardrails/sustainability.md",
      "status": "draft",
      "phases": [
        "alpha",
        "beta",
        "live"
      ],
      "evidence": "Data retention settings and page weight measurements",
      "lead_roles": [
        "developer",
        "interaction-designer"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        12
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/sustainability/#gr-sus-04"
    },
    {
      "id": "GR-SUS-05",
      "title": "Measure and report",
      "level": "could",
      "statement": "Track the carbon footprint of your service using cloud provider tooling and report it alongside cost.",
      "area": "Sustainability",
      "page": "guardrails/sustainability.md",
      "status": "draft",
      "phases": [
        "live"
      ],
      "evidence": "Carbon footprint reported alongside cost",
      "lead_roles": [
        "performance-analyst",
        "technical-architect"
      ],
      "evidence_by_phase": {},
      "automated_check": "manual",
      "service_standard_points": [],
      "tcop_points": [
        12
      ],
      "sbd_principles": [],
      "doctrine": [
        "ddts-01",
        "ddts-03"
      ],
      "owner": "Architecture team",
      "last_reviewed": "2026-10-01",
      "since_version": "0.1.0",
      "replaced_by": null,
      "url": "https://defra.github.io/architecture/guardrails/sustainability/#gr-sus-05",
      "service_manual": "the [metrics for each of Defra's six objectives](https://digital.defra.gov.uk/sustainability/metrics)."
    }
  ]
}