# A whole Loop Architecture: many systems and many loops in one file.
id: your-org
name: DevOps

# Systems the loops read from (use) and write back to (act).
# Each system has an id, plus an optional name / description / url / repository / connector.
# The `url` is used to fetch a favicon so diagrams get a nice icon.
systems:
  - id: dash0
    name: Dash0
    description: Observability with logs, traces and metrics (demo + prod)
    url: https://dash0.com
    connector: dash0
  - id: code-repo
    name: App Repo
    description: Application source code
    repository: https://github.com/your-org/app
  - id: jira
    name: Jira
    description: Service desk and tickets
    url: https://www.atlassian.com
    connector: jira
  - id: onedrive
    name: OneDrive
    description: Policies and vendor documents
    url: https://onedrive.live.com
  - id: policies
    name: Kertos
    description: ISO 27001 policies and vendor risks
    url: https://kertos.com
  - id: slack
    name: Slack
    description: Team chat
    url: https://slack.com
    connector: slack

loops:
  - id: triage-incidents
    name: Triage Incidents
    description: Detects and triages production incidents.
    trigger: "*/5 * * * *"
    model: claude-opus-4-8
    observe: [dash0]
    act: [jira, slack]
    prompt: >
      Watch the logs, traces and metrics for error-rate spikes and failed checks.
      When an incident is occurring, open a Jira ticket and post a summary to Slack.

  - id: fix-errors
    name: Fix Errors
    description: Fixes recurring errors found in the logs.
    trigger: "*/30 * * * *"
    observe: [dash0]
    act: [code-repo]
    prompt: >
      Find recurring errors in the logs, locate the cause in the code, and open a
      pull request that fixes it, referencing the originating trace.

  - id: fix-jira-issues
    name: Fix Jira Issues
    description: Automatically fixes ready Jira issues.
    trigger: "*/15 * * * *"
    model: claude-opus-4-8
    observe: [jira]
    act: [code-repo]
    prompt: >
      For each Jira issue that is ready for an agent, implement a fix and open a pull
      request.
    tools: [Read, Grep, Bash(git *), Bash(gh pr *)]

  - id: implement-compliance
    name: Implement Compliance
    description: Implements Kertos compliance in the app repo.
    trigger: "0 5 * * *"
    model: claude-opus-4-8
    observe: [policies]
    act: [code-repo]
    prompt: >
      Bring the app repo in line with the policies in Kertos and open a pull request
      that implements any missing compliance controls, citing the policy.
    tools: [Read, Grep, Bash(git *), Bash(gh pr *)]

  - id: update-evidence
    name: Update Evidence
    description: Keeps OneDrive evidence in line with Kertos policies.
    trigger: "0 5 * * 1"
    observe: [policies]
    act: [onedrive]
    prompt: >
      Update the evidence in OneDrive so it stays in line with the policies in Kertos.
