Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
7be1c90
feat(security): add fail-closed host file protection engine and Comma…
Coding-Dev-Tools Oct 14, 2026
66e8f2e
Prepare Engraphis 1.7.10 release candidate
Coding-Dev-Tools Oct 19, 2026
29bd922
Prepare 1.7.10 with stable historical memory and hosted client fixes
Coding-Dev-Tools Oct 19, 2026
ff371c0
Emit only server-minted browser session cookies
Coding-Dev-Tools Oct 19, 2026
ffaff5b
Fix policy aliases and legacy hook upgrades
Oct 20, 2026
c050d73
Refresh offline evidence for policy and installer fixes
Oct 20, 2026
a337adc
Pin README evidence links to the fresh source commit
Oct 20, 2026
d541828
Align PyPI README contract with immutable evidence links
Oct 20, 2026
76b6d02
release: complete 1.7.10 changelog, pin file-protection link, drop pi…
ArtificialSight Oct 20, 2026
859bdc9
security: make the Command Code file guard enforce real tool ids and …
ArtificialSight Oct 20, 2026
dae4566
core: hydrate browse versions, reject empty supersede intervals, skip…
ArtificialSight Oct 20, 2026
2d8cfc7
core: report the closure observation limit as a caller error (ValueEr…
ArtificialSight Oct 20, 2026
7370b6c
docs: list eval.evidence_contracts in the AGENTS.md gate instead of a…
ArtificialSight Oct 20, 2026
38e779b
security: deny unverifiable Windows file-guard targets (device, UNC, …
ArtificialSight Oct 20, 2026
8f50b4f
docs: note the file guard's canonical tool ids and Windows denials in…
ArtificialSight Oct 20, 2026
75ed192
Refresh offline evidence for the release-review fixes
ArtificialSight Oct 20, 2026
4f1ab1f
Pin README evidence links to the release-review evidence commit
ArtificialSight Oct 20, 2026
d9d7c47
fix(pi): raise the hono override to 4.13.13 for GHSA-5r4p-p66f-jhc7
ArtificialSight Oct 21, 2026
9ff19e5
fix(history): bound why/timeline candidate scanning to one window
Oct 23, 2026
e346936
fix(dashboard): only auto-issue the loopback session on tokenless ins…
Oct 23, 2026
38b162f
fix(sync): reserve closure capacity for locally authored observations
Oct 23, 2026
c819962
fix(sources): reject UNC and device roots before any resolution or stat
Oct 23, 2026
4714e60
fix(file-guard): fail closed on unverifiable targets and tool-id vari…
Oct 23, 2026
69021d4
test(release): bind artifact checks to the candidate version and mani…
Oct 23, 2026
0a13cea
fix(sources): stop treating Windows creation time as a content change
Oct 23, 2026
9d0c61e
docs: record the 1.7.10 review fixes and refresh the offline evidence
Oct 23, 2026
dd15bd1
docs: pin the README evidence links to the refreshed artifact commit
Oct 23, 2026
6f06016
fix(history): annotate the fallback argument list for the type gate
Oct 23, 2026
f0c7f2a
docs: regenerate the offline evidence after the history type fix
Oct 23, 2026
5a22f9d
docs: re-pin the README evidence links to the regenerated artifact co…
Oct 23, 2026
9b059c6
docs: point the benchmark reproduction commands at the current artifact
Oct 23, 2026
790f159
docs: pin the README evidence links to the corrected reproduction com…
Oct 23, 2026
b805c92
test(closure): cover the empty-interval supersession guard
Oct 23, 2026
edc1741
fix(dashboard): keep the one-shot URL token until the browser exchang…
Oct 23, 2026
bd4c54e
ci: refresh the Pi audit lockfile for the ip-address advisory
Oct 23, 2026
5bb2895
Harden memory concurrency, isolate MCP worker execution, and block Wi…
Coding-Dev-Tools Oct 23, 2026
218efb8
Pin documentation links and contract tests to release commit 5bb28950
Coding-Dev-Tools Oct 23, 2026
8594488
test(sources): cover whitespace-prefixed UNC and device paths
Oct 23, 2026
2386cf9
docs: describe the raw-path UNC rule across every local source surface
Oct 23, 2026
bae3acb
test(sources): cover UNC vault paths before resolution
Oct 23, 2026
8da97e6
docs: keep the vault-path sentence inside the public narrative boundary
Oct 23, 2026
28b1915
docs: state the semantic-arm cost of history ranking
Oct 23, 2026
85a67c9
fix(auth): treat a present-but-blank API token as configured
Oct 24, 2026
9a46361
docs: regenerate the offline evidence after the token-gating fix
Oct 24, 2026
79b0502
docs: pin the README evidence links to the regenerated artifact commit
Oct 24, 2026
0c7cfd3
ci(release): make signed full-product qualification opt-in
claude Oct 24, 2026
9ade4df
fix(install_cc_hook): keep the operator's key order and sync the rename
claude Oct 24, 2026
b3c1598
ci: run the suite with pytest-xdist and raise the coverage floor to 80
claude Oct 24, 2026
99af385
feat(release): reconcile desktop memory, stdio bridge, exact recall, …
Coding-Dev-Tools Oct 25, 2026
26a43f9
docs: pin the README evidence links to the regenerated artifact commit
Coding-Dev-Tools Oct 25, 2026
ae9ba32
Merge branch 'codex/release-1-7-10-reconciled' into ci/release-gate-o…
Coding-Dev-Tools Oct 25, 2026
aade8c6
docs: sync AGENTS.md coverage threshold with 80% CI gate
Coding-Dev-Tools Oct 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"name": "engraphis-memory",
"source": "./",
"description": "Discipline for giving agents durable, scoped, explainable memory across sessions and repos with the Engraphis MCP tools.",
"version": "1.7.9"
"version": "1.7.10"
}
]
}
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "engraphis-memory",
"version": "1.7.9",
"version": "1.7.10",
"description": "Give agents durable, scoped, explainable memory across sessions and repos via the Engraphis MCP tools. Use when you learn something worth keeping, need prior context before acting, or ask why/how a fact changed. Covers remember/recall, why/timeline, forget/pin/correct, sessions, and code search.",
"author": {
"name": "The Engraphis Authors",
Expand Down
4 changes: 2 additions & 2 deletions .claude-plugin/skill-assets.sha256
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
c1d184247775c8b3bf4d3f185d54fcac983aca8c54638a05d85b21e20db3ae7c .claude-plugin/marketplace.json
c5d0c26f28c9ee14092f9deaf24c98dd8bef49d971fef2b7a537ffb1ab9f2887 .claude-plugin/plugin.json
8da43b92bc5ece3e7bdc63779713f76552a7bcd46adaf5ff12c0427dbfad98ae .claude-plugin/marketplace.json
b1adecc8e456a3dbe168adb7adc6a9c7c7ae63429d38b88c02722eaf293a9fba .claude-plugin/plugin.json
aeee7a94671ceb306fe2d24c5acc9f2d96ad8a8e7410536566799eea6265f080 skills/engraphis-memory/SKILL.md
055655db84af07561d002f0c69744313d8413c39f3e873f941f0fa0b1e76dc66 skills/engraphis-memory/references/CONVENTIONS.md
9d090a03f5b3f36a34d91f66b72c3844591f6915755ac3a6c6ba5f1b16977de5 skills/engraphis-memory/references/SCOPING.md
Expand Down
7 changes: 7 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,16 @@
*.pyd binary
*.so binary
*.dll binary
*.py text eol=lf
.github/workflows/*.yml text eol=lf
.github/workflows/*.yaml text eol=lf
*.sh text eol=lf
# Frozen corpus/evidence manifests hash exact bytes, including executable oracles.
eval/datasets/** text eol=lf
eval/artifacts/** text eol=lf
# Historical reports include both LF and CRLF snapshots; preserve their signed bytes.
docs/benchmark-evidence/** -text
engraphis/**/vendor/*.js text eol=lf
deploy/*.lock text eol=lf
deploy/*.licenses.json text eol=lf
.claude-plugin/*.json text eol=lf
Expand Down
21 changes: 14 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,12 @@ jobs:
run: |
python scripts/check_commercial_manifest.py
python scripts/externalize_dashboard_assets.py
# pytest-xdist (from the test extra) runs one worker per runner core; each worker
# gets its own subdirectory under --basetemp, inside ENGRAPHIS_INDEX_ROOTS.
- name: Unit tests (full suite — extras-gated tests included)
run: |
python -c "import fastapi, httpx, mcp, multipart, pydantic, uvicorn"
ENGRAPHIS_INDEX_ROOTS="${GITHUB_WORKSPACE}:${RUNNER_TEMP}:$(python -c 'import tempfile; print(tempfile.gettempdir())')" python -m pytest -o addopts="" tests/ -q -rs --basetemp="${RUNNER_TEMP}/engraphis-pytest"
ENGRAPHIS_INDEX_ROOTS="${GITHUB_WORKSPACE}:${RUNNER_TEMP}:$(python -c 'import tempfile; print(tempfile.gettempdir())')" python -m pytest -o addopts="" tests/ -q -rs -n auto --basetemp="${RUNNER_TEMP}/engraphis-pytest"
- name: Retrieval eval gate
run: python -m eval.harness --dataset eval/datasets/sample.jsonl --k 5
- name: Retrieval eval gate — CodeMem (coding-agent wedge, incl. conflict resolution)
Expand Down Expand Up @@ -109,7 +111,8 @@ jobs:

core-py39:
name: core floor (numpy-only, Python 3.9)
runs-on: ubuntu-latest
# Ubuntu 26.04 no longer ships Python 3.9 in actions/python-versions.
runs-on: ubuntu-24.04
timeout-minutes: 30
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down Expand Up @@ -196,8 +199,10 @@ jobs:
run: |
python -m pip install --upgrade pip
pip install -e ".[test]" pytest-cov
# Line coverage measured 86.7% when this floor was set (it was 60). The floor
# sits a few points below that, so a real regression fails and normal churn passes.
- name: Coverage run (all extras-gated tests, tracked modules)
run: ENGRAPHIS_INDEX_ROOTS="${GITHUB_WORKSPACE}:${RUNNER_TEMP}:$(python -c 'import tempfile; print(tempfile.gettempdir())')" python -m pytest -o addopts="" tests/ -q -rs --basetemp="${RUNNER_TEMP}/engraphis-pytest" --cov=engraphis --cov-report=term-missing --cov-fail-under=60
run: ENGRAPHIS_INDEX_ROOTS="${GITHUB_WORKSPACE}:${RUNNER_TEMP}:$(python -c 'import tempfile; print(tempfile.gettempdir())')" python -m pytest -o addopts="" tests/ -q -rs -n auto --basetemp="${RUNNER_TEMP}/engraphis-pytest" --cov=engraphis --cov-report=term-missing --cov-fail-under=80

hygiene:
name: repo hygiene gate (no stray DBs/logs)
Expand Down Expand Up @@ -255,14 +260,16 @@ jobs:
# npm 10 crashes while repairing a nested published shrinkwrap.
npm install --global --ignore-scripts npm@11.12.1
npm ci --ignore-scripts
# The test host's published shrinkwrap overrides this package's nested pin.
# Repair that exact leaf in the installed host, preserving its other locked deps.
# The test host's published shrinkwrap overrides this package's nested pins.
# Repair those exact leaves in the installed host, preserving its other locked deps.
# --omit=dev excludes the host's own authoring tools, not this package's test tools.
npm install --prefix node_modules/@earendil-works/pi-coding-agent --ignore-scripts --no-save --omit=dev brace-expansion@5.0.12
npm install --prefix node_modules/@earendil-works/pi-coding-agent --ignore-scripts --no-save --omit=dev brace-expansion@5.0.12 undici@8.12.2
node -e "require('node:assert/strict').equal(require('./node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion/package.json').version, '5.0.12')"
node -e "require('node:assert/strict').equal(require('./node_modules/@earendil-works/pi-coding-agent/node_modules/undici/package.json').version, '8.12.2')"
npm run verify
npm run test:integration
npm audit
# Audit production from the lock, then the complete repaired install including dev.
npm audit --omit=dev
npm audit --no-package-lock --include=dev

browser-accessibility:
Expand Down
Loading
Loading