Repository navigation
Merged
Conversation
…tion dependency (GIT-97) listRecords/getRecord/upsertRecord routed through /functions/v1/ww-mcp, an edge function that exists on nTEG's Supabase project and is not shipped with the package. On a customer-owned project every such read returned 404. - listRecords/getRecord now use PostgREST directly; upsertRecord delegates to directUpsert (it had no remaining callers). callMcp/getMcpUrl deleted. - Equality filters always emit an explicit operator, so a value containing '.' (a title, a version) is treated as data. - session_start loads session history and threads with Promise.allSettled, so a failed history read no longer discards a successful thread read and drops the panel to the local threads.json. - Transport tests pin reads to /rest/v1 and fail if an edge function returns.
…bytes, not megabytes (GIT-98) In local search mode every server process downloaded every learning with its 1536-dim embedding at startup and discarded it at exit. Short-lived processes (sub-agents, fan-outs, CI) paid full price each time; a customer exhausted a Supabase egress allowance this way. - getLearningsFingerprint(): one request, one row (Prefer: count=exact) gives row count + newest updated_at for ~60 bytes. - vector-disk-cache: rows persisted under that fingerprint, keyed by a hash of (store URL, table). Any mismatch, corruption or unknown fingerprint is a miss and falls back to the download. Atomic temp+rename writes, mode 0600. - Misses are single-flighted across processes with an O_EXCL lock: one leader downloads, followers wait (async, bounded) and read its cache. - cache-flush bypasses the disk cache and rewrites it. - Opt out with GITMEM_VECTOR_DISK_CACHE=0.
…-83) Drives the built MCP server over stdio against a Supabase project that has schema/setup.sql and nothing else: no edge functions, which is what every customer project looks like. Pro tier, with an isolated HOME and GITMEM_DIR per run. - flow: session_start -> list_threads -> recall -> confirm_scars (with relevance) -> create_thread -> list_threads -> session_close -> health. Seeds scars, a prior session and remote threads, plus a local threads.json that deliberately differs from the remote table. - egress: bytes received on cold and warm starts and around two session_starts (GIT-98). --usage N seeds scar usage so refresh_scar_behavioral_scores() has work to do. - blank-supabase-netlog.mjs is preloaded into the server and logs every fetch (method, path, status, body bytes). No request bodies or headers are logged. - Gate: exits 1 on any 4xx/5xx from /rest/v1/ or /functions/v1/ that is not on EXPECTED_FAILURES. Each entry names the ticket that removes it: GIT-73, GIT-105, GIT-106, GIT-84, GIT-97. - Credentials come only from a VENUE_ENV file outside the repo. Config problems exit 2 with a plain message. Production (cjptxyezuxdiinufgrrm), or any URL that is not https://<VENUE_REF>.supabase.co, is refused before any request. - Embeddings come from a local fake Ollama endpoint, so no embedding API key is needed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…matching thread counts (GIT-97) PR #30 removes the ww-mcp dependency, so its expected-failure entry comes out and any ww-mcp 404 fails the run. The driver also fails on: - any request to /functions/v1/, whatever its status - a session_start thread count that differs from list_threads in flow mode Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Unversioned: the version is chosen at release (GIT-94). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
tsc never deletes output whose source was removed, so a publish from a long-lived working tree shipped stale compiled files. The last pack included dist/commands/license.* and dist/tools/create-linear-issue.*, whose source is long gone. prepublishOnly now runs `rm -rf dist && tsc`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Release A: ww-mcp removal (GIT-97) and the on-disk embedding index cache (GIT-98). No schema change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Member
Author
Final prep:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release A: prepared for release. Chris merges, bumps the version and publishes (GIT-94). This PR sets no version; the draft CHANGELOG entry is under
[Unreleased].Linear: https://linear.app/nteg-labs/issue/GIT-97 · https://linear.app/nteg-labs/issue/GIT-98 · GIT-83
Contents (merged in order,
--no-ff, no conflicts)6ee7e9d3214426d6a5ca028366f6: driver gate changes:EXPECTED_FAILURES, so a ww-mcp 404 now fails the gate./functions/v1/request, whatever its status, and on a thread-count mismatch betweensession_startandlist_threads.9282ca7: draft CHANGELOG entry#30 and #31 both edit
supabase-client.ts, and it auto-merged. The result has nocallMcp,getMcpUrlorfunctions/v1references, and it keepsgetLearningsFingerprintandgetSupabaseUrl.Gates: all pass on
release/Anpx tsc --noEmit -p .npm run test:unitwith an isolatedHOME(GIT-92)HOMEonly gained an.npmdirectory.flowon gitmem-e2e (vujndhcumgroztfkkdus)/functions/v1/requests: 0.session_startthread count 3 =list_threads3.MCP HTTP error: 404andFailed to load last sessionboth absent from stderr.health: 0 failures.egress, 250 learningsExpected failures still seen, all allowlisted with tickets:
scar_usage404scar_enforcement_variants400knowledge_triples400gitmem_query_metrics409, intermittentVenue note: gitmem-e2e currently has GIT-84's
setup.sqlapplied, from #33's re-apply check. It has the same tables asmain'ssetup.sql; the only differences are the refresh function'sIS DISTINCT FROMguard and twoDROP POLICY IF EXISTSlines.main'ssetup.sqlitself can't be re-applied over an existing schema; that's the bug #33 fixes.Before publishing: checks for the person releasing
distfrom clean.npm pack --dry-runin this working tree includes 4 stale build outputs whose source was deleted long ago:dist/commands/license.{js,d.ts}anddist/tools/create-linear-issue.{js,d.ts}.tscnever deletes old output. Runrm -rf dist && npm run buildbeforenpm publish.npm ci, then re-run the unit suite. Localnode_modulesis stale: vitest 1.6.1 is installed, whilepackage.jsonandpackage-lock.jsonpin 4.0.18. There are also extraneous packages such asonnxruntime-web. The unit gate above ran on 1.6.1.dist/(228),hooks/(11),bin/(3),schema/(setup.sql,starter-scars.json), README, CHANGELOG, LICENSE,package.jsonand 4 agent templates. Not included: tests, the e2e driver and its netlog preload, any.env, anything from the scratchpad,*.tgz, and the untracked drafts.Critical Dependabot alerts (4)
next<15.5.24 (RCE in the image-optimization API with AVIF)apps/docsnext<15.5.24 (RCE on Windows-hosted servers)apps/docsvitest4.0.x (Vitest UI server file read/exec)protobufjs<7.5.5@testcontainers/postgresql→ dockerode → grpconnxruntime-web, which isn't inpackage.jsonor the lockfile and doesn't ship.The runtime dependencies are only
@modelcontextprotocol/sdk,uuidandzod, and none of them has a critical alert.Not in this release (known)
confirm_scarsrelevance and scar usage are still not recorded on customer stores. The write targets the unprefixedscar_usagetable, which is fixed in fix: route the usage table through getTableName and make setup.sql re-applicable (GIT-84) #33 (GIT-84) and not included here. The CHANGELOG says so under Known issues, and it deliberately does not claim the relevance feedback is now kept.gitmem_query_metrics.memories_applied, written byupdateRelevanceData, doesn't exist insetup.sql. This is schema drift, found while checking the claim above. It needs a ticket.No merge, no version bump, no publish.
🤖 Generated with Claude Code