Repository navigation
docs(spec): ChatSystemMessage records its shipped contract as current - #9318
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
AI review status for this pull request.
|
There was a problem hiding this comment.
This record promotion is on hold for an owner decision, and two verification rows need correcting first. An engineering owner needs to approve or reject making component:ChatSystemMessage current as written: in particular, FR2 keeps icon unrendered with variant="divider" as a current rule while OQ1 stays open, and FR3 forbids a live role on the row even outside a chat log. The owner records the decision by commenting /approve-spec <full head SHA> (the author can do this as an engineering owner) once the rows below are fixed, since changing the record's text resets approval.
- The FR1 row says the "no-divider" test fails when a rule is drawn, but that test counts
[aria-hidden]elements and Divider renders none, so a Divider drawn in the default row keeps every test passing. - The FR5 row says a missing target fails, but no credited test checks the
astryx-chat-system-messageclass; move both clauses to "Read from source, with no focused test yet" and narrow the description's "credits only tests that fail when a claim breaks".
[Automated review]
| | Documentation and surface | Consumer docs, published declarations, block metadata, explicit story ownership, exports, and `check:knowledge` | Props, `./Chat` subpath, four blocks, draft record | Missing or stale public docs, export, owner route, target map, or knowledge shape fails validation or review. | `audit:ChatSystemMessage/docs` | | ||
| | Contract | Verification | Representative states | Mutation or failure expectation | Audit section | | ||
| | -------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------- | -------------------------------------------------------- | --------------------------------------- | | ||
| | FR1 | `ChatSystemMessage.test.tsx` children, no-divider, and icon tests | default; default with icon | Missing content or icon, or a drawn rule, fails. | `audit:ChatSystemMessage/behavior` | |
There was a problem hiding this comment.
The "no-divider" test (ChatSystemMessage.test.tsx:30–34) counts [aria-hidden] elements, and Divider renders none, so drawing a <Divider /> in the default row leaves every test passing. Move "no divider rule is drawn" to the "Read from source" list, or credit a test that checks there is no separator.
| | FR2, AR2 | `ChatSystemMessage.test.tsx` divider, separator-name, divider-icon, and numeric-zero label tests | divider; divider with icon | A missing separator, wrong name, or rendered icon fails. | `audit:ChatSystemMessage/accessibility` | | ||
| | FR3, AR1 | `ChatSystemMessage.test.tsx` no-live-role tests | both variants | A live role on the root fails. | `audit:ChatSystemMessage/accessibility` | | ||
| | FR4 | `ChatSystemMessage.test.tsx` "preserves the complete root passthrough seam" for each variant | ref, data, ARIA, role, class, style, xstyle | A dropped input fails. | `audit:ChatSystemMessage/public-api` | | ||
| | FR5 | `ChatSystemMessage.test.tsx` variant test; `themingTargets.test.ts` | both variants | A missing target or reflected variant fails. | `audit:ChatSystemMessage/theming` | |
There was a problem hiding this comment.
No credited test fails when the astryx-chat-system-message class is dropped: the variant tests assert only data-variant, and themingTargets.test.ts only checks that rendered classes are documented. Drop "a missing target" from the failure expectation, or list the target under "Read from source".
There was a problem hiding this comment.
This record promotion is waiting on an engineering owner's decision, and two verification-map entries need correcting first. An engineering owner needs to approve or reject making component:ChatSystemMessage current as written, in particular FR2 and the Stable Icon row, which keep icon unrendered with variant="divider" as a current rule while OQ1 stays open. The owner records that by commenting /approve-spec <full head SHA> (the author can do this as an engineering owner) after the fixes below, since changing the record's text resets approval.
- The FR5 row credits
themingTargets.test.tsand the divider-only variant test for "A missing reflected variant fails", but both still pass when the default branch stops reflectingvariant; credit the root-passthrough tests, which assertdata-variantfor each variant, instead. - FR2's horizontal orientation has no credited test and is missing from the "Read from source" list; add it there, or credit the Chromium state matrix, which checks it.
[Automated review]
| | FR2, AR2 | `ChatSystemMessage.test.tsx` divider, separator-name, divider-icon, and numeric-zero label tests | divider; divider with icon | A missing separator, wrong name, or rendered icon fails. | `audit:ChatSystemMessage/accessibility` | | ||
| | FR3, AR1 | `ChatSystemMessage.test.tsx` no-live-role tests | both variants | A live role on the root fails. | `audit:ChatSystemMessage/accessibility` | | ||
| | FR4 | `ChatSystemMessage.test.tsx` "preserves the complete root passthrough seam" for each variant | ref, data, ARIA, role, class, style, xstyle | A dropped input fails. | `audit:ChatSystemMessage/public-api` | | ||
| | FR5 | `ChatSystemMessage.test.tsx` variant test; `themingTargets.test.ts` | both variants | A missing reflected variant fails. | `audit:ChatSystemMessage/theming` | |
There was a problem hiding this comment.
themingTargets.test.ts only checks that rendered classes and themeProps keys are documented, and the variant test asserts only the divider: with {variant} dropped from the default branch, both still pass. Credit the root-passthrough tests (they assert data-variant for each variant) here instead.
| | Contract | Verification | Representative states | Mutation or failure expectation | Audit section | | ||
| | -------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------- | -------------------------------------------------------- | --------------------------------------- | | ||
| | FR1 | `ChatSystemMessage.test.tsx` children and icon tests | default; default with icon | Missing content or icon fails. | `audit:ChatSystemMessage/behavior` | | ||
| | FR2, AR2 | `ChatSystemMessage.test.tsx` divider, separator-name, divider-icon, and numeric-zero label tests | divider; divider with icon | A missing separator, wrong name, or rendered icon fails. | `audit:ChatSystemMessage/accessibility` | |
There was a problem hiding this comment.
No credited test checks FR2's horizontal orientation (a vertical Divider passes all 23 tests). List it under "Read from source", or credit the Chromium state matrix, which expects separatorOrientation: 'horizontal'.
…nd the browser matrix for orientation
There was a problem hiding this comment.
This record promotion is ready for an engineering owner's decision: the verification-map fixes from the last round are in, and no defects remain. Approving it makes component:ChatSystemMessage current as written, including FR2 and the Stable Icon row, which keep icon unrendered with variant="divider" as a current rule while OQ1 stays open. An engineering owner records that decision by commenting /approve-spec <full head SHA> on this pull request, and the author can do so as an engineering owner; any later change to the record's text resets approval.
[Automated review]
|
/approve-spec 93a00be |
Exact decision needed
Promote
component:ChatSystemMessagefrom draft to current. No behavior, prop, default, target, or export changes.Existing authority searched
packages/core/src/Chat/ChatSystemMessage.spec.mdand the component's source, tests, and consumer docs on main.spec:AST-029owns the audit evidence inventory the verification map follows; the record's other cited owners are unchanged.Decision
component:ChatSystemMessage,authority: current, approved by cixzhang. Draft and audit wording is removed, basis cells read from current source and tests, and the verification map credits tests for what they catch, with a "Read from source, with no focused test yet" list for the rest. The draft predated main's removal of the row's live role (spec:AST-086FR4); the record now states that the root carries no live role and that a callerrolereaches it. No implementation gap. OQ1 (whaticondoes withvariant="divider") stays open.Rejected alternatives
None.
Claim scope and non-goals
Claims are scoped to what main's source and tests show.
Evidence and implementation relationship
The component's colocated tests, as listed in the verification map.
Writing rubric results
Scope
Validation
pnpm check:knowledge: alignedgit diff --check: clean