3.7 KiB
3.7 KiB
Tasks — enterprise-license
All checkboxes ticked reflect work done in this change. Package was implemented in one session; spec authored after impl per "collapse to one change" decision (matches
§13reconciliation pattern).
1. Spec authoring
- 1.1 Read
../suaveplan/enterprise/license.mdend-to-end - 1.2 Read upstream
index.ts/index.types.ts/bitpack.ts/obfuscation.ts - 1.3 Draft proposal + spec delta (one terse
### Requirementper feature module, every Verified-by line points at a realit(...)ordescribe(...)title)
2. Implementation (port-main verbatim + enterprise stack)
- 2.1 Scaffold:
package.jsonv0.1.0, 16 subpath exports, tsconfig + tsconfig.lib, vite.config, vitest.config (pool: forks,provider: istanbul, 100/100/100/100), tests/setup/polyfills - 2.2
src/error-codes.ts+.md— 12-codeLICENSE.*registry +LicenseError extends SuaveplanError<LicenseErrorCode> - 2.3
src/constants/constants.ts+.md—LICENSE_VERSION,FULL_SIGNATURE_BYTES,SIGNATURE_BYTES,MIN_SIGNATURE_BYTES,BASE32_ALPHABET,LICENSE_SCHEMA,FIELD_BITS,PAYLOAD_BYTES - 2.4
src/types/license.ts+.md— every enum/interface/type from upstreamindex.types.tsverbatim - 2.5
src/codec/base32/base32.{ts,test.ts,md} - 2.6
src/codec/bitpack/bitpack.{ts,test.ts,md} - 2.7
src/codec/payload/payload.{ts,test.ts,md} - 2.8
src/codec/obfuscation/obfuscation.{ts,test.ts,md} - 2.9
src/time/time.{ts,test.ts,md}—Clockinjection - 2.10
src/flags/flags.{ts,test.ts,md} - 2.11
src/schemas/schemas.{ts,test.ts,md}— Zod boundary schemas - 2.12
src/otel/instruments.{ts,test.ts,md}— counters + histogram + attributes - 2.13
src/generate/generate.{ts,test.ts,md}—generateLicense,createPayload,parseLicense; OTel, Zod, AbortSignal, Rng/Clock injection - 2.14
src/validate/validate.{ts,test.ts,md}— full + truncated sig paths; OTel; AbortSignal - 2.15
src/manager/manager.{ts,test.ts,md}— fullLicenseManagersurface incl.revoke/isRevoked - 2.16
src/revocation/revocation-store/revocation-store.{ts,test.ts,md}—RevocationStoreinterface +createMemoryRevocationStore(LRU) +fingerprintLicense - 2.17
src/index.ts— named re-exports only - 2.18
README.md - 2.19
src/__benchmarks__/license.bench.ts(mitata) - 2.20
tests/property.test.ts(fast-check),tests/dep-graph.test.ts,src/license.spec-conformance.test.ts
3. Gates
- 3.1
bunx turbo lint typecheck test --filter=@suaveplan/license— 11/11 green, 15 test files, 158 tests pass - 3.2
bunx turbo test:coverage --filter=@suaveplan/license— 100/100/100/100 across every module - 3.3
bunx turbo build --filter=@suaveplan/license— green - 3.4
bun scripts/openspec-conformance.ts @suaveplan/license— PASS (0 errors, 3 informational warnings about schemas-invoked-via-wrapper false positive) - 3.5 Banned-pattern grep — clean (3 hits are the word "any" in JSDoc prose, not type annotations)
- 3.6 No
export *in any feature barrel - 3.7 No direct
vitest/bun:testimports - 3.8 Every implementation
.tshas a sibling.md(≥200 words)
Note:
bun run check(monorepo-wide Biome) reports 1619 errors / 14 warnings but all are pre-existing in other packages;bunx turbo lint --filter=@suaveplan/licenseis clean.
4. Archive
- 4.1 Fold
specs/license/spec.md→openspec/specs/license/spec.md - 4.2 Move
openspec/changes/enterprise-license/→openspec/archive/2026-05-17-enterprise-license/ - 4.3 Refresh
MANIFEST.md(bun scripts/folder-reorg/generate-manifest.ts) - 4.4 Update root
STATUS.md—@suaveplan/license–→✅ enterprise