Skip to content

Commit 619f498

Browse files
Bound managed Jev decisions and preserve review evidence (#253)
Restrict managed requests to fixed bounded workflows, reject custom and route decisions before credentials, and retain a shared absolute deadline across HTTP 429 body and framing reads. Preserve #252 consent and local-planning behavior, bind offline evidence to the combined source checkpoint, and restore resolvable historical checksum metadata without changing its payload. Qualification: all 30 current-head checks passed, the automated review completed with its checksum finding fixed and resolved, and focused pin/integrity regressions passed. Managed private-service availability and activation remain separate acceptance work.
1 parent 787f89c commit 619f498

59 files changed

Lines changed: 7799 additions & 113 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.claude-plugin/skill-assets.sha256‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ c5d0c26f28c9ee14092f9deaf24c98dd8bef49d971fef2b7a537ffb1ab9f2887 .claude-plugin
33
aeee7a94671ceb306fe2d24c5acc9f2d96ad8a8e7410536566799eea6265f080 skills/engraphis-memory/SKILL.md
44
055655db84af07561d002f0c69744313d8413c39f3e873f941f0fa0b1e76dc66 skills/engraphis-memory/references/CONVENTIONS.md
55
9d090a03f5b3f36a34d91f66b72c3844591f6915755ac3a6c6ba5f1b16977de5 skills/engraphis-memory/references/SCOPING.md
6-
db1db0df676e4c05fd80b878a1bd1ffc9f2045c0b0e01c0486b69ce0a5541b73 skills/engraphis-memory/references/TOOLS.md
6+
4c612f734cc3f50e5566752c6956e43bd432b3c26177e16cde91e196ac9e9b5b skills/engraphis-memory/references/TOOLS.md
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: Temporary offline evidence export
2+
on:
3+
push:
4+
branches:
5+
- codex/jev-individual-access-20261004
6+
paths:
7+
- ".github/workflows/export-offline-evidence.yml"
8+
- "engraphis/**"
9+
- "eval/**"
10+
- "scripts/export_offline_evidence.py"
11+
pull_request:
12+
types: [opened, synchronize, reopened]
13+
paths:
14+
- ".github/workflows/export-offline-evidence.yml"
15+
- "engraphis/**"
16+
- "eval/**"
17+
- "scripts/export_offline_evidence.py"
18+
permissions:
19+
contents: read
20+
jobs:
21+
export:
22+
runs-on: ubuntu-latest
23+
steps:
24+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
25+
with:
26+
ref: ${{ github.event.pull_request.head.sha }}
27+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
28+
with:
29+
python-version: "3.11"
30+
- run: python -m pip install numpy cairosvg
31+
- run: python -m scripts.export_offline_evidence --output docs/benchmark-evidence/offline-fixtures-v152.json
32+
- run: python scripts/render_benchmark_report.py --report docs/benchmark-evidence/offline-fixtures-v152.json --output /tmp/context-efficiency.svg --png-output /tmp/context-efficiency.png
33+
- run: python -m scripts.render_benchmark_examples --report docs/benchmark-evidence/offline-fixtures-v152.json --output /tmp/evidence-backed-agent-examples.svg --png-output /tmp/evidence-backed-agent-examples.png
34+
- name: Show generated public artifacts
35+
run: |
36+
echo "BEGIN_OFFLINE_FIXTURES_JSON"
37+
cat docs/benchmark-evidence/offline-fixtures-v152.json
38+
echo "END_OFFLINE_FIXTURES_JSON"
39+
echo "BEGIN_OFFLINE_FIXTURES_SHA"
40+
cat docs/benchmark-evidence/offline-fixtures-v152.json.sha256
41+
echo "END_OFFLINE_FIXTURES_SHA"
42+
echo "BEGIN_CONTEXT_EFFICIENCY_SVG"
43+
cat /tmp/context-efficiency.svg
44+
echo "END_CONTEXT_EFFICIENCY_SVG"
45+
echo "BEGIN_EVIDENCE_BACKED_EXAMPLES_SVG"
46+
cat /tmp/evidence-backed-agent-examples.svg
47+
echo "END_EVIDENCE_BACKED_EXAMPLES_SVG"
48+
echo "BEGIN_CONTEXT_EFFICIENCY_PNG_BASE64"
49+
base64 -w 76 /tmp/context-efficiency.png
50+
echo "END_CONTEXT_EFFICIENCY_PNG_BASE64"
51+
echo "BEGIN_EVIDENCE_BACKED_EXAMPLES_PNG_BASE64"
52+
base64 -w 76 /tmp/evidence-backed-agent-examples.png
53+
echo "END_EVIDENCE_BACKED_EXAMPLES_PNG_BASE64"
54+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
55+
with:
56+
name: offline-fixtures-v152
57+
path: |
58+
docs/benchmark-evidence/offline-fixtures-v152.json
59+
docs/benchmark-evidence/offline-fixtures-v152.json.sha256
60+
/tmp/context-efficiency.svg
61+
/tmp/evidence-backed-agent-examples.svg
62+
/tmp/context-efficiency.png
63+
/tmp/evidence-backed-agent-examples.png
64+
retention-days: 1

‎BENCHMARKS.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,14 @@ interpretation and do not count as additional benchmark-quality gains.
9494
### Public numeric evidence registry
9595

9696
Every exact public aggregate retained below comes from the checked-in, public-safe
97-
[`offline-fixtures-pr252-four-gap-guards-20261007.json`](docs/benchmark-evidence/offline-fixtures-pr252-four-gap-guards-20261007.json) artifact. Its
97+
[`offline-fixtures-pr253-four-gap-stack-20261008.json`](docs/benchmark-evidence/offline-fixtures-pr253-four-gap-stack-20261008.json) artifact. Its
9898
SHA-256 is
99-
`c53b82e4a847bf525c695c25a1813e8a591e86e39ca9e652e385e898ecd04010`, also recorded in the
99+
`e423e99ba683c1928984903aef715ad97440c9717cecb3bd3f6fe4f6746ea7d0`, also recorded in the
100100
adjacent `.sha256` file. The artifact contains no raw questions, answers, prompts, customer data,
101101
or per-record content fingerprints.
102102

103103
The fixture-suite digest is
104-
`e137eacdd70bbea7539dec6ed5cd4b59c980352a8e641094b449e474522aa109`. The artifact defines
104+
`e1b7fcea31cb7bf8f8ec85b56e097a0cbfc7d496aef4aef51de73b849b2d17c6`. The artifact defines
105105
the digest algorithm and records the SHA-256 of every suite and dataset file. Each evidence ID
106106
also binds its exact command through `sha256(UTF-8 exact command)`:
107107

@@ -126,13 +126,13 @@ grounded checks in separate panels; provider billing and MCP transport are not m
126126
the SVG and matching PNG with:
127127

128128
```bash
129-
python scripts/render_benchmark_report.py --report docs/benchmark-evidence/offline-fixtures-pr252-four-gap-guards-20261007.json --output docs/images/context-efficiency.svg --png-output docs/images/context-efficiency.png
129+
python scripts/render_benchmark_report.py --report docs/benchmark-evidence/offline-fixtures-pr253-four-gap-stack-20261008.json --output docs/images/context-efficiency.svg --png-output docs/images/context-efficiency.png
130130
```
131131

132132
The companion examples are also generated from that artifact with:
133133

134134
```bash
135-
python -m scripts.render_benchmark_examples --report docs/benchmark-evidence/offline-fixtures-pr252-four-gap-guards-20261007.json --output docs/images/evidence-backed-agent-examples.svg --png-output docs/images/evidence-backed-agent-examples.png
135+
python -m scripts.render_benchmark_examples --report docs/benchmark-evidence/offline-fixtures-pr253-four-gap-stack-20261008.json --output docs/images/evidence-backed-agent-examples.svg --png-output docs/images/evidence-backed-agent-examples.png
136136
```
137137
The historical-to-executable mapping is in
138138
[`docs/BENCHMARK_CHANGE_COVERAGE.md`](docs/BENCHMARK_CHANGE_COVERAGE.md).

‎README.md‎

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# Engraphis
22

33
[![PyPI version](https://img.shields.io/pypi/v/engraphis.svg)](https://pypi.org/project/engraphis/)
4-
[![License](https://img.shields.io/badge/license-Apache--2.0-green.svg)](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/LICENSE)
4+
[![License](https://img.shields.io/badge/license-Apache--2.0-green.svg)](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/LICENSE)
55

66
**Persistent, local-first memory for AI agents.** Engraphis stores scoped project knowledge, retrieves relevant evidence across vector, lexical, graph, and code search, and returns bounded context with sources an agent can inspect.
77

88
The local engine uses SQLite and works offline. It keeps changes over time instead of silently replacing facts, and grounded recall cites retrieved memories or abstains when evidence is weak.
99

1010
<p align="center">
11-
<img src="https://raw.githubusercontent.com/Coding-Dev-Tools/engraphis/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/docs/images/knowledge-graph.png" alt="Engraphis local knowledge graph showing relationships between remembered entities" width="100%">
11+
<img src="https://raw.githubusercontent.com/Coding-Dev-Tools/engraphis/522def372c45a26d46bc7a05829964ae0240f3a9/docs/images/knowledge-graph.png" alt="Engraphis local knowledge graph showing relationships between remembered entities" width="100%">
1212
<br>
1313
<sup>Explore memories and their relationships in the local dashboard.</sup>
1414
</p>
@@ -35,7 +35,7 @@ hit = memory.recall("Why did we change auth?", workspace="acme", repo="api")
3535
print(hit["context"])
3636
```
3737

38-
Connect a coding agent over MCP with the [agent setup guide](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/docs/AGENT_CONNECT.md).
38+
Connect a coding agent over MCP with the [agent setup guide](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/docs/AGENT_CONNECT.md).
3939

4040
## What it provides
4141

@@ -49,7 +49,7 @@ Connect a coding agent over MCP with the [agent setup guide](https://github.com/
4949
The current registered artifact contains three deterministic offline fixture runs. It separates context size, retrieval quality, and grounded decision checks; these small fixtures do not establish general task performance.
5050

5151
<p align="center">
52-
<img src="https://raw.githubusercontent.com/Coding-Dev-Tools/engraphis/f964429b35877986bd0626b690469f59f41061de/docs/images/context-efficiency.svg" alt="Three registered offline fixtures: structure-aware chunking reduced mean retrieved context from 740.3 to 214.3 tokens per question (71.1%, 18 questions); the serialized JSON-shape proxy fell from 24,590 to 11,138 tokens across 26 payload samples and 260 recalls. Candidate and packed retrieval quality (Recall@5, Hit@5, and answer-token recall) are shown separately (each 1.000). Grounded checks show 5/5 answerable queries grounded and 6/6 abstention queries rejected, including a 1/1 quarantined-evidence probe; 11/11 decisions were correct. MCP transport and provider billing were not measured. Artifact SHA-256 prefix c53b82e4a847; see the benchmark guide for the full checksum." width="100%">
52+
<img src="https://raw.githubusercontent.com/Coding-Dev-Tools/engraphis/522def372c45a26d46bc7a05829964ae0240f3a9/docs/images/context-efficiency.svg" alt="Three registered offline fixtures: structure-aware chunking reduced mean retrieved context from 740.3 to 214.3 tokens per question (71.1%, 18 questions); the serialized JSON-shape proxy fell from 24,590 to 11,138 tokens across 26 payload samples and 260 recalls. Candidate and packed retrieval quality (Recall@5, Hit@5, and answer-token recall) are shown separately (each 1.000). Grounded checks show 5/5 answerable queries grounded and 6/6 abstention queries rejected, including a 1/1 quarantined-evidence probe; 11/11 decisions were correct. MCP transport and provider billing were not measured. Artifact SHA-256 prefix e423e99ba683; see the benchmark guide for the full checksum." width="100%">
5353
<br>
5454
<sup>Three offline fixtures separate context reduction, candidate and packed retrieval quality, and grounded behavior. The chart shows the artifact checksum prefix; see the benchmark guide for the full checksum and reproduction steps.</sup>
5555
</p>
@@ -60,7 +60,7 @@ The current registered artifact contains three deterministic offline fixture run
6060
| Recall payload proxy | JSON-shape proxy: 24,590 → 11,138 tokens (54.71% lower, 26 samples; 260 timed recalls) | Candidate and packed Recall@5, Hit@5, and answer-token recall are each 1.000 |
6161
| Grounded decisions | 5/5 answerable queries grounded; 6/6 abstention queries rejected, including 1/1 quarantined-evidence check | 11/11 decisions correct |
6262

63-
The payload figure is a serialized JSON-shape estimate, not an MCP transport measurement or provider billing total. See the [Benchmark methodology](https://github.com/Coding-Dev-Tools/engraphis/blob/f964429b35877986bd0626b690469f59f41061de/BENCHMARKS.md) for artifact identity, counting methods, reproduction commands, external-evaluation boundaries, and limitations.
63+
The payload figure is a serialized JSON-shape estimate, not an MCP transport measurement or provider billing total. See the [Benchmark methodology](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/BENCHMARKS.md) for artifact identity, counting methods, reproduction commands, external-evaluation boundaries, and limitations.
6464

6565
## Optional Jev assistance
6666

@@ -87,22 +87,22 @@ The existing production fleet guard remains 100 questions per day across the ser
8787
That limit conflicts with these per-person rolling caps and may pause or reject requests
8888
earlier. Resolve capacity and the fleet guard before launch. The supported decisions are
8989
advisory; current synthetic fixtures do not demonstrate Jev accuracy or cost savings.
90-
See [hosted plans and Jev details](https://github.com/Coding-Dev-Tools/engraphis/blob/94b8d244bfef890493ac7858faf03203f64547f1/docs/HOSTED_PLANS.md#included-system-1-decision-engine-jev).
90+
See [hosted plans and Jev details](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/docs/HOSTED_PLANS.md#included-system-1-decision-engine-jev).
9191

9292
## Guides
9393

94-
- [Configuration reference](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/docs/CONFIGURATION.md)
95-
- [MCP tool reference](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/docs/MCP_TOOLS.md)
96-
- [Agent and LLM provider setup](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/docs/LLM_PROVIDERS.md)
97-
- [Architecture and query planning](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/docs/ARCHITECTURE_V3.md#query-planning)
98-
- [Docker deployment](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/docs/DOCKER.md)
99-
- [Document import](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/docs/DOCUMENT_IMPORT.md)
100-
- [Cloud Sync](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/docs/SYNC.md)
101-
- [Pi extension](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/integrations/pi/README.md)
102-
- [Memory write review](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/docs/WRITE_REVIEW.md)
103-
- [Security policy](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/SECURITY.md)
104-
- [Hosted plans and licensing](https://github.com/Coding-Dev-Tools/engraphis/blob/e440bf6ba0ff600648fdac6eb53dd28d6d80df24/docs/HOSTED_PLANS.md)
94+
- [Configuration reference](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/docs/CONFIGURATION.md)
95+
- [MCP tool reference](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/docs/MCP_TOOLS.md)
96+
- [Agent and LLM provider setup](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/docs/LLM_PROVIDERS.md)
97+
- [Architecture and query planning](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/docs/ARCHITECTURE_V3.md#query-planning)
98+
- [Docker deployment](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/docs/DOCKER.md)
99+
- [Document import](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/docs/DOCUMENT_IMPORT.md)
100+
- [Cloud Sync](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/docs/SYNC.md)
101+
- [Pi extension](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/integrations/pi/README.md)
102+
- [Memory write review](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/docs/WRITE_REVIEW.md)
103+
- [Security policy](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/SECURITY.md)
104+
- [Hosted plans and licensing](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/docs/HOSTED_PLANS.md)
105105

106106
## License
107107

108-
Engraphis is licensed under Apache-2.0. The license does not grant trademark rights. See [LICENSE](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/LICENSE), [NOTICE](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/NOTICE), and the [licensing guide](https://github.com/Coding-Dev-Tools/engraphis/blob/fee9d0c150c250632d8e0c0ee86c1325c9e1ee78/docs/LICENSING.md). The hosted control plane and managed services are private services.
108+
Engraphis is licensed under Apache-2.0. The license does not grant trademark rights. See [LICENSE](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/LICENSE), [NOTICE](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/NOTICE), and the [licensing guide](https://github.com/Coding-Dev-Tools/engraphis/blob/522def372c45a26d46bc7a05829964ae0240f3a9/docs/LICENSING.md). The hosted control plane and managed services are private services.

‎docs/CONFIGURATION.md‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,20 @@ service-enforced, not client configuration overrides. Selecting a backend does n
8484
enable the service or satisfy release, provider-terms, capacity, or quality gates. See
8585
[hosted plans](HOSTED_PLANS.md#included-system-1-decision-engine-jev).
8686

87+
The four managed workflows require a command, a pair of facts, query/evidence, or
88+
goal/output context and their fixed question schemas. Arbitrary `custom` and
89+
`query_planning` payloads are rejected before credential refresh or network requests.
90+
Experimental recall route planning requires explicit BYOK; managed failure never
91+
silently selects a personal key. Remote consent and `public` or `internal`
92+
classification remain mandatory, and `offline_mode=true` prevents remote requests.
93+
Viewers can use direct Classic advisory decisions; generic Smart stateful execution
94+
still requires admin and the private Team tool catalog is unchanged.
95+
96+
Managed transport callers can supply `request_key` for explicit retry deduplication. A
97+
duplicate admitted key returns 409 without an additional provider call or usage
98+
increment; there is no stored answer replay or automatic retry. Admitted errors remain
99+
counted. This parameter is not an environment setting or an MCP/dashboard field.
100+
87101
The optional cross-encoder reranker is model- and hardware-dependent. Treat its quality and
88102
latency as deployment-specific until a versioned model identity, exact configuration, and
89103
reproducible evaluation artifact are available for the comparison being reported.

0 commit comments

Comments
 (0)