Commit 030cc39
docs(agents): Protocol Domains table names marketplace/ where cloud/ used to be (#17838)
The Protocol Domains table in `AGENTS.md` still listed a `Cloud` /
`cloud/` row after the cloud control-plane contracts left the
open-source spec and the package & marketplace format moved to
`packages/spec/src/marketplace/`, published as
`@objectstack/spec/marketplace`. The row sent a reader to a directory
the tree no longer has, and omitted the one that replaced it. This
replaces that one row with a `Marketplace` / `marketplace/` row at the
same alphabetical position (after `Kernel`), described from the
directory's actual modules rather than from the card's proposal. One
line in, one line out — 1075 lines before and after. Docs-only,
`skip-changeset`.
Fixes #17370
## Acceptance notes
### The row
```
-| `Cloud` | `cloud/` | Multi-tenant, deployment, environment |
+| `Marketplace` | `marketplace/` | Package, Version, Listing, Install, Template |
```
### Premise findings, re-taken on `origin/main` `51b024a16` (the PM took
them on `d79f2499`; `main` advanced by two `docs(pm)` commits, #17828
and #17823, neither touching `AGENTS.md`)
1. **Holds.** `AGENTS.md:657` read `| `Cloud` | `cloud/` | Multi-tenant,
deployment, environment |` directly after the `Kernel` row at `:656`;
the file is 1075 lines.
2. **Holds.** `git ls-tree -d origin/main packages/spec/src/marketplace`
answers `040000 tree 3f19482…`; `packages/spec/src/cloud` answers
nothing. `packages/spec/package.json` exports `./marketplace`, and has
no `./cloud`.
3. **Holds.** `git grep -ln "Multi-tenant, deployment, environment"
origin/main` hits only `AGENTS.md`; `git grep -ln "Protocol Domains"
origin/main -- scripts .github packages/spec/scripts` hits nothing. No
gate reads this table.
4. **Holds, re-measured.** All 22 open PRs' file lists scanned at this
commit, fully paginated (PR #17076 is the standing Version Packages PR
at 383 changed files — four pages read). None touches `AGENTS.md`.
5. **FALSIFIED — the dispatch's line-width premise.** The dispatch named
"AGENTS.md's own line-width rule, Prime Directive #8" wrapping at ~84–90
bytes. There is no such rule. Prime Directive #8 is **North Star
alignment**; `AGENTS.md` carries no line-width rule at all. The real
120-byte budget is `MAX_LINE_BYTES` in
`scripts/pm/check-skill-line-ratchet.mjs`, and it **exempts a markdown
table row by shape** (`EXEMPTION_CLASSES.table`: "a wrapped `|` row is a
different table"). What actually binds a table row is that script's
**second** ratchet, `MAX_TABLE_ROW_BYTES`, pinned for `AGENTS.md` at
**768 bytes**, shrink-only, headroom 0. The new row is far under it, and
the gate's own verdict lines confirm both pins are untouched:
```
✓ check-skill-line-ratchet: AGENTS.md: widest table row is 768 bytes
(pin 768; headroom 0).
✓ check-skill-line-ratchet: AGENTS.md is 1075 lines (ceiling 1075;
headroom 0).
```
The dispatch's *operative* instruction — stay within the table's own
widest row — was honoured anyway; see the width note below.
### Work item B — other `cloud/` references in AGENTS.md
`git grep -n "cloud/" origin/main -- AGENTS.md` returns exactly one hit:
line 657, the row being replaced. Nothing else in the file to report,
and nothing else was touched.
### The description, verified against the directory
`git ls-tree -r --name-only origin/main packages/spec/src/marketplace`
lists ten files — five modules and five test files:
```
index.ts
marketplace.zod.ts marketplace.test.ts
package.zod.ts package-namespace.test.ts
package-version.zod.ts package-l10n.test.ts
package-l10n.ts template-manifest-id.test.ts
template-manifest.zod.ts
```
The card proposed 「Package identity & versions, marketplace listing /
publish / install format, template manifests」. That description is
**accurate** — it does not overstate — but it is 132 bytes as a row,
against a table whose widest row is 84, and its `&` / ` / ` punctuation
is out of register with its neighbours, which are bare comma-separated
noun lists of the domain's principal schemas (`Data` → "Object, Field,
FieldType, Query, Filter, Sort"; `Security` → "Permission, Role,
Policy"). So it was shortened into that register, one noun per real
schema family, each traceable to a module's top-level exports:
| Noun | Module | Principal exports |
|:---|:---|:---|
| `Package` | `package.zod.ts` | `PackageSchema`,
`PackageTranslationsSchema`, `CreatePackageRequestSchema` |
| `Version` | `package-version.zod.ts` | `PackageVersionSchema`,
`PackageManifestSchema`, `PublishPackageVersionRequestSchema` |
| `Listing` | `marketplace.zod.ts` | `MarketplaceListingSchema`,
`PackageSubmissionSchema`, `MarketplaceSearchRequestSchema` |
| `Install` | `marketplace.zod.ts` | `MarketplaceInstallRequestSchema`,
`MarketplaceInstallResponseSchema` |
| `Template` | `template-manifest.zod.ts` | `TemplateManifestSchema` —
the on-disk `objectstack.manifest.json` descriptor |
`package-l10n.ts` is the listing-localisation resolver over
`PackageTranslations` and folds under `Package`; the neighbouring rows
do not enumerate helper resolvers either (`Shared` → "Error maps,
normalization utilities").
### Byte width of the new row versus the table's widest
| Row | Bytes |
|:---|---:|
| New `Marketplace` row | **81** |
| Table's widest row — `UI` (`:649`) | 84 |
| Old `Cloud` row (replaced) | 62 |
| `MAX_TABLE_ROW_BYTES` pin for AGENTS.md (the gate) | 768 |
The new row is 3 bytes under the table's own widest and 687 under the
enforced pin.
### Gates
Derived in this worktree with `node scripts/pm/dispatch-gates.mjs
--commands --repo objectstack-ai/objectstack` (no paths — the tool takes
its own change set from the merge base). 14 families derived, **14 run,
all exit 0**:
```
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
pnpm check:agent-test-spelling :: exit 0
pnpm check:docs-audit-scope :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:pm-governed-merges :: exit 0
pnpm check:pm-governed-prose :: exit 0
pnpm check:pm-skill-id-lint :: exit 0
pnpm check:pm-skill-ratchet :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:required-contexts :: exit 0
pnpm check:watch-hint-literal :: exit 0
```
Reconciled: `node scripts/pm/dispatch-gates.mjs --repo
objectstack-ai/objectstack --ran RANFILE` (exit codes recorded per
family) →
```
✓ dispatch-gates --ran: 14 derived famil(ies) accounted for — 14 run, 0 NOT-MEASURED
(a DERIVED zero — all 14 recorded an exit code and none of them is 3).
```
All gate readings above were taken at `f68b09653`, the final commit on
this branch.
No build or test family is owed: the diff touches no package, so the
closure build is empty and no package's `pnpm test` / `pnpm typecheck`
is in scope. Control-byte self-scan beyond `check:nul-bytes`: `grep -naP
'[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]' AGENTS.md` exits 1 with zero output.
### Changeset
`skip-changeset`. Measured, not assumed: of the 76 tracked package
manifests, zero published package lists anything matching `AGENTS` in
its `files[]`, against a positive control of 70 published packages that
do list `README`. `AGENTS.md` is a repo-root instruction file and ships
in no tarball, so this PR publishes nothing.
### Governed surface
`AGENTS.md` is a governed surface (Prime Directive #14). This PR stays a
**draft**; it is never flipped ready, never queued, and auto-merge is
never armed by this seat. The PM places the four-piece and the
maintainer merges.
## 维护者速读(草稿)
**改了什么** — `AGENTS.md` 的 Protocol Domains 表里那一行 `Cloud` / `cloud/` 换成了
`Marketplace` / `marketplace/`,位置不变(仍在 `Kernel`
之后,按字母序),描述按目录里实际有的五个模块重写。整个 PR 就这一行,进一行出一行,文件 1075 行前后不变。
**为什么改** — #16325 把云控制面的协议移出开源 spec(option B「cut by
owner」,维护者「同意」),包与市场格式搬到了
`packages/spec/src/marketplace/`。那一行从此指着一个不存在的目录,并且漏掉了顶替它的那个。没有任何门禁读这张表,所以它只会一直烂着,不会变红——这正是要人来修的原因。
**风险与代价(含回滚)** — 风险接近于零:纯文档一行,不触碰任何包,不发布任何东西,14 个派生门禁全绿。回滚就是把这一行改回去,一次
revert 即可,没有任何下游依赖。唯一需要留意的是这是受管面,必须由维护者手工合并。
**席位意见** — (留空,待席位定稿)
**你要做的** — 确认 `Marketplace` 行的描述用词是否合你的意:目前是 `Package, Version, Listing,
Install, Template`,比卡片原提案短,理由是要和表里其他行同一种写法(裸名词列表)、同一个宽度量级(81 字节,表内最宽
84)。如果你更想保留卡片原来那句更长的描述,告诉我,我改。确认后由你手工合并。
---
_Generated by [Claude
Code](https://claude.ai/code/session_01MCLBsUgfykL74aU716rzVK)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent 7c2c5ae commit 030cc39
1 file changed
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
654 | 654 | | |
655 | 655 | | |
656 | 656 | | |
657 | | - | |
| 657 | + | |
658 | 658 | | |
659 | 659 | | |
660 | 660 | | |
| |||
0 commit comments