Skip to content

fix(spec): a translation item is named in snake_case, the locale tag goes in locale - #26769

Merged
objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/project-thread-pxk0us
Oct 27, 2026
Merged

objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/project-thread-pxk0us

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Yibo Wang · project thread

Fixes #26128

Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:翻译条目 name 的说明改为 snake_case(如 zh_cn),语言标签写在 locale;不再建议用 zh-CN 作条目名。保存门与读侧回退行为不变。
  • 为什么改:旧说明叫作者用 zh-CN 命名,而保存门的条目名语法拒收它(400 INVALID_REQUEST),照规范写的作者第一次保存必失败。
  • 风险与回滚:仅文案与一条门禁测试,无接受集变化;回滚即 revert 本 PR。
  • 先看:packages/spec/src/system/translation.zod.ts(name 的 describe 与上方注释)、packages/metadata-protocol/src/protocol.item-name-grammar.test.ts(新增 spec/metadata-protocol: a translation item named after its locale (zh-CN), as TranslationItemSchema.name says is conventional, is refused 400 INVALID_REQUEST by the item-name grammar at the save door #26128 段)、packages/core/src/fallbacks/authored-translation-sync.ts(跳过警告文案)。
  • 两分钟验证:pnpm --filter @objectstack/metadata-protocol exec vitest run src/protocol.item-name-grammar.test.ts,预期 27/27 通过,其中 zh-CN 被拒、zh_cn + locale: 'zh-CN' 保存成功。
  • 需要你做的:无,席位落地。

What changes

  • TranslationItemSchema.name describe: Item name — snake_case like every metadata item (e.g. \zh_cn`); the BCP-47 tag goes in `locale`. The comment above it now says the same and that the tag-shaped row.namefallback covers only rows stored beforelocale` became required.
  • content/docs/references/system/translation.mdx: the generated name row, regenerated with gen:schema + gen:docs.
  • authored-translation-sync.ts: the no-locale skip warning now says set the top-level 'locale' to its BCP-47 tag, e.g. 'zh-CN' instead of suggesting the item be named after the tag. Behaviour unchanged (the existing test matches no resolvable locale).
  • Door pin (protocol.item-name-grammar.test.ts): saveMetaItem of type translation named zh-CN is refused with code: INVALID_REQUEST, status: 400 and the grammar message, persisting nothing; zh_cn with locale: 'zh-CN' saves and keeps the tag in locale.
  • refuseUngrammaticalMetaItemName and the read-side fallback are untouched.
  • Docs, skills and examples grep (conventionally the locale, name the item after, a name: 'zh-CN' translation item): no hits outside the files above.
  • Changeset: '@objectstack/spec': patch, '@objectstack/core': patch (the sync warn text).
  • packages/objectql/src/protocol-publish-canonical-fold.test.ts (about line 269): the test-helper comment now says the name is snake_case (zh_cn) with the tag in locale; its fixture already used zh_cn. Added in patch round r1 (claim surface amended 15:13Z).

Tests

Tests ran on 33a1af012; head f308adfc4 is that commit plus a merge of origin/main (a485b5a3e) that touches none of these files.

  • metadata-protocol protocol.item-name-grammar.test.ts: 27/27 (25 existing + 2 new).
  • spec src/system/translation.test.ts: 182/182. core src/fallbacks: 67/67. service-i18n authored-translations.test.ts: 16/16.
  • metadata-protocol full suite: 269 files passed, 3 skipped; 21582 tests passed, 19 skipped.
  • r1, on ad3a211fe: objectql protocol-publish-canonical-fold.test.ts 10/10.

Acceptance notes

  • packages/spec/src/system/translation.test.ts (about line 757) parses a schema-level item named zh-CN; the schema does not constrain name, so this stays valid at the schema and is not a door fixture. Left as is.

Verification

  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack: 106 derived families, run serially on 33a1af012. 102 exited 0 on the first pass; 4 exited 3 (prerequisite: built output) and exited 0 after a full pnpm turbo run build (check:skill-examples, check:dual-build-cjs-loads, check:i18n-walk-parity, check:lean-entry-closure).
  • --ran reconciliation: 106 derived famil(ies) accounted for — 106 run, 0 NOT-MEASURED. The derived list on head f308adfc4 is byte-identical to the one on 33a1af012.
  • After the os-regen-merge.sh merge, on f308adfc4: spec build + gen:schema + gen:docs left the tree clean; check:generated, check:docs, check:authorable-surface exit 0.
  • r1, head ad3a211fe (comment + changeset only): the derived list grew to 107 (check-engine-split-ratio.mjs --self-test added). The 23 families reading the changeset, objectql tests or repo-wide text were re-run on ad3a211fe, all exit 0; --ran over the merged record: 107 derived famil(ies) accounted for — 107 run, 0 NOT-MEASURED.
  • Full dogfood: not owed (no ! in the title, no narrowing arm).

Generated by Claude Code

…goes in `locale`

`TranslationItemSchema.name` called the locale tag (`zh-CN`) the conventional
item name, which the save door's item-name grammar refuses. The describe, its
comment, the generated reference row and the sync's skip warning now say
snake_case (`zh_cn`) with the BCP-47 tag in `locale`. The door and the
read-side fallback keep their behaviour; a door pin covers both names.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WGufzhKYT8L13Bgj8icT3i
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

2 anchor(s) derived from 2 changed package(s); no hand-written page names any of them, so this run has nothing to list — not a clean bill of health. This check sees only pages that NAME a derived anchor: one that documents this change in prose, or enumerates it in an authoring dialect, names none and stays invisible to it on every run.

What this run could not see
  • the SDK route bridge reached 55 of 207 client-bound route-ledger rows — the other 152 have no registrar path: tail to select them, so pages documenting THEIR client methods cannot appear above, on this or any run. Of those 152: 0 are remediable by widening that discovery convention (an in-repo file declares the path; the convention did not scan it); 55 are structural — on a ledger where NOT ONE row is declared in-repo, so no discovery change reaches them at any price; 97 are undecided (no in-repo declaration, on a ledger that has other in-repo registrars — absence and an unreadable spelling are not distinguishable here). The rows themselves: node scripts/docs-audit/affected-docs.mjs --bridge-coverage
  • a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. Measured on fix(driver-sql): emit varchar(maxLength) for a text field a declared index keys on #11430: content/docs/protocol/objectql/types.mdx documents the text-family column mapping by the ObjectQL type names it maps FROM (text / textarea / html) while the diff changed createColumn; it went unlisted, and it was the page that diff falsified, in four places. No shared token exists to detect this on, so a rule your change carries has to be re-read by hand in the pages that restate it.
  • a key NAME is not a key, so the hand re-read the line above prescribes can land on the wrong schema. The same spelling is authorable on one governed type and a [REMOVED] tombstone on another for each of active, aria, joins, objects, template, tools and version (censused on [finding] tools is a key on BOTH AgentSchema (tombstoned, dead) and SkillSchema (live, cloud-attested), so a name-based search attributes skill examples to the agent key — it produced a false stop-the-line alarm on PR #19059 #19093 over the liveness ledger's governed types, top-level keys); nothing in a search result distinguishes the two, so a grep hit on a LIVE example reads as evidence about the DEAD key. Measured on fix(spec): the agent.tools liveness row says dead — it claimed live on a key the schema tombstoned #19059: content/docs/ai/agents.mdx was reported as contradicting the agent.tools tombstone over its tools: example at :161, which is inside the defineSkill({ block opened at :155 — the page was already correct. Settle ownership by PARSING the value against both schemas, never by the name: that literal PASSES SkillSchema, and as an AgentSchema it FAILS at tools with the tombstone prescription. ⛔ These names are not the whole class — a key retired through a .strict() guidance map leaves no tombstone in the walked shape and none of them here (tool.category, live as AIToolDefinition.category).

Coarse fallback — 153 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 665059b6056c4caf54e631d678203d8c9dc4aba3 → packageMentionDocs.

Which tree this was computed on

This run read content/docs from 88027cdb33b26adbd5cf99f8ff7b5cd86ef625bd — the merge of head e17cd5817ec1bb1e7ef8fff0004a74478e1fdb34 into base 665059b6056c4caf54e631d678203d8c9dc4aba3, which is what actions/checkout gives a pull_request run. Not the PR head.

A worktree cut from an older main holds a different content/docs, so re-deriving there can legitimately return a different list — that is a different tree, not a wrong row. To answer on the same tree:

# while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 88027cdb33b26adbd5cf99f8ff7b5cd86ef625bd && git checkout 88027cdb33b26adbd5cf99f8ff7b5cd86ef625bd
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 665059b6056c4caf54e631d678203d8c9dc4aba3 e17cd5817ec1bb1e7ef8fff0004a74478e1fdb34 && git checkout -B drift-repro 665059b6056c4caf54e631d678203d8c9dc4aba3 && git merge --no-ff e17cd5817ec1bb1e7ef8fff0004a74478e1fdb34

node scripts/docs-audit/affected-docs.mjs --json 665059b6056c4caf54e631d678203d8c9dc4aba3

⚠️ That checkout carried uncommitted changes, so the commit above does not fully identify what was read.

…llows the snake_case naming

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WGufzhKYT8L13Bgj8icT3i
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: ad3a211fef67586f43e53892ce70a7a2d06dc48e
Local-runs: none
Scope: packages/spec/src/system/translation.zod.ts, packages/core/src/fallbacks/authored-translation-sync.ts, packages/metadata-protocol/src/protocol.item-name-grammar.test.ts, packages/objectql/src/protocol-publish-canonical-fold.test.ts, content/docs/references/system/translation.mdx, .changeset/26128-translation-item-snake-case-name.md + packages/metadata-protocol/src/protocol-save-door-refusals.ts (refuseUngrammaticalMetaItemName), packages/spec/src/shared/identifiers.zod.ts (METADATA_ITEM_NAME_PATTERN), packages/spec/src/kernel/metadata-create-seeds.ts (translation seed), packages/spec/src/system/translation.test.ts (about line 757), packages/spec/src/conversions/stored.test.ts, packages/metadata-protocol/src/migrations/overlay-index.test.ts, packages/runtime/src/meta-write-org-scope.test.ts, packages/metadata-protocol/src/package-unmanaged-install.ts, AGENTS.md (machine-name rule, read only)

Inputs read: card #26128 body and all four comments (triage 6417820397, premise reading 6430828264, claim 6444357938 as amended 15:13Z, os-dev-report 6445682457); PR #26769 body, file list (6 files, +50/−10), its one issue comment (docs-drift bot, computed on the earlier head f308adfc4), zero review comments, zero reviews; the net diff against the merge-base a485b5a3e (API diff and local three-dot diff agree, 51 changed lines); the head tree fetched into a ref of my own; check-runs on the head read at 2026-10-27T15:29:58Z and again at 15:34:02Z.

① Derived judgments

No accept set or behaviour moved. The diff outside the changeset is: the TranslationItemSchema.name describe string and the comment above it (translation.zod.ts 2220–2231); the generated reference row (translation.mdx 740, byte-equal to the new describe); one string literal inside an existing logger.warn call in readAuthoredTranslationLayer (authored-translation-sync.ts 195); 24 added test lines in protocol.item-name-grammar.test.ts; a 2-line comment edit in protocol-publish-canonical-fold.test.ts (267–269; the fixture at 271 already used zh_cn). No condition, branch, schema shape, regex or export changed. refuseUngrammaticalMetaItemName (protocol-save-door-refusals.ts 181–195) and LOCALE_LIKE plus the row.name fallback (authored-translation-sync.ts 97, 189–192) are byte-identical to main. The old describe appears in no other generated artifact at the head (manifest shards, api-surface, llms.txt all clean), so check:docs has one row to confirm and nothing else is stale.

The new text is true. The door grammar is ^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$ (identifiers.zod.ts 154–168): zh-CN fails on the uppercase and the hyphen, zh_cn passes. locale is required on the item (locale: LocaleSchema, translation.zod.ts 2212), so the comment's claim that the name fallback covers only rows stored before locale became required matches the sync module's own header (authored-translation-sync.ts 26–28). Studio's seed names the item new_translation (metadata-create-seeds.ts 164–173); the package-install path mints crm_zh_cn (package-unmanaged-install.ts 47, 515); the fixtures in protocol.invalid-metadata-422-face-inventory.test.ts 343, protocol.publish-stored-type-canonical.test.ts 506 and protocol-publish-canonical-fold.test.ts 271 all use zh_cn with the tag in locale; AGENTS.md Prime Directive 3 says machine names are snake_case. check:doc-authoring is respected: the warn text carries no tracker number.

Repo-wide grep for a remaining zh-CN-as-item-name sentence or example (head tree: code, content/docs, docs, skills, .claude, examples, ui/). No author-facing surface still names a translation item zh-CN or calls the locale code the conventional name; the dev's "zero hits outside the edited files" holds for guidance text. The hits that do exist are fixtures, each listed so the next reader need not re-grep:

  • packages/spec/src/system/translation.test.ts:757 — schema-level parse({ name: 'zh-CN', … }); the schema does not constrain name, so this is valid and is not a door fixture. The dev named it in Acceptance notes. Left as is: correct.
  • packages/spec/src/conversions/stored.test.ts:163,172,179 — stored-row rehydration fixtures (applyConversionsToStoredItem), the pre-grammar residue shape the fallback exists for. Correct as fixtures.
  • packages/metadata-protocol/src/migrations/overlay-index.test.ts:739 — a direct sys_metadata insert, never through the door. Correct.
  • packages/runtime/src/meta-write-org-scope.test.ts:727 — PUT /translations/zh-CN with saveMetaItem replaced by a vi.fn() recorder; pins the raw-segment pass-through, the door is never reached. Correct, though a future reader could mistake it for an accepted save.
  • docs/qa/platform-checklist/areas/i18n.json:427 — a dated revision note recording that the conventional zh-CN name was refused and that the describe was the stale text; historical, past tense, the live steps already name a snake_case item.
  • content/docs/deployment/install-modes.mdx:138 names a translation item namespace_locale lower-cased — already consistent with the new describe.

Door pin. protocol.item-name-grammar.test.ts 304–326: the refusal case asserts code: 'INVALID_REQUEST', status: 400 and message matching GRAMMAR_MESSAGE (/is not a legal metadata item name/, line 159, the text refuseUngrammaticalMetaItemName throws) and metaRows(rows) empty; the acceptance case saves zh_cn with locale: 'zh-CN', asserts success, one stored row named zh_cn, and locale read back as zh-CN from the stored metadata. Both halves use the suite's real saveMetaItem harness (makeProtocol). File now holds 13 it( plus one it.each over the junk table, consistent with the reported 27 cases.

Declarations. Clause-②: no and Metadata-protocol: none are line-initial in both the PR body and the changeset body, and match the diff: nothing an author can write was added, removed or re-meant. Sibling hunks: translation.zod.ts did not move between the merge-base a485b5a3e and main 0f3d068cf, and main still carries the old describe, so the fix is not already landed and no region collides.

② Semver level

'@objectstack/spec': patch — a .describe() string and a comment; no export, shape or authorable key moves. '@objectstack/core': patch — one warn string in shipped source. @objectstack/metadata-protocol and @objectstack/objectql change test files only and ship nothing, so no entry is owed. Metadata-protocol: none requires every introduced entry at patch; both are. Check Changeset on this head concluded success. Level correct.

③ Boundary flags

  • Branch name claude/project-thread-pxk0us, not claude/issue-26128-slug: declared in the claim 6444357938 as the platform-assigned thread branch. Accepted as declared.
  • Tests ran on 33a1af012, not the head. f308adfc4 added only a merge of main that touches none of the six files (confirmed: three-dot diff vs the earlier merge-base equals the API diff); ad3a211fe added a comment edit and the changeset's core entry, and the dev re-ran the objectql file there (10/10). Accepted; CI on the head is the authority for the rest.
  • Dev report flagged the changeset listed spec only while the diff moved core warn text. Resolved on the head: the changeset carries both entries (claim amended 15:13Z).
  • Out-of-scope finding (objectql test-helper comment) was folded into r1 under the amended claim, not left in the acceptance notes. Within the amended surface. Accepted.
  • Gates at reading (15:34:02Z): 18 success including Check Changeset, Governed Surface Queue Guard, Lint · ESLint, Lint · docs & code guards, Check PR Size, Spec property liveness, Dogfood Regression Gate; 17 in_progress (Test Core 1–8/8, Build Core, Build Docs, Build UI Deps, four Type Check · lanes, Lint · scoped · slot lookup & corpus, Lint · repo & tooling gates); 7 skipped (opt-in harnesses, duplicate triggers); one cancelled PR-body-guards run superseded by a later success run on the same head. No red. An in_progress gate is a reading, not a pass: this record judges the contract; the queue still owes the required set green.
  • Docs-drift bot ran on the f308adfc4 merge, advisory, nothing to list. Noted.
  • No governed surface in the file list; PR size 60 lines; head repo is the base repo.

Implemented-by: claude/project-thread-pxk0us
Reviewed-by: session_01WGufzgbJhFoXYsLSe5WSPP

VERDICT: PASS

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

维护者速读 (席位终稿)

  • 改了什么:翻译条目 name 的说明改为 snake_case(如 zh_cn),语言标签写在 locale,不再建议用 zh-CN 作条目名。保存门和读侧回退的行为都不变。
  • 为什么改:旧说明让作者用 zh-CN 命名,可保存门的条目名语法会拒收它(400 INVALID_REQUEST),照着规范写的作者第一次保存必然失败。
  • 风险与回滚:只改文案、一条警告文字和一条门禁测试,接受集不变。回滚 = revert 本 PR。
  • 先看:packages/spec/src/system/translation.zod.ts(name 的 describe 和上方注释)、packages/metadata-protocol/src/protocol.item-name-grammar.test.ts(新增的 spec/metadata-protocol: a translation item named after its locale (zh-CN), as TranslationItemSchema.name says is conventional, is refused 400 INVALID_REQUEST by the item-name grammar at the save door #26128 用例)。
  • 两分钟验证:pnpm --filter @objectstack/metadata-protocol exec vitest run src/protocol.item-name-grammar.test.ts,预期 27/27 通过,其中 zh-CN 被拒、zh_cn 加 locale: 'zh-CN' 保存成功。
  • 需要你做的:无,席位落地。

席位意见:接受。契约复核 PASS(6446285830)。

席位核对 · ACCEPT · domain:spec seat 3 · os-support-ai · session session_01WGufzgbJhFoXYsLSe5WSPP · 2026-10-27T16:54Z

Head: e17cd5817ec1bb1e7ef8fff0004a74478e1fdb34 · card #26128 · claim 6444357938 (amended at 15:13Z)

  1. 形态: a draft PR to main with Fixes #26128 as its only closing keyword. 6 paths, +50 / −10. check-governed-merges --pr 26769: NOT governed, 60 lines ≤ 3000, so the ordinary queue landing applies. The file list is inside the amended claim surface: the describe and comment in translation.zod.ts, the generated reference row, authored-translation-sync.ts's warn string, the door pin, the objectql test comment, and the changeset.
  2. 前提实测: the premise was corrected in 6430828264, and the review re-confirmed it (record ①2). The door's grammar refuses zh-CN, locale is required, and Studio's seed and the fixtures use snake_case.
  3. 门禁 check-runs (on this head): 47 runs, 40 success, 7 skipped, none red or pending. The contract-tier review is PASS on ad3a211f (record 6446285830, schema face). The head moved after the review by one main merge (96d3bf93, after sibling PR feat(spec): a joined report's block headings and a master-detail field's inline grid heading are translatable #26757 landed) and one branch-own commit, e17cd581. That commit only regenerates content/docs/references/system/translation.mdx. The PR's net diff on that file is the single name row, so feat(spec): a joined report's block headings and a master-detail field's inline grid heading are translatable #26757's new rows are kept. A merge plus a generated row moves nothing the record judged, so no second review is owed.
  4. 接受的偏差: none. Clause-②: no and Metadata-protocol: none hold, because no accept set moves. The patch round r1 added '@objectstack/core': patch for the warn text, since every touched published package needs its entry, and fixed the stale objectql test comment.
  5. 范围外去向: none owed. The review's repo-wide grep found no author-facing surface that still names a translation item zh-CN. The remaining hits are fixtures and one historical QA note, listed in the record.
  6. 落地条款: the prose faces were checked sentence by sentence against the diff: the changeset (spec patch, core patch) and the generated row, which is byte-equal to the new describe. Ready and auto-merge go through the relay in this act, and the seat follows the PR to MERGED.

Generated by Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

⛔ merge queue 构建失败 — 先分诊,再决定要不要重排

队列构建 40548584717 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集),
所以失败的测试可能在本 PR 没碰过的包里 —— 那不是重排能修的。每次盲目重排都会让排在后面的所有 PR 重建一轮。

分类:failure —— 按下面的日志分诊。

失败的 job(日志抽取,best effort):

  • Test Core (6/8) — 失败步骤: Run this shard's tests

    @objectstack/plugin-security:test:  FAIL  src/delegated-organization-membership.test.ts > [#25107 · ADR-0090 D10] parity: each probe agrees with the engine operation it describes > `isolated`: refused
      ↳ 失败原因: @objectstack/plugin-security:test: Error: Test timed out in 5000ms.
    

↳ 失败原因 是判读的关键:超时(Test timed out in … / Hook timed out in …)多半是负载/时序,不是本 PR 的回归;
断言(AssertionError: …)才指向真实的行为改变。两者的 FAIL 行长得一模一样,只有这一行能区分。

⚠️ 断言这一侧有一类例外,判据是断言在测什么,不是它是不是 AssertionError。 断言的对象是产品行为(一个值、一个形状、一次拒收)⇒ 照上面读:真实的行为改变,去查,⛔ 不要重排掉;
断言的对象是这次实验自身的有效性前提(跑完的耗时、负载下的先后、任何只在时间预算内才成立的条件)⇒ 它跟超时是同一类,同样对负载敏感,重排一次是合法的判别手段。
识别是机械的:断言的消息或它比较的值本身点名了一段时长、一个时间戳、一个耗时计数。实测过的一对 —— AssertionError: SecurityPlugin.init() ran: expected false to be true 测的是产品行为(真回归);
AssertionError: this run took over a second, so second-precision stamps could have differed too: expected 1006 to be less than 1000 测的是实验前提:它守护的那条不变式当时是绿的,同一个 head 原样重排一次即成功。
穿着 AssertionError 外衣的时间测量,仍然是时间测量。(⛔ 这只改「怎么读一次红」,不改「哪些测试可以重排」——后者由别处管。)

跨 PR 相同签名(24h,按失败测试文件聚合):

历史信号:

  • 本 PR 过去 24h 无队列失败记录(首次)。
  • 过去 24h 队列共有 8 个失败构建(不含本次)。

分诊清单:

  1. 失败测试在本 PR 改动的包里 → 真回归,修 PR。
  2. 失败测试与本 PR 无关 → 看上面的「跨 PR 相同签名」;已有汇总 issue ⇒ flaky/环境问题实锤,去那张 issue 上谈,修好前重排只会再烧一轮全队列。
  3. 两者都不是 → 可能与同组 PR 语义冲突;等前面的 PR 落地或失败出队后再重排一次即可,不要连续重排。

Generated by Claude Code · merge-queue-triage workflow (#4859)

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Queue ejection · re-enqueue once · domain:spec seat 3 · session session_01WGufzgbJhFoXYsLSe5WSPP · 2026-10-27T18:25Z


Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 27, 2026
Merged via the queue into main with commit 95f818d Oct 27, 2026
48 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-pxk0us branch October 27, 2026 19:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation protocol:system size/s tests tooling

Projects

None yet

2 participants