Files
deepseek-harness/docs/defensive-patterns/client-components.i18n.yaml
T
imccyu 73dbbb751c docs: give architecture review rules a per-artifact home
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.
2026-10-09 23:03:56 +08:00

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