Repository navigation
Public tree: no private repositories, sessions, people or instances; plans move out - #56
Merged
jallers merged 6 commits intoNov 14, 2026
Conversation
The consumer projects that drove the SDK's design are private; so are the product's source and the API-testing instance. Comments, test names and the changelog now say "a CLI consumer", "a chat-bot consumer", "a browser app consumer", "the server" and "the API-testing instance" instead. Unit-test fixtures copied from live responses keep their shape but carry fictitious identities (a made-up member, a neutral example base URL and the default dev-instance path). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016NSWj6JhfcwPfucX8mr1jH
…ance meta.v1 spells each href from the instance's own path, so the committed metamodel carried the API-testing instance's name 19,196 times. The download script now rewrites hrefs to start at /meta.v1/ (raw pulls are left alone), the committed file is rewritten the same way, and a unit test checks both the rewrite and the committed file. Nothing in the SDK reads an href, and the generated types are byte-for-byte unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016NSWj6JhfcwPfucX8mr1jH
The hosted instance set aside for API testing was named in test/integration/instance.ts and in spec 000. Its URL is the instance's name, and this repository is public, so the list now comes from SDK_TEST_ALLOWED_INSTANCES (comma-separated base URLs), set beside the credential by whoever runs the tier against a hosted instance. The rule is unchanged: local always, hosted only when allowed, V1Production never; it lives in test/integration/instanceGuard.ts, pure, with a unit test. Without the variable a hosted URL is refused with a message that says what to set. Live tier run with it: 40 passed, 3 skipped. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016NSWj6JhfcwPfucX8mr1jH
…it goes instead The repository is public and its history permanent, so working plans and consumer hand-offs no longer live here: plans go to a private planning repository, hand-offs to the consumer's own repository or to a message between sessions, and findings come back as public-worded issues, pull requests, tests and changelog lines. CONTRIBUTING.md says so and how to refer to consumers, the server, instances and people. Spec 000 gains the invariant, and test/unit/publicTree.test.ts enforces its mechanical parts by shape (a session id, a repository slug under the product's organisations other than this one, a hosted instance URL other than the documentation's example) without listing any name. plans/ is skipped by the test until it leaves the tree. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016NSWj6JhfcwPfucX8mr1jH
jallers
force-pushed
the
public-tree-no-private-references
branch
from
November 14, 2026 13:35
97a3e30 to
04a7a90
Compare
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016NSWj6JhfcwPfucX8mr1jH
jallers
force-pushed
the
public-tree-no-private-references
branch
from
November 14, 2026 13:35
04a7a90 to
3415830
Compare
The example base URL in the README, the client config doc, the metamodel script's usage and the unit-test fixtures was the product documentation's production example; an instance URL is an instance's name, so it is now a fictitious domain. The public-tree test loses its one exception and refuses any hosted instance URL. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016NSWj6JhfcwPfucX8mr1jH
jallers
force-pushed
the
public-tree-no-private-references
branch
2 times, most recently
from
November 14, 2026 13:47
ef21149 to
e129d22
Compare
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.
This repository is public and published to npmjs, but its tree named private repositories, Claude sessions, internal branches and pull requests, people, a real account, and hosted instances. This PR scrubs the tree, adds a mechanical check so nothing new is added, and sets out where that material lives instead.
Audit (confirmed and extended)
plans/001–005andplans/handoffs/*(nine files): private repositories (three consumer projects and the product's source), session ids, internal branch names and PR numbers, people, the API-testing instance URL. The CLI consumer's repository was checked and is private, so it is treated like the others.src/types/oid.ts,src/services/{attachments,guard,batch,schema,resolve}.ts,src/wire/{assetApi,fields,rest1}.ts,src/types/asset.ts), test names and comments (test/unit/*,test/integration/*),CHANGELOG.mdandREADME.md: consumer names, the product's source by name and file path, "verified live on ", the instance URL as the example base URL.test/unit/client.test.tsandtest/unit/rest1.test.ts: a real account's username, display name and member OID, and a maintainer's name, copied from live responses.metamodel.json: the instance's path in 19,196href/HREFvalues.test/integration/instance.tsand spec 000 §5: the hosted testing instance in a committed allowlist.test/integration/customFields.ts: product source file paths and a path on a personal machine.src/core/clientConfig.tsand the README example: a production instance's URL as the documented example base URL.What this PR does (six commits, in order)
scripts/download-metamodel.mjsspells everyhreffrom/meta.v1/(raw pulls untouched); the committed file is rewritten the same way; a test checks the rewrite and the committed file. Nothing in the SDK reads an href; the generated types are byte-for-byte unchanged.SDK_TEST_ALLOWED_INSTANCES(comma-separated base URLs) instead of a committed list. Same rule: local always, hosted only when allowed, V1Production never; it lives intest/integration/instanceGuard.tswith a unit test, and a refused URL says what to set. Live tier with the variable set: 40 passed, 3 skipped. Wherever the tier runs against a hosted instance, the cloud environment included, the variable is set beside the credential.CONTRIBUTING.md, a README pointer, and spec 000 §8.test/unit/publicTree.test.tsenforces it by shape, without listing any name: no session id, no repository slug under the product's organisations other than this one, no hosted instance URL.plans/is skipped by the test until it leaves the tree.plans/stays in this PR, by decision: it leaves the tree once the private planning repository exists, in a PR of its own. The branch is rebased on the current base (after #55).npm run verifyis green at every commit: 26 files, 173 unit tests.The approach
agility-sdk-planning, to be created by a maintainer. One file per plan, as today. A plan may cite this repository by commit, tag or PR number; this repository never cites a plan.handoffs/.specs/(invariants of this code, nothing private),CHANGELOG.mdandREADME.md(they ship in the package), anddocs/for longer consumer-facing material when there is some. Nodocs/directory is created in this PR because there is nothing to put in it yet.History
The 87 commit messages that name private repositories and sessions are left as they are. The branch is public, the npm releases are tagged on it, and a consumer vendors builds by commit SHA, so history is not rewritten. The goal is to stop adding such names and to clear the tree; the test does the first and this PR the second.
Decisions taken
🤖 Generated with Claude Code
https://claude.ai/code/session_016NSWj6JhfcwPfucX8mr1jH