AGENTS.md@platform/core · git:20260809.9dd5a14 · 2026-08-09 · sha256 d9497bf08c706385

AGENTS.md@platform/core git:20260809.9dd5a14A

Immutable. This exact content is served forever at /api/v1/blob/d9497bf08c706385.

# Core guidance

`@signet/core` owns shared types, SQLite access, migrations, search, manifests,
and identity primitives consumed by multiple runtimes. Read the owning source,
its consumers, and `web/docs/src/content/docs/architecture.md` or `web/docs/src/content/docs/sources.md` when the change
touches their contracts.

## SQLite and migrations

- `Database` supports `bun:sqlite` under Bun and `better-sqlite3` under Node.
  Keep shared database behavior valid through the common adapter rather than
  relying on one runtime's private API.
- Schema changes are append-only numbered files in `src/migrations/` and are
  registered at the end of `MIGRATIONS` in `src/migrations/index.ts`. Use the
  next contiguous version; do not renumber or reuse a shipped version.
- Migration `up` functions need to tolerate the legacy and partially repaired
  schemas they can encounter. Declare verifiable tables and columns in
  `artifacts` so phantom-migration detection can check them.
- Cover a fresh database, a second idempotent run, and a representative upgrade
  or backfill path. Preserve existing user data, agent scope, visibility, and
  provenance while repairing uniqueness or deduplication.

## Shared data behavior

- Keep `agentId`/`agent_id`, project, scope, and visibility aligned in reads,
  writes, joins, uniqueness constraints, FTS synchronization, and derived
  records. Test isolation behavior rather than only checking returned shapes.
- Source-backed records retain stable source identifiers and attribution.
  Deletion and reindexing must not leave unscoped or orphaned derived rows.
- Treat SQLite rows as canonical state. Search indexes, vectors, caches, and
  generated ledgers are derived surfaces and should not become competing
  sources of truth.

## Public package proof

- Keep exports and types compatible with current consumers in the daemon, CLI,
  integrations, and SDK-facing packages. Avoid exporting helpers needed by
  only one internal caller.
- Run focused tests first, then build the public package when its exports,
  runtime adapter, or generated declarations change:

```bash
bun test platform/core/src/<area>.test.ts
bun test platform/core/src/migrations/migrations.test.ts
bun run --filter '@signet/core' build
```