.sureops/ contract (what you declare) and automatic telemetry discovery (what sureops observes).
Two paths to get started
Path 1: Generate a starter PR
From Settings → Knowledge Base → Generate starter contract, sureops will:- Read the services observed in your telemetry (OTel service names)
- Read your Kubernetes deployments and pod labels
- Read CODEOWNERS files from your connected repositories
- Use an LLM to fill in tier, runbook hints, and dependency patterns
- Open a pull request against your knowledge base repository with a draft
.sureops/services.yaml
Path 2: Author .sureops/ yourself
Create the directory and files manually, following the schemas in this section: Start minimal — aservices.yaml with name, repo, owner, runbook, tier, and dependsOn for your most critical services is enough to see a significant improvement in agent output.
Good for: teams with a small number of critical services, or teams that already have service documentation in another form and can adapt it quickly.
How the landscape is built
Layer 0: Telemetry discovery
sureops observes service names from your OTel traces, Kubernetes labels, and log sources. This runs automatically and provides a baseline — you don’t need to configure anything for this layer. Telemetry-discovered services appear in the landscape immediately but carry lower provenance. They’re useful for blast-radius analysis and dependency mapping, but agents are less confident about ownership and runbooks for undeclared services.Layer 1: sureops-generated starter
When you request a starter PR, sureops combines telemetry discovery with CODEOWNERS and LLM-assisted inference to produce a structured.sureops/services.yaml. This is a scaffold — review and edit before merging.
Layer 2: Customer-authored .sureops/
Your merged.sureops/services.yaml and runbooks provide high-confidence, customer-locked data. These entries take precedence over telemetry and auto-discovery for any field you declare.
The provenance ranking (highest wins): manual > customer_contract > telemetry > kubernetes_scan.
Keeping the landscape in sync
After merging your contract
sureops ingests the contract on every push to your knowledge base default branch. Changes toservices.yaml or runbooks take effect on the next ingest, which typically completes within seconds of the push.
You can check the sync status in Settings → Knowledge Base → Last sync.
When your architecture changes
When you add, rename, or retire a service:- Update
.sureops/services.yamlvia a PR to your knowledge base repository - sureops re-ingests on merge
- The landscape graph is updated; agents use the new data on the next incident
When telemetry adds a new service
If a new service name appears in your telemetry and isn’t in your contract, it’s added to the landscape as a telemetry-discovered service. You’ll see it in Settings → Knowledge Base → Services with a “telemetry” provenance label. To promote it to a first-class entry, add it toservices.yaml.
Conflict resolution
When the same service appears in both your contract and an auto-discovered source, your contract wins for any field you specified. Auto-discovery fills in only what you haven’t declared.Manual authoring vs. accepting future updates
After the initial setup, sureops may propose updates to your contract via pull requests as it observes new services or detects changes in your topology. These are always proposals — you review and merge (or reject) each one. You are never required to accept sureops-proposed changes. Your.sureops/ directory is your code, governed by your review process.
Fields you’ve explicitly declared (customer_locked: true in the internal model) are never overwritten by telemetry ingestors. Only fields you haven’t specified can be filled in by auto-discovery.