Changelog
Changelog — 2026-05-26
Daily docs refresh.
Breaking
- Legacy async tables dropped. The Supabase migration removes
document_processing_jobs,agent_run_contexts,agent_trigger_fires,agent_context_entries,agent_questions,view_transforms, andmigration_errors. In-flightdocument_processing_jobsrows are migrated into the newbackground_jobsledger automatically; anything reading the dropped tables directly must move tobackground_jobs. Theview-transformsandmigration-errorsSupabase repository stubs are also gone from@stndrds/adapter-supabase.
Features
.sealed()and.tolerate()onObjectBuilder. Mark a system object.sealed()to forbid user-created attributes, and use.tolerate(["legacy_ref", ...])to allow-list known custom names that should not trigger a drift error. See the updated Extensibility and Schema pages.standards schema diffandstandards schema pullCLI commands.diffreports runtime drift between DB and code schema (exit code reflects unexpected drift, JSON output via--format json);pullfetches the same drift and writes an AI-ready prompt to.standards/pulls/<date>-<hash>.mdfor an LLM to resolve. Both accept--object <name>and--tenant <id>flags.GET /schema/driftendpoint.@stndrds/adapter-nestjsexposesSchemaDriftController(registered inSchemaCoreModule) returningSchemaDriftResult. Guarded byworkspace:read; supports the same?object=<name>filter as the CLI.- Background-jobs foundation. New
BackgroundJobService,BackgroundJobProcessor,BackgroundJobRegistry, andBackgroundJobRecoveryServicein@stndrds/runtime, with abackground_jobsPostgres ledger in@stndrds/adapter-supabaseand aBullMQBackgroundJobTransportin@stndrds/adapter-bullmq. Jobs are persisted before dispatch, claims are atomic, and stalled workers are recovered. Agent runs and document OCR are now routed through this ledger — see the updated Redis & BullMQ guide. SchemaAsyncModulein@stndrds/adapter-nestjs. Single NestJS module that wires the background-job processor, registry, and recovery worker. ExportsBACKGROUND_JOB_SERVICE,BACKGROUND_JOB_PROCESSOR, andBACKGROUND_JOB_REGISTRYinjection tokens.- Durable event outbox wired through BullMQ.
events.outboxSignalonSchemaModule.forRootnow drives a real outbox processor end-to-end, so async event handlers survive process restarts when wired.
Fixes
standards schema diffshows both unexpected and tolerated drift. When a sealed object had both unexpected and tolerated custom attributes, the diff output silently hid the tolerated ones. Both groups are now reported (#652).- CLI
resolveStandardsDirno longer loops at the filesystem root on non-POSIX systems. Pulling drift from a working directory without an ancestor.standards/now exits cleanly instead of spinning. - Agent and document-OCR background jobs survive worker restarts. Recovery is bounded and idempotent: claims expire, stale rows are re-published, and exhausted jobs no longer loop forever.
Other
- Refactor:
BaseService.invalidateRecordCachesdrops its unused_objectIdparameter; the deadview-transformsandmigration-errorsrepository stubs in@stndrds/adapter-supabaseare deleted.