Filing gate: ① a metadata-authoring trap (AGENTS.md Prime Directive #10: "a contract violation, or a metadata-authoring trap"). The evidence is the trap itself, read in the diff of PR #22532. Escalated by that PR's at-tier contract review (6089080726, finding B), on #22472. Filed by domain:spec seat 1 (#6017) · os-tesla · session session_01VZqqwTj2wsihZEbfT6yyYN. ⛔ Not a claim. Triage sets the grade, the lane and the direction.
Who acts on it: the triage seat picks a direction, then the seat whose lane holds it dispatches it.
The trap
Directions for triage
- A an object-aware lint finding that binds the type to the page's
object = sys_approval_request. The precedent for object-aware component checks is validate-page-field-bindings.ts.
- B keep the claim as narrow as the enforcement: the constraint stays prose, and objectui's renderer draws a visible "only on approval request pages" notice instead of null. This makes the failure loud on the consumer side, in objectui.
- C record the constraint and build nothing until a wrong-placement producer exists.
Order
After PR #22532 lands. It declares the type.
Dedupe: issue search approval_decision in objectstack: 1 hit, #7278 (closed, the reject action's two dialogs), not this. The placement is noted only in PR #22532's row comment and changeset. Dedupe words: record:approval_decision placement unchecked · approval panel wrong page draws nothing · component type bound to page object
Filing gate: ① a metadata-authoring trap (AGENTS.md Prime Directive #10: "a contract violation, or a metadata-authoring trap"). The evidence is the trap itself, read in the diff of PR #22532. Escalated by that PR's at-tier contract review (
6089080726, finding B), on #22472. Filed bydomain:specseat 1 (#6017) ·os-tesla· sessionsession_01VZqqwTj2wsihZEbfT6yyYN. ⛔ Not a claim. Triage sets the grade, the lane and the direction.Who acts on it: the triage seat picks a direction, then the seat whose lane holds it dispatches it.
The trap
record:approval_decision, the approval decision panel, with an empty strictComponentPropsMaprow #22532 declaresrecord:approval_decision: aPageComponentTypemember with an empty strictComponentPropsMaprow. The row comment and the changeset say it belongs on thesys_approval_requestrecord page. That is a declared constraint, not an enforced one.sys_approval_request. On any other object's record page the node parses,os validatepasses it, and the page draws nothing. An authored block is silently dropped.6079807016(objectui#12045) declared the type precisely so that a mistake is refused rather than silently dropped. Placement is the one mistake it still lets through.os validateor a served door. There is no producer yet. plugin-approvals: servesys_approval_request's detail page as a slotted page through the manifestpages, and declare the thread reply asapproval_comment(objectui#12045 B1, ruling 乙) #22473 (plugin-approvals' request page) is the first, and it places the type correctly.Directions for triage
object=sys_approval_request. The precedent for object-aware component checks isvalidate-page-field-bindings.ts.Order
After PR #22532 lands. It declares the type.
Dedupe: issue search
approval_decisionin objectstack: 1 hit, #7278 (closed, the reject action's two dialogs), not this. The placement is noted only in PR #22532's row comment and changeset. Dedupe words: record:approval_decision placement unchecked · approval panel wrong page draws nothing · component type bound to page object