Skip to content

[Migration] Move npm packages from @fullstack-ai-infra to @bytefolk #22

Description

@PeterGuy326

Status

APPROVED / BLOCKED — target and exact migration plan are approved; npm authentication and @bytefolk ownership readback are still required before registry writes.

Product decision recorded on 2026-09-02: migrate every active @fullstack-ai-infra/* identity and consumer to the corresponding @bytefolk/* identity. Preserve the existing public/private/fixture intent. Independent @context/*, @org-workbench/*, and unscoped private packages are outside this scope.

This issue is the organization-level execution ledger. It does not authorize exposing credentials, unpublishing packages, deleting the old npm organization, or bypassing release gates.

Verified baseline

  • Local registry access works, but the configured npm credential returns E401.
  • Therefore @bytefolk npm organization ownership, operator role, 2FA policy, team access, and Trusted Publisher capability are not yet proven.
  • Public old packages:
    • @fullstack-ai-infra/digital-employee@0.6.0
    • @fullstack-ai-infra/digital-employee-core@0.6.0
    • @fullstack-ai-infra/mem-mcp@0.1.1
  • All target @bytefolk/* packages currently return anonymous 404. This is not ownership proof.
  • @fullstack-ai-infra/ui, engine, and doc-collaboration also return 404 and must not be described as already published.
  • The three old public packages are not deprecated. They remain the rollback path; none will be unpublished.

Approved identity map

Current identity Target identity/version Classification Registry action
@fullstack-ai-infra/digital-employee@0.6.1 source; old public latest 0.6.0 @bytefolk/digital-employee@0.6.1 public replacement publish
@fullstack-ai-infra/digital-employee-core@0.6.1 source; old public latest 0.6.0 @bytefolk/digital-employee-core@0.6.1 public replacement publish
@fullstack-ai-infra/digital-employee-engine@0.4.0 @bytefolk/digital-employee-engine@0.4.0 dormant/internal rename source, set private, do not publish
@fullstack-ai-infra/ui@0.2.0 @bytefolk/ui@0.2.1 unpublished public-intent first public release
@fullstack-ai-infra/ui-pack-consumer-fixture@0.0.0 @bytefolk/ui-pack-consumer-fixture@0.0.0 private fixture rename source, do not publish
@fullstack-ai-infra/doc@0.1.0 @bytefolk/doc@0.1.0 private workspace rename source, do not publish
@fullstack-ai-infra/doc-cli@0.1.0 @bytefolk/doc-cli@0.1.0 private workspace rename source, do not publish
@fullstack-ai-infra/doc-collaboration@1.0.0 @bytefolk/doc-collaboration@1.0.0 internal service rename source, set private, do not publish
@fullstack-ai-infra/digital-employee-platform@0.1.0 @bytefolk/digital-employee-platform@0.1.0 private workspace rename source, do not publish
@fullstack-ai-infra/ui consumer coordinates @bytefolk/ui@0.2.1 Doc / Org Workbench consumers switch only after verified release

The UI version is 0.2.1 because immutable Git tag v0.2.0 already exists and predates this package identity.

Implementation records

Repository/surface Source of truth
Digital Employee packages and release bytefolk/digital-employee#247
Design System public package bytefolk/design-system#19
mem-mcp package, binary release, MCP/cache identities bytefolk/mem#153
Doc private workspaces and vendored UI tarball bytefolk/doc#36
Quickstart public consumer bytefolk/digital-employee-quickstart#20
Org Workbench UI consumer bytefolk/roleweave#121
Private marketplace platform https://github.com/bytefolk/digital-employee-platform/issues/10
Organization/profile npm surface #25

Exact registry write set and operator boundary

Responsible human operator: npm organization owner PeterGuy326, after interactive npm login and private ownership/role verification.

No write below runs until npm whoami, org membership/role, team/access, 2FA, and package-name control pass from the authorized machine.

  1. Bootstrap new package identities with interactive 2FA, public access, and next only:
    • @bytefolk/digital-employee-core@0.6.1-rc.0
    • @bytefolk/digital-employee@0.6.1-rc.0
    • @bytefolk/ui@0.2.1-rc.0
    • @bytefolk/mem-mcp@0.1.2-rc.0
  2. Bind one Trusted Publisher per package:
    • Digital Employee packages: bytefolk/digital-employee, workflow release.yml, environment npm-release
    • UI: bytefolk/design-system, workflow npm-publish.yml, environment npm-release
    • mem-mcp: bytefolk/mem, workflow npm-publish.yml, environment npm-release
  3. Publish the four stable versions to next through GitHub OIDC using GitHub-hosted Node 24, npm >=11.15.0, id-token: write, and no long-lived npm token.
  4. Verify clean install/import/CLI behavior, release assets, metadata, access, provenance, signatures, and Trusted Publisher readback.
  5. Promote only verified stable versions to latest with interactive 2FA.
  6. Grant reviewed bytefolk:developers package access, then require 2FA and disallow tokens only after OIDC is proven.
  7. Migrate executable consumers, docs, lockfiles, vendored artifacts, badges, MCP identity, and cache compatibility.
  8. Only after consumer proof, deprecate all versions of the three old public packages with an explicit replacement message.
  9. Never unpublish, overwrite, reuse a published name+version, move an immutable Git tag, or delete the old npm organization during rollout.

Ordered rollout and rollback

Order: source/release PRs → RC bootstrap to next → Trusted Publisher → stable OIDC publish to next → readback/smoke → latest → consumer PRs → old-scope deprecation.

Rollback:

  • Before consumer cutover, leave old packages untouched and stop the rollout.
  • After cutover, restore consumers to the still-installable old coordinates if necessary.
  • Point latest back to the last verified new-scope version and publish a higher patch; never overwrite/unpublish.
  • Clear old-package deprecation if rollback requires it.
  • Revoke and recreate an incorrect Trusted Publisher binding rather than introducing a long-lived automation token.

Acceptance criteria

  • Owner control of bytefolk on npm and responsible operator permissions are privately verified; only the sanitized verdict is recorded here.
  • Registry inventory distinguishes published, unpublished, private, internal, and fixture identities.
  • Per-package target names, versions, exclusions, and nonpublish protections are approved.
  • Bootstrap, OIDC, provenance, consumer migration, deprecation, and rollback plans are reviewed and exact.
  • Separate repository implementation records exist.
  • Four new public packages pass registry and clean-environment proof.
  • All active consumers and package surfaces use ByteFolk.
  • Old public packages are deprecated only after replacement proof; none are unpublished.

Current blocker

The authorized operator must renew npm authentication on this machine without sharing credentials or one-time codes. Until then, code preparation and review may proceed, but no npm organization/package/access/dist-tag/deprecation/Trusted Publisher write is possible.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:integrationCross-repository integrationpriority:p0Required for the next shared product proofstatus:blockedCannot progress until the documented dependency is resolvedtype:epicTracks a multi-issue product outcome

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions