Move `docs/defensive-patterns.md` into `docs/defensive-patterns/`, one page per artifact plus a README router, and state each rule as its requirement, the condition a reviewer judges it by, its boundary and approver, and a correct and a wrong example. - `general.md` (the moved page): the existing bug-class rules plus timing, value representation, shared-state ownership, decentralization, performance evidence, and migrations. - `package-surface.md`, `remote-and-api.md`, `client-components.md`, `conversation-and-session.md`: the review requirements for those artifacts, linking type definitions and semantics to `docs/subsystems/` instead of restating them. - `README.md`: the habits behind the rules and the route from artifact to page. - `dsh-code-review` reads the owning pages before judging a diff; the `dsh-architecture-discipline` routing skill is retired in favour of the directory, and every inbound reference is repaired. - Chinese counterparts, pairing records, and the documentation tier table are updated together.
47 lines
1.8 KiB
YAML
47 lines
1.8 KiB
YAML
# Bilingual-pair consistency record for client-components.md (docs/i18n/README.md): per heading
|
|
# section, a hash of its English and Chinese blocks outside code blocks and generated regions.
|
|
# After editing either side, bring the other along and re-record with:
|
|
# pnpm run verify-translation-pairing --write docs/defensive-patterns/client-components.md
|
|
/client-component-rules:
|
|
en: a6e8a87976040c04
|
|
zh: 08b59ad3c14fe250
|
|
/client-component-rules/state-arrives-through-injection:
|
|
en: f8abfaf951119c64
|
|
zh: be91a98d3a53b082
|
|
/client-component-rules/props-carry-data-and-callbacks-not-react-nodes:
|
|
en: 253f05568dd7e26f
|
|
zh: fa12565ff5afb8bd
|
|
/client-component-rules/a-slot-registration-is-a-stable-function-component:
|
|
en: 36fa33b28a889aa6
|
|
zh: 93ecb1d415d47ad1
|
|
/client-component-rules/components-never-receive-a-cordis-context:
|
|
en: 8bb102b178615c03
|
|
zh: 93cb177a578a1373
|
|
/client-component-rules/context-comes-from-the-current-scope:
|
|
en: 652ec94d13ee51c9
|
|
zh: b47c39e96c53cfac
|
|
/client-component-rules/resource-consumers-go-through-useresource:
|
|
en: edb2be9bbfa1a53b
|
|
zh: 414bf824c80286ed
|
|
/client-component-rules/store-usage-is-narrow-and-explicit:
|
|
en: 9dc1bad38c435976
|
|
zh: effaa4ae9ba0e4e7
|
|
/client-component-rules/identity-and-initial-state-are-deliberate:
|
|
en: a34c30b8f7c415d4
|
|
zh: cbd0c0cf0c0db57c
|
|
/client-component-rules/uselayouteffect-is-not-a-default:
|
|
en: f53f17846a8a89b2
|
|
zh: 94d205c4d85f1de9
|
|
/client-component-rules/effects-never-push-render-derived-data-to-a-parent:
|
|
en: 580441bd6cce9ee9
|
|
zh: a5f093d8e7dec2ee
|
|
/client-component-rules/build-and-style-follow-their-owners:
|
|
en: 561df1e1709a004c
|
|
zh: 89ca6eb4533648b8
|
|
/client-component-rules/a-key-states-what-it-identifies:
|
|
en: 1d6f9bdc2b267fef
|
|
zh: cf4d579ca877c422
|
|
/client-component-rules/each-shared-layer-keeps-its-own-isolation-level:
|
|
en: 3faec81a6a7c9fdd
|
|
zh: aa512c089b5f9afc
|