Skip to content

fix(spec): the protocol 16 → 17 upgrade rationale states each cited decision in words instead of a tracker number (stage 8) - #21674

Merged
objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-20749-registry-step17
Oct 4, 2026
Merged

objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-20749-registry-step17

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #20749
Clause-②: no

Stage 8 of the domain:spec lane's share of the runtime-string burn-down (ruling 5902360492, form D): the author-visible tracker ids in step 17's rationale in packages/spec/src/migrations/registry.ts, per the pointer 5968465093. Every cited decision is now stated in words, or the citation is dropped where its sentence already said what was decided. Text only. Step 18 and the test strings are later stages, so this PR closes no card.

What changed

  • step17.rationale: 1 message, 116 tracker ids, 91 distinct records (four of them in sibling repositories: one cloud card, two objectui cards and one objectui PR). The rationale is one [...].join('') array of string literals, and 105 of its literals carried the 116 ids. Exactly those 105 literals changed. The array keeps its element count, and no other literal moved.
  • The one reader that matched this text by a tracker number moved with it. migrations.test.ts pinned toMatch(/#4722/) in a test titled after that number. It now pins the rewritten words. See "Readers" below.
  • Regenerated: docs/protocol-upgrade-guide.md, through check:generated --fix (only gen:upgrade-guide was stale). Its 57 changed lines are exactly the 57 rewritten paragraphs. Nothing else prints this rationale: spec-changes.json does not carry step rationales and stayed up to date.
  • One @objectstack/spec patch changeset, Clause-②: no. The rationale ships in dist and os migrate meta prints it per hop. The new text is in dist/migrations/index.js and index.mjs, and 0 dist files carry the five replaced fragments I probed.
  • No step-18 text, no class (e) work beyond the moved pin, and no schema, order, id, conversion or behaviour change.

Census at the base (A1)

Base eea82af677, the worktree before any edit, which is the claim's stamp. I reused stage 7's instrument, byte-identical (census.cjs, md5 6e42a45a926d375013c32d62f16a296e), and held it to the same reference stage 7 used. That reference is check-doc-authoring.mjs --census, run from a scratch copy whose PACKAGES_PROSE_ROOT / PACKAGES_PROSE_EXCLUDED point at packages/spec/src and at nothing (md5 8edc9a4064f55d2766c1eb0d3e8d889f, the same two-line diff stage 7 used). Result: 201 = 201 ids, 0 differences per (line, id).

region of migrations/registry.ts messages ids gate literals
step 17 (const step17, lines 100–4976) 1 116 105
step 18 (STEP18_RATIONALE, lines 5025–20862) 46 85 78
rest of file 0 0 0
whole file 47 201 183
  • The pointer counted 116 for step 17 at an older tree. That holds exactly. Stage 7 read the whole file at 45 / 198 at 151a8ce4ed; main has since added two step-18 messages (+3 ids).
  • 1855 files scanned, 1351 parsed, 0 parse diagnostics. Test strings at the base: 1804 messages / 1920 ids in 425 files, the same as stage 7.
  • Lit controls: :111 (full, one id) and :470/:475 (the area-walk fix) count in the step-17 message. Step 18's 85 stay lit after the rewrite, so the after-zero is not blindness.
  • Dark controls: 134 raw hits fall in lines 100–4976, and 18 of them are on comment lines: :1153, the // #4001 … block at :1802–:1833, and more. Those 18 read 0. 134 − 18 = 116. The header docblock ids (:19, :32, :40, :62) read 0 as well.

Delivered (A2): each cited record, the decision as read, the words now in the text

I read every cited card, all its comments included, through REST GETs: 87 objectstack records and three objectui records (3829, 3818 and PR 3289). The record column names where each decision was read. A card with no comments was read from its body and its closing PR (from the timeline). Card numbers are written bare here, so this body creates no cross-references.

card base line(s) decision as read (record) in the text now
3865 111 B is the end state: retire full, since no mainstream platform lets a bulk sharing rule grant delete or transfer (analysis 5105498900) dropped
3894 (PR) 121 ADR-0109 accepted; agent.tools[] removed (PR body) dropped
cloud 910 128 not readable from this session (see notes); the sentence's own claim, matched by the agentToolsToSkills docblock in this repo "the cloud runtime had stopped reading it"
3796 133 the seven aliases graduate straight into ADR-0087 D2 conversions and the shim is deleted (5125152179) dropped
4045 144, 154, 166 reconcile each designer configSchema with what its executor reads; wait, connector_action and map were the findings (close-out 5138487536) dropped (×3)
3896 168, 590, 632, 676 issue has no comments; its line is read from what landed: the ledger's first full security re-verification found priority void (release notes 17.0); the close-out sweep retired fourteen inert keys (changeset 12a19a8); the earlier removal of the plugin-runtime discovery and sandbox config left the five operation contracts for a later design call (spec CHANGELOG) "found by the liveness ledger's security re-verification"; "the close-out sweep" (×2); "An earlier removal from that module"
4001 183, 734, 849 the unknown-key strictness wave: strict parsing across the authorable surface, in steps and batches (title, 65 comments) "the unknown-key strictness wave's app step"; "The strictness wave's 批 14"; "the strictness wave's enforce-or-remove batches"
3878 209 retire the shim; the request body is the bare AnalyticsQuery, validated, malformed answers 400 (5105665093) dropped ("outright:")
3891 210 retire the degraded shim: an empty slot answers 404 instead of serving unscoped aggregates (closing PR 3989) "(retired for serving unscoped aggregates)"
4247 231 one default for maxRetries, and strategy: 'retry' states its count (closing PR 4266) dropped
3963 244 delete api.requireAuth; anonymous data access denied unconditionally; an auth-less stack fails at boot (body) dropped
4052 254 retire the never-implemented dry-run flag (closing PR 4057) dropped
4793 261 option B: the wire moves to the schema's shape in the v17 window, hard cut (5163255233) dropped
4196 274 the nested-select object form is removed (closing PR 4268) dropped
4286 282, 291, 985 QueryAST stops declaring members no executor runs; having enforced, cursor/distinct removed with their SDK producers (closing PRs 4294, 4307) "The QueryAST liveness sweep"; "That sweep's close-out"; "the QueryAST sweep"
4158 300 retire timeoutMs / onTimeout: wait never had a timeout (closing PR 4198) dropped
4468 315 remove readReplicas (5150771330) dropped
4410 322, 330, 332 enforce: the per-driver contracts in packages/spec parse datasource.config and each replica entry (5150601668) "the change that closed the datasource-config gap"; "that validation change" (×2)
4456 329 the datasource-config-driver-key-aliases conversion; the factory's ?? fallbacks deleted (ACCEPT 5157922838) "(a follow-up to that validation change)"
4343 360 script converges to a pure function call; five keys tombstoned (5151704360) dropped
4277 370 wire the flow executors to parse() their config (title) "the executor wiring"
4484 382 remove findStream, no tombstone (ACCEPT 5158609619) "from the contract"
3355 396 retire system, the new value named system-data (5157022965) dropped
4671 416 narrow: import leaves the system-data default, opt-in per object (maintainer ruling 5163044848) "(maintainer ruling 2026-08-03)"
4509 430 the five keys the lint could never warn about retire (5160048143) dropped ("—" opener)
4651 450 both area keys removed with a conversion (ACCEPT 5160366838) dropped
4722 470, 475 filterAppForUser walks every area's navigation; area-level keys stay retired (ACCEPT 5161835765) "a server-side fix"; "that fix"
4661 481 one shared retry-policy declaration for both entries (dual-source C8) dropped
4411 484 the kernel envelope family declared twice is removed (closing PR 4458); the sentence states the trap dropped
4964, 4962 502 A: both inline blocks join the shared retry shape, default 0 (ruling 5173148383) dropped
4673 526 route 3: remove data.field.changed (5159280649) dropped
4639 527, 539 predicate writes emit one bulk event carrying object + matched (ruling 5158990896, correction 5159177633) "since predicate writes got their own bulk event"; "as the bulk data.records.* events did"
3207, 2377 541 remove enable.trash / enable.mru (ruling 5156966571), the last slice of the 11.0 dead-property removals (5051634768) "the close-out of the 11.0 dead-property removals"
3146 547 open: implementing soft delete, not started "the proposal stage"
4579 548 remove the three defs, tombstone openApi31 (ACCEPT 5162291403) dropped
4657 564 remove both activationEvents keys (ACCEPT 5164681566) dropped
4653 570 A: keep activationEvents, converge on the kernel's structured shape (ruling 5158525266) "A dual-source cleanup"
4834 584, 592, 626 remove the remaining five plugin-runtime.zod shapes (ruling 5165851511) "a removal that"; "this removal"; "the plugin-runtime.zod shape"
4391 599 remove crypto.hash (5165929011) dropped
4911 616 the outbound rate-limit vocabulary is removed (body ruling, ACCEPT 5169405647) dropped
4684 629 A: rename the connector shape apart inside v17 (ruling 5159693034) "the dual-source cleanup"
4876 632 A: retire widgets[].responsive, mirroring view.responsive (ruling 5169512655) dropped
4956 642, 679 every ledger container declares a disposition; the widget keys get classified (ACCEPT 5173403712) "its own finding"; "the instrument hole above was fixed"
11027 644 B: retire page.components[].responsive (ruling 5380752244) "CORRECTED in 2026-08"
5011 650 compareTo takes the executor's own shape (ACCEPT 5175336061) dropped
5014 669 the REST mapper mapped only top-level issues; it now selects union branches (landing 5186522140) "a top-level-only error mapper"
5010 671 retire the dead widget keys, key by key (5179556002) dropped
5040 693 the declarative endpoint executor ships in v17 (close 5181156808) dropped
4936 695 v17 refuses apis: loudly at publish, vocabulary kept (ruling 5173142024) "publish at first refused"
5021 707, 762, 892 tombstone the eight token-scale keys toward customVars (ACCEPT 5181527150) dropped (707, 892); "with the token scales" (762)
3494 715 prune the never-emitted theme props (close-out 5087074240) dropped
5015 726, 736 delete both shapes (ACCEPT 5181723667) dropped; "this removal"
4610 733 the unused ./ui notification shapes are deleted (dual-source C3, ACCEPT 5157937351) "the dual-source cleanup that deleted"
4583 736 all twenty dead datasource keys removed; a precisely validated dead slot is the more convincing lie (5157934690) dropped; the sentence states it
4988 746, 850, 892 delete the five interaction-config modules (ACCEPT 5183620978) dropped (746, 892); "the interaction-config modules above" (850)
5050 770 tombstone session.roles (ACCEPT 5197117072) dropped
4839, 5049 (PR) 780 option 3: delete both admin exemptions in the approvals plugin (ruling 5173240116) "The approvals plugin deleted"
3712 786 a schedule-triggered run can write its own locked record, through the hook context's provenance (closing PR 3749) "as provenance was for schedule-triggered runs"
3733 787, 999 remove the orphan schema; silent strip confirmed (5098751722) dropped; ADR-0104 stays
5540, 5266 796 option 2: remove list(prefix) (ruling 5194631234) dropped
5248, 4943 808 remove type and partial (ruling 5199336983); 4943 closed as its duplicate dropped
5552 828 B: enforce-or-remove; the union retires (ruling 5199338349) dropped
3278 836 retire the js expression dialect (closing PR 3291) "had already retired"
5055 849 A: retire the fourteen door-less sites (ruling 5199347411) dropped
objectui PR 3289 868 objectui follows the spec: the validation slot becomes error, with a producer (PR body) "an objectui change"
5775 874 A: labelField declared, dead keys retired (ruling 5202137085) dropped
5068 874 A*: wire a parse gate for SDUI props (ruling 5196404940) "wiring the first parse gate"
5611 877 A, tightened: sections declared in the object form pages author (ruling 5199158856) "the record:details sections rule"
6776 895 declare four props, page:tabs.type → tabStyle (ACCEPT 5229693342) "a second pass"
6946 911 retire the header icon, the card actions and the details layout (body ruling) "A third pass"
objectui 3829 912, 940 route (c): retire both keys upstream (ruling 5230005702) "retire the header icon and card actions upstream"
objectui 3818 913, 940 removal of RecordDetailsProps.layout (ruling 5230006799) "and the details layout"; "objectui's side of both rulings"
6188 943 split: array_agg / string_agg retire, count_distinct enforced (ruling 5219849918) dropped
5499 969, 992 freeze on driver-memory / driver-mongodb (body), fully lifted 2026-08-11 (5252526378) "the maintainer's driver freeze"; "the driver freeze"
6815 973 REMOVE distinct (ruling 5229991324) dropped
6203 982 direction 1: the remote face stops lowercasing; both faces accept only the declared lowercase spellings (5216890536) "every SQL face got one aggregate spelling"
5907 983 both SQL faces refuse with structured codes instead of a bare Error (5215635629, ACCEPT 5216068300) "and one refusal"
6409 989 count_distinct implemented in the SQL family (dev report 5228634411) "has since landed"
5561 1008 two steps: warn, then flip the default (ruling 5199144506) dropped
6748 1014 tombstone isAsync (ACCEPT 5229281891) dropped
6667 1016 enforce supportsPause at runtime; measure isAsync (claim 5226271238) "enforcing pauses"
4914 1028 remove the loading block (ruling 5173235317) dropped
6888 1043 direction 2: retire global_nav (ruling 5229990375) dropped
7176 1068 remove the three pass-through keys (ACCEPT 5274338597) dropped
8010 1076 the object form adopted, pdf removed (ACCEPT 5276376886) dropped
1301 1077 closed as not planned "as not planned"

Each rewrite was applied by a script whose 105 anchors each had to hit exactly once on its own base line. Each base literal had to carry an id, and each new literal had to carry none. The script read every literal back from disk afterwards: 105 new strings present, 105 anchors gone. A first application put an unescaped apostrophe into one literal. The proof below caught it (8 parse diagnostics), and the edit list was corrected and re-applied from the base copy.

Readers (A3)

  • The #4722 pin (migrations.test.ts, formerly names #4722 and the two trees an item gate is now enforced in). It is now names the server-side fix in words and the two trees an item gate is now enforced in, and it asserts was CLOSED by a server-side fix inside this same 17\.0\.0 window plus `filterAppForUser` now runs the SAME `filterNav` over every in place of /#4722/. The BOTH trees and areas[].navigation assertions are unchanged. The sibling pins (not /does not walk/i, /was CLOSED by/, /stay retired/, /no gate of its own/, client-side ONLY, FAIL-OPEN access gates) hold verbatim. The rewrite kept every word they read, so no other test moved.
  • Reverse verification, after the commit: scripts/ablation-replace.mjs put the number back (anchor was CLOSED by a server-side fix inside this same, hit 1 → 0, blob 355bf645cc94 → 2612fa163a05). The file then read 1 failed | 168 passed, the failure being exactly the moved pin, as predicted. The restore was proven: blob 355bf645cc94 = HEAD, and git diff HEAD empty.
  • No other reader. I took every 32-character window of the old rationale that the new one no longer contains (4297 windows) and searched the tree with git grep -F. The search excluded the edited file, the regenerated guide, the CHANGELOG.md files and content/docs/releases/ (history the release owns). The hits are 48 lines in 32 files, all comments, docblocks, ledger notes or other entries' own prose that share a phrase. None is an assertion, a gate or a quotation of this rationale.
  • Class (e) count: the moved pin's old test title was a test string carrying #4722, so test strings go 1804 / 1920 → 1803 / 1919. The other test titles and comments that mention 4722, 4651 or 5337 are untouched (class (e), and comments belong to the sibling form-C lane).

Text only (A5)

I reused stage 7's AST-skeleton plus string-text tool, byte-identical (skeleton.cjs, md5 a43a72c63f55c883da7a54b6f600ca08). Leg 1 is an AST skeleton with every string masked: a + chain's adjacent strings read as one, while array elements stay separate. Leg 2 is the text of every string group. A changed group must carry an id before and none after; every other group must be byte-identical.

  • registry.ts, base copy vs committed head: SAME, 22125 skeleton tokens, 3487 string groups, 105 changed (each id-bearing before, id-free after), diagnostics 0/0, exit 0. Every step id, toMajor, conversionIds entry, semantic entry, retired key and retired def, and their order, is therefore unchanged. The array's element count is part of the skeleton.

Controls, on scratch copies of the head file. Each mutation was counted on disk: anchor hits 1, replacement present 1, anchor left 0, differs from head.

mutation expected got
step17 renamed DIFF DIFF, exit 1
behaviour change: .reverse() on step 18's conversionIds DIFF DIFF, exit 1
a semantic entry's + literal re-split into two operands SAME SAME, exit 0, 0 changed
a step-17 literal that never carried an id gets one word VIOLATION VIOLATION, exit 3
a rewritten literal gets its tracker id back VIOLATION VIOLATION, exit 3
a step-17 array element re-split into two elements DIFF DIFF, exit 1

No repo file was mutated for the controls.

Census after (head): step 17 0 / 0. Step 18 stays at 46 / 85, untouched, and the gate's per-literal leg agrees (78 literals, 85 ids, all STEP18_RATIONALE; 0 per-(line, id) differences).

Gates

All builds and tests ran through scripts/pm/os-verify-lock.sh (slot dev-20749-s8). Every exit code was written to a file before it was read.

  • pnpm --filter @objectstack/spec build: exit 0, "38/38 declared declaration file(s) present". The closure filter is empty, since spec has no workspace dependencies.
  • pnpm --filter @objectstack/spec check:generated: exit 1 before regeneration ("1 of 15 artifact(s) stale": check:upgrade-guide). Then --fix: exit 0 ("re-checking the 1 artifact(s) just written … ✓ check:upgrade-guide"). Re-run in the gate union: exit 0.
  • pnpm --filter @objectstack/spec exec vitest run --maxWorkers=2 --reporter=verbose src/migrations/migrations.test.ts: 169 / 169.
  • pnpm --filter @objectstack/spec test: "Test Files 609 passed (609) / Tests 18059 passed | 1 todo (18060)".
  • pnpm --filter @objectstack/spec run typecheck: exit 0, "52 file(s) / 246 error(s) / 135 pinned signature(s) held".
  • pnpm turbo run build --concurrency=2 over every package: 71 / 71. This feeds the dist-reading gates.
  • Derived union. node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths) derived 90 commands for 4 paths vs merge base eea82af67. 90 of 90 exit 0 at 0d9cc19305. --ran: "90 derived famil(ies) accounted for — 90 run, 0 NOT-MEASURED (a DERIVED zero — all 90 recorded an exit code and none of them is 3)". The union includes check:doc-authoring, check:nul-bytes, check:upgrade-guide, check:spec-changes, check:migration-registry, check:issue-citations and check:api-surface.
  • ESLint, a proven narrowing. node --stack-size=4000 node_modules/eslint/bin/eslint.js --no-inline-config --format json over the 2 changed TS files read 2 files, 0 errors, 0 warnings. The population comes from ESLint's own config: calculateConfigForFile returns a config for each, and isPathIgnored is false. Invariance: parserOptions.project / projectService are null for both, so no type-aware linting runs and a string-text edit cannot move an untouched file's verdict. Repo-wide pnpm lint is CI's.
  • A raw control-byte self-scan of the 4 changed files found none (grep exit 1).

