This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+3 more
ReleasePort's take
Light signalv0.15.0 introduces a new `pull_request` entity in the schema registry and several bug‑fixes across APIs, CI baselines, and rendering components.
Why it matters: Adds first‑class pull_request support (feature severity 40) while correcting critical bugs that affect graph queries, CI pipelines, issue submission handling, and markdown rendering; all changes land in version v0.15.0 released 2026‑05‑29.
Summary
AI summaryBroad release touches Commits, Internal changes, v0.15.0, and Behavior changes.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Adds first-class `pull_request` entity type to schema registry. Adds first-class `pull_request` entity type to schema registry. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Feature | Medium |
Adds `/end` session-close audit skill to surface remaining work. Adds `/end` session-close audit skill to surface remaining work. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Feature | Medium |
Adds MCP transport preset `e` with Node-version pinning in LaunchAgent scripts. Adds MCP transport preset `e` with Node-version pinning in LaunchAgent scripts. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Feature | Medium |
Extends `AgentCapabilityOp` to authorize GitHub harness operations and repo scopes. Extends `AgentCapabilityOp` to authorize GitHub harness operations and repo scopes. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Performance | Medium |
Improves full re-mirror speed by hoisting dynamic import to module load. Improves full re-mirror speed by hoisting dynamic import to module load. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Bugfix | Medium |
Fixes `retrieve_graph_neighborhood` to return source records correctly. Fixes `retrieve_graph_neighborhood` to return source records correctly. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Bugfix | Medium |
Restores `main` CI baseline by repointing inspector submodule to last‑good commit. Restores `main` CI baseline by repointing inspector submodule to last‑good commit. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Bugfix | Medium |
Fixes `submit_issue` to handle keyless and guest agents gracefully. Fixes `submit_issue` to handle keyless and guest agents gracefully. Source: llm_adapter@2026-05-29 Confidence: low |
— |
| Bugfix | Low |
Removes deprecated Husky v9 shebang from `.husky/pre-commit`. Removes deprecated Husky v9 shebang from `.husky/pre-commit`. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Bugfix | Low |
Fixes heading‑skip issue in `renderEntityMarkdown`'s `content_field`. Fixes heading‑skip issue in `renderEntityMarkdown`'s `content_field`. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Bugfix | Low |
Fixes `submit_issue` to skip AAuth when no keypair is present and retry as unsigned guest on `AUTH_REQUIRED`. Fixes `submit_issue` to skip AAuth when no keypair is present and retry as unsigned guest on `AUTH_REQUIRED`. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
Full changelog
Install
npm install -g [email protected]
| | |
|:--|:--|
| npm | https://www.npmjs.com/package/neotoma/v/0.15.0 |
| Compare | v0.14.0 → v0.15.0 — view diff |
v0.15.0
Summary
This release seeds a first-class pull_request entity type, extends agent grants to cover GitHub-harness operations, hardens the issue-submission path for keyless and guest agents, and fixes a graph-query bug that silently dropped source records. It also restores the main CI baseline (broken inspector submodule pin) and ships the LaunchAgent deployment tooling for running Neotoma daemons under launchd.
What changed for npm package users
- New
pull_requestentity type. The schema registry now seeds apull_requesttype with declared fields (resolves #158), so agents can store and retrieve pull requests as first-class entities instead of untyped records. retrieve_graph_neighborhoodnow returns source records correctly. Thenode_type: "source"branch and the entity-branchinclude_sourcessub-path queried a singularsourcetable that does not exist, so they silently returned no rows for every user. Both now query the canonicalsourcestable (resolves #389, #394).- Faster full re-mirror. The canonical mirror no longer performs a dynamic
import()once per entity inside the per-profile render loop; the renderer is imported once at module load (resolves #371). - New
/endsession-close audit skill that surfaces remaining work and verifies session data intended for Neotoma is actually stored before context is lost (#373). - MCP transport preset
eadded for the MCP server, with Node-version pinning in the LaunchAgent run scripts.
API surface & contracts
- Additive only.
npm run openapi:bc-diffagainst v0.14.0 reports no breaking changes. pull_requestis a new declared schema; no existing request or response shapes were narrowed.
Behavior changes
- Agents that query
retrieve_graph_neighborhoodfor a source node, or requestinclude_sourceson an entity node, now receive the source rows they previously did not. submit_issueno longer hard-fails for agents without an AAuth keypair: it skips AAuth when no keypair is present and retries as an unsigned guest when AAuth returnsAUTH_REQUIRED(resolves #944, #937). Issue submission also orders Neotoma-first.- Agent grants can now authorize
github_harnessoperations and repo scopes via an extendedAgentCapabilityOp(closes #934), enabling attributed GitHub actions through the harness.
Docs site & CI / tooling
- CI baseline restored.
main's baseline lane had failed since 2026-05-25 because theinspectorsubmodule was pinned to a commit never pushed to the inspector remote. The pin is repointed to the last-good published commit (#1471). - Husky v10 readiness. Removed the deprecated v9 shebang lines from
.husky/pre-committhat printed a deprecation warning on every commit and would fail under Husky v10 (resolves #400). - Instruction docs updated for mandatory extraction, GitHub entity types, and an awaiting-reply rule (#174, #175, #176).
Internal changes
- LaunchAgent deployment tooling. Templatized LaunchAgent plists for the prod server, dev server, issues-sync, and watch-build daemons, with an
install.sh, a README covering install/load/unload/logs/template vars, and.gitignorerules so only.tmplsources are tracked. NEOTOMA_LOCAL_PORT_DISK_PROFILEnow overrides the write-side disk profile for the local HTTP port file.- The prod-server LaunchAgent bypasses
pick-port.js(resolves ateles#10), andNEOTOMA_TRUST_PROD_LOOPBACK=1is set in both LaunchAgent run scripts. - Machine-specific configs are gitignored;
.cursor/uses relative symlinks; MCP configs synced. content_fieldheading-skip fix inrenderEntityMarkdown(resolves #262).
Fixes
- #389 / #394 —
retrieve_graph_neighborhoodqueried a nonexistent singularsourcetable; now usessources. - #371 — dynamic import inside the per-entity mirror render loop, hoisted to module load.
- #400 — deprecated Husky v9 shebang removed from
.husky/pre-commit. - #262 —
content_fieldheading-skip inrenderEntityMarkdown. - #944 / #937 —
submit_issuekeyless/guest handling. - ateles#10 — prod-server LaunchAgent port-pick bypass.
Tests and validation
- New HTTP-level integration regression (
tests/integration/graph_neighborhood_source_branch.test.ts) boots the Express app and asserts the source branch returns rows; verified to fail against the singular table and pass after the fix. - Mirror and markdown suites pass (54 tests) after the import hoist.
- New
pull_requestschema covered bytests/unit/pull_request_schema.test.ts. - Automated test catalog regenerated (400 files).
npm run type-check, lint (0 errors), Prettier, and site-copy lint all clean.
Security hardening
The diff classifier flagged this release as sensitive because src/actions.ts is in the diff (the v0.11.1 auth-bypass surface heuristic). The actual change is two db.from("source") → db.from("sources") substitutions; adversarial review of all six prompt axes (alternate-path auth, proxy trust, local-dev widening, unauth public route, guest-access policy, AAuth downgrade) found no security regression. See docs/releases/in_progress/v0.15.0/security_review.md for the full walkthrough and sign-off verdict (with-caveats). No advisories opened or referenced by this release.
Breaking changes
No breaking changes.
Commits (v0.14.0 → v0.15.0)
60cbe8bBump version to v0.15.0b0e9c21Merge pull request #1474 from markmhendrickson/release/v0.15.00347e22chore(release): prettier-format regenerated openapi_types.tsf8befc1chore(release): v0.15.0 release artifacts + openapi AgentCapabilityEntry fixe9ee621fix: graph source-table bug (#389/#394) + mirror import perf (#371) + Husky v9 deprecation (#400) (#1469)902d1ccfix(inspector): repoint submodule to last-good published pin 206e14e3 (#1471)03df670chore(merge): resolve conflicts from #936 fix mergedd001b1fix(issues): Neotoma-first ordering + skip AAuth when no keypair (resolves #944)0a98c7dfix(issues): retry submit_issue as unsigned guest when AAuth returns AUTH_REQUIRED (#937)85e932bMerge branch 'main' of https://github.com/markmhendrickson/neotoma7818ec0feat(mcp): add transport preset e + LaunchAgent node-version pinning172f8e4Add NEOTOMA_TRUST_PROD_LOOPBACK=1 to both LaunchAgent run scriptsd6ee8c8chore(inspector): bump submodule to logo path fix3cd06f4chore(inspector): bump submodule to basename fix43e7116fix(local-port-file): NEOTOMA_LOCAL_PORT_DISK_PROFILE overrides write-side disk profile2dab6c3chore(config): gitignore machine-specific configs; relative symlinks in .cursor/; sync MCP configs8907b62feat(agent-grants): extend AgentCapabilityOp for github_harness ops (closes #934)302a51bfix(launchd): bypass pick-port.js in prod server launchagent (resolves ateles#10)353328afeat(schema): seed pull_request entity type (resolves #158) (#929)c06142bdocs(instructions): mandatory extraction, GitHub entity types, awaiting-reply rule (#174 #175 #176) (#931)8582ba0fix(mirror): content_field heading-skip in renderEntityMarkdown (resolves #262) (#930)e5c42d6chore(deploy): gitignore rendered plists — only track .tmpl sourcesb8c5864docs(deploy): add README for launchagents — install, load/unload, logs, template varsda268d0chore(deploy): templatize launchagent plists; add install.sh25be539chore(deploy): add launchagent plists for prod-server, dev-server, issues-sync, watch-build38e8b00feat(skills): add /end session-close audit skill (#373)94a6b25fix(release): correct nested path for v0.14.0 probe report48adc81chore(release): move v0.14.0 release artifacts to completed0537296Merge branch 'main' of github.com:markmhendrickson/neotomad07c060fix(release-skill): tighten Step 5.2 GHSA publication to check live API stateb3b197aMerge pull request #391 from markmhendrickson/fix/release-skill-review-gate0392013chore(release): archive v0.14.0 supplement and security review to completed/055576afix(release-skill): add @claude review gate on release candidate PR (Step 3.7.2b)
Full compare: v0.14.0...v0.15.0
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About markmhendrickson/neotoma
Deterministic state layer for AI agents. Stores versioned entities (contacts, tasks, transactions, decisions) with immutable observations, full provenance, and schema-first extraction. Local-first SQLite, cross-client memory across Claude, Cursor, ChatGPT, and OpenClaw. Website
Related context
Related tools
Earlier breaking changes
- v0.12.1 Inspector build prepublish now exits non-zero if inspector submodule is missing, breaking ad-hoc npm pack runs without init.
- v0.12.0 Access policy source precedence: env > SchemaMetadata.guest_access_policy > config
- v0.12.0 Legacy feedback subsystem completely removed; issues subsystem is replacement
- v0.12.0 MCP submit_issue requires reporter_git_sha or reporter_app_version
Beta — feedback welcome: [email protected]