Repository navigation
feat(media-buy): add actionable budget floor details - #8710
Conversation
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated schema paths require human/CODEOWNERS approval.
This PR modifies two files under static/schemas/source/**, which fall under the repo's deterministic hard approval gate (gated_paths: true). The current review_decision is REVIEW_REQUIRED, not APPROVED, so decision table row 2 fires: the gate is not satisfied and the outcome cannot be approve.
Reviewer findings are clean — no Critical/High/Medium. The change adds four optional fields (budget_field, basis, constraint, related_field) to error-details/budget-too-low.json on an open schema (additionalProperties: true, per DR-0009/DR-0036), correctly carried as a minor changeset. Schema↔docs coherence holds, error-code.json and the generated compliance snippet match, and versioning.mdx/roadmap.mdx align with DR-0007. No spec drift, no oneOf regression, no released-artifact mutation. This is a non-breaking (Normative) change, so the breaking-class hard gate is not implicated — but the path-based gated-paths gate still stands.
Escalation reason: touches gated schema source files (static/schemas/source/enums/error-code.json, static/schemas/source/error-details/budget-too-low.json) and review_decision is REVIEW_REQUIRED. Human/CODEOWNERS review is required before merge. Once review_decision becomes APPROVED, this clean diff falls through to approve.
Why human review
- Gated paths touched with review_decision=REVIEW_REQUIRED: static/schemas/source/enums/error-code.json and static/schemas/source/error-details/budget-too-low.json require human/CODEOWNERS approval before merge.
- This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/enums/error-code.json (modified) matches
static/schemas/source/**; static/schemas/source/error-details/budget-too-low.json (modified) matchesstatic/schemas/source/**) and the current GitHub review decision is 'REVIEW_REQUIRED', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
A bid-only update can fail because its retained budget is below the effective
bid, while the primary validation issue correctly points at the submitted bid.
Add optional
basis,budget_field,constraint, andrelated_fielddetailsto
BUDGET_TOO_LOWso buyers can distinguish daily/lifetime floors and locatethe constrained budget without applying its minimum to the bid.
The existing issue-pointer contract and hard-cap guarantees stay intact.
Unlocatable budgets remain diagnostic and require state reconciliation before
an authorized change. Update the canonical recovery guidance, regenerate the
compliance catalog, and cover the documented bid-only example with a negative
validation control. Includes a minor protocol changeset.
Records the proposed 4.0 follow-up for minimum discovery and averaged-budget
execution, with the established early-2027 target after 3.3. Those execution
changes remain outside the 3.3 wire surface. Addresses the error-recovery slice
of #8685; the broader RFC remains open.
Validation:
findings addressed and re-reviewed.
dynamic-import/format/state-change guards, and TypeScript checks passed.
package.jsonchanges only the budget-test wiring.Open workspace in Conductor