Repository navigation
test(client): the envelope caller census never enters .cache/ - #22196
Merged
objectstack-fleet[bot] merged 1 commit intoOct 8, 2026
Merged
Conversation
`pnpm objectui:build` shallow-clones objectui into `.cache/objectui-<sha>/` when there is no `../objectui` sibling. The census walk started at the repo root and skipped only build and VCS directories, so it counted objectui's own SDK call site as a 29th site of this repo and three section-3 assertions went red on an untouched main. Add `.cache` to SKIP_DIRS, the house skip-set shape most repo walkers here already carry, and pin it in section 1 on a throwaway temp root: a planted `.cache/objectui-*` checkout leaves the sites, their receiver split and the files scanned unchanged, with a positive control proving the same walk counts the planted site once it is handed it. Claude-Session: https://claude.ai/code/session_01RWZbGvPFcRKvUqASZtunCU Co-Authored-By: Claude <noreply@anthropic.com>
Contributor
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
objectstack-fleet
Bot
deleted the
claude/issue-22153-census-skips-cache
branch
October 8, 2026 06:57
This was referenced Oct 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #22153
Clause-②: no
What changed
One file, a test, which publishes nothing:
packages/client/src/envelope-caller-census.test.ts.SKIP_DIRSgains.cache. A docblock says why: when there is no../objectuisibling,pnpm objectui:build(scripts/build-console.sh) shallow-clones the objectui source tree into.cache/objectui-SHA/. That tree contains objectui's own SDK call site.[#22153] never enters .cache/. It runs on a throwaway root under the system temp directory:mkdtempSync(join(tmpdir(), 'os-census-cache-')), removed infinally..cache/objectui-0123456789ab/checkout leavesscanCallSitesdeep-equal: the same sites, the same receiver split and the same files-scanned count.Why
SKIP_DIRSand not a tracked-files walk (PM reading H2)Triage's direction allows either. Measured at
8f395597:node_modulesskip sets in the tree already list.cache. Examples: everypackages/spec/src/**/*-retirement.test.tsandscripts/check-agent-test-spelling.mjs..cache/is gitignored (.gitignore:44), andgit ls-files | grep -cE '(^|/)\.cache/'returns 0. Control: the same pattern for.github/returns 45.git ls-fileswalk would add a git dependency this test does not have today. Of the 12 tests in the tree that spawn git, none is inpackages/client. It would also change whether an untracked file is counted before it is staged. No measured case needs either change.Reproduction and proof (PM reading H1 confirmed)
I planted
.cache/objectui-test/packages/x/src/index.ts, holding onethis.client.analytics.query(q)call, in the worktree. Then I ranpnpm --filter @objectstack/client exec vitest run --maxWorkers=2 src/envelope-caller-census.test.ts:6ed0c0f3, planted file presentexpected 29 to be 28; the enumeration gains.cache/objectui-test/packages/x/src/index.ts(analytics.query, sdk)8f395597, planted file presentThe planted file was removed afterwards.
Ablation. Run from the committed state with
node scripts/ablation-replace.mjs. Anchor'out', '.cache',became'out', 'ABLATED-22153',: the anchor count went 1 → 0 and the blobcbf54580cb85→c2a77abdd38a. After the restore the blob equals HEAD andgit diff HEADis empty.filesScanned1 → 2, and the planted site appears). CI never has a.cache/, so it still catches the skip being removed.'out',. The tool refused it before any test ran, because the replacement is a substring of the anchor (count 1 → 1). That attempt produced no reading.Tests and gates, head
8f395597pnpm --filter @objectstack/client test: 51 files, 653 passed. That is the 652 from before plus the new pin.pnpm --filter @objectstack/client typecheck: exit 0.check:test-typecheckreports OK with 0 errors. The census file is in thetsconfig.test.jsonprogram (tsc --listFilesOnlyfinds it once).dispatch-gates --commandsover this diff derives 54 gates, the same list the dispatch named;pnpm lint(full repo) was run on top. All exit 0.check:skill-examplesandcheck:dual-build-cjs-loadsfirst exited 3 (PREREQUISITE NOT MET, nodist/). Afterturbo run build --filter=!@objectstack/docs, both re-ran and exited 0.dispatch-gates --ran: 54 derived, 54 run, 0 NOT-MEASURED, 0 UNRUN.Acceptance notes
pnpm test, with the checkout present, turned only@objectstack/client#testred. No other test suite has a reproduced instance. The repo-root walkers underscripts/whose skip sets lack.cachehave not been measured against a planted checkout. That is inference only, so nothing was filed.scripts/build-console.shclones into the repo root. Cloning outside the tree, or printing therm -rf .cacheadvice, would retire the whole class. Not touched here: it is outside the claim's file surface.mkdtempSync(join(tmpdir(), ...))under the system temp directory, removed infinally.Generated by Claude Code