Skip to content

Commit 9a43e04

Browse files
os-zhuangclaude
andauthored
docs: update repo references for framework → objectstack rename (#3380)
* docs: update repo references for framework → objectstack rename Replace objectstack-ai/framework → objectstack-ai/objectstack across package.json repository/bugs URLs, docs, CHANGELOG, and skills-install commands. Rename framework.code-workspace → objectstack.code-workspace and update the repo's own clone/worktree instructions (cd objectstack, ../objectstack-<task>). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011kPznpkdptgo2hvW7wMDNw * chore: add empty changeset for repo-reference rename The framework → objectstack reference update touches package.json repository/bugs URLs and docs only — no package code changes — so it releases nothing. Empty changeset satisfies the Check Changeset gate without forcing a lockstep monorepo version bump. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011kPznpkdptgo2hvW7wMDNw --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent f55be04 commit 9a43e04

131 files changed

Lines changed: 298 additions & 294 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
---
3+
4+
Repository-reference update for the GitHub rename `objectstack-ai/framework` -> `objectstack-ai/objectstack` (package.json repository/bugs URLs, doc links, CHANGELOG, skills-install commands, workspace file). Metadata and docs only, with no package code changes, so this releases nothing.

.claude/skills/dogfood-verification/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ description: >
99
a change in the running app. NOT a customer-published skill — this is internal
1010
agent tooling (lives in .claude/, never in the published `skills/` dir).
1111
metadata:
12-
# Hides this skill from interactive `npx skills add objectstack-ai/framework`
12+
# Hides this skill from interactive `npx skills add objectstack-ai/objectstack`
1313
# discovery. NOTE: the skills CLI's `--all` implies `--skill '*'`, which
1414
# includes internal skills — so the hard boundary against leaking into
1515
# customer projects is the `/skills` subpath in every advertised install

.claude/workflows/docs-accuracy-audit.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const HOUSE_FACTS = `ESTABLISHED CORRECTIONS from prior doc-accuracy audits (PR
4141
- Console/portal path is /_console — NOT /_studio.
4242
- REST data path is /api/v1/data/{object} — NOT /api/v1/{object}. REST routes carry the /v1 prefix.
4343
- Env vars are OS_AUTH_SECRET (not AUTH_SECRET) and OS_PORT (not PORT); nested keys use single underscore unless the schema says otherwise. Mock-server toggle is VITE_USE_MOCK_SERVER (no VITE_RUNTIME_MODE or ?mode= switch).
44-
- The repo is github.com/objectstack-ai/framework (NOT objectstack-ai/spec). Fix broken cross-repo links/paths accordingly.
44+
- The repo is github.com/objectstack-ai/objectstack (NOT objectstack-ai/spec). Fix broken cross-repo links/paths accordingly.
4545
- Package names: @objectstack/<x> (e.g. @objectstack/service-cache, NOT @objectstack/services/service-cache). Some types only export via subpaths (e.g. @objectstack/spec/ui).
4646
- Auto-generated reference docs live in content/docs/references/ and are OUT OF SCOPE — never edit them.`
4747

.github/workflows/lint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ jobs:
157157
# Same class, same reasoning, different surface: skills/*/references/_index.md
158158
# and the objectstack-ui react-blocks contract are generated from
159159
# packages/spec/src and committed, and nothing regenerated them either. These
160-
# ship to third parties via `npx skills add objectstack-ai/framework`, so the
160+
# ship to third parties via `npx skills add objectstack-ai/objectstack`, so the
161161
# drift is served straight to consumers' agents — 6 of 113 schema pointers named
162162
# files the spec had already deleted or renamed.
163163
#

AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,15 @@ Other scripts: `objectui:bump` (pull only), `objectui:build`, `objectui:clean`.
7272

7373
When renaming a legacy var, use `readEnvWithDeprecation('OS_NEW', 'LEGACY')` from `@objectstack/types` (keeps legacy working one release). Third-party exceptions kept as-is: `NODE_ENV`, `HOME`, `OPENAI_API_KEY`, `TURSO_*`, OAuth `*_CLIENT_ID/SECRET`, `RESEND_API_KEY`, `POSTMARK_TOKEN`, `AI_GATEWAY_*`, `SMTP_*`. See #1382.
7474
10. **File issues for out-of-scope findings — don't silently expand scope or leave them buried.** When you hit a bug, gap, or unenforced capability that's unrelated to the current task, or too large to fix in scope, open a GitHub issue (`gh issue create`) with a clear repro/decision and link it from your PR. Corollary: **never advertise or demo a capability the runtime doesn't actually deliver** (declared ≠ enforced) — fix it, trim it, or file an issue, but don't fake coverage. Example: the spec once declared 9 validation-rule types while the write-path validator enforced only 3 (`state_machine`/`script`/`cross_field`); the gap was filed as #1475 rather than demoed in the showcase, then closed by **trimming** what could never be enforced (`unique`/`async`/`custom`) and **implementing** the rest — the spec now declares 6 and `rule-validator.ts` handles all 6. Note how narrow that claim stayed even so: the evaluator was wired into insert and single-id update only, so a bulk `updateMany` silently skipped every rule — a second `declared ≠ enforced` gap one layer down, at the **call site** rather than the `switch`; filed as #3106 and closed by evaluating the bulk match set per row. A `case` label is not enforcement; check the **call site**.
75-
11. **Worktree-first — never edit on the shared `main` checkout.** This repo is edited by **multiple agents at once**; the shared `main` tree has its HEAD switched and reset *under you*, silently clobbering uncommitted work. Before your **first file edit**, you MUST be in a dedicated worktree on a feature branch: `git worktree add ../framework-<task> -b <branch> main && cd ../framework-<task> && pnpm install`. A PreToolUse hook (`.claude/hooks/guard-main-checkout.sh`) **enforces** this — it blocks `Edit`/`Write`/`NotebookEdit` unless the edited file is in a dedicated **worktree** — a feature branch on the *shared* checkout is **not** enough (it still gets switched under you) — and it checks the **edited file's own repo**, so sibling repos (`objectui`/`cloud`) you touch are covered too (override for a deliberate non-task fix with `OS_ALLOW_MAIN_EDITS=1`). Full playbook below.
75+
11. **Worktree-first — never edit on the shared `main` checkout.** This repo is edited by **multiple agents at once**; the shared `main` tree has its HEAD switched and reset *under you*, silently clobbering uncommitted work. Before your **first file edit**, you MUST be in a dedicated worktree on a feature branch: `git worktree add ../objectstack-<task> -b <branch> main && cd ../objectstack-<task> && pnpm install`. A PreToolUse hook (`.claude/hooks/guard-main-checkout.sh`) **enforces** this — it blocks `Edit`/`Write`/`NotebookEdit` unless the edited file is in a dedicated **worktree** — a feature branch on the *shared* checkout is **not** enough (it still gets switched under you) — and it checks the **edited file's own repo**, so sibling repos (`objectui`/`cloud`) you touch are covered too (override for a deliberate non-task fix with `OS_ALLOW_MAIN_EDITS=1`). Full playbook below.
7676
12. **Contract-first — fix the metadata, not the runtime.** This is a metadata-driven framework: `packages/spec` is the one contract between metadata *producers* and the runtime/renderers that *consume* it. When a piece of metadata "doesn't work," ask **first**: *is it spec-compliant? is this the long-term-correct direction?* If the metadata is wrong, fix it at the **producer** and **reject it at authoring/publish** (validation / lint) so the error surfaces loudly — do **not** add a lenient alias or `??` fallback in the consumer (a node executor, the REST layer, a renderer) to tolerate off-spec input. A tolerant fallback fossilizes the wrong convention into a second de-facto contract, dilutes the spec, and hides the producer's bug — one strict contract beats N dialects. This is an **internal** contract (we own both ends), so "be liberal in what you accept" (Postel) does **not** apply — that's for untrusted boundaries. Change the **spec** only when the spec itself is genuinely wrong, and then deliberately (edit the Zod schema + migrate), never by accreting consumer-side fallbacks. The existing `cfg.filter ?? cfg.filters` / `cfg.objectName ?? cfg.object` in the flow executors are **debt to pay down, not a pattern to copy**. *Worked example:* an AI-authored `create_record` used `fieldValues` / `today()` / `{{trigger.record.id}}` while the executor reads `fields` / `{TODAY()}` / `{record.id}` → the fix was correcting the authoring skill + a publish-gate lint that rejects the wrong shape (cloud#688), **not** a `cfg.fields ?? cfg.fieldValues` runtime alias (framework#2419, rejected). Strengthens #5.
7777

7878
---
7979

8080
## Multi-agent working discipline
8181

8282
This repo is worked on by **multiple agents in parallel**. **Use one git
83-
worktree per agent/task** (`git worktree add ../framework-<task> -b <branch>`;
83+
worktree per agent/task** (`git worktree add ../objectstack-<task> -b <branch>`;
8484
run `pnpm install` in the new tree) so file systems are physically isolated —
8585
this is mandatory, not a preference (Prime Directive #11), and a PreToolUse hook
8686
blocks edits made while on the shared `main` branch. Working in the shared `main`

CHANGELOG.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,7 @@ required for the new Public Forms endpoints to apply guest defaults.
643643

644644
### Removed — Cloud control plane moved to private `objectstack-ai/cloud` repo
645645

646-
The framework repository (`objectstack-ai/framework`) is now open-core only.
646+
The framework repository (`objectstack-ai/objectstack`) is now open-core only.
647647
The hosted Cloud control plane — `apps/cloud` and
648648
`@objectstack/service-cloud` — has been extracted to a separate, private
649649
repository (`objectstack-ai/cloud`). Production traffic on
@@ -1247,7 +1247,7 @@ Followup to M10.30a. Walked every Setup menu in a real tenant; produced verdict
12471247
- **Client Hono integration test timeout** — Fixed `afterAll` hook timeout in `client.hono.test.ts` by racing `kernel.shutdown()` against a 10s deadline. The shutdown can hang when pino's worker-thread flush callback never fires in CI, so the race ensures the hook completes within the 30s vitest limit.
12481248
- **CI: Replace `pnpm/action-setup@v6` with corepack** — Switched all GitHub Actions workflows (`ci.yml`, `lint.yml`, `release.yml`, `validate-deps.yml`, `pr-automation.yml`) from `pnpm/action-setup@v6` to `corepack enable` to fix persistent `ERR_PNPM_BROKEN_LOCKFILE` errors. Corepack reads the exact `packageManager` field from `package.json` (including SHA verification), ensuring the correct pnpm version is used in CI. Also bumped pnpm store cache keys to v3 and added a pnpm version verification step.
12491249
- **Broken pnpm lockfile** — Regenerated `pnpm-lock.yaml` from scratch to fix `ERR_PNPM_BROKEN_LOCKFILE` ("expected a single document in the stream, but found more") that was causing all CI jobs to fail. The previous merge of PR #1117 only included workflow cache key changes but did not carry over the regenerated lockfile.
1250-
- **service-ai: Fix navigation item labels using deprecated i18n object format** — Replaced `{ key, defaultValue }` i18n objects with plain string labels in `AIServicePlugin`'s Setup App navigation contributions, completing the `I18nLabelSchema` migration from [#1054](https://github.com/objectstack-ai/framework/issues/1054).
1250+
- **service-ai: Fix navigation item labels using deprecated i18n object format** — Replaced `{ key, defaultValue }` i18n objects with plain string labels in `AIServicePlugin`'s Setup App navigation contributions, completing the `I18nLabelSchema` migration from [#1054](https://github.com/objectstack-ai/objectstack/issues/1054).
12511251

12521252
### Added
12531253
- **MCP Runtime Server Plugin (`plugin-mcp-server`)** — New kernel plugin that exposes ObjectStack
@@ -1327,7 +1327,7 @@ Followup to M10.30a. Walked every Setup menu in a real tenant; produced verdict
13271327
- Supports custom model selection via `AI_MODEL` environment variable
13281328
- Consistent behavior across CLI, Vercel, Docker, and custom deployments
13291329
- Dynamic import failures are handled as soft errors with automatic fallback
1330-
([#1067](https://github.com/objectstack-ai/framework/issues/1067))
1330+
([#1067](https://github.com/objectstack-ai/objectstack/issues/1067))
13311331

13321332
- **Metadata Versioning & History** — Comprehensive version history tracking and rollback capabilities
13331333
for metadata items. Key features include:
@@ -1359,7 +1359,7 @@ Followup to M10.30a. Walked every Setup menu in a real tenant; produced verdict
13591359
union type has been replaced with `z.string()`. i18n translation keys will be auto-generated
13601360
by the framework at registration time; developers only need to provide the default-language
13611361
string value. Translations are managed through translation files, not inline i18n objects.
1362-
([#1054](https://github.com/objectstack-ai/framework/issues/1054))
1362+
([#1054](https://github.com/objectstack-ai/objectstack/issues/1054))
13631363

13641364
**Migration:** Replace any `label: { key: '...', defaultValue: 'X' }` with `label: 'X'`.
13651365
Existing plain-string labels require no changes.
@@ -1371,7 +1371,7 @@ Followup to M10.30a. Walked every Setup menu in a real tenant; produced verdict
13711371
- `@objectstack/plugin-audit` — navigation item labels
13721372

13731373
### Documentation
1374-
- **README rewrite** — Rewrote `README.md` to accurately reflect the `objectstack-ai/framework`
1374+
- **README rewrite** — Rewrote `README.md` to accurately reflect the `objectstack-ai/objectstack`
13751375
repository. Updates include: corrected title ("ObjectStack Framework"), updated badges
13761376
(v4.0.1, 6,507 tests passing), fixed stale clone URL (`spec.git``framework.git`),
13771377
added all missing packages (`driver-sql`, `driver-turso`, `plugin-audit`, `plugin-setup`,

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,8 @@ See [Self-Hosted Deployment](https://objectstack.ai/docs/deployment/self-hosting
186186
## Working on the framework itself
187187

188188
```bash
189-
git clone https://github.com/objectstack-ai/framework.git
190-
cd framework
189+
git clone https://github.com/objectstack-ai/objectstack.git
190+
cd objectstack
191191
pnpm install # Node 18+, pnpm 8+ (corepack enable)
192192
pnpm build # build all packages
193193
pnpm dev # run the showcase example (REST + Console on :3000)
@@ -374,7 +374,7 @@ Run locally: `pnpm docs:dev`
374374
## Community
375375

376376
-**Star this repo** if ObjectStack is useful — it helps others find it.
377-
- 🐛 Questions, bugs, or feature requests → [open an issue](https://github.com/objectstack-ai/framework/issues).
377+
- 🐛 Questions, bugs, or feature requests → [open an issue](https://github.com/objectstack-ai/objectstack/issues).
378378
- 🤝 Want to contribute? See [CONTRIBUTING.md](./CONTRIBUTING.md).
379379

380380
## License

content/blog/context-window-is-the-constraint.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ truth is that "how many lines would the traditional version have been?" is a
3232
counterfactual nobody can measure — because that version doesn't exist.
3333

3434
Here's what *can* be measured. This is a real, working CRM in this repository —
35-
[`examples/app-crm`](https://github.com/objectstack-ai/framework/tree/main/examples/app-crm):
35+
[`examples/app-crm`](https://github.com/objectstack-ai/objectstack/tree/main/examples/app-crm):
3636
accounts, contacts, leads, opportunities with line items, activities. Views,
3737
a dashboard, a lead-conversion flow, permission sets, an action, translations.
3838

@@ -148,4 +148,4 @@ Small enough to fit. Strict enough to be worth fitting. That's the whole bet.
148148
**Try the measurement yourself:** `npm create objectstack@latest my-app`, build
149149
something with your agent, then count the lines. If the whole app doesn't fit in
150150
your agent's context window, we'd like to hear about it — that's a bug in the
151-
target format, and the format is [open](https://github.com/objectstack-ai/framework).
151+
target format, and the format is [open](https://github.com/objectstack-ai/objectstack).

content/docs/ai/agents.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ framework, which uses `@objectstack/mcp` (BYO-AI) instead. The next two sections
2525
describe that ObjectOS runtime.
2626
</Callout>
2727

28-
Per [ADR-0063](https://github.com/objectstack-ai/framework/blob/main/docs/adr/0063-two-kernel-agents-skills-are-the-extension-primitive.md)
28+
Per [ADR-0063](https://github.com/objectstack-ai/objectstack/blob/main/docs/adr/0063-two-kernel-agents-skills-are-the-extension-primitive.md)
2929
the ObjectOS runtime ships **exactly two** platform agents, bound by the
3030
*surface* the user is in — the user never picks from a roster:
3131

@@ -117,7 +117,7 @@ your Actions / Flows / queries; it then attaches to `ask`. Every skill declares
117117
`surface: 'ask' | 'build' | 'both'`, and an agent's tool set is the **union of its
118118
surface-compatible skills' tools** — there is no global fall-through, so a skill
119119
reaches an agent only when their surfaces match
120-
([ADR-0064](https://github.com/objectstack-ai/framework/blob/main/docs/adr/0064-tool-scoping-to-agent.md)).
120+
([ADR-0064](https://github.com/objectstack-ai/objectstack/blob/main/docs/adr/0064-tool-scoping-to-agent.md)).
121121
Both `surface:'ask'` and `surface:'build'` skills run only where the in-UI AI
122122
runtime exists — **ObjectOS**. On the open framework
123123
there is no in-product agent to attach them to; author capability

content/docs/ai/connect-mcp.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ This is the default policy, not a ceiling. A finer, **metadata-declared** exposu
149149
config (opt objects out, curate the exposed set, promote a few high-value actions
150150
to typed per-action tools) is the planned next step, consistent with ADR-0097's
151151
"what is exposed should itself be authorable" — tracked in
152-
[#3167](https://github.com/objectstack-ai/framework/issues/3167).
152+
[#3167](https://github.com/objectstack-ai/objectstack/issues/3167).
153153
</Callout>
154154

155155
## The security model

0 commit comments

Comments
 (0)