Files
imccyu 32aba5ea37 docs: address review comments on the rules directory
- package-surface: split the two plugin forms (a function plugin named-exports
  the Loader four, a service plugin default-exports its class), keep Host
  Service Definition exports and the Client `/client` export discipline, replace
  the wrong example that quoted live production code, state that the static
  client libraries and `packages/util/*` are closed to new members, and drop
  census numbers that rot on the next package.
- client-components: use the real Slot API — the inject face with the reserved
  `hooks` compartment, the parent's derived `renderSlot`, `registerFactory`
  scope declarations with local components at `renderFactorySlot` — drop the
  string seat, pass the injected `useResource` explicitly with a protocol key,
  and describe persistence as the spec's framework-run `persist` key.
- conversation-and-session: rewrite the reasoning example on the real
  `conversation.chat.reasoning.body` seat and the published `reasoning.content`
  Factory, and drop status annotations and future-tense spec-speak.
- remote-and-api: scope the JSON requirement to the wire payload so
  `@Remote({ mode: 'stream' })`, lookup arguments, and a trailing `AbortSignal`
  stay valid; drop a leaked Chinese parenthetical from the English page.
- general: measure through `benchmarks/` (`test:bench`, `check:ci:bench`,
  `test:bench:memory`) instead of an invented command, state the baseline
  without presuming a hook, and drop a leaked exception line.
- api-gateway: link the Remote and API rules instead of restating them.
- development.zh and AGENTS: drop an orphan anchor and widen the standing
  order's trigger to the directory's scope.

The earlier "retired routing skill" claim was wrong and is dropped: that skill
was never committed, so the diff deletes nothing under `.agents/skills/`.
2026-10-09 23:03:57 +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: 112232a703ce472d
zh: cf42bda22d8e4da4
/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: 784d3a4bba02f8a4
zh: 0ccfcc1a504b135c
/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: 6650c772df96f935
zh: 57fc0a564caf62a8
/client-component-rules/store-usage-is-narrow-and-explicit:
en: 697b2e81a862e3bf
zh: 13cf31bef332a601
/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