Skip to content

chore(scope): rename @zksoju → @0xhoneyjar#5

Open
zkSoju wants to merge 4 commits into
mainfrom
chore/rename-to-0xhoneyjar
Open

chore(scope): rename @zksoju → @0xhoneyjar#5
zkSoju wants to merge 4 commits into
mainfrom
chore/rename-to-0xhoneyjar

Conversation

@zkSoju
Copy link
Copy Markdown
Contributor

@zkSoju zkSoju commented May 2, 2026

Migrate 3 published packages to canonical org scope. @zkSoju versions deprecated on npm with redirect.

package from to
protocol @zksoju/freeside-storage-protocol@0.0.1 @0xhoneyjar/freeside-storage-protocol@0.0.1
client @zksoju/freeside-storage-client@0.1.0 @0xhoneyjar/freeside-storage-client@0.1.0
stickers @zksoju/freeside-storage-stickers@0.0.1 @0xhoneyjar/freeside-storage-stickers@0.0.1

All 3 published to @0xHoneyJar registry already. Consumer (mibera-dimensions) updates in companion PR.

Build clean. 28 tests pass dual-env.

zkSoju and others added 4 commits May 2, 2026 07:46
…dual-env workspace

Phase-0 substrate for composable-sticker-substrate-2026-05-01 cycle.

T-1 (bd-rpua · jsdom config + vitest workspace dual-env):
- Add jsdom@^24 + vitest@^2.1 at root devDeps
- vitest.workspace.ts defines node + jsdom projects (same tests/, dual env)
- Root scripts: test + test:watch
- Honors SDD §7.1 (strict-universal verification: same test files run under both
  node and jsdom envs to enforce no DOM / no Node-only imports in core)

T-2 (bd-3eyo · package skeleton):
- packages/stickers/{package.json, tsconfig.json, src/index.ts stub, README.md}
- workspace deps: @freeside-storage/client (workspace:*) + @freeside-storage/protocol
  (workspace:*) + effect@^3.10
- pnpm-workspace.yaml extended to include packages/stickers
- README.md describes Schema → Service → Compositor pyramid +
  universality discipline + composition with shipped @freeside-storage/client v0.1.0

Typecheck clean. pnpm install OK. Schema authoring (T-3 · sealed StickerProfile
+ branded primitives + StickerLookupResult discriminated union) lands in next
/run-resume cycle.

Source: grimoires/loa/sdd-composable-sticker-substrate-2026-05-01.md §7.1 · §8.1
PRD decisions ratified: D-1 placement A · D-4 Phase-3 deferred indefinitely
Vault session: [[2026-05-01-midi-foundation-kickoff]]

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sprint-1 of composable-sticker-substrate-2026-05-01 cycle. Implements
@freeside-storage/stickers sub-package per architect's design + dual-env
test infrastructure.

Phase-0 (Schema substrate):
- src/profile.ts — sealed StickerProfile Effect Schema with branded
  primitives (ExpressionId, VariantId, LifecyclePhase) + closed enums
  (StickerWorld, DaemonState, FallbackStrategy) + Schema.optional
  daemon-stage axes for V0.7+ forward-compat
- src/service.ts — StickerService Context tag + StickerProfileDecodeError
  Data.TaggedError + StickerServiceLive Phase-0 placeholder Layer
- src/lookup.ts — composition skeleton (lookupGrail + manifest fetch +
  Schema.decodeUnknown chain) — Phase-1 dead code per SDD §10.3 A-3
- src/adapter.ts — synthesizeStickerProfile (LOAD-BEARING) + checkManifestDrift
  helper (encapsulates synthesize+decode for cross-Effect-version-skew
  resilience)

Phase-0 (Tests · 26 tests · dual-env):
- profile.roundtrip.test.ts (7 · encode/decode symmetry · branded primitives ·
  optional axes present + absent · all 4 daemon states)
- profile.drift.test.ts (9 · 7 mutations + 1 control + 1 inverse · ≥5 target met)
- profile.live-manifest.snapshot.test.ts (3 · 2026-05-01 mibera fixture decodes
  Right + grail variant + manifestVersion propagation)
- profile.adapter.test.ts (7 · synthesizer purity + known-good + grail +
  skipped + malformed manifest + variant propagation)

Per-package vitest configs (vitest.config.ts node + vitest.config.jsdom.ts)
satisfy SDD §7.1 dual-env requirement. jsdom@^24.1.0 added to stickers devDeps.
vitest.workspace.ts simplified to ASCII.

Doctrines: [[contracts-as-bridges]] · [[url-contract-as-bridge]] ·
[[continuous-metadata-as-daemon-substrate]] · [[migration-tail-as-bug-source]] ·
[[fallback-shape-divergence]].

Closes beads bd-1c7e (T-3) · bd-3itb (T-4) · bd-3sq9 (T-5) · bd-27r4 (T-6) ·
bd-1ygz (T-7) · bd-2iaz (T-8 · P0 LOAD-BEARING) parts of epic bd-1mu2.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Addresses Bridgebuilder review feedback on PR #4:

- F5 (HIGH confidence 0.9): `String(decoded.left)` for Effect ParseError
  yields '[object Object]' rather than the structured issue tree. Replaced
  with `ParseResult.TreeFormatter.formatErrorSync(decoded.left)` so
  `checkManifestDrift` consumers (Phase-1 dimensions wiring) get a
  human-readable drift signal instead of an opaque coercion.

- F13 (MEDIUM): docstring on `StickerProfile` claimed
  `additionalProperties: false` is implicit via `Schema.Struct`. Effect's
  `Schema.Struct` is permissive on extras by default — extras decode
  through silently. Updated comment to reflect actual behavior:
  required-field surface is sealed via literal/branded validation; drift
  is detected via missing/malformed required fields, not via unexpected
  extras.

Adds 2 regression tests in `tests/profile.adapter.test.ts`:
- `checkManifestDrift ok=true` returns empty issues string
- `checkManifestDrift ok=false` issues is human-readable (not
  `[object Object]`) and mentions the rejecting field

Test count: 26 → 28 (per env). Both node + jsdom matrices green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Operator team perms on @0xHoneyJar npm org sorted 2026-05-02. Migrating the
3 published packages to the canonical org scope.

Renamed:
- @zksoju/freeside-storage-protocol → @0xhoneyjar/freeside-storage-protocol
- @zksoju/freeside-storage-client   → @0xhoneyjar/freeside-storage-client
- @zksoju/freeside-storage-stickers → @0xhoneyjar/freeside-storage-stickers

Files: 9 source/config across protocol + storage-client + stickers + adapters/s3.
Cross-references: workspace:* deps + JSDoc + service tag string + vitest config regex.

Versions same (0.0.1 / 0.1.0 / 0.0.1) — these are the same packages, just
under the canonical org. @zkSoju versions deprecated on npm with redirect
message pointing consumers to @0xHoneyJar.

Build clean, 28 tests pass dual-env (node + jsdom).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5159257055

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"@aws-sdk/client-sts": "^3.620.0",
"@aws-sdk/s3-request-presigner": "^3.620.0",
"@freeside-storage/protocol": "workspace:*"
"@0xhoneyjar/freeside-storage-protocol": "workspace:*"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Update S3 adapter imports to the new protocol scope

This dependency was switched to @0xhoneyjar/freeside-storage-protocol, but packages/adapters/s3/src/S3Adapter.ts still imports types from @freeside-storage/protocol (line 32 there), so the adapter package will fail module resolution/typecheck once built in this workspace. Because this commit is the rename cutover, leaving the old import path in code creates an immediate build break for packages/adapters/s3.

Useful? React with 👍 / 👎.

Comment on lines +154 to +155
const virtual = synthesizeStickerProfile(
globalManifest as GlobalManifest,
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Handle null manifests before profile synthesis

checkManifestDrift accepts unknown input but unconditionally casts and forwards it to synthesizeStickerProfile; if a caller passes null (a valid JSON value for malformed payloads), synthesizeStickerProfile dereferences globalManifest.skippedTokenIds and throws instead of returning a structured { ok: false, issues } drift result. This turns malformed-manifest detection into a runtime exception path for consumers.

Useful? React with 👍 / 👎.

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