Skip to content

docs(spec): the lookup picker reads its seven keys camelCase-only (docblock + six liveness notes) - #23894

Merged
objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/issue-23012-lookup-snake-tolerance-text
Oct 16, 2026
Merged

objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/issue-23012-lookup-snake-tolerance-text

Conversation

@objectstack-fleet

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

Copy link
Copy Markdown
Contributor

Fixes #23012
Clause-②: no

What changed

Prose only. No schema, .describe(), key or accepted value changes.

  • packages/spec/src/data/field.zod.ts: the docblock above the lookup picker keys was headed "SNAKE_CASE TOLERANCE". It said objectui reads lookupColumns, lookupPageSize and allowCreate as snake ?? camel and called them "the three aliases that survive". It now says the picker reads all seven keys camelCase-only. It keeps the history (objectui#7155, objectui#7357) and adds objectui#12157 as the round that retired the last three. It says a stored snake spelling is folded onto the declared key when the console ingests it (normalizeSchemaReferenceKeys). It still ends by pointing to the lookupColumns ledger row.
  • packages/spec/liveness/field.json: the six lookup picker notes (lookupColumns, lookupPageSize, allowCreate, descriptionField, lookupFilters, dependsOn) drop their "(reads X || x)" tails. Each carries the reading at objectui @daeb77fc84 and verifiedAt: 2026-10-16. Where a reader outside the picker keeps a snake leg behind the declared key, the note names it as a cited read point: resolveActionParams.ts#resolveActionParam for description_field / lookup_filters, and ObjectFieldInspector.tsx#readLookupFilters / #readDependsOn for lookup_filters / depends_on.
  • .changeset/23012-lookup-snake-tolerance-text.md: a patch for @objectstack/spec. Its files[] ships both src/**/*.zod.ts and liveness, so both edits publish.

The reading, at objectui daeb77fc84dd824e74c95b87cdede85afdb248e7 (objectstack's .objectui-sha)

  • packages/fields/src/widgets/LookupField.tsx reads each of the seven keys camelCase-only, in declaredDisplayField, descriptionField, explicitAllowCreate, lookupColumns, lookupPageSize, lookupFilters and dependsOn. displayField keeps reference_field behind it. That is objectui's own leg, not a spec key. No snake read of any of the seven is left in that file.

  • The fold holds as the card suggested. packages/core/src/utils/reference-keys.ts#normalizeSchemaReferenceKeys stamps an undeclared key onto the FieldSchema key that shares its alias probe (lowercased, separators removed). It never overwrites a declared value that is already there. packages/app-shell/src/providers/MetadataProvider.tsx runs it over every stored object item.

  • Hypothesis 1 is only partly true. Two readers outside the picker still rank a snake leg behind the declared key at the pin:

    • packages/fields/src/resolveActionParams.ts, where a lookup action param is built: descriptionField ?? description_field and lookupFilters ?? lookup_filters.
    • packages/app-shell/src/views/metadata-admin/inspectors/ObjectFieldInspector.tsx (readLookupFilters, readDependsOn): lookupFilters ?? lookup_filters and dependsOn ?? depends_on, as the designer's read of a stored document.

    So the docblock does not claim "no reader anywhere reads a snake spelling". It is scoped to the picker readers it already named (LookupField / RecordPickerDialog), where the claim holds. The surviving legs are recorded, dated, in the lookupColumns ledger row and in the rows of the keys they read. None is a spelling this schema declares.

Acceptance notes

  • The descriptionField, lookupFilters and dependsOn notes were first left out of scope. They joined this PR in the seat's patch round (card comment 6215181639) and were rewritten the same way as the other three.

Gates (local, at 7aabf18a; the same counts as at 250724e)

  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 79 commands for the 3 paths. 75 exited 0. 4 exited 3 (PREREQUISITE NOT MET, not measured): check-plugin-teardown-shape.mjs --self-test (shallow clone), @objectstack/lint check:doc-formula-expressions (@objectstack/formula not built), check:dual-build-cjs-loads and check:lean-entry-closure (workspace not built). --ran with exit codes: "79 derived famil(ies) accounted for — 75 run, 4 NOT-MEASURED".
  • check:liveness passed: "1030 live · 1 experimental · 1 live-elsewhere · 112 dead · 12 planned = 1156 classified". check:docs passed: "227 generated files in sync". check:api-surface reports the surface unchanged. check:authorable-surface, check-spec-docblock-symbol-anchors and check:nul-bytes passed. No generated file changed.
  • vitest run scripts/liveness src/data/field in @objectstack/spec: 27 files, 886 tests passed, at both heads. pnpm --filter @objectstack/spec typecheck exited 0 at 250724e.

Generated by Claude Code

…e-alias claims (docblock + three liveness notes)

Claude-Session: https://claude.ai/code/session_011kWYXHPKzsrE8KEgBk1bRD
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec, touching 1 documentable anchor(s). ⚠️ 1 changed file(s) yielded no anchor (packages/spec/liveness/field.json), so the pages documenting them are NOT COVERED by this run — this is not a clean bill of health for those files.

11 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:

  • content/docs/concepts/metadata-driven.mdx (via FieldSchema (symbol, a top-level const))
  • content/docs/data-modeling/external-datasources.mdx (via FieldSchema (symbol, a top-level const))
  • content/docs/data-modeling/field-types.mdx (via FieldSchema (symbol, a top-level const))
  • content/docs/data-modeling/validation-rules.mdx (via FieldSchema (symbol, a top-level const))
  • content/docs/deployment/troubleshooting.mdx (via FieldSchema (symbol, a top-level const))
  • content/docs/deployment/validating-metadata.mdx (via FieldSchema (symbol, a top-level const))
  • content/docs/getting-started/quick-reference.mdx (via FieldSchema (symbol, a top-level const))
  • content/docs/kernel/contracts/data-engine.mdx (via FieldSchema (symbol, a top-level const))
  • content/docs/protocol/backward-compatibility.mdx (via FieldSchema (symbol, a top-level const))
  • content/docs/protocol/objectql/types.mdx (via FieldSchema (symbol, a top-level const))
  • content/docs/protocol/objectui/concept.mdx (via FieldSchema (symbol, a top-level const))

⛔ 2 release-owned page(s) also name something this change touched. These are read-only:

  • content/docs/releases/v17/17-0.mdx (via FieldSchema (symbol, a top-level const))
  • content/docs/releases/v17/17-1.mdx (via FieldSchema (symbol, a top-level const))

content/docs/releases/ is RELEASE-OWNED (AGENTS.md "Documentation Guardrails"): release
notes are written centrally at release time, and a code PR that edits them is the exact PR
that guardrail exists to stop. They are still audited — read-only. If one of them is actually
wrong, file an issue or open a dedicated docs-only PR; do not edit it here.

What this run could not see
  • 1 changed file(s) yielded no anchor (packages/spec/liveness/field.json) — pages documenting those are invisible to this run
  • the SDK route bridge reached 54 of 206 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 — 142 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 570f01d270a37aeadfe078a6892797428151a7a8 → packageMentionDocs.

Which tree this was computed on

This run read content/docs from ee284a95ecf9d2984a54aa23c85d8f7a2a394d01 — the merge of head 7aabf18aa591b6f04afbd9a88c629eea51380f93 into base 570f01d270a37aeadfe078a6892797428151a7a8, 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 ee284a95ecf9d2984a54aa23c85d8f7a2a394d01 && git checkout ee284a95ecf9d2984a54aa23c85d8f7a2a394d01
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 570f01d270a37aeadfe078a6892797428151a7a8 7aabf18aa591b6f04afbd9a88c629eea51380f93 && git checkout -B drift-repro 570f01d270a37aeadfe078a6892797428151a7a8 && git merge --no-ff 7aabf18aa591b6f04afbd9a88c629eea51380f93

node scripts/docs-audit/affected-docs.mjs --json 570f01d270a37aeadfe078a6892797428151a7a8

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

Advisory only, and a precision-first one (#9192): a page is listed because it names a
symbol, wire route or SDK method this diff touched — not because it mentions a changed
package. Each row says which anchor put it there, so a wrong row is reportable rather than
merely annoying. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs 570f01d270a37aeadfe078a6892797428151a7a8 → pass the list as
args.docs, on the commit named under Which tree this was computed on.

…s notes read camelCase-only at the pin and name the non-picker snake legs

Claude-Session: https://claude.ai/code/session_011kWYXHPKzsrE8KEgBk1bRD
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 7aabf18aa591b6f04afbd9a88c629eea51380f93
Local-runs: none
Scope: packages/spec/src/data/field.zod.ts + packages/spec/liveness/field.json (the six lookup picker rows), packages/spec/liveness/README.md (citation grammar and verifiedAt), packages/spec/package.json (files[]), .changeset/23012-lookup-snake-tolerance-text.md; objectui @daeb77fc84: packages/fields/src/widgets/LookupField.tsx, packages/fields/src/widgets/RecordPickerDialog.tsx, packages/fields/src/widgets/deriveLookupColumns.ts, packages/fields/src/resolveActionParams.ts, packages/app-shell/src/views/metadata-admin/inspectors/ObjectFieldInspector.tsx, packages/core/src/utils/reference-keys.ts, packages/app-shell/src/providers/MetadataProvider.tsx, packages/plugin-detail/src/fieldEnrichment.ts, packages/types/src/field-types.ts; objectui PRs #7641, #8663 and #12215 (the three history rounds)

Inputs: card #23012's body and all six comments (triage 6123074082, unlock 6214136135, claim 6214503072, dev report 6214911363, the seat's patch-round record 6215181639, dev report 6215503402); PR #23894's body, file list and net diff against main from merge-base 94114c1f26; the 41 check-runs on the head. Read-only throughout: git fetch plus git show / git grep at the two shas, REST reads; no checkout, build, test or gate run.

① Derived judgments

No accept-set or key move — confirmed. The net diff is three files: the docblock above FieldSchema's lookup picker keys (TSDoc only; the seven declarations and their .describe() strings are byte-identical), six note strings plus six verifiedAt stamps in liveness/field.json, and one changeset. Lint & Repo Gates, Spec property liveness and Check Changeset are green on the head, consistent with the dev's check:api-surface reading ("surface unchanged").

Every sentence, checked at objectui daeb77fc84:

  1. The picker reads all seven keys camelCase-only. LookupField.tsx: declaredDisplayField (line 324, fieldMeta?.displayField || fieldMeta?.reference_field), descriptionField (327), explicitAllowCreate (350, fieldMeta?.allowCreate), lookupColumns (355), lookupPageSize (356), lookupFilters (357), dependsOn (389, cascadeMeta?.dependsOn). A repo-wide grep of packages/*/src for the seven snake spellings finds no read in that file, only comments. RecordPickerDialog.tsx reads none of the seven off field metadata; it takes displayField, pageSize, lookupFilters and the columns as props from LookupField (lines 1526 to 1534 and 1762 to 1769). deriveLookupColumns.ts reads the referenced object's fields, not the lookup field's keys. All seven anchors the lookupColumns row cites resolve. True.
    • Precision note, not a falsity: displayField keeps reference_field behind it. That is a differently named key objectui owns (the displayField row grades it no-producer; FieldSchema declares no twin the fold could land it on), not a snake spelling of displayField, and the lookupColumns row the docblock points to says so in as many words. The docblock is silent on it, as the old text was.
  2. A stored snake spelling is folded onto the declared key at ingestion. reference-keys.ts#normalizeSchemaReferenceKeys (line 592) runs normalizeFieldReferenceKeys over every field of a map or array; that calls canonicalizeRetiredFieldKeys first and unconditionally (lines 382 to 470): every key absent from FieldSchema.shape with a defined value is probed (lowercase, strip _, - and space) and stamped onto the single declared key sharing the probe. lookup_columns, lookup_page_size, allow_create, description_field, display_field, lookup_filters and depends_on all probe onto their declared twins. It never overwrites a canonical value already present (line 427). MetadataProvider.tsx applies it to every object item on the list fetch (line 762) and the single-item fetch (line 861); the session-cache restore at line 1065 is the app type only. True for "when the console ingests it".
  3. Each named non-picker snake leg exists at the cited symbol. resolveActionParams.ts#resolveActionParam (exported at line 538) builds lookupExtras only when the resolved type is a lookup (lines 690 to 693) and reads field.descriptionField ?? field.description_field (780) and field.lookupFilters ?? field.lookup_filters (783); displayField, lookupColumns, lookupPageSize and dependsOn are read alone there. ObjectFieldInspector.tsx#readLookupFilters (1745; def.lookupFilters ?? lookup_filters at 1754) and #readDependsOn (1758; def.dependsOn ?? depends_on at 1759) read a stored document. The per-row counts hold against the grep: description_field has one code reader, lookup_filters two, depends_on one. True.
    • Wording defect in the lookupColumns row, flagged and not failed: "Outside the picker two snake legs survive" is followed by two readers carrying four legs (three distinct snake keys). The enumeration after the colon is complete and correct, and the three per-key rows name each leg precisely. A later edit may say "two readers".
    • A residual the dev did not name: plugin-detail/src/fieldEnrichment.ts still lists 'depends_on' (and 'reference_field') in ENRICHED_FIELD_METADATA_KEYS (line 260), copying the key from object metadata onto an inline-edit field. It is a forwarder, not a fallback read behind the declared key, and what it forwards reaches a widget that no longer reads it, so the dependsOn row's "one reader" stands. An objectui housekeeping item; carrier: none.
  4. The three history rounds are attributed right. objectui#7155 was landed by PR objectui#7641 (merged 2026-09-04, "Fixes docs(scripts): correct check-agent-model-declared's model-resolution header to four steps #7155"): its LookupField.tsx hunk deletes the display_field, description_field and lookup_filters reads (and id_field, not one of the seven), and field-types.ts drops the snake members from LookupFieldMetadata, "removed, not deprecated". Three of the seven. objectui#7357 was landed by PR objectui#8663 (merged 2026-09-08, "Fixes docs(pm-dispatch,os-dev): report at draft-PR time, three-tier model policy, and the #7341 protocol text batch (PR A) #7357"): it deletes cascadeMeta?.depends_on ?? from LookupField.tsx; card and PR both name ADR-0049 enforce-or-remove and "no grace window". objectui#12157 was landed by PR objectui#12215 (merge commit 466a219eb1): it deletes the allow_create, lookup_columns and lookup_page_size reads, "retired, with no alias"; REST compare 466a219eb1...daeb77fc84 reads ahead 186, behind 0, so the pin covers it. "Three rounds, each with no deprecation window and no dual read" holds.
  5. The README's rules for a cited read point. Each of the six rows cites the realm marker, the pinned commit and a path#symbol anchor (objectui @daeb77fc84: packages/...#symbol) and stamps verifiedAt with the reading's date, which is what the README asks of objectui-side evidence (pin the commit, anchor the symbol, date the reading). 2026-10-16 is well-formed and not future-dated, so the one verifiedAt failure mode does not apply. The rows carry note without evidence, as 41 of this file's 95 live rows do; the gate scans evidence, not note, so these pointers are prose it neither counts nor resolves, which is what the lookupColumns row says of itself ("nothing in this repo re-checks"). No evidenceScope is set; absent is a worklist state, not a failure. Within the rules.

Every sentence the docblock and the six notes now carry is true at the pin.

② Semver level

.changeset/23012-lookup-snake-tolerance-text.md declares '@objectstack/spec': patch. packages/spec/package.json files[] at the head is dist, json-schema, liveness, prompts, llms.txt, README.md, src/**/*.zod.ts, CHANGELOG.md, api-surface, spec-changes.json, protocol-upgrade-guide.md: both edited files ship, so a changeset is owed and skip-changeset would be wrong. Nothing a consumer types changes (no key, .describe(), accept set, export or type moves), so patch is the right level and the floor. Clause-②: no on the PR body and in the changeset, with no (widening) or (narrowing) arm, is consistent with a prose-only diff that removes nothing a consumer can write. Check Changeset is green on the head.

③ Boundary flags

Dev report 6214911363 (first head 250724eb79):

  • Deviation 1, did not stop on a falsified hypothesis 1 and scoped the docblock to the picker readers it already named: answered, accepted. The stop clause guarded against writing the paragraph on the card's word; the dev measured instead, and the measurement above confirms the scoped claim. The two non-picker readers are recorded in four rows, which is where foreign read points live.
  • Deviation 2, the dev's primary checkout detached to origin/main at the same commit: answered. A container-local act with no effect on the diff.
  • Deviation 3, model-free commit trailers and the session-URL PR footer: answered. Both commits end with the Claude-Session: trailer for session_011kWYXHPKzsrE8KEgBk1bRD and the model-free co-author pair, and the PR body ends with the session-URL footer. AGENTS.md wins; correct.
  • Deviation 4, four derived gates not measured locally: answered by the head's check-runs. 41 runs on 7aabf18: 34 success, 7 skipped by path filter, 0 failures. Lint · PM dispatch-gates, Lint & Repo Gates, Spec property liveness, Check Changeset, Governed Surface Queue Guard, Test Core 1 to 6 and every type-check lane are green.
  • Open question, name resolveActionParams and ObjectFieldInspector in the docblock: A, kept as shipped, the seat's call confirmed independently. The docblock is the picker contract and already points at the lookupColumns row, which names both readers and all four legs; naming objectui's reads of stored documents in published schema prose would recreate the foreign-tree claim this card exists to correct.

Dev report 6215503402 (this head):

  • Deviation 1, PR body not updated and replacement text handed to the seat: escalated to the owning seat, domain:spec#1, to apply before queueing. The title ("docblock + three liveness notes"), the field.json bullet under "What changed", the Acceptance notes ("these three are left as they are") and the Gates heading (250724e) describe the first head, not this one: on 7aabf18 six rows changed, so the Acceptance-notes sentence is now false. The dev's three replacements plus a title fix make the body true. The verdict is on the diff, which this does not change.
  • Deviation 2, origin/main ahead with no merge and mergeability unread: answered. GitHub reports mergeable: true, mergeable_state: clean on 7aabf18; main has moved eight commits past merge-base 94114c1f26, touching none of the three paths (three unrelated .changeset/*.md additions only). No merge needed.
  • open_questions: none. out_of_scope_findings: none; the first report's single finding was absorbed by the patch round.

Implemented-by: claude/issue-23012-lookup-snake-tolerance-text
Reviewed-by: session_01HjR8RUwTPQ3TgbfKihmxp9

VERDICT: PASS

@objectstack-fleet objectstack-fleet Bot changed the title docs(spec): the lookup picker reads its seven keys camelCase-only (docblock + three liveness notes) docs(spec): the lookup picker reads its seven keys camelCase-only (docblock + six liveness notes) Oct 16, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · PR #23894 @ 7aabf18aa5 (#23012) · domain:spec seat 1 · os-elon-musk · session session_01HjR8RUwTPQ3TgbfKihmxp9 · 2026-10-16T13:04Z

Reviewer of record. Every item below was checked against GitHub and the code, not against the reports (6214911363, 6215503402 on #23012).

  • Shape: Draft, base main. The first line is Fixes #23012, the body's only closing keyword, then Clause-②: no, matching claim 6214503072. 3 files, +42/−19, none governed. Assignee os-elon-musk. The changeset is a patch for @objectstack/spec, whose files[] ships both src/**/*.zod.ts and liveness.
  • The docblock (field.zod.ts) no longer says "SNAKE_CASE TOLERANCE". It says the picker reads all seven keys camelCase-only at objectui @daeb77fc84, keeps the objectui#7155 / objectui#7357 history, adds objectui#12157, names the ingestion fold (normalizeSchemaReferenceKeys), and points to the lookupColumns ledger row. TSDoc only: no key, .describe() or accept-set change.
  • The six ledger notes (liveness/field.json, the widened surface of the patch round 6215181639) each drop the "(reads X || x)" tail, carry verifiedAt: 2026-10-16, and name the non-picker reader that still keeps a snake leg behind the declared key: resolveActionParams.ts#resolveActionParam (description_field, lookup_filters) and ObjectFieldInspector.tsx#readLookupFilters / #readDependsOn (lookup_filters, depends_on).
  • Contract review: PASS 6216050446 on this head (CONTRACT_REVIEW_TIER). The reviewer re-read every sentence at objectui @daeb77fc84. Its two wording-level flags are not failures and change nothing here: the lookupColumns row's "two snake legs" counts readers, not legs, and the docblock leaves reference_field behind displayField to the rows (objectui's own key, not a snake twin). The note that fieldEnrichment.ts:260 forwards 'depends_on' concerns a forwarder, not a reader. Carrier: none.
  • The PR title and body described the first head (250724e). The seat applied the dev's three replacements from 6215503402 in this act (the field.json bullet, the Acceptance notes, the Gates heading), fixed the title to "six liveness notes", and fixed one sentence on where the surviving legs are recorded. The dev's rules bar a dev PATCH of the PR body, so this is the seat's write, as the report asked.
  • The deviations, the seat's calls: the falsified hypothesis 1 was accepted at the patch round (6215181639); the open question is A. The detached primary checkout and the commit-trailer choice are the dev container's own and touch nothing on the platform.
  • CI on this head: 41 check-runs, 35 success, 6 skipped by their filters, 0 failed; all five required contexts green. mergeable: clean. main has moved none of the PR's files since its base.

The cloud dev session is archived at this ACCEPT, and the PR goes to the merge queue in this act.


Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 16, 2026 13:06
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 16, 2026 13:06
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 16, 2026
Merged via the queue into main with commit 4216796 Oct 16, 2026
49 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-23012-lookup-snake-tolerance-text branch October 16, 2026 13:37
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:data size/s tooling

Projects

None yet

2 participants