Skip to content

feat: propose BudgetAdjustment spec for v2alpha - #301

Open
thisisibrahimd wants to merge 19 commits into
OpenSLO:mainfrom
thisisibrahimd:feature/ba-spec
Open

feat: propose BudgetAdjustment spec for v2alpha#301
thisisibrahimd wants to merge 19 commits into
OpenSLO:mainfrom
thisisibrahimd:feature/ba-spec

Conversation

@thisisibrahimd

@thisisibrahimd thisisibrahimd commented Nov 4, 2024

Copy link
Copy Markdown

Summary

Proposing a BudgetAdjustment spec for v2alpha. Also cleaned up this branch to match main by removing the pkg/ directory.

What is BudgetAdjustment?

A BudgetAdjustment lets you adjust the SLI percentage for known and accepted unreliability events — both planned (database migrations, maintenance windows) and unplanned (third-party outages). This stops expected downtime from eating into your error budget unfairly.

References:

Changes

  • enhancements/v2alpha.md — Added BudgetAdjustment spec (apiVersion: openslo.com/v2alpha) with two examples (planned DB migration, CDN outage)
  • README.md — Removed BudgetAdjustment section since it's now in v2alpha
  • pkg/ — Removed entire directory to align with upstream/main and eliminate merge conflicts

Rationale

As discussed in #256, there are real cases where you need to adjust error budgets for accepted unreliability:

  • Planned events that don't happen every period (not worth changing the target permanently)
  • Unplanned events from external dependencies outside your control

References

@thisisibrahimd

Copy link
Copy Markdown
Author

You can find an initial implementation of the spec here: https://github.com/thisisibrahimd/opensloctl

@thisisibrahimd

Copy link
Copy Markdown
Author

#256

Comment thread pkg/openslosdk/encoding.go Outdated
@fourstepper

Copy link
Copy Markdown
Collaborator

I'm really not sure how I feel about this I don't feel good about this. On one hand, I understand what the issue that you are trying to solve is, on the other hand, I am not sure if it's job of the specification (or frankly implementations) to support use-cases such as this one.

It would make more sense to me to solve your use-case at the monitoring level, for example by changing the uptime target or something similar (in the spirit of "it's agreed upon all people involved that this service should be considered 'up'")

I would love to hear from other contributors though.

@thisisibrahimd

thisisibrahimd commented Nov 12, 2024

Copy link
Copy Markdown
Author

I'm really not sure how I feel about this I don't feel good about this. On one hand, I understand what the issue that you are trying to solve is, on the other hand, I am not sure if it's job of the specification (or frankly implementations) to support use-cases such as this one.

It would make more sense to me to solve your use-case at the monitoring level, for example by changing the uptime target or something similar (in the spirit of "it's agreed upon all people involved that this service should be considered 'up'")

I would love to hear from other contributors though.

I can understand your workaround and your statement on the job of the specification. However, unplanned of unexpected events can occur that needs to get patched sadly. You can read Nobl9's description of the use case. Also, planned events may not happen once every period window that warrants changing the target.

Yaml: https://docs.nobl9.com/yaml-guide/#budgetadjustment
Doc: https://docs.nobl9.com/features/budget-adjustment
Article: https://www.nobl9.com/resources/error-budget-adjustments

@fourstepper

@thisisibrahimd

Copy link
Copy Markdown
Author

Hey @nieomylnieja,

I am looking for a re-review of this PR. My justifications have not changed are above. If it is more appropriate to be in the v2alpha, please advise.

@thisisibrahimd thisisibrahimd changed the title feat: add budgetadjustment spec feat: propose BudgetAdjustment spec for v2alpha Sep 2, 2026
@thisisibrahimd

Copy link
Copy Markdown
Author

I moved the proposed implementation of this spec in the go-sdk repo: OpenSLO/go-sdk#68.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants