Skip to content

Commit bb1718c

Browse files
committed
chore(spec): regenerate the references, authorable surface and strictness counts for withheldMaps; add the changeset
Claude-Session: https://claude.ai/code/session_01ADHkmPi3pqv7Vkx4kymD87 Co-authored-by: Claude <noreply@anthropic.com>
1 parent c8428d6 commit bb1718c

4 files changed

Lines changed: 27 additions & 1 deletion

File tree

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
'@objectstack/spec': patch
3+
---
4+
5+
feat(spec): the package export manifest declares `withheldMaps`, the maps it withheld whole, and an unmanaged import accepts it
6+
7+
Clause-②: yes (widening)
8+
Metadata-protocol: none
9+
10+
`GET /packages/:id/export` writes each item as a served read returns it, so a connector's header and environment-variable maps are already withheld whole by the connector redactor and the exported item simply lacks them. An import elsewhere could not tell such a map from one the package never had. The export contract now has a place to say so:
11+
12+
- **`PackageExportManifestSchema` gains an optional fixed key `withheldMaps`**, a list of `{ type, name, path }`: `type` is `connector`, `name` is the connector item's name, and `path` is one of the four positions the redactor withholds whole, spelled as it reports them: `providerConfig.headers`, `providerConfig.defaultHeaders`, `providerConfig.transport.headers`, `providerConfig.transport.env`. Positions only: no header or variable name is listed, and an entry carrying any other key is refused. Absent when the export withheld nothing. The export does not write it yet; the runtime half follows.
13+
- **`UNMANAGED_INSTALL_KEY_DISPOSITIONS` classifies `withheldMaps` as `door`**, so an unmanaged import accepts an export that carries it instead of refusing the whole package for an unrecognised key. The door reads it; the new base never carries it.
14+
- **The export's `label` is classified `door` too.** The export contract has always declared it, but the table never classified it, so an unmanaged import refused any export that carried one. The base's install manifest declares no `label`, so the base is named by the request's `targetName` or the source `name`, as before.
15+
16+
The table's totality test now reads the export's fixed keys as a third schema a package body is read with, beside `ManifestSchema` and the stack definition, so a fixed key the export gains reddens a spec test on the PR that adds it.

‎content/docs/references/api/package-lifecycle.mdx‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,15 @@ A field or flow another package contributes to one of the base's objects.
318318
| **name** | `string` | ✅ | The exported package's machine name. |
319319
| **version** | `string` | ✅ | The exported package's version. |
320320
| **label** | `string` | optional | Display label, when the package declares one. |
321+
| **withheldMaps** | `{ type: 'connector'; name: string; path: Enum<'providerConfig.headers' \| 'providerConfig.defaultHeaders' \| …> }[]` | optional | Every map the export withheld WHOLE because a served read never carries it: a connector's header and environment-variable maps. The item is written with that map absent, so an import reads this list to tell an incomplete map from one the package never had, and names each one for an operator to re-enter. Positions only: no header or variable name is listed. Absent when the export withheld nothing. |
322+
323+
### Nested Shape: `PackageExportManifest.withheldMaps[number]`
324+
325+
| Property | Type | Required | Description |
326+
| :--- | :--- | :--- | :--- |
327+
| **type** | `'connector'` | ✅ | Metadata type of the item whose map was withheld. |
328+
| **name** | `string` | ✅ | Name of the item whose map was withheld. |
329+
| **path** | `Enum<'providerConfig.headers' \| 'providerConfig.defaultHeaders' \| …>` | ✅ | Dot path of the withheld map inside the item. |
321330

322331

323332
---

‎docs/audits/2026-07-unknown-key-strictness-ledger.counts/api.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@ hand-patch a number here** — fix the code or the verdict and regenerate.
1919

2020
| Dir | Sites |
2121
|---|---|
22-
| `api/` | 487 |
22+
| `api/` | 488 |

‎packages/spec/authorable-surface/api.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1304,6 +1304,7 @@
13041304
"api/PackageExportManifest:label",
13051305
"api/PackageExportManifest:name",
13061306
"api/PackageExportManifest:version",
1307+
"api/PackageExportManifest:withheldMaps",
13071308
"api/PackageInstallManifest:capabilities [RETIRED]",
13081309
"api/PackageInstallManifest:configuration [RETIRED]",
13091310
"api/PackageInstallManifest:contributes",

0 commit comments

Comments
 (0)