Skip to content

chore: move deploy configs to deploy/ directory#3

Merged
ethanj merged 1 commit intomainfrom
chore/deploy-directory
Apr 16, 2026
Merged

chore: move deploy configs to deploy/ directory#3
ethanj merged 1 commit intomainfrom
chore/deploy-directory

Conversation

@ethanj
Copy link
Copy Markdown
Contributor

@ethanj ethanj commented Apr 15, 2026

Summary

  • Move railway.toml to deploy/railway/ — keeps repo root platform-agnostic
  • Add deploy/README.md explaining the directory structure and how to add new platforms
  • Update main README to reference deploy/ instead of root-level railway.toml

Test plan

  • fallow --no-cache clean
  • npx tsc --noEmit clean
  • npm test — 869 tests pass

Platform-specific deploy configs now live under deploy/ so the repo
root stays platform-agnostic. Contributors can add configs for other
platforms (Fly.io, Render, etc.) in the same directory.
@ethanj ethanj merged commit 68dcb5d into main Apr 16, 2026
1 check passed
ethanj added a commit that referenced this pull request Apr 16, 2026
Five functional gaps and one test file identified by PR #3 audit:

1. docker-compose.yml: add restart: unless-stopped to postgres service
   (matches app restart policy; prevents DB death from crashing the stack)

2. src/db/repository-read.ts: add sourceSite + episodeId optional filters
   to listMemories() — dynamic parameterized WHERE clauses

3. src/db/memory-repository.ts: thread sourceSite + episodeId through
   repository wrapper

4. src/services/memory-crud.ts + memory-service.ts: thread the same
   params through the crud helper and service facade list() method

5. src/services/memory-ingest.ts: new performStoreVerbatim() — stores
   content as a single memory without fact extraction, for user-created
   text/file uploads

6. src/services/memory-service.ts: add storeVerbatim() facade method

7. src/routes/memories.ts:
   - Add UUID_REGEX constant
   - Add requireUuidParam() and optionalUuidQuery() helpers
   - UUID-validate /:id param on GET, DELETE, and /:id/audit routes
     (was previously letting "not-a-uuid" reach the DB as 500)
   - Add source_site and episode_id filters to GET /list
   - Add skip_extraction branch to POST /ingest/quick routing to
     storeVerbatim instead of quickIngest

8. src/__tests__/route-validation.test.ts: new 129-line test file
   covering UUID validation, filter behavior, and skip_extraction path.
   Mocks embedText to avoid hitting the real embedding provider with
   the CI placeholder OPENAI_API_KEY.

Validation:
- npx tsc --noEmit: clean
- pnpm test: 876 passing, 0 failed (was 869; +7 new tests)
- npx fallow --no-cache: 0 above threshold, maintainability 91.0

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ethanj added a commit that referenced this pull request Apr 16, 2026
* feat: port remaining atomicmemory-research PR #3 changes to core

Five functional gaps and one test file identified by PR #3 audit:

1. docker-compose.yml: add restart: unless-stopped to postgres service
   (matches app restart policy; prevents DB death from crashing the stack)

2. src/db/repository-read.ts: add sourceSite + episodeId optional filters
   to listMemories() — dynamic parameterized WHERE clauses

3. src/db/memory-repository.ts: thread sourceSite + episodeId through
   repository wrapper

4. src/services/memory-crud.ts + memory-service.ts: thread the same
   params through the crud helper and service facade list() method

5. src/services/memory-ingest.ts: new performStoreVerbatim() — stores
   content as a single memory without fact extraction, for user-created
   text/file uploads

6. src/services/memory-service.ts: add storeVerbatim() facade method

7. src/routes/memories.ts:
   - Add UUID_REGEX constant
   - Add requireUuidParam() and optionalUuidQuery() helpers
   - UUID-validate /:id param on GET, DELETE, and /:id/audit routes
     (was previously letting "not-a-uuid" reach the DB as 500)
   - Add source_site and episode_id filters to GET /list
   - Add skip_extraction branch to POST /ingest/quick routing to
     storeVerbatim instead of quickIngest

8. src/__tests__/route-validation.test.ts: new 129-line test file
   covering UUID validation, filter behavior, and skip_extraction path.
   Mocks embedText to avoid hitting the real embedding provider with
   the CI placeholder OPENAI_API_KEY.

Validation:
- npx tsc --noEmit: clean
- pnpm test: 876 passing, 0 failed (was 869; +7 new tests)
- npx fallow --no-cache: 0 above threshold, maintainability 91.0

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: port atomicmemory-research PR #2 changes missed by extraction

PR #2 merged into research main on 2026-04-14 ~09 UTC, but the core
extraction (7a9b2d5) branched from research commit 3ac0471 which
predates PR #2's merge commit 791c68e. Verified via
`git merge-base --is-ancestor 791c68e 3ac0471` → not ancestor.

Two functional/quality gaps ported:

1. src/services/memory-ingest.ts — fast-AUDN dedup now returns the
   existing memory ID on skip instead of null. Integration sync
   callers rely on this to link to the canonical memory when the
   ingested fact is a near-duplicate.

2. src/routes/route-errors.ts — server-side logging improvements:
   - String(err ?? 'Internal server error') coercion for non-Error
     throwables
   - [status] prefix in the log line for quick severity scanning
   - Full stack trace logged when available

Deliberately NOT ported: PR #2's change to expose err.message to
clients for 500s. Core's consolidated handler returns a generic
'Internal server error' which is the safer default and doesn't leak
internals. Only the server-side log line gets richer.

Validation:
- npx tsc --noEmit: clean
- pnpm test: 876/876 passing
- npx fallow --no-cache: 0 above threshold, maintainability 91.0

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(smoke): make docker smoke CI-runnable and side-by-side safe

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant