chore: format tracked sf migrating projections

This commit is contained in:
Mikael Hugo 2026-05-06 23:08:02 +02:00
parent f2db20b4d6
commit a0eee1de72
6 changed files with 959 additions and 995 deletions

View file

@ -1,102 +1,96 @@
{
"schemaVersion": 1,
"origin": "db-projection",
"generatedAt": "2026-05-06T21:03:18.498Z",
"sourceDbPath": "/home/mhugo/code/singularity-forge/.sf/sf.db",
"milestone": {
"id": "M001-6377a4",
"title": "Consolidate Memory Systems into Unified node:sqlite Store",
"status": "active",
"vision": "Replace the three fragmented memory systems (KNOWLEDGE.md, memory-store.js/sf.db, and memory extension/sql.js) with a single unified memory store backed by node:sqlite. All memory ingestion, querying, and prompt injection flows through one canonical database table with semantic search, confidence ranking, and automatic maintenance.",
"dependsOn": [],
"successCriteria": [
"A single `memories` table in `sf.db` stores all project memory with categories, confidence, hit_count, and embeddings",
"Session transcript extraction pipeline writes directly to `sf.db` instead of separate `agent.db`",
"KNOWLEDGE.md is retired as a live system; existing entries are optionally migrated",
"Memory query returns ranked results via `getRelevantMemoriesRanked(query, limit)` using node:sqlite",
"System prompt injection uses the unified memory store, not multiple competing sources",
"All better-sqlite3 and sql.js dependencies for memory are removed"
],
"definitionOfDone": [
"All three legacy memory systems are removed or deprecated",
"Unified memory store passes all new tests",
"Migration script can import existing KNOWLEDGE.md and old agent.db data",
"Documentation updated to describe the single memory system",
"No references to better-sqlite3 or sql.js in memory-related code"
],
"requirementCoverage": "Covers: unified memory storage, semantic search, session-based learning. Partially covers: cross-session context persistence. Leaves for later: multi-project memory sharing, cloud-synced memory.",
"boundaryMapMarkdown": "### S01 → S02\n\nProduces:\n- Unified `memories` table schema in `sf.db`\n- `MemoryStore` class with CRUD, query, and ranking API\n- `formatMemoriesForPrompt()` for system prompt injection\n\nConsumes:\n- Existing `sf-db.js` adapter and schema initialization\n\n### S02 → S03\n\nProduces:\n- Session transcript scanner and LLM extraction pipeline\n- Direct write path to `sf.db` memories table\n- `/memory` command reading from unified store\n\nConsumes:\n- `MemoryStore` API from S01\n- `completeSimple` LLM call from pi-ai\n\n### S03 → S04\n\nProduces:\n- KNOWLEDGE.md importer\n- Legacy agent.db migration script\n- Deprecation warnings for old memory paths\n\nConsumes:\n- `MemoryStore` API from S01\n- Existing KNOWLEDGE.md and agent.db files"
},
"slices": [
{
"id": "S01",
"title": "Unified Memory Schema and Core API",
"status": "pending",
"risk": "high",
"depends": [],
"demo": "A test creates a memory, queries it by relevance, and formats it for prompt injection — all via node:sqlite",
"goal": "Create the canonical `memories` table in `sf.db` and a `MemoryStore` class that replaces memory-store.js with a node:sqlite implementation",
"successCriteria": "- `sf.db` has a `memories` table with: id, category, content, confidence, hit_count, source, session_id, source_unit_type, source_unit_id, created_at, updated_at, superseded_by\n- `MemoryStore` class exposes: createMemory, updateMemory, reinforceMemory, supersedeMemory, getActiveMemoriesRanked, getRelevantMemoriesRanked, formatMemoriesForPrompt\n- All methods gracefully degrade when DB is unavailable\n- Unit tests cover CRUD, ranking, source filtering, and embedding fallback",
"proofLevel": "contract",
"integrationClosure": "Produces the MemoryStore API that all downstream slices consume. No external wiring yet.",
"observabilityImpact": "No runtime signals added yet; tests verify table schema and query correctness.",
"isSketch": false,
"sketchScope": "",
"sequence": 1
},
{
"id": "S02",
"title": "Session Transcript Extraction Pipeline",
"status": "pending",
"risk": "medium",
"depends": [
"S01"
],
"demo": "After running a session, the pipeline extracts memories and stores them in sf.db; `/memory view` shows the extracted knowledge",
"goal": "Port the two-phase extraction pipeline from the memory extension to write directly into the unified sf.db store instead of separate agent.db",
"successCriteria": "- Session .jsonl files are scanned and filtered for the current cwd\n- Phase 1: LLM extracts durable knowledge from transcripts, writes to sf.db memories table with source='extracted'\n- Phase 2: Consolidation deduplicates and ranks memories\n- /memory command reads from unified store\n- Pipeline runs fire-and-forget on session start without blocking dispatch\n- Rate limiting prevents store bloat (max 10 memories per session)",
"proofLevel": "integration",
"integrationClosure": "Wires the extraction pipeline into the session lifecycle and replaces the old memory extension storage path.",
"observabilityImpact": "Pipeline logs extraction stats (processed, errors) to the console. Memory store tracks hit_count for reinforcement.",
"isSketch": false,
"sketchScope": "",
"sequence": 2
},
{
"id": "S03",
"title": "Migration and Legacy Deprecation",
"status": "pending",
"risk": "low",
"depends": [
"S02"
],
"demo": "Running a migration command imports existing KNOWLEDGE.md and agent.db memories into sf.db; old files are left as read-only backups",
"goal": "Provide a one-time migration path from KNOWLEDGE.md and the old agent.db into the unified store, then deprecate the legacy systems",
"successCriteria": "- Migration script can import KNOWLEDGE.md entries as memories with source='migrated'\n- Migration script can import agent.db stage1_outputs as memories with source='extracted'\n- Dry-run mode reports counts without modifying database\n- sf.db is automatically backed up before migration\n- knowledge-compounding.js and knowledge-injector.js are removed or no-op'd\n- Memory extension uses MemoryStore instead of sql.js\n- CHANGELOG documents the consolidation and deprecation",
"proofLevel": "contract",
"integrationClosure": "Cleans up legacy code paths and provides a safe migration for existing users.",
"observabilityImpact": "Migration script reports counts of imported records per source. Deprecation warnings logged for old API usage.",
"isSketch": false,
"sketchScope": "",
"sequence": 3
},
{
"id": "S04",
"title": "System Prompt Integration and Cleanup",
"status": "pending",
"risk": "medium",
"depends": [
"S03"
],
"demo": "Starting a new session injects relevant ranked memories from sf.db into the system prompt; no references to old memory systems remain in the codebase",
"goal": "Replace all system prompt injection paths to use the unified memory store, remove dead code, and verify end-to-end",
"successCriteria": "Not provided.",
"proofLevel": "Not provided.",
"integrationClosure": "Not provided.",
"observabilityImpact": "Not provided.",
"isSketch": false,
"sketchScope": "",
"sequence": 4
}
]
"schemaVersion": 1,
"origin": "db-projection",
"generatedAt": "2026-05-06T21:03:18.498Z",
"sourceDbPath": "/home/mhugo/code/singularity-forge/.sf/sf.db",
"milestone": {
"id": "M001-6377a4",
"title": "Consolidate Memory Systems into Unified node:sqlite Store",
"status": "active",
"vision": "Replace the three fragmented memory systems (KNOWLEDGE.md, memory-store.js/sf.db, and memory extension/sql.js) with a single unified memory store backed by node:sqlite. All memory ingestion, querying, and prompt injection flows through one canonical database table with semantic search, confidence ranking, and automatic maintenance.",
"dependsOn": [],
"successCriteria": [
"A single `memories` table in `sf.db` stores all project memory with categories, confidence, hit_count, and embeddings",
"Session transcript extraction pipeline writes directly to `sf.db` instead of separate `agent.db`",
"KNOWLEDGE.md is retired as a live system; existing entries are optionally migrated",
"Memory query returns ranked results via `getRelevantMemoriesRanked(query, limit)` using node:sqlite",
"System prompt injection uses the unified memory store, not multiple competing sources",
"All better-sqlite3 and sql.js dependencies for memory are removed"
],
"definitionOfDone": [
"All three legacy memory systems are removed or deprecated",
"Unified memory store passes all new tests",
"Migration script can import existing KNOWLEDGE.md and old agent.db data",
"Documentation updated to describe the single memory system",
"No references to better-sqlite3 or sql.js in memory-related code"
],
"requirementCoverage": "Covers: unified memory storage, semantic search, session-based learning. Partially covers: cross-session context persistence. Leaves for later: multi-project memory sharing, cloud-synced memory.",
"boundaryMapMarkdown": "### S01 → S02\n\nProduces:\n- Unified `memories` table schema in `sf.db`\n- `MemoryStore` class with CRUD, query, and ranking API\n- `formatMemoriesForPrompt()` for system prompt injection\n\nConsumes:\n- Existing `sf-db.js` adapter and schema initialization\n\n### S02 → S03\n\nProduces:\n- Session transcript scanner and LLM extraction pipeline\n- Direct write path to `sf.db` memories table\n- `/memory` command reading from unified store\n\nConsumes:\n- `MemoryStore` API from S01\n- `completeSimple` LLM call from pi-ai\n\n### S03 → S04\n\nProduces:\n- KNOWLEDGE.md importer\n- Legacy agent.db migration script\n- Deprecation warnings for old memory paths\n\nConsumes:\n- `MemoryStore` API from S01\n- Existing KNOWLEDGE.md and agent.db files"
},
"slices": [
{
"id": "S01",
"title": "Unified Memory Schema and Core API",
"status": "pending",
"risk": "high",
"depends": [],
"demo": "A test creates a memory, queries it by relevance, and formats it for prompt injection — all via node:sqlite",
"goal": "Create the canonical `memories` table in `sf.db` and a `MemoryStore` class that replaces memory-store.js with a node:sqlite implementation",
"successCriteria": "- `sf.db` has a `memories` table with: id, category, content, confidence, hit_count, source, session_id, source_unit_type, source_unit_id, created_at, updated_at, superseded_by\n- `MemoryStore` class exposes: createMemory, updateMemory, reinforceMemory, supersedeMemory, getActiveMemoriesRanked, getRelevantMemoriesRanked, formatMemoriesForPrompt\n- All methods gracefully degrade when DB is unavailable\n- Unit tests cover CRUD, ranking, source filtering, and embedding fallback",
"proofLevel": "contract",
"integrationClosure": "Produces the MemoryStore API that all downstream slices consume. No external wiring yet.",
"observabilityImpact": "No runtime signals added yet; tests verify table schema and query correctness.",
"isSketch": false,
"sketchScope": "",
"sequence": 1
},
{
"id": "S02",
"title": "Session Transcript Extraction Pipeline",
"status": "pending",
"risk": "medium",
"depends": ["S01"],
"demo": "After running a session, the pipeline extracts memories and stores them in sf.db; `/memory view` shows the extracted knowledge",
"goal": "Port the two-phase extraction pipeline from the memory extension to write directly into the unified sf.db store instead of separate agent.db",
"successCriteria": "- Session .jsonl files are scanned and filtered for the current cwd\n- Phase 1: LLM extracts durable knowledge from transcripts, writes to sf.db memories table with source='extracted'\n- Phase 2: Consolidation deduplicates and ranks memories\n- /memory command reads from unified store\n- Pipeline runs fire-and-forget on session start without blocking dispatch\n- Rate limiting prevents store bloat (max 10 memories per session)",
"proofLevel": "integration",
"integrationClosure": "Wires the extraction pipeline into the session lifecycle and replaces the old memory extension storage path.",
"observabilityImpact": "Pipeline logs extraction stats (processed, errors) to the console. Memory store tracks hit_count for reinforcement.",
"isSketch": false,
"sketchScope": "",
"sequence": 2
},
{
"id": "S03",
"title": "Migration and Legacy Deprecation",
"status": "pending",
"risk": "low",
"depends": ["S02"],
"demo": "Running a migration command imports existing KNOWLEDGE.md and agent.db memories into sf.db; old files are left as read-only backups",
"goal": "Provide a one-time migration path from KNOWLEDGE.md and the old agent.db into the unified store, then deprecate the legacy systems",
"successCriteria": "- Migration script can import KNOWLEDGE.md entries as memories with source='migrated'\n- Migration script can import agent.db stage1_outputs as memories with source='extracted'\n- Dry-run mode reports counts without modifying database\n- sf.db is automatically backed up before migration\n- knowledge-compounding.js and knowledge-injector.js are removed or no-op'd\n- Memory extension uses MemoryStore instead of sql.js\n- CHANGELOG documents the consolidation and deprecation",
"proofLevel": "contract",
"integrationClosure": "Cleans up legacy code paths and provides a safe migration for existing users.",
"observabilityImpact": "Migration script reports counts of imported records per source. Deprecation warnings logged for old API usage.",
"isSketch": false,
"sketchScope": "",
"sequence": 3
},
{
"id": "S04",
"title": "System Prompt Integration and Cleanup",
"status": "pending",
"risk": "medium",
"depends": ["S03"],
"demo": "Starting a new session injects relevant ranked memories from sf.db into the system prompt; no references to old memory systems remain in the codebase",
"goal": "Replace all system prompt injection paths to use the unified memory store, remove dead code, and verify end-to-end",
"successCriteria": "Not provided.",
"proofLevel": "Not provided.",
"integrationClosure": "Not provided.",
"observabilityImpact": "Not provided.",
"isSketch": false,
"sketchScope": "",
"sequence": 4
}
]
}

View file

@ -1,28 +1,28 @@
{
"schemaVersion": 3,
"status": "warming",
"startedAt": "2026-05-06T21:03:03.705Z",
"command": "/nix/store/vzx1mi9c0xfadmsm9dhd83d005cb1qs9-coreutils-9.8/bin/timeout",
"cwd": "/home/mhugo/code/singularity-forge",
"args": [
"--kill-after=10",
"600",
"/home/mhugo/.cargo/bin/sift",
"search",
"--json",
"--strategy",
"page-index-hybrid",
"--limit",
"1",
"--retriever-timeout-ms",
"30000",
".",
"repo architecture source tests entrypoints configuration"
],
"scope": ".",
"siftBinary": "/home/mhugo/.cargo/bin/sift",
"hardTimeoutSec": 600,
"searchCache": "/home/mhugo/code/singularity-forge/.sf/runtime/sift/search-cache",
"tmpDir": "/home/mhugo/code/singularity-forge/.sf/runtime/sift/tmp",
"pid": 602029
"schemaVersion": 3,
"status": "warming",
"startedAt": "2026-05-06T21:03:03.705Z",
"command": "/nix/store/vzx1mi9c0xfadmsm9dhd83d005cb1qs9-coreutils-9.8/bin/timeout",
"cwd": "/home/mhugo/code/singularity-forge",
"args": [
"--kill-after=10",
"600",
"/home/mhugo/.cargo/bin/sift",
"search",
"--json",
"--strategy",
"page-index-hybrid",
"--limit",
"1",
"--retriever-timeout-ms",
"30000",
".",
"repo architecture source tests entrypoints configuration"
],
"scope": ".",
"siftBinary": "/home/mhugo/.cargo/bin/sift",
"hardTimeoutSec": 600,
"searchCache": "/home/mhugo/code/singularity-forge/.sf/runtime/sift/search-cache",
"tmpDir": "/home/mhugo/code/singularity-forge/.sf/runtime/sift/tmp",
"pid": 602029
}