Acceptance notes

  • One cited card was not readable from this session: cloud 910. The REST GET answered 403 (this session has no access to that repository), and attaching the repository was refused (no access). I did not invent a decision. The sentence itself states what it relied on: the cloud runtime had stopped reading agent.tools. This repo records the same fact in the agentToolsToSkills docblock (conversions/registry.ts). So the number is dropped and the sentence keeps that claim, now attributed to "the cloud runtime".
  • Card 3896 has no comments, and its body is the sharing-rule criteria defect. The rationale cites it for three later acts of that line of work. Each is read from what landed: the first full security re-verification of the liveness ledger, which found RLS priority void (17.0 release notes); the close-out sweep that retired fourteen inert authoring keys (changeset 12a19a8); and the earlier removal of the plugin-runtime module's discovery and sandbox config, which left the five operation contracts for a later design call (spec CHANGELOG). The text names each act.
  • Stale-tense judgment, left as written. The objectui paragraph ends "… drop the exemptions, the input and the dead branch on the next pin bump." Both objectui cards have since closed completed. Only the subject literal carried the ids, and it now reads "objectui's side of both rulings drops …". The tail literal carries no id, so it was not touched, and it still describes what the rulings decided.
  • Long lines. The proof requires a fixed element count, so a rewrite that adds words lengthens its own literal. Eight literals now exceed 118 characters (the longest is 131). The repo has no max-len rule, and the joined text, which is what authors read, is unaffected.
  • Overlap. origin/main moved five commits after the base (55e6f14f8d is the tip): pm tooling and skills docs. None touches this PR's four paths or packages/spec, so main was not merged; the merge queue rebuilds onto current main. Card 21464's stage 5 (claim 5975220557) has no open PR yet, so nothing landed to merge. Of the nine open PRs, one touches migrations/registry.ts: PR 21668 (card 20281 stage 3). Its hunks sit at lines 8793 and 8817, inside step 18, and are disjoint from lines 111–1077 here. The changesets PR (changeset-release/main) only lists earlier stages' changesets.
  • Not governed: no .claude/**, skills/**, ADR, NORTH-STAR or AGENTS.md path.

Line budget

345 changed lines (+181 / −164) over 4 files vs merge base eea82af677 (git diff --shortstat): registry.ts +105 / −105, the generated guide +57 / −57, migrations.test.ts +3 / −2, and the changeset +16.


Generated by Claude Code

claude added 3 commits October 4, 2026 01:36
…in words instead of a tracker number (stage 8)

Text only: 105 string literals of step17.rationale in
packages/spec/src/migrations/registry.ts, plus the migrations.test.ts pin
that named the area-walk fix by number, moved onto its rewritten words.

Claude-Session: https://claude.ai/code/session_01T9u38rswFp5Rw8DswRUReJ
Co-authored-by: Claude <noreply@anthropic.com>
…step-17 rationale

Produced by check:generated --fix (gen:upgrade-guide), not hand-edited.

Claude-Session: https://claude.ai/code/session_01T9u38rswFp5Rw8DswRUReJ
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation tests tooling labels Oct 4, 2026
@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec, touching 1 documentable anchor(s).

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

  • content/docs/automation/hook-bodies.mdx (via crypto.hash (literal, a string literal in rationale))
What this run could not see

Coarse fallback — 138 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 55e6f14f8d87004c50b0f35eaafba36ac23cf32b → packageMentionDocs.

Which tree this was computed on

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

node scripts/docs-audit/affected-docs.mjs --json 55e6f14f8d87004c50b0f35eaafba36ac23cf32b

⚠️ 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 55e6f14f8d87004c50b0f35eaafba36ac23cf32b → pass the list as
args.docs, on the commit named under Which tree this was computed on.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 4, 2026 03:08
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 4, 2026 03:08
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 4, 2026
Merged via the queue into main with commit 93a54b8 Oct 4, 2026
37 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-20749-registry-step17 branch October 4, 2026 03:48
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 size/m tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants