Skip to content

Project split: publishable core, package boundaries, private-path guard, push CI - #15

Open
Cyronius wants to merge 2 commits into
mainfrom
project-split
Open

Cyronius wants to merge 2 commits into
mainfrom
project-split

Conversation

@Cyronius

Copy link
Copy Markdown
Owner

What

Phase 1 of the based.ai roadmap (plan: specs/based/plans/project-split.md). Two repos, three buildable projects: core and ui stay here as the packages they already are; the paid product lives in a sibling private repo and consumes @based/core from npm.

  • core/ becomes publishable as @based/core at the app version. bump-version.ps1 rewrites its manifest with the other three version sites; release.yml gains a publish-core job that refuses a mismatched tag.
  • scripts/check-boundaries.ts fails if core and ui ever import each other (they don't today; this locks it in). The shell may import core.
  • scripts/check-private.ts refuses based-ai/, paid/, private/, *.private/, env files and private keys. Runs as the tracked pre-commit hook in .githooks/ and as a CI job against git ls-files.
  • New ci.yml on push and PR: one job per project plus tests, boundaries, private guard. There was no push CI before.
  • Docs: three-projects section in development.md, Products section in architecture.md, hook setup in CONTRIBUTING.

Spec

New: BASED-PKG-BOUNDARIES (unit), BASED-PRIVATE-GUARD (unit), BASED-CORE-PUBLISH (manual). Modified: BASED-RELEASE-CI.

Verified

  • typecheck for core, ui, shell-tauri; bun test 681 pass / 73 skip / 0 fail
  • bun run check green; pre-commit hook ran on this branch's commit
  • sibling repo Cyronius/based-ai boots a linked core and gets 200 from /api/health

Before the next release tag

  • Confirm the @based npm scope with npm publish --dry-run from core/; fall back to @cyronius/based-core if taken
  • Add the NPM_TOKEN repo secret

🤖 Generated with Claude Code

Cyrus Attoun and others added 2 commits September 10, 2026 11:42
Core and ui were already separate packages that never import each other; this
locks that in. core/ becomes @based/core at the app version, published from the
release tag. New ci.yml runs each project on its own plus tests, boundaries and
the private guard. The paid product lives in a sibling repo and can never land
here: gitignore, a tracked pre-commit hook, and a CI job all refuse its paths.

BASED-PKG-BOUNDARIES, BASED-PRIVATE-GUARD, BASED-CORE-PUBLISH; BASED-RELEASE-CI
gains the publish job.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Publishes under the npm org we already own instead of an unverified scope.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant