Skip to content

Spec: clarify retries, reconciliation, feature ID guidance#51

Draft
anoopath wants to merge 1 commit into
aws:mainfrom
anoopath:azure-spec-clarifications-retries-featureid
Draft

Spec: clarify retries, reconciliation, feature ID guidance#51
anoopath wants to merge 1 commit into
aws:mainfrom
anoopath:azure-spec-clarifications-retries-featureid

Conversation

@anoopath

Copy link
Copy Markdown

Draft PR for review.\n\nSummary:\n- Document retry guidance for timeouts/5xx (bounded retries, exponential backoff + jitter) and reconciliation/redrive expectations.\n- Add optional throttling guidance for HTTP 429 + Retry-After.\n- Clarify Feature identity guidance (opaque IDs; UUIDv4 recommended).\n- Recommend invariant: at most one FEATURE_TYPE_L3_BASE per (connection, channel); reject duplicates with 409.\n\nFiles changed:\n- connection-coordinator/docs/Protocols.md\n- connection-coordinator/paths/connections.yaml\n- connection-coordinator/paths/features.yaml\n- connection-coordinator/schemas/feature.yaml\n\nContext: These items were explicitly suggested for spec standardization during AzureΓåöGCP integration discussions.


Providers SHOULD enforce that at most one FEATURE_TYPE_L3_BASE Feature exists
per (connection, channel). Attempts to create a second L3_BASE feature for the
same (connection, channel) SHOULD be rejected with HTTP 409 (Conflict).

@mshrimankar10 mshrimankar10 Apr 14, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we allow update on feature ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While today there is no explicit UpdateFeature, that is more a result of a lack of need to do so. That said, I can definitely envision a world where certain features could be delivered updates, especially as new feature variants are introduced.


Providers SHOULD enforce that at most one FEATURE_TYPE_L3_BASE Feature exists
per (connection, channel). Attempts to create a second L3_BASE feature for the
same (connection, channel) SHOULD be rejected with HTTP 409 (Conflict).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While today there is no explicit UpdateFeature, that is more a result of a lack of need to do so. That said, I can definitely envision a world where certain features could be delivered updates, especially as new feature variants are introduced.


Feature IDs MUST be treated as opaque identifiers. UUIDv4 is RECOMMENDED.

Providers SHOULD enforce that at most one FEATURE_TYPE_L3_BASE Feature exists

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think each explicit FEATURE type is likely to have it's own set of enumeration limits. This likely evolves into a FeatureScope type/field.

I think any deviation for the enumeration will always be a good candidate for 409 errors.

request and retry. When retrying, clients SHOULD use an exponential
backoff strategy with jitter and a bounded retry budget (RECOMMENDED: up
to 5 attempts and/or up to ~60 seconds total). After exhausting the retry
budget, callers SHOULD reconcile remote state (Get/List) before

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does reconcile the remote state mean? I am guessing the active provider should reverse the flow and report failure to the customer (delete features, delete connection, etc)

409: CONFLICT. Returned when a server detects concurrent updates to the
resource.

409: CONFLICT. Providers SHOULD enforce that at most one

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder how this is going to scale over time as we introduce more features with unique validation. Should this be a 400 and provide detailed validation requirements closer to the FEATURE_TYPE_L3_BASE object?

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.

4 participants