@odla-ai/cli 0.32.1 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -186,6 +186,87 @@ jobs, missing canary configuration, stale probes, and partial
186
186
  socket-reconciliation coverage remain explicit fields. Authentication progress
187
187
  is stderr-only, so stdout is a single JSON document.
188
188
 
189
+ Repository-controlled SLO monitoring lives under `o11y.monitoring`. Objectives
190
+ can consume Kitesurf routes or bounded observations of existing o11y error,
191
+ latency, and protected-canary signals. A minimal route policy detects both
192
+ short outages and sustained error-budget burn, and sends incident and digest
193
+ email:
194
+
195
+ ```js
196
+ export default {
197
+ services: ["o11y"],
198
+ links: { prod: "https://example.com" },
199
+ o11y: {
200
+ monitoring: {
201
+ probes: [{
202
+ id: "home", route: "/", envs: ["prod"], every: "5m",
203
+ expect: { status: 200, titleIncludes: "Example", textIncludes: ["Welcome"] },
204
+ }],
205
+ slos: [{
206
+ id: "availability", name: "Public availability",
207
+ indicator: { type: "probe-success", probes: ["home"] },
208
+ target: 0.999, window: "28d",
209
+ alerts: {
210
+ spike: { badChecks: 2, withinChecks: 3, recoverAfter: 2 },
211
+ trend: { burnRate: 1, shortWindow: "6h", longWindow: "3d", minBadChecks: 2 },
212
+ },
213
+ }],
214
+ notifications: {
215
+ prod: {
216
+ email: ["oncall@example.com"], timezone: "America/Costa_Rica",
217
+ daily: "08:00", weekly: { day: "monday", at: "08:00" },
218
+ },
219
+ },
220
+ },
221
+ },
222
+ };
223
+ ```
224
+
225
+ For a service-performance objective, omit `probes` and select an existing o11y
226
+ metric. The comparator describes a successful observation, so this example
227
+ requires each five-minute request p95 to be at most 500ms:
228
+
229
+ ```js
230
+ slos: [{
231
+ id: "request-latency", name: "Request p95 at or below 500ms",
232
+ indicator: {
233
+ type: "o11y-metric", metric: "latency_p95", comparator: "lte",
234
+ threshold: 500, every: "5m", observationWindow: "5m",
235
+ },
236
+ target: 0.99, window: "28d",
237
+ }]
238
+ ```
239
+
240
+ `error_rate`, `latency_p95`, `synthetic_success`, and
241
+ `synthetic_publish_to_visible` are supported. The checked-in odla-db first
242
+ rollout is `ops/monitoring/odla-db.config.mjs`:
243
+
244
+ ```bash
245
+ npx odla-ai monitor plan --config ops/monitoring/odla-db.config.mjs --env prod --json
246
+ ```
247
+
248
+ Preview and apply the normalized policy, then inspect or exercise it through
249
+ stable JSON:
250
+
251
+ ```bash
252
+ npx odla-ai monitor plan --env prod --json
253
+ npx odla-ai monitor apply --env prod --yes --json
254
+ npx odla-ai monitor status --app <appId> --env prod --json
255
+ npx odla-ai monitor run home --app <appId> --env prod --json
256
+ npx odla-ai monitor incidents --app <appId> --env prod --runs --json
257
+ npx odla-ai monitor report --app <appId> --env prod --period weekly --json
258
+ ```
259
+
260
+ Only scheduled `good` and `bad` outcomes enter the application SLO denominator.
261
+ Kitesurf failures, missing Analytics Engine evidence, stale canaries, query
262
+ failures, and scheduler gaps are retained as `monitor_error`/`missed` and
263
+ degrade monitoring health separately, so no traffic or a broken monitor cannot
264
+ manufacture success or downtime. Probe responses retain bounded metadata only;
265
+ page content and accessibility trees are never returned by the CLI or stored.
266
+ Each applied desired-state revision starts a fresh SLO event series and closes
267
+ open incidents as `config_revision_changed`; results produced by different
268
+ thresholds, routes, assertions, or notification policy are never blended.
269
+
189
270
  For platform-wide operations, `platform status --json` requests only the
190
271
  short-lived, admin-approved `platform:status:read` capability and reads the
191
272
  same `odla.platform-status/v1` snapshot as Studio. It works outside a project