Skip to content

docs: update validation framework design to match v1 implementation#463

Open
hdamker wants to merge 7 commits intocamaraproject:mainfrom
hdamker:docs/validation-framework-updates
Open

docs: update validation framework design to match v1 implementation#463
hdamker wants to merge 7 commits intocamaraproject:mainfrom
hdamker:docs/validation-framework-updates

Conversation

@hdamker
Copy link
Copy Markdown
Collaborator

@hdamker hdamker commented Mar 26, 2026

What type of PR is this?

documentation

What this PR does / why we need it:

Updates the validation framework Requirements and Detailed Design documents to match the v1 implementation. The original documents (merged in #447) were written pre-implementation. During implementation, three architectural decisions changed the design:

1. Configurable profiles and simplified stages

  • 4-stage rollout model (disabled/advisory/standard/blocking) → 3-stage (disabled/advisory/enabled). Blocking enforcement is purely a GitHub ruleset concern.
  • Profiles are now configurable per-repo via pr_profile and release_profile in the central config, rather than hardcoded by trigger type.

2. Bundling is output, not prerequisite

  • Spectral CLI natively follows external $ref during linting — all engines run on source files directly.
  • Bundling moved from a mid-pipeline validation step to a post-validation diagnostic artifact step.
  • Source maps are not needed. Findings from external files are downgraded to hint.

3. Two-gate defense-in-depth model

  • Pre-snapshot gate validates source content; release-review PR validates transformed snapshot content.
  • Release automation bundles independently — no cross-workflow artifact handoff.
  • Release-review PRs run full scope (all engines), replacing the previous short-circuit design.
  • Context builder falls back to release-metadata.yaml on snapshot branches (where release-plan.yaml is absent).

Also includes prior changes: hint field split into message_override and hint, bundled-spec-in-release clarification.

Which issue(s) this PR fixes:

Related to #448 (validation framework umbrella)

Special notes for reviewers:

Commits are organized by topic for easier review:

  • 41105d9 / 45873c7 / b9a0586 — hint field split, prior changes
  • 3b62ab4 — Profile/stage model
  • 122767f — Bundling architecture
  • 2048b38 — Two-gate model and RA integration
  • 14627d7 — Cross-reference consistency fixes

Changelog input

 release-note
N/A (documentation only)

Additional documentation

docs
Updated: CAMARA-Validation-Framework-Detailed-Design.md, CAMARA-Validation-Framework-Requirements.md, CAMARA-Release-Workflow-and-Metadata-Concept.md

hdamker added 7 commits March 26, 2026 15:22
Clarifies the two-field model per DEC-018: message_override replaces
the engine message entirely (rare), hint adds fix guidance alongside
the preserved engine message (common case).
Standalone API specs are bundled on the snapshot branch and included
in the auto-generated source archive. No separate release asset needed.
YAML parses unquoted "off" as boolean False, causing silent bugs in
rule metadata processing. Renamed to "muted" which is YAML-safe.
Replace 4-stage model (disabled/advisory/standard/blocking) with 3-stage
(disabled/advisory/enabled). Add configurable pr_profile and release_profile
fields to central config schema. Update profile selection from hardcoded
trigger-based to config-driven with defaults. Blocking enforcement moved
entirely to GitHub rulesets.

Updated in both Requirements and Detailed Design documents.
Spectral CLI natively follows external $ref during linting, so bundling
is not a prerequisite for validation. Moved bundling from a mid-pipeline
step to post-validation diagnostic artifact production. Removed source
map requirement (not needed), simplified bundling failure handling, and
updated engine orchestration to reflect the actual sequential engine
pipeline (yamllint, Spectral, Python, gherkin-lint on source files).

Updated composite action boundaries (single run-validation shared action),
engine summary table format, Check Run annotations, and line number
handling sections.

Updated in both Requirements and Detailed Design documents.
Replace artifact handoff model with independent bundling: release
automation bundles during snapshot creation, validation bundled specs
are diagnostic only. Replace release-review PR short-circuit with
full-scope validation (all engines). Add release-metadata.yaml fallback
for context on snapshot branches. Describe two-gate defense-in-depth
model (pre-snapshot + release-review PR).

Updated in both Requirements and Detailed Design documents.
Fix stale hardcoded profile references in trigger summary table,
cache sync section, and branch/profile annotations. Update last-updated
dates to 2026-03-31 in both documents.
@hdamker hdamker changed the title docs: update validation framework design for hint field split and bundling clarification docs: update validation framework design to match v1 implementation Mar 31, 2026
@hdamker hdamker marked this pull request as ready for review March 31, 2026 16:31
Copy link
Copy Markdown
Collaborator

@tanjadegroot tanjadegroot left a comment

Choose a reason for hiding this comment

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

looks great
/LGTM

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.

2 participants