diff --git a/.changeset/28041-skills-connector-input-judged.md b/.changeset/28041-skills-connector-input-judged.md new file mode 100644 index 00000000000..b1552881c89 --- /dev/null +++ b/.changeset/28041-skills-connector-input-judged.md @@ -0,0 +1,13 @@ +--- +'@objectstack/skills': patch +--- + +docs(skills): the automation guide says a `connector_action` input is judged against the action's `inputSchema` before dispatch + +Clause-②: no +Metadata-protocol: none + +This text shipped in PR #28170 (#28041 / #28162), which missed its `@objectstack/skills` changeset; this entry carries it. + +- **`objectstack-automation/SKILL.md`**: once evaluated, a `connector_action`'s `connectorConfig.input` is judged against the action's `inputSchema` (`required`, `type`, `properties`, `items`) before dispatch, and a breach fails the step `VALIDATION_ERROR` (`fault`-routable) with nothing sent. `registerFlow` and `os validate` refuse a `{…}` template token at `connectorConfig.input.`. +- **`objectstack-automation/references/integration-recipes.md`**: a record value reaches the payload through a CEL envelope (`{ dialect: 'cel', source: 'record.' }`), and the recipes say that envelope is judged against the `inputSchema`. diff --git a/.changeset/28203-skills-home-amount-keys.md b/.changeset/28203-skills-home-amount-keys.md new file mode 100644 index 00000000000..2e36dd1cbd2 --- /dev/null +++ b/.changeset/28203-skills-home-amount-keys.md @@ -0,0 +1,10 @@ +--- +'@objectstack/skills': patch +--- + +docs(skills): the field-types guide teaches `homeAmount.rateDate` as a `date` or `datetime` field and lists all four `currencyConfig` keys + +Clause-②: no +Metadata-protocol: none + +- **`objectstack-data/rules/field-types.md`**: the `homeAmount` paragraph says `rateDate` names a `date` or `datetime` field (it said `date` only; the spec accepts both). The Numbers table `currency` row lists `currencyConfig` as `currencyMode`, `defaultCurrency`, `currencyField` and `homeAmount` (it named the first two only). diff --git a/.changeset/28226-skills-grant-kinds.md b/.changeset/28226-skills-grant-kinds.md new file mode 100644 index 00000000000..13dffbda2ea --- /dev/null +++ b/.changeset/28226-skills-grant-kinds.md @@ -0,0 +1,12 @@ +--- +'@objectstack/skills': patch +--- + +docs(skills): the integration recipes say the connector `auth` union declares `oauth2` and `app-credential`, held degraded until a server runs the grant, and that `signed` signs `aliyun-acs3` and `tencentcloud-tc3` requests + +Clause-②: no +Metadata-protocol: none + +This text shipped in PR #28290 (#28226), which carried a changeset for `@objectstack/lint` only and missed its `@objectstack/skills` one; this entry carries it. + +- **`objectstack-automation/references/integration-recipes.md`**: an OAuth-protected vendor declares `oauth2` (`authorization_code` / `client_credentials`) or `app-credential` (`feishu` / `dingtalk` / `wecom`), but no server runs the grant yet, so the instance is held degraded and calls no upstream. `signed` on `openapi` / `rest` (scheme `aliyun-acs3-hmac-sha256` or `tencentcloud-tc3-hmac-sha256`, with a `keyId`) signs each request; an RSA-signing vendor (Alipay, WeChat Pay) stays blocked on the request-signing card. diff --git a/docs/adr/0144-multi-currency-record-currency-dated-rates-write-time-home-projection.md b/docs/adr/0144-multi-currency-record-currency-dated-rates-write-time-home-projection.md index 453bc21267c..de0307382f6 100644 --- a/docs/adr/0144-multi-currency-record-currency-dated-rates-write-time-home-projection.md +++ b/docs/adr/0144-multi-currency-record-currency-dated-rates-write-time-home-projection.md @@ -320,6 +320,14 @@ Where a source leans one way, the lean is quoted here, not adopted. This record workload row M2-1 and #27191 is corrected to required. Workload row M2-1 drafts the names `rateDate` and `rateField`; in that draft, `rateDate` is "a `date`/`datetime` field on the same object (⛔ no default)". The design record §6 says the document date must not default to `created_at` (「⛔ 不默认 created_at」). + *Note (2026-10-31):* settled: the pointers are spelled `rateDate` (the document date) and `rateField` (the rate + used), the names workload row M2-1 drafts, landed in PR #28096 (`73b72709`). Beside them `homeAmount.field` names + the home field, and all three are required with no default + (`packages/spec/src/data/field.zod.ts#HomeAmountSchema`). `rateDate` names a `date` or `datetime` field on the + same object (`packages/spec/src/data/object.zod.ts#HOME_AMOUNT_RATE_DATE_TYPES`) and `rateField` a `number` field; + both the home and the rate field declare `readonly: true`, and the object judges what each pointer names + (`packages/spec/src/data/object.zod.ts#refuseDishonestHomeAmount`). Review: contract review + [`6526217217`](https://github.com/objectstack-ai/objectstack/pull/28096#issuecomment-6526217217) on PR #28096. 2. **Which row counts as "the document date's rate"** (#27192). The ruling says "a platform rate table by effective date". Workload row M2-2 and the measurement round read this as the row with the latest `effective_date` on or before the document date. The measurement round also rules out a "nearest-future rate". The design record §5 says diff --git a/skills/objectstack-data/rules/field-types.md b/skills/objectstack-data/rules/field-types.md index fee7a516257..9221f0c4da1 100644 --- a/skills/objectstack-data/rules/field-types.md +++ b/skills/objectstack-data/rules/field-types.md @@ -50,7 +50,7 @@ fields: { | Type | When to Use | Config | |:-----|:------------|:-------| | `number` | Generic numeric value | `min`, `max`, `precision`, `scale` | -| `currency` | Monetary amounts | `currencyConfig` (currencyMode, defaultCurrency) | +| `currency` | Monetary amounts | `currencyConfig` (currencyMode, defaultCurrency, currencyField, homeAmount) | | `percent` | Percentage values (0-100) | `min`, `max`, `precision` | ## Date & Time @@ -178,8 +178,8 @@ stored field to `'record'`? Backfill: `os migrate record-currency-codes`. `homeAmount` (`'record'` only, all three required): the engine stores the home-currency amount in `field` (a `'dynamic'` `currency`) at the `rateDate` -(`date`) rate, and that rate in `rateField` (`number`), both `readonly: true`. -Cross-currency totals sum `field`. +(`date`/`datetime`) rate, and that rate in `rateField` (`number`), both +`readonly: true`. Cross-currency totals sum `field`. ### Select with Default