View file

@ -1,19 +1,19 @@
{
"schemaVersion": 1,
"generatedAt": "2026-05-06T21:03:15.738Z",
"verdict": "clear",
"classification": "healthy",
"signals": {
"lock": "missing",
"parity": "ok",
"ledger": "consistent",
"runtimeProjection": "ok",
"wrapper": "unknown"
},
"currentUnit": null,
"latestRun": null,
"runtimeUnits": [],
"issues": [],
"recommendations": [],
"reportPath": "/home/mhugo/code/singularity-forge/.sf/runtime/uok-diagnostics.json"
"schemaVersion": 1,
"generatedAt": "2026-05-06T21:03:15.738Z",
"verdict": "clear",
"classification": "healthy",
"signals": {
"lock": "missing",
"parity": "ok",
"ledger": "consistent",
"runtimeProjection": "ok",
"wrapper": "unknown"
},
"currentUnit": null,
"latestRun": null,
"runtimeUnits": [],
"issues": [],
"recommendations": [],
"reportPath": "/home/mhugo/code/singularity-forge/.sf/runtime/uok-diagnostics.json"
}

View file

@ -1,27 +1,27 @@
{
"generatedAt": "2026-05-06T21:03:18.493Z",
"sourcePath": "/home/mhugo/code/singularity-forge/.sf/runtime/uok-parity.jsonl",
"totalEvents": 0,
"paths": {},
"statuses": {},
"criticalMismatches": [],
"historicalCriticalMismatches": [],
"currentErrorEvents": 0,
"historicalErrorEvents": 0,
"enterEvents": 0,
"exitEvents": 0,
"missingExitEvents": 0,
"legacyMissingExitEvents": 0,
"ledgerRunCount": 0,
"unmatchedRuns": [],
"freshUnmatchedRuns": [],
"historicalUnmatchedRuns": [],
"totalDiffs": 0,
"divergencesByPlane": {
"plan": 0,
"graph": 0,
"model-policy": 0,
"audit-envelope": 0,
"gitops": 0
}
"generatedAt": "2026-05-06T21:03:18.493Z",
"sourcePath": "/home/mhugo/code/singularity-forge/.sf/runtime/uok-parity.jsonl",
"totalEvents": 0,
"paths": {},
"statuses": {},
"criticalMismatches": [],
"historicalCriticalMismatches": [],
"currentErrorEvents": 0,
"historicalErrorEvents": 0,
"enterEvents": 0,
"exitEvents": 0,
"missingExitEvents": 0,
"legacyMissingExitEvents": 0,
"ledgerRunCount": 0,
"unmatchedRuns": [],
"freshUnmatchedRuns": [],
"historicalUnmatchedRuns": [],
"totalDiffs": 0,
"divergencesByPlane": {
"plan": 0,
"graph": 0,
"model-policy": 0,
"audit-envelope": 0,
"gitops": 0
}
}

