Skip to content

docs: Add field errors in status convention#1177

Draft
MissingRoberto wants to merge 8 commits intomainfrom
docs/field-errors-in-status-convention
Draft

docs: Add field errors in status convention#1177
MissingRoberto wants to merge 8 commits intomainfrom
docs/field-errors-in-status-convention

Conversation

@MissingRoberto
Copy link
Copy Markdown

Summary

This PR adds comprehensive documentation establishing fieldErrors in status as the convention for reporting actionable runtime validation errors in Kubernetes-style resource APIs.

Changes

  • New documentation: docs/architecture/field-errors-in-status.md - Complete guide on the fieldErrors convention
  • Updated cross-references: Added links from:
    • docs/README.md - Added to table of contents
    • docs/admission-control.md - Explained distinction between admission (static) vs fieldErrors (runtime)
    • docs/writing-a-reconciler.md - Reference for populating fieldErrors during reconciliation
    • docs/architecture/reconciliation.md - Note about fieldErrors in reconciliation flow

Key Points

  • Establishes fieldErrors as the standard pattern instead of custom validation endpoints (/test, /validate, /check)
  • Explains when to use fieldErrors vs admission validators (static vs runtime validation)
  • Provides implementation examples for controllers and frontend integration
  • Documents the two-phase validation strategy using dryRun=true
  • Explains why custom validation endpoints are an antipattern

Related

Related to grafana/grafana#116662

Add comprehensive documentation establishing fieldErrors in status as the
convention for reporting actionable runtime validation errors in Kubernetes-style
resource APIs.

This document:
- Establishes fieldErrors as the standard pattern instead of custom validation
  endpoints (/test, /validate, /check)
- Explains when to use fieldErrors vs admission validators
- Provides implementation examples for controllers and frontend integration
- Documents the two-phase validation strategy using dryRun=true
- Explains why custom validation endpoints are an antipattern
- Includes cross-references from related documentation

Related to grafana/grafana#116662
Update documentation to reflect that dryRun=true is a standard Kubernetes
API feature usable by any client (kubectl, curl, automation scripts), not just
frontend applications. Add examples for kubectl and curl usage.
@MissingRoberto MissingRoberto marked this pull request as ready for review January 22, 2026 09:22
@MissingRoberto MissingRoberto requested a review from a team as a code owner January 22, 2026 09:22
Add comprehensive documentation explaining how to handle validation
when frontend and backend have different rules, particularly when API
versions evolve with different validation requirements.

This document covers:
- Problem scenario: branch name validation changes between versions
- Solution: Use fieldErrors in status instead of duplicating validation
- Backend implementation: version-specific admission vs version-agnostic runtime
- Frontend implementation: don't duplicate validation logic
- Migration strategy for version changes
- Best practices for version-specific vs runtime validation
@MissingRoberto MissingRoberto marked this pull request as draft February 18, 2026 11:39
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.

1 participant