Files
suaveplan/openspec/archive/2026-05-25-api-tenant-provider/tasks.md
2026-05-27 23:29:53 +01:00

3.3 KiB

Tasks — @suaveplan/api-tenant-provider

0. Pre-flight

  • 0.1 Clean working tree confirmed; worktree on worktree-agent-a65edefe746eabbf6
  • 0.2 Forked from EXPECTED_BASE e5333ff3 (per §0a Sync)
  • 0.3 Manifest check deferred to post-archive generate-manifest.ts

1. Spec authoring

  • 1.1 Read design doc §5.4 (per-tenant jobs)
  • 1.2 No prior openspec/specs/api-tenant-provider/spec.md (net-new)
  • 1.3 Read openspec/AGENTS.md §13, §14
  • 1.4 proposal.md finalised
  • 1.5 Source-mapping table in proposal
  • 1.6 specs/api-tenant-provider/spec.md authored
  • 1.7 **Verified by:** lines on every requirement

2. Implementation

  • 2.1 packages/api-stack/api/api-tenant-provider/ scaffolded — 0.1.0, sideEffects: false, deps: @suaveplan/api-types, @suaveplan/error, @suaveplan/types, tslib, zod
  • 2.2 src/provider/ — TenantProvider interface (list / count / lookup / dispose)
  • 2.3 src/tenant-record/ — TenantRecord + strict-mode tenantRecordSchema (import z from "zod")
  • 2.4 src/pagination/ — ListOpts, encodeCursor/decodeCursor
  • 2.5 src/capability-id/ — TENANT_PROVIDER_CAPABILITY_ID + widened CapabilityId
  • 2.6 src/error-codes/ — TENANT_PROVIDER_CODES (TENANT_NOT_FOUND, SOURCE_UNAVAILABLE, INVALID_CURSOR) + TenantProviderError
  • 2.7 src/testing/ — runTenantProviderConformance(opts)
  • 2.8 src/index.ts — explicit named re-exports
  • 2.9 package.json exports per subpath

3. Tests

  • 3.1 Unit tests per feature (47 tests, 8 files, all pass)
  • 3.2 Spec-conformance type tests via provider.test.ts + capability-id.test.ts
  • 3.3 fast-check property test on cursor round-trip
  • 3.4 Every it(...) carries { timeout: 5000 }

4. Documentation

  • 4.1 Sibling .md for every implementation .ts (6/6 — docs:check 100%)
  • 4.2 README.md linking every .md
  • 4.3 No CLAUDE.md update

5. Pre-archive verification

  • 5.1 Lint, typecheck, test all green
  • 5.2 bunx turbo lint typecheck test --filter=@suaveplan/api-tenant-provider — green
  • 5.3 bunx turbo test:coverage --filter=@suaveplan/api-tenant-provider — 100/100/100/100
  • 5.4 OpenSpec conformance — Verified-by lines present on every requirement
  • 5.5 bunx turbo build --filter=@suaveplan/api-tenant-provider — green

6. Pre-archive 7-row checklist

  • 6.1 TenantProvider is type-monomorphic; structural implements check via StubProvider
  • 6.2 Zod wired at TenantRecord (tenantRecordSchema) and ListOpts (listOptsSchema) boundaries; cursor decode validates via cursorStateSchema
  • 6.3 Every TENANT_PROVIDER_CODES entry constructible and tested
  • 6.4 includeSuspended tested both directions in conformance harness
  • 6.5 OTel — N/A (concrete sources emit; contract package has zero runtime telemetry)
  • 6.6 dispose idempotent — tested in conformance harness
  • 6.7 No retroactive tick — every task checked is genuinely complete

7. Archive

  • 7.1 Spec delta folded into openspec/specs/api-tenant-provider/spec.md
  • 7.2 Folder moved to openspec/archive/2026-05-25-api-tenant-provider/
  • 7.3 Umbrella tick — deferred to umbrella owner
  • 7.4 MANIFEST.md refresh — to be done after merge (script writes from main checkout)