View file

@ -1,181 +1,181 @@
{
"schemaVersion": 1,
"applied": [
{
"path": "src/AGENTS.md",
"template": "src/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:ac5f874be887aed0bd29105a7c3b7e9269b4b3c0cc7b5b1506da0994c466cf01"
},
{
"path": "tests/AGENTS.md",
"template": "tests/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:dab2b9a31c2c48e07e4913cd8744be8553f279ea516ebc138730301ae401a683"
},
{
"path": "docs/AGENTS.md",
"template": "docs/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:b35804ce78ca309cab8769719f6e0738141f1121682fbd46490419abd2c6f870"
},
{
"path": "docs/records/AGENTS.md",
"template": "docs/records/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:dc21117dfa7607d7ce4cc6ce5724658348a95e9807673ff526b9cf02e2568de0"
},
{
"path": "docs/RECORDS_KEEPER.md",
"template": "docs/RECORDS_KEEPER.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:3872de9cd72bd9129814a5e77e3b86abe76bef33f3ca34e04ae7582b4cfd066a"
},
{
"path": "docs/design-docs/AGENTS.md",
"template": "docs/design-docs/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:707d43067edcfd33dc0a11db32d383f89739e187f95da4bda6b94575a9e3d272"
},
{
"path": "docs/exec-plans/AGENTS.md",
"template": "docs/exec-plans/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:7bd9f815617cb42b1f2c85e6d557986a2f1e7fbc081fcc4e71f3d14cecefc5f0"
},
{
"path": "docs/generated/db-schema.md",
"template": "docs/generated/db-schema.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:8488a607c1a2981654a3b030600d2e10627d132ebd0c75700648a08dede93368"
},
{
"path": "docs/product-specs/index.md",
"template": "docs/product-specs/index.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:ca3477e8d74fe277a2e0b2cdb3f03c235e294015a6ece2f571a82acc7475d31c"
},
{
"path": "docs/product-specs/AGENTS.md",
"template": "docs/product-specs/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:cc7b5687e8b1ea78848ee318ca5a25346e5a6ee0dc33b54506d8f56bc16f13c4"
},
{
"path": "docs/references/design-system-reference-llms.txt",
"template": "docs/references/design-system-reference-llms.txt",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:5a5a35a3f80c8b4433ad30c1f155b1e8c7fd245ce2a3def9627daa9f40854eb3"
},
{
"path": "docs/references/nixpacks-llms.txt",
"template": "docs/references/nixpacks-llms.txt",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:22f9a8549e3ced71d0b0a912c6dcdfb2ec83a573168ee1b44ca266f1eb0307bf"
},
{
"path": "docs/references/uv-llms.txt",
"template": "docs/references/uv-llms.txt",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:e8a998667c0f830a15b68e207f6b69e6377dd7e82728833f842678f72864e9b6"
},
{
"path": "docs/FRONTEND.md",
"template": "docs/FRONTEND.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:03087953d690c9902d35297720d1482262c1610e3050084f891db3be711571ef"
},
{
"path": ".sf/harness/AGENTS.md",
"template": ".sf/harness/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:685c41e601340086b8076263a71315c66554efdaeb074bc1b907eebf879174c6"
},
{
"path": ".sf/harness/specs/AGENTS.md",
"template": ".sf/harness/specs/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:0f4fbf4111704d05744e4a4e13a9bf3eada262f0da9517c2010f0b46f4bd3c45"
},
{
"path": ".sf/harness/specs/bootstrap.md",
"template": ".sf/harness/specs/bootstrap.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:b86ba7cf2cec39a7a9f9d94f885998cfe26eebfc5b76fdd8375ef125e927e0cf"
},
{
"path": ".sf/harness/evals/AGENTS.md",
"template": ".sf/harness/evals/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:6f88bf8a2bad95d8db5985c9b3317b9edd65592c12e98bb0bff1a24ec152d768"
},
{
"path": ".sf/harness/graders/AGENTS.md",
"template": ".sf/harness/graders/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:2db17feae1acfe62d85aafbe32d016873c3036d4d76e9dd0db478375fae0794e"
},
{
"path": ".sf/PRINCIPLES.md",
"template": ".sf/PRINCIPLES.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:9d5c50cb3d602f66468a33a4324068fab8a022fab0fd6940c371a5986af2947e"
},
{
"path": ".sf/TASTE.md",
"template": ".sf/TASTE.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:ee9ea8ade6f8434e9425a989bab9735d2068395978d61940e18679b93b1f11b0"
},
{
"path": ".sf/ANTI-GOALS.md",
"template": ".sf/ANTI-GOALS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:56b4f7d20d49e4558ac5aea5e967cf3475ef98d68dfa8985ba42b3e2b0d72e25"
}
]
"schemaVersion": 1,
"applied": [
{
"path": "src/AGENTS.md",
"template": "src/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:ac5f874be887aed0bd29105a7c3b7e9269b4b3c0cc7b5b1506da0994c466cf01"
},
{
"path": "tests/AGENTS.md",
"template": "tests/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:dab2b9a31c2c48e07e4913cd8744be8553f279ea516ebc138730301ae401a683"
},
{
"path": "docs/AGENTS.md",
"template": "docs/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:b35804ce78ca309cab8769719f6e0738141f1121682fbd46490419abd2c6f870"
},
{
"path": "docs/records/AGENTS.md",
"template": "docs/records/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:dc21117dfa7607d7ce4cc6ce5724658348a95e9807673ff526b9cf02e2568de0"
},
{
"path": "docs/RECORDS_KEEPER.md",
"template": "docs/RECORDS_KEEPER.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:3872de9cd72bd9129814a5e77e3b86abe76bef33f3ca34e04ae7582b4cfd066a"
},
{
"path": "docs/design-docs/AGENTS.md",
"template": "docs/design-docs/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:707d43067edcfd33dc0a11db32d383f89739e187f95da4bda6b94575a9e3d272"
},
{
"path": "docs/exec-plans/AGENTS.md",
"template": "docs/exec-plans/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:7bd9f815617cb42b1f2c85e6d557986a2f1e7fbc081fcc4e71f3d14cecefc5f0"
},
{
"path": "docs/generated/db-schema.md",
"template": "docs/generated/db-schema.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:8488a607c1a2981654a3b030600d2e10627d132ebd0c75700648a08dede93368"
},
{
"path": "docs/product-specs/index.md",
"template": "docs/product-specs/index.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:ca3477e8d74fe277a2e0b2cdb3f03c235e294015a6ece2f571a82acc7475d31c"
},
{
"path": "docs/product-specs/AGENTS.md",
"template": "docs/product-specs/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:cc7b5687e8b1ea78848ee318ca5a25346e5a6ee0dc33b54506d8f56bc16f13c4"
},
{
"path": "docs/references/design-system-reference-llms.txt",
"template": "docs/references/design-system-reference-llms.txt",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:5a5a35a3f80c8b4433ad30c1f155b1e8c7fd245ce2a3def9627daa9f40854eb3"
},
{
"path": "docs/references/nixpacks-llms.txt",
"template": "docs/references/nixpacks-llms.txt",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:22f9a8549e3ced71d0b0a912c6dcdfb2ec83a573168ee1b44ca266f1eb0307bf"
},
{
"path": "docs/references/uv-llms.txt",
"template": "docs/references/uv-llms.txt",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:e8a998667c0f830a15b68e207f6b69e6377dd7e82728833f842678f72864e9b6"
},
{
"path": "docs/FRONTEND.md",
"template": "docs/FRONTEND.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:03087953d690c9902d35297720d1482262c1610e3050084f891db3be711571ef"
},
{
"path": ".sf/harness/AGENTS.md",
"template": ".sf/harness/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:685c41e601340086b8076263a71315c66554efdaeb074bc1b907eebf879174c6"
},
{
"path": ".sf/harness/specs/AGENTS.md",
"template": ".sf/harness/specs/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:0f4fbf4111704d05744e4a4e13a9bf3eada262f0da9517c2010f0b46f4bd3c45"
},
{
"path": ".sf/harness/specs/bootstrap.md",
"template": ".sf/harness/specs/bootstrap.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:b86ba7cf2cec39a7a9f9d94f885998cfe26eebfc5b76fdd8375ef125e927e0cf"
},
{
"path": ".sf/harness/evals/AGENTS.md",
"template": ".sf/harness/evals/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:6f88bf8a2bad95d8db5985c9b3317b9edd65592c12e98bb0bff1a24ec152d768"
},
{
"path": ".sf/harness/graders/AGENTS.md",
"template": ".sf/harness/graders/AGENTS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:2db17feae1acfe62d85aafbe32d016873c3036d4d76e9dd0db478375fae0794e"
},
{
"path": ".sf/PRINCIPLES.md",
"template": ".sf/PRINCIPLES.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:9d5c50cb3d602f66468a33a4324068fab8a022fab0fd6940c371a5986af2947e"
},
{
"path": ".sf/TASTE.md",
"template": ".sf/TASTE.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:ee9ea8ade6f8434e9425a989bab9735d2068395978d61940e18679b93b1f11b0"
},
{
"path": ".sf/ANTI-GOALS.md",
"template": ".sf/ANTI-GOALS.md",
"version": "2.75.3",
"appliedAt": "2026-05-06T19:53:05.336Z",
"stateAtApply": "pending",
"contentHash": "sha256:56b4f7d20d49e4558ac5aea5e967cf3475ef98d68dfa8985ba42b3e2b0d72e25"
}
]
}

File diff suppressed because it is too large Load diff