Repository navigation
test: isolate the offline suite from owner/private live defaults - #313
Closed
Coding-Dev-Tools wants to merge 489 commits into
Closed
Coding-Dev-Tools wants to merge 489 commits into
Coding-Dev-Tools wants to merge 489 commits into
Conversation
security(licensing): release production vendor signer
feat(backups): support verified S3 object storage
…diagnostic chore(railway): expose readiness diagnostics
chore(railway): restore strict readiness gate
fix(synthetics): keep rejection alert non-gating
- Cloud license leasing with Polar integration - Sync relay improvements for team mode - Inspector auth and webhook enhancements - Hosted email retention policies - HTTP security hardening - Dashboard v2 team audit capabilities - Release workflow improvements - Commercial manifest validation All tests passing (1606 passed, 14 skipped). Ruff clean.
Remove commercial cloud implementation from the current public tree while preserving the audited open-core boundary and compatibility fixes.
Improve graph communities and add memory demo
Publishes the public manifest boundary for Stripe-backed private cloud subscriptions. Polar remains legacy-only; no commercial implementation is added to the public repository.
Public v1.0.0 GA release metadata, validated in a clean worktree with full CI, offline evaluations, packaging, and commercial-boundary checks.
…et-validation Repair PyPI release artifact verification
…elease-artifacts Select canonical tag artifacts for release repair
* release: prepare 1.0.1 client reliability fixes * fix: align Pro billing unit with entitlement model
Remediate all 59 existing CodeQL alerts, make local path containment machine-verifiable, redact arbitrary provider errors, replace adversarial parsers, and make hosted CodeQL fail on any SARIF finding. Preserve Python 3.9 and pin the verified Ruff series.
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.
* fix(deps-dev): bump openai-codex from 0.159.0 to 0.160.1 --- updated-dependencies: - dependency-name: openai-codex dependency-version: 0.160.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * fix: address verified release audit findings Validated local candidate: f9dabd9d69d779210ce83e919b410b1770505e43 - f9dabd9d69d779210ce83e919b410b1770505e43 fix(packaging): align MCP install paths with the patched SDK floor - 24afc26e882c0f3fa5eab4b6e2b5294fe73bd4c6 fix(deps): require the patched MCP 1.30 transport --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jaixii <algorithmictradingsolutions@gmail.com>
* docs(readme): pin chart to verified evidence commit * fix(cli): distinguish memory sampling from partial word analysis * fix(cli): distinguish memory sampling from partial word analysis * fix(cli): distinguish memory sampling from partial word analysis * fix(cli): distinguish memory sampling from partial word analysis * fix: preserve dashboard graph traversal and historical dates * fix: preserve dashboard graph traversal and historical dates * fix(spec-crawl): prove policy conflicts and bound code-example detection * fix(spec-crawl): prove policy conflicts and bound code-example detection * fix(spec-crawl): prove policy conflicts and bound code-example detection * fix(spec-crawl): prove policy conflicts and bound code-example detection * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * perf(spec-crawl): skip directive parsing without governing verbs * perf(spec-crawl): skip directive parsing without governing verbs * perf(spec-crawl): skip directive parsing without governing verbs * perf(spec-crawl): skip directive parsing without governing verbs * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * fix(security): keep privilege detection linear across whitespace * fix(security): keep privilege detection linear across whitespace * fix(security): keep privilege detection linear across whitespace * fix(security): keep privilege detection linear across whitespace * fix(spec-crawl): match fence closing markers and lengths * fix(spec-crawl): match fence closing markers and lengths * fix(spec-crawl): match fence closing markers and lengths * fix(spec-crawl): match fence closing markers and lengths * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * fix: refresh library paging after saved reorders * fix: refresh library paging after saved reorders * fix(spec-crawl): match inline backtick runs without rescanning * fix(spec-crawl): match inline backtick runs without rescanning * fix(spec-crawl): match inline backtick runs without rescanning * fix(spec-crawl): match inline backtick runs without rescanning * fix(history): preserve Unicode topics before candidate limits Use a deterministic NULL-safe Python Unicode lower SQL function for closed-history candidate ordering, matching the existing final tokenizer instead of SQLite ASCII-only lower(). Register it once during Store construction, including encrypted and read-only connections. Keep all scope, privacy, temporal filters, the 500-record candidate window and 32-term expansion limit unchanged. Cover actual service/HTTP retrieval beyond 501 newer records, preserve sharp-s lower-versus-casefold behavior, exercise real SQLCipher reopen, and extend the closed-history eval with Unicode and negative controls. * fix(history): preserve Unicode topics before candidate limits Use a deterministic NULL-safe Python Unicode lower SQL function for closed-history candidate ordering, matching the existing final tokenizer instead of SQLite ASCII-only lower(). Register it once during Store construction, including encrypted and read-only connections. Keep all scope, privacy, temporal filters, the 500-record candidate window and 32-term expansion limit unchanged. Cover actual service/HTTP retrieval beyond 501 newer records, preserve sharp-s lower-versus-casefold behavior, exercise real SQLCipher reopen, and extend the closed-history eval with Unicode and negative controls. * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * fix(spec-crawl): require contradiction evidence and compare active prose * fix(spec-crawl): require contradiction evidence and compare active prose * fix(spec-crawl): require contradiction evidence and compare active prose * fix(spec-crawl): require contradiction evidence and compare active prose * fix(spec-crawl): avoid circular claims and retain source provenance * fix(spec-crawl): avoid circular claims and retain source provenance * fix(spec-crawl): avoid circular claims and retain source provenance * fix(spec-crawl): avoid circular claims and retain source provenance * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * fix(spec-crawl): exclude examples from claim evidence queries * fix(spec-crawl): exclude examples from claim evidence queries * fix(spec-crawl): exclude examples from claim evidence queries * fix(spec-crawl): exclude examples from claim evidence queries * fix(spec-crawl): bind numeric qualifiers and preserve directive identity * fix(spec-crawl): bind numeric qualifiers and preserve directive identity * fix(spec-crawl): bind numeric qualifiers and preserve directive identity * fix(spec-crawl): bind numeric qualifiers and preserve directive identity * fix(security): exclude sensitive source ancestors before capture * fix(security): cover valid URI userinfo and cyclic import links * fix(security): exclude sensitive source ancestors before capture * fix(security): exclude sensitive source ancestors before capture * fix(security): cover valid URI userinfo and cyclic import links * fix(imports): prune sensitive browser paths before traversal * fix(security): exclude sensitive source ancestors before capture * fix(security): cover valid URI userinfo and cyclic import links * fix(imports): prune sensitive browser paths before traversal * fix(security): cover valid URI userinfo and cyclic import links * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * fix(eval): enforce individual spec crawl metric floors * fix(eval): enforce individual spec crawl metric floors * fix(spec-crawl): ignore prose periods on bare scalar values * fix(eval): enforce individual spec crawl metric floors * fix(spec-crawl): ignore prose periods on bare scalar values * fix(spec-crawl): ignore prose periods on bare scalar values * fix(eval): enforce individual spec crawl metric floors * fix(spec-crawl): ignore prose periods on bare scalar values * fix(security): reject credential roots and account skipped uploads * fix(security): reject credential roots and account skipped uploads * fix(security): reject credential roots and account skipped uploads * fix(security): reject credential roots and account skipped uploads * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * fix(spec-crawl): stabilize empty cluster response schema * fix(spec-crawl): stabilize empty cluster response schema * fix(imports): apply broad credential heuristics only to files * fix(spec-crawl): stabilize empty cluster response schema * fix(imports): apply broad credential heuristics only to files * fix(imports): apply broad credential heuristics only to files * fix(imports): distinguish browser directories from file basenames * fix(spec-crawl): stabilize empty cluster response schema * fix(imports): apply broad credential heuristics only to files * fix(imports): distinguish browser directories from file basenames * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * test(imports): gate HTTP guard on optional server extra * test(imports): gate HTTP guard on optional server extra * test(imports): gate HTTP guard on optional server extra * test(imports): gate HTTP guard on optional server extra * fix(security): scan authenticated URI spans without regex * fix(security): scan authenticated URI spans without regex * fix(security): scan authenticated URI spans without regex * fix(security): scan authenticated URI spans without regex * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * fix(spec): align supersession lineage with effective time * fix(spec): align supersession lineage with effective time * fix(spec): align supersession lineage with effective time * fix(spec): align supersession lineage with effective time * docs(evidence): bind offline fixtures to final policy and history fixes * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * docs(readme): pin chart to verified evidence commit * test(spec-crawl): align memory floor failure assertion * docs(evidence): bind offline fixtures to final policy and history fixes * docs(readme): pin chart to verified evidence commit * fix(deps-dev): update ruff requirement Updates the requirements on [ruff](https://github.com/astral-sh/ruff) to permit the latest version. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](astral-sh/ruff@0.15.22...0.17.0) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.17.0 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps-dev): bump @playwright/test from 1.63.0 to 1.64.0 Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.63.0 to 1.64.0. - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](microsoft/playwright@v1.63.0...v1.64.0) --- updated-dependencies: - dependency-name: "@playwright/test" dependency-version: 1.64.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps-dev): bump impeccable from 4.1.0 to 4.5.2 Bumps [impeccable](https://github.com/pbakaus/impeccable) from 4.1.0 to 4.5.2. - [Release notes](https://github.com/pbakaus/impeccable/releases) - [Changelog](https://github.com/pbakaus/impeccable/blob/main/docs/RELEASE-4.4.0.md) - [Commits](pbakaus/impeccable@cli-v4.1.0...cli-v4.5.2) --- updated-dependencies: - dependency-name: impeccable dependency-version: 4.5.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps): bump the codeql-action group with 3 updates Bumps the codeql-action group with 3 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `github/codeql-action/init` from 4.38.2 to 4.38.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@2892aa5...24c5418) Updates `github/codeql-action/analyze` from 4.38.2 to 4.38.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@2892aa5...24c5418) Updates `github/codeql-action/upload-sarif` from 4.38.2 to 4.38.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@2892aa5...24c5418) --- updated-dependencies: - dependency-name: github/codeql-action/init dependency-version: 4.38.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/analyze dependency-version: 4.38.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.38.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 8.0.1 to 8.0.2. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](actions/download-artifact@3e5f45b...9000827) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: 8.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * test(release): align ruff version bound assertion with <0.18 * perf(core): wire factory DB encryption and batch recall reinforcement * docs(evidence): bind offline fixtures to factory encryption and recall batching * docs(readme): pin chart to verified evidence commit * test(e2e): align Explore keyboard cursor assertions with non-isolating reveal * test(imports): use write_bytes for Python 3.9 compatibility * fix(deps-dev): bump tree-sitter-language-pack from 1.20.0 to 1.21.0 (#258) * fix(deps-dev): bump tree-sitter-language-pack from 1.20.0 to 1.21.0 Bumps [tree-sitter-language-pack](https://github.com/xberg-io/tree-sitter-language-pack) from 1.20.0 to 1.21.0. - [Release notes](https://github.com/xberg-io/tree-sitter-language-pack/releases) - [Changelog](https://github.com/xberg-io/tree-sitter-language-pack/blob/main/CHANGELOG.md) - [Commits](xberg-io/tree-sitter-language-pack@v1.20.0...v1.21.0) --- updated-dependencies: - dependency-name: tree-sitter-language-pack dependency-version: 1.21.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * Keep new benchmark campaigns on the updated tree-sitter grammars * fix: address verified release audit findings Validated local candidate: e142e3158e06c92c00253266120496d33d111a92 - e142e3158e06c92c00253266120496d33d111a92 fix(packaging): align MCP install paths with the patched SDK floor - e5631206443c0d069d3e9114bccb87111b89d602 fix(deps): require the patched MCP 1.30 transport --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jaixii <algorithmictradingsolutions@gmail.com> * fix(deps): bump anchore/sbom-action from 0.24.2 to 0.24.3 (#259) * fix(deps): bump anchore/sbom-action from 0.24.2 to 0.24.3 Bumps [anchore/sbom-action](https://github.com/anchore/sbom-action) from 0.24.2 to 0.24.3. - [Release notes](https://github.com/anchore/sbom-action/releases) - [Changelog](https://github.com/anchore/sbom-action/blob/main/RELEASE.md) - [Commits](anchore/sbom-action@3ad7283...66cbf4b) --- updated-dependencies: - dependency-name: anchore/sbom-action dependency-version: 0.24.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * test(release): validate immutable SBOM action pins across upgrades * fix: address verified release audit findings Validated local candidate: 0e9f6f2599167a5f235b298d39c87182356156f5 - 0e9f6f2599167a5f235b298d39c87182356156f5 fix(packaging): align MCP install paths with the patched SDK floor - 3207cfa5af1c7309407b8d63f9ca304113dfcd66 fix(deps): require the patched MCP 1.30 transport --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Coding-Dev-Tools <algorithmictradingsolutions@gmail.com> * fix(deps-dev): update ruff requirement from <0.17,>=0.15.22 to >=0.15.22,<0.18 (#264) * fix(deps-dev): update ruff requirement Updates the requirements on [ruff](https://github.com/astral-sh/ruff) to permit the latest version. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](astral-sh/ruff@0.15.22...0.17.0) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.17.0 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> * test(release): align ruff version bound assertion with <0.18 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jaixii <algorithmictradingsolutions@gmail.com> * fix(deps-dev): bump @playwright/test from 1.63.0 to 1.64.0 (#265) Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.63.0 to 1.64.0. - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](microsoft/playwright@v1.63.0...v1.64.0) --- updated-dependencies: - dependency-name: "@playwright/test" dependency-version: 1.64.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * style(tests): trim inherited encryption fixture trailing blank line * test: scope private-ledger monkeypatches before fixture cleanup * fix(deps): bump the codeql-action group with 3 updates (#267) Bumps the codeql-action group with 3 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `github/codeql-action/init` from 4.38.2 to 4.38.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@2892aa5...24c5418) Updates `github/codeql-action/analyze` from 4.38.2 to 4.38.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@2892aa5...24c5418) Updates `github/codeql-action/upload-sarif` from 4.38.2 to 4.38.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@2892aa5...24c5418) --- updated-dependencies: - dependency-name: github/codeql-action/init dependency-version: 4.38.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/analyze dependency-version: 4.38.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.38.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 (#268) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 8.0.1 to 8.0.2. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](actions/download-artifact@3e5f45b...9000827) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: 8.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(deps-dev): bump impeccable from 4.1.0 to 4.5.2 (#266) Bumps [impeccable](https://github.com/pbakaus/impeccable) from 4.1.0 to 4.5.2. - [Release notes](https://github.com/pbakaus/impeccable/releases) - [Changelog](https://github.com/pbakaus/impeccable/blob/main/docs/RELEASE-4.4.0.md) - [Commits](pbakaus/impeccable@cli-v4.1.0...cli-v4.5.2) --- updated-dependencies: - dependency-name: impeccable dependency-version: 4.5.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jaixii <algorithmictradingsolutions@gmail.com> * fix: enforce source boundaries and release lifecycle contracts * Bind specification source reads to checked file descriptors * fix: preserve dashboard import diagnostics and graph controls * docs: collect immutable offline evidence for reviewed release source * docs: bind current benchmarks to immutable reviewed-source evidence * test: cover canonical database aliases across scalar punctuation * Fix Spec Crawl coverage and bounded conflict reporting Normalize limited directive grammar while preserving concrete policy scope. Expose conflict and remediation limits consistently in cluster reports, Spec Studio and CLI, with before/after and transport/browser regressions. * docs: publish fresh offline evidence for final spec crawl runtime * docs: pin current offline evidence to published final runtime artifact * Preserve resolved clarifications and recheck supersession scope * Report empty procedural scopes and partial prompt analysis faithfully * docs: publish fresh offline evidence for reviewed spec studio runtime * docs: pin current offline evidence to published reviewed runtime artifact * Reject candidate bytecode in configured Python cache prefixes * Keep prefixed bytecode rejection portable on Windows * test: reproduce coordinated directive omissions and false obligations * fix: retain coordinated directive polarity and Boolean scope * fix: keep compound normalization within each action * Refresh offline evidence for coordinated policy runtime * Pin current evidence references to canonical coordinated-runtime artifact * test(spec-crawl): reproduce serial directive omissions and grouping * fix(spec-crawl): preserve governed serial action lists * fix(spec-crawl): keep scoped tail alternatives out of serial polarity * fix(spec-crawl): resolve serial operators only from list syntax * Refresh offline evidence for serial-comma policy runtime * Pin current evidence references to canonical serial-policy runtime artifact * fix: classify memory axes from masked policy prose * Refresh offline evidence for masked-axis policy runtime * Pin current evidence references to staged immutable masked-axis artifact * fix: disclose memory audit bounds and analyze title ambiguity * Enforce transport and scope authority for specification audit operations * fix: keep title flag IDs distinct from content references * Document transport limits, scoped remediation and bounded title analysis * Refresh offline evidence for transport and scoped policy fixes * Pin current evidence references to staged immutable transport and scope artifact * Keep saved specification clarification titles free of resolved vague tokens * Refresh offline evidence for neutral clarification titles * Pin current evidence references to staged immutable neutral-title artifact * Redact newly exposed nested URI credentials in one bounded scan * Refresh offline evidence for nested URI redaction * Pin current evidence references to staged immutable nested-uri-redaction artifact --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Josh W <jomie2k6@yahoo.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Codex <codex@openai.com> Co-authored-by: Release Maintenance <release-maintenance@users.noreply.github.com>
…lows (#270) * feat(security): add fail-closed host file protection engine and Command Code hook - Implement file_guard.py for host-mediated protection of sensitive files - Add Command Code PreToolUse hook integration in integrations/commandcode/file_guard_hook.py - Support --file-guard flag in scripts/install_cc_hook.py with idempotent hook registration - Add documentation in docs/FILE_PROTECTION.md and update SECURITY.md and README.md - Add comprehensive unit tests in tests/test_file_guard.py and tests/test_install_cc_hook.py * Prepare Engraphis 1.7.10 release candidate Preserve historical validity observations across temporal reads and sync, retain authorized ended-session derivation lineage, and reject mutations prepared before history-only evidence changes. Include reviewed document, dashboard, queue, dependency, packaging and deterministic-evidence fixes. Validation: full Python3.11 suite8348 passed at83.85% coverage; NumPy-only Python3.9 suite6402 passed; focused3.10/3.12/3.13/3.14 matrix, eight eval gates, lint/typechecking, and independently built and installed wheel/sdist checks pass. Hosted and owner-signed release qualification remain separate required gates. The original feature checkout and its starting edits are preserved. This isolated candidate contains the complete tested source checkpoint. * Emit only server-minted browser session cookies Preserve a validated local session and its review confirmation without re-emitting request cookie bytes. Keep expired, malformed, forged and explicit-token renewal paths server-signed. Add auth regressions and refresh immutable source-bound benchmark evidence; 245 focused security/dashboard and 139 evidence contracts pass. Keep the unmodified clean CodeQL gate authoritative. * Fix policy aliases and legacy hook upgrades * Refresh offline evidence for policy and installer fixes * Pin README evidence links to the fresh source commit * Align PyPI README contract with immutable evidence links * release: complete 1.7.10 changelog, pin file-protection link, drop pip cache from publish jobs Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NiadSJ7iUmXyv9jaduGYVH * security: make the Command Code file guard enforce real tool ids and fail closed; linear Spec Studio heading regex Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NiadSJ7iUmXyv9jaduGYVH * core: hydrate browse versions, reject empty supersede intervals, skip closure backfill on current schema Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NiadSJ7iUmXyv9jaduGYVH * core: report the closure observation limit as a caller error (ValueError + IntegrityError subclass) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NiadSJ7iUmXyv9jaduGYVH * docs: list eval.evidence_contracts in the AGENTS.md gate instead of a duplicate spec_crawl line Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NiadSJ7iUmXyv9jaduGYVH * security: deny unverifiable Windows file-guard targets (device, UNC, alternate data streams) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NiadSJ7iUmXyv9jaduGYVH * docs: note the file guard's canonical tool ids and Windows denials in the 1.7.10 changelog Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NiadSJ7iUmXyv9jaduGYVH * Refresh offline evidence for the release-review fixes Fresh artifact offline-fixtures-release-review-20261020.json (SHA-256 185cc53b...). The three measured fixture results are unchanged; charts re-rendered from it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NiadSJ7iUmXyv9jaduGYVH * Pin README evidence links to the release-review evidence commit Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NiadSJ7iUmXyv9jaduGYVH * fix(pi): raise the hono override to 4.13.13 for GHSA-5r4p-p66f-jhc7 The Pi extension CI audit fails on hono 4.12.4-4.13.10 (serveStatic double-decodes the request path). Only the locked hono leaf changes; npm ci, verify, integration tests and both audits pass locally with npm 11.12.1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NiadSJ7iUmXyv9jaduGYVH * fix(history): bound why/timeline candidate scanning to one window why and timeline walked every matching record in keyset pages before ranking, which took 6191 ms and 2744 ms at 20,001 memories. The relatedness pass now consumes one explicit candidate window built from the ranked lexical hits plus the semantic top hits, capped by DEFAULT_HISTORY_CANDIDATE_BUDGET, and falls back to a single bounded page if the FTS query fails. Same benchmark script now measures 6 ms and 1 ms. The lexical arm no longer fails silently: an OperationalError in the FTS query is logged and degrades to the LIKE probe instead of returning no history. * fix(dashboard): only auto-issue the loopback session on tokenless instances A token-gated instance previously minted an automatic browser session for loopback requests, so the token never protected the dashboard. automatic_browser_session_allowed() now gates the grant, /api/auth/local-session returns 403 local_token_required when ENGRAPHIS_API_TOKEN is set, and the 401 hint advertises the token instead of the zero-token path. The automatic session remains for zero-token instances, where it exists to mint the review CSRF nonce. The tests were rewritten because the old expectations encoded the pre-fix behaviour. * fix(sync): reserve closure capacity for locally authored observations Peers could consume all 1024 closure observations on a record, so a later local import was rejected with closure_budget_exceeded. Peer updates are now limited to 960 new observations and the remaining 64 are reserved for local writes; the local hard cap is unchanged. The budget is charged only for observations the peer does not already have, so replaying an accepted update whose closures are already present stays idempotent on a saturated record. Rows over the hard cap are still rejected outright. * fix(sources): reject UNC and device roots before any resolution or stat canonical_source_id and scan_document_tree converted untrusted device and UNC paths with Path(), lstat(), and resolve() before validating the configured root, which can reach remote SMB endpoints on Windows and offer NTLM authentication. remote_or_device_path() now inspects the raw string first, so such sources are rejected before any filesystem call. Import roots from ENGRAPHIS_IMPORT_ROOTS that name a UNC or device path are refused before realpath, and the tests assert that no lstat or realpath happens before the rejection. * fix(file-guard): fail closed on unverifiable targets and tool-id variants Normalise tool identifiers across separators, deny additional mutating shell commands, and reject drive-relative paths, alternate data streams, device names, and UNC targets before any policy decision. Symlink and ownership checks now use the platform's real volume semantics, and the hook handles a bounded payload and nesting depth before failing closed on BaseException. The installer writes the normalised hook entry and the docs describe the Windows denials. * test(release): bind artifact checks to the candidate version and manifest verify_release_artifacts now requires the sdist and wheel names for the release version, cross-checks the candidate identifier, and exits non-zero on every failure path instead of only printing errors. verify_distribution_contents compares the installed manifest against the built artifacts. Adds packaging and release-infrastructure coverage, including the fail-closed paths. * fix(sources): stop treating Windows creation time as a content change read_local_source compared st_ctime_ns between the path-based lstat and the handle-based fstat. On Windows st_ctime is creation time, and freshly written files can report it about a millisecond apart between the two views, so roughly one in five reads was rejected as 'source file changed during open'. Creation time also never changes when content changes, so it cannot act as a change detector there. Size and mtime remain authoritative on every platform, POSIX keeps its inode change time, and identity is still checked. This matches embedder_st, resources, private_state, and store, which already exclude st_ctime on Windows for the same reason. * docs: record the 1.7.10 review fixes and refresh the offline evidence Regenerates the public offline artifact after the source-read change, updates the artifact checksum and suite digest pins, and re-renders both charts from the new artifact. The three measured fixture results are byte-identical to the superseded run; only the manifest digest and the source_paths entry differ. Also records the bounded history window, the 960/64 closure partition, UNC/device import-root rejection, the token-gated automatic browser session, the file-guard hardening, and the Windows source-read timestamp fix. * docs: pin the README evidence links to the refreshed artifact commit * fix(history): annotate the fallback argument list for the type gate The Like fallback builds a list from three strings and then appends the integer row limit, so pyright inferred list[str] and rejected the append. The annotation is behaviour-preserving. * docs: regenerate the offline evidence after the history type fix store.py is part of the fixture-suite manifest, so the annotation change required a new immutable artifact. The recorded results are byte-identical to the previous run; only the manifest digest and the store.py entry differ. Charts are re-rendered from the new artifact and the checksum, digest, artifact name, and image metadata are re-pinned. * docs: re-pin the README evidence links to the regenerated artifact commit * docs: point the benchmark reproduction commands at the current artifact The export and render commands still named the superseded same-day artifact. Also records that predecessor's checksum and why it is retained unchanged. * docs: pin the README evidence links to the corrected reproduction commands * test(closure): cover the empty-interval supersession guard The guard arrived with the history work but had no direct coverage or release note. It rejects a supersession that starts at or before the predecessor's own valid_from, which the store and every sync peer treat as an unwritable empty interval. * fix(dashboard): keep the one-shot URL token until the browser exchange runs runBoot deleted the token fragment during its bookmark cleanup before the first bootstrap request could authenticate, so a token-gated instance showed the sign-in dialog with an empty field even when the URL carried the token. boot now keeps that value for the exchange, and the review CSRF lookup treats local_token_required as 'no automatic session' instead of a connection failure. The browser smoke navigates with the fragment wherever it expects the real server; the specs that already used it now pass, and 295 of 298 local Playwright tests pass (the other three are Galaxy physics timing flakes that pass serially). * ci: refresh the Pi audit lockfile for the ip-address advisory A new advisory (GHSA-rxp7-6hxx-x8q5, ip-address <=10.7.3) makes the Pi audit step fail on every branch. The lockfile now resolves 10.7.4 within its existing ^10.2.0 range; npm audit --package-lock-only reports zero vulnerabilities and no other package changed. * Harden memory concurrency, isolate MCP worker execution, and block Windows UNC path leaks - Guard engine write operations against lock inversion when a caller owns an SQLite transaction - Use atomic Store write transactions for receipt recording and remove duplicate receipt mutex - Run synchronous MCP handlers in worker threads and synchronize capability registry access - Block Windows UNC and device namespace paths before resolution across service, routes, and engine - Refresh offline benchmark evidence with immutable v3 artifact and updated render provenance * Pin documentation links and contract tests to release commit 5bb2895 * test(sources): cover whitespace-prefixed UNC and device paths The raw-path guards strip leading whitespace before classifying the path, because a prefixed UNC target still opens an SMB session. Nothing exercised that branch, so add the prefixed forms to the document, import-root, and file-guard cases, including a UNC working directory. * docs: describe the raw-path UNC rule across every local source surface The changelog and security guide still scoped the rejection to import roots after vault scans, code-index roots, source_id reads, and the file-guard working directory gained the same check. * test(sources): cover UNC vault paths before resolution canonical_vault_id and scan_obsidian_vault now reject remote and device paths on the raw text, but nothing asserted that neither resolves the path first, which is the behaviour the NTLM defence depends on. * docs: keep the vault-path sentence inside the public narrative boundary The public-narrative contract allows a competitor product name only on the importer and changelog surfaces, so SECURITY.md now says Markdown vault scans. The raw-path coverage is unchanged. * docs: state the semantic-arm cost of history ranking Measured at 20,001 memories with the semantic arm enabled: why 258 ms and timeline 121 ms, versus 1 ms and 0 ms on the default lexical embedder (baseline 6191 ms and 2744 ms). Candidate hydration is bounded, but closed records are absent from the ANN index, so a semantic embedder must still rank against every stored vector. The previous wording implied the whole cost was corpus-independent. * fix(auth): treat a present-but-blank API token as configured automatic_browser_session_allowed stripped the configured token before deciding whether the instance was gated, while the request middleware used plain truthiness. A deployment with ENGRAPHIS_API_TOKEN set to whitespace therefore still accepted the automatic loopback session and skipped the browser gate the operator asked for. The predicate now matches the middleware: only an absent or empty value is a zero-token instance. Adds a regression test that the blank value is refused by /api/auth/local-session and still exchanges through /api/auth/session. * docs: regenerate the offline evidence after the token-gating fix local_auth.py is part of the fixture-suite manifest, so the fix requires a new immutable artifact. The three measured results are byte-identical to v3; only the manifest digest, the local_auth.py entry, and the documented producer environment differ. Benchmarks now also names v3 as a preserved predecessor and points the render commands at the registered artifact. * docs: pin the README evidence links to the regenerated artifact commit * ci(release): make signed full-product qualification opt-in Since #217 every PyPI and GitHub release write required an Ed25519-signed envelope covering all 11 RELEASE_GATES, including a multi-week human pilot and a first-time-developer usability study. The four secrets it reads have never been configured, so v1.7.6, v1.7.8 and v1.7.9 could only ship through hard-coded per-release waiver inputs, and v1.7.10 has been blocked since 2026-10-18. The four "Require signed full-product qualification" steps now run only when the repository or environment variable REQUIRE_SIGNED_QUALIFICATION is 'true'. Unset, a release still needs every build gate (tests on 3.9-3.14, evals, pyright, CodeQL, audits, browser/Pi/container gates, installed artifact smokes, reproducibility) and approval of the protected release-qualification environment. The waive_v176/v178/v179_qualification inputs are removed, together with the waiver guard, the pre-PyPI waiver disclosure step and the waiver branches of the GitHub repair step. Repair keeps its retained-run artifact and evidence hash checks. When it creates a release that does not exist yet, it still refuses to displace a newer Latest. The release-contract tests now assert the new contract: each qualification step is present, reads only protected secrets, precedes every publication write and is guarded by the variable, and no waiver inputs remain. docs/RELEASE_QUALIFICATION.md documents the variable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0111byzLrKKTCJ23uTT6PyZq * fix(install_cc_hook): keep the operator's key order and sync the rename _write_settings() already staged settings.json in a temp file, fsynced it and moved it into place with os.replace(), so a crash can no longer leave a truncated file. Two gaps remained: - json.dumps(..., sort_keys=True) re-sorted every key in the user's hand-maintained settings file on each install and uninstall. Keys now keep their original order, so an install-then-uninstall round trip is byte-identical. - The directory entry was never synced after the replace, so a power loss could still roll the rename back. The parent directory is now fsynced on POSIX. This is best effort: a filesystem that refuses a directory fsync does not turn a completed install into a reported failure. The script stays stdlib-only, so it mirrors engraphis.private_state.atomic_private_text instead of importing it. That helper also defaults to 0o600 and treats a concurrent edit as a conflict. Everything else behaves as before. New tests cover key-order preservation through install and uninstall, an interrupted replace leaving the previous file intact with no temp files, fsync ordering (file, then directory), and a refused directory fsync. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0111byzLrKKTCJ23uTT6PyZq * ci: run the suite with pytest-xdist and raise the coverage floor to 80 CI ran the whole ~10.7k-test suite in one process, and the coverage gate only failed below 60% while measured line coverage is 86.7%. That floor would let roughly a quarter of the tested code lose its tests before CI noticed. - Add pytest-xdist>=3.6 to the test extra. ci.yml now runs the full-stack test matrix and the coverage job with `-n auto`. Each worker gets its own subdirectory under --basetemp, which stays inside ENGRAPHIS_INDEX_ROOTS. Locally on two cores the suite with coverage went from 1266s serial to 657s, with identical results. - Raise --cov-fail-under from 60 to 80, a few points below the measured 86.74% (41232 statements, 5467 missed). - Fix the one test that was not xdist-safe: test_unrecognized_marker_fails_closed_without_changing_checkpoint_files put os.getpid() in its parametrize id, so xdist workers collected different test ids and aborted. The pid case now has a fixed id, and the payload is unchanged. These stay serial on purpose: core-py39 (a numpy+pytest-only floor job), the single-file encryption job, and release.yml, whose public release evidence records the exact pytest command. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0111byzLrKKTCJ23uTT6PyZq * feat(release): reconcile desktop memory, stdio bridge, exact recall, and 1.7.10 CI fixes * docs: pin the README evidence links to the regenerated artifact commit * docs: sync AGENTS.md coverage threshold with 80% CI gate --------- Co-authored-by: Codex Release Audit <codex@localhost> Co-authored-by: Jaixii <jaixiicrypto@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: opencode-agent <agent@engraphis.local>
* fix(deps-dev): bump impeccable from 4.5.2 to 4.7.0 Bumps [impeccable](https://github.com/pbakaus/impeccable) from 4.5.2 to 4.7.0. - [Release notes](https://github.com/pbakaus/impeccable/releases) - [Changelog](https://github.com/pbakaus/impeccable/blob/main/docs/RELEASE-4.4.0.md) - [Commits](pbakaus/impeccable@cli-v4.5.2...cli-v4.7.0) --- updated-dependencies: - dependency-name: impeccable dependency-version: 4.7.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps-dev): bump tree-sitter-language-pack from 1.21.0 to 1.22.1 Bumps [tree-sitter-language-pack](https://github.com/xberg-io/tree-sitter-language-pack) from 1.21.0 to 1.22.1. - [Release notes](https://github.com/xberg-io/tree-sitter-language-pack/releases) - [Changelog](https://github.com/xberg-io/tree-sitter-language-pack/blob/main/CHANGELOG.md) - [Commits](xberg-io/tree-sitter-language-pack@v1.21.0...v1.22.1) --- updated-dependencies: - dependency-name: tree-sitter-language-pack dependency-version: 1.22.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps-dev): bump @axe-core/playwright from 4.12.1 to 4.14.0 Bumps [@axe-core/playwright](https://github.com/dequelabs/axe-core-npm) from 4.12.1 to 4.14.0. - [Release notes](https://github.com/dequelabs/axe-core-npm/releases) - [Changelog](https://github.com/dequelabs/axe-core-npm/blob/develop/CHANGELOG.md) - [Commits](https://github.com/dequelabs/axe-core-npm/commits/v4.14.0) --- updated-dependencies: - dependency-name: "@axe-core/playwright" dependency-version: 4.14.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps-dev): bump @playwright/test from 1.64.0 to 1.64.1 Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.64.0 to 1.64.1. - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](microsoft/playwright@v1.64.0...v1.64.1) --- updated-dependencies: - dependency-name: "@playwright/test" dependency-version: 1.64.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps-dev): bump openai-codex from 0.160.1 to 0.163.0 --- updated-dependencies: - dependency-name: openai-codex dependency-version: 0.163.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps): bump the codeql-action group with 3 updates Bumps the codeql-action group with 3 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `github/codeql-action/init` from 4.38.3 to 4.39.0 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@24c5418...6f2ac81) Updates `github/codeql-action/analyze` from 4.38.3 to 4.39.0 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@24c5418...6f2ac81) Updates `github/codeql-action/upload-sarif` from 4.38.3 to 4.39.0 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@24c5418...6f2ac81) --- updated-dependencies: - dependency-name: github/codeql-action/init dependency-version: 4.39.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: codeql-action - dependency-name: github/codeql-action/analyze dependency-version: 4.39.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: codeql-action - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.39.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: codeql-action ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.1 to 7.0.2. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@043fb46...cf430e0) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 7.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps): bump pypa/gh-action-pypi-publish from 1.14.1 to 1.14.3 Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.14.1 to 1.14.3. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](pypa/gh-action-pypi-publish@ba38be9...7245906) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-version: 1.14.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps): bump pillow from 12.3.0 to 13.0.0 in /eval/configs Bumps [pillow](https://github.com/python-pillow/Pillow) from 12.3.0 to 13.0.0. - [Release notes](https://github.com/python-pillow/Pillow/releases) - [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst) - [Commits](python-pillow/Pillow@12.3.0...13.0.0) --- updated-dependencies: - dependency-name: pillow dependency-version: 13.0.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps): bump setuptools from 84.0.0 to 84.1.0 in /eval/configs Bumps [setuptools](https://github.com/pypa/setuptools) from 84.0.0 to 84.1.0. - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](pypa/setuptools@v84.0.0...v84.1.0) --- updated-dependencies: - dependency-name: setuptools dependency-version: 84.1.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps): bump filelock from 3.32.7 to 4.2.1 in /eval/configs Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.32.7 to 4.2.1. - [Release notes](https://github.com/tox-dev/py-filelock/releases) - [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst) - [Commits](tox-dev/filelock@3.32.7...4.2.1) --- updated-dependencies: - dependency-name: filelock dependency-version: 4.2.1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps): bump pypdf from 6.19.0 to 6.21.2 in /eval/configs Bumps [pypdf](https://github.com/py-pdf/pypdf) from 6.19.0 to 6.21.2. - [Release notes](https://github.com/py-pdf/pypdf/releases) - [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md) - [Commits](py-pdf/pypdf@6.19.0...6.21.2) --- updated-dependencies: - dependency-name: pypdf dependency-version: 6.21.2 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps): bump pypa/gh-action-pypi-publish from 1.14.1 to 1.14.3 Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.14.1 to 1.14.3. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](pypa/gh-action-pypi-publish@ba38be9...7245906) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-version: 1.14.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.1 to 7.0.2. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@043fb46...cf430e0) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 7.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps-dev): bump tree-sitter-language-pack from 1.21.0 to 1.22.1 Bumps [tree-sitter-language-pack](https://github.com/xberg-io/tree-sitter-language-pack) from 1.21.0 to 1.22.1. - [Release notes](https://github.com/xberg-io/tree-sitter-language-pack/releases) - [Changelog](https://github.com/xberg-io/tree-sitter-language-pack/blob/main/CHANGELOG.md) - [Commits](xberg-io/tree-sitter-language-pack@v1.21.0...v1.22.1) --- updated-dependencies: - dependency-name: tree-sitter-language-pack dependency-version: 1.22.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps-dev): bump openai-codex from 0.160.1 to 0.163.0 --- updated-dependencies: - dependency-name: openai-codex dependency-version: 0.163.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * fix(deps): bump the codeql-action group across 1 directory with 3 updates Bumps the codeql-action group with 3 updates in the / directory: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `github/codeql-action/init` from 4.38.3 to 4.39.1 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@24c5418...9b32540) Updates `github/codeql-action/analyze` from 4.38.3 to 4.39.1 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@24c5418...9b32540) Updates `github/codeql-action/upload-sarif` from 4.38.3 to 4.39.1 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@24c5418...9b32540) --- updated-dependencies: - dependency-name: github/codeql-action/analyze dependency-version: 4.39.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: codeql-action - dependency-name: github/codeql-action/init dependency-version: 4.39.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: codeql-action - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.39.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: codeql-action ... Signed-off-by: dependabot[bot] <support@github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jaixii <algorithmictradingsolutions@gmail.com>
…Grype release gate (#285) * fix(deps): bump certifi from 2026.7.22 to 2026.10.19 in /eval/configs Bumps [certifi](https://github.com/certifi/python-certifi) from 2026.7.22 to 2026.10.19. - [Commits](certifi/python-certifi@2026.07.22...2026.10.19) --- updated-dependencies: - dependency-name: certifi dependency-version: 2026.10.19 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * fix(release): bump Dockerfile python:3.11-slim digest to 3.11.17 for CVE-2026-19445/19553 * fix(release): bump release-constraints setuptools to 84.1.0 for GHSA-xmj3-9gf7-h52w --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ck leaks (fixes #286) (#287) * fix(mcp): recover from DatabaseError, stale files, and transaction lock leaks - Add safe exception marker extraction in mcp_server logging to attribute underlying SQLite errors (SQLITE_CORRUPT, SQLITE_BUSY, SQLITE_LOCKED, SQLITE_IOERR, SQLITE_NOTADB, write_lock_timeout) without leaking SQL, paths, credentials, or memory content (Issue #286). - Prevent transaction lock leak in _SerializedConnection._finish when rollback fails, avoiding 60s timeout deadlocks across threadpool workers. - Add Store.is_stale() and Store.reconnect() to detect when the SQLite database file was replaced or modified out-of-process and cleanly re-initialize connection pragmas, unicode function, and snapshot pools. - Add auto-recovery and single-retry loops on DatabaseError/OperationalError in Store memory fetchers, engraphis_recall_context, engraphis_recall, engraphis_recall_grounded, and engraphis_get_memory. - Add comprehensive regression and unit tests in tests/test_mcp_database_error_recovery.py. * fix(typecheck): ensure Store.get_memories returns on all code paths * docs: refresh public offline evidence artifact for Issue #286 recovery fixes
* fix(ci): clear the Pi extension audit gate Bump the Pi test host to @earendil-works/pi-coding-agent 1.4.0 and pin the patched undici and minimatch leaves with package.json overrides. The shrinkwrap now resolves to fixed versions, so the post-install leaf repair and its version assertions are neither needed nor valid. Verified locally: npm ci --ignore-scripts, npm run verify, npm run test:integration, npm audit --omit=dev, and npm audit --no-package-lock --include=dev all pass with zero vulnerabilities. * test(release): track the resolved Pi dependency floors The release-floor test pinned the removed post-install repair. It now checks the overrides and dev-host pin that make the lock itself resolve patched minimatch and undici, and that CI no longer rewrites node_modules before auditing. * docs(pi): drop the obsolete post-install dependency repair The lock resolves the patched leaves through package.json overrides, so the development steps no longer rewrite the installed host. * docs(pi): normalize README line endings Keep the file byte-compatible with the repository copy so the dependency-repair documentation change reviews as prose only. --------- Co-authored-by: coding-dev-tools <coding-dev-tools@users.noreply.github.com>
* fix(ci): clear the Pi extension audit gate Bump the Pi test host to @earendil-works/pi-coding-agent 1.4.0 and pin the patched undici and minimatch leaves with package.json overrides. The shrinkwrap now resolves to fixed versions, so the post-install leaf repair and its version assertions are neither needed nor valid. Verified locally: npm ci --ignore-scripts, npm run verify, npm run test:integration, npm audit --omit=dev, and npm audit --no-package-lock --include=dev all pass with zero vulnerabilities. * test(release): track the resolved Pi dependency floors The release-floor test pinned the removed post-install repair. It now checks the overrides and dev-host pin that make the lock itself resolve patched minimatch and undici, and that CI no longer rewrites node_modules before auditing. * docs(pi): drop the obsolete post-install dependency repair The lock resolves the patched leaves through package.json overrides, so the development steps no longer rewrite the installed host. * docs(pi): normalize README line endings Keep the file byte-compatible with the repository copy so the dependency-repair documentation change reviews as prose only. * feat: salvage the mergeable work from the 1.7.12 branch The file-protection engine, Command Code hook, and supporting docs already landed on main via #270, so the 1.7.12 branch's unique remaining value is: - tests/test_mcp_memory_concurrency.py: desktop MCP concurrency regressions, ported to main's fail-fast writer admission (RuntimeError instead of a locked OperationalError); all 11 cases pass. - tools/ram_probe.py: a Windows-only RAM integrity and stress diagnostic. - run_preflight.ps1: local offline gates before pushing. The Fast/full test branch previously ran the same two-file command in both modes; the full mode now runs the suite, and the copy no longer claims a billing policy. engraphis/dashboard_assets/engraphis-graph-compat.js is deliberately not restored: main's dashboard tests assert that asset stays absent. --------- Co-authored-by: coding-dev-tools <coding-dev-tools@users.noreply.github.com>
* fix(ci): clear the Pi extension audit gate Bump the Pi test host to @earendil-works/pi-coding-agent 1.4.0 and pin the patched undici and minimatch leaves with package.json overrides. The shrinkwrap now resolves to fixed versions, so the post-install leaf repair and its version assertions are neither needed nor valid. Verified locally: npm ci --ignore-scripts, npm run verify, npm run test:integration, npm audit --omit=dev, and npm audit --no-package-lock --include=dev all pass with zero vulnerabilities. * fix(dashboard): open the dashboard automatically for every browser Remove the browser token form and the window.prompt() token exchange. The dashboard mints its HttpOnly session for any same-origin browser request that reaches it: loopback, a literal address, a single-label/mDNS name, or the host in ENGRAPHIS_DASHBOARD_URL, still gated by the custom browser header, an exact Origin/Host match, and a trusted-proxy check for forwarding headers. Machine clients and /mcp still require Authorization: Bearer ENGRAPHIS_API_TOKEN. ENGRAPHIS_BROWSER_AUTO_SESSION=0 restores the hardened token gate with one-time links: POST /api/auth/link (bearer-protected) and engraphis-dashboard --link mint a single-use code, signed with the token plus a per-process epoch, delivered in a URL fragment, valid for 15 minutes, and redeemed at POST /api/auth/handoff for a 12-hour session. Re-export the offline evidence artifact because the registry binds the hashes of every public Python source file, and refresh both rendered images. * test(release): track the resolved Pi dependency floors The release-floor test pinned the removed post-install repair. It now checks the overrides and dev-host pin that make the lock itself resolve patched minimatch and undici, and that CI no longer rewrites node_modules before auditing. * docs(pi): drop the obsolete post-install dependency repair The lock resolves the patched leaves through package.json overrides, so the development steps no longer rewrite the installed host. * docs(pi): normalize README line endings Keep the file byte-compatible with the repository copy so the dependency-repair documentation change reviews as prose only. * fix(dashboard): do not echo a configuration exception to the caller CodeQL py/stack-trace-exposure flagged the /api/auth/link error path. The value is already validated at startup; return the constant message instead. * chore(evidence): re-export the registry after the CodeQL fix The evidence registry binds the SHA-256 of every public Python source file. The stack-trace-exposure fix changed engraphis/dashboard_app.py after the previous export, so the pinned artifact no longer matched the tree. This immutable export records the final source manifest; the three fixture results are unchanged. Updated the registry constants, benchmark guide, README checksum prefix, and both rendered SVG/PNG pairs. --------- Co-authored-by: coding-dev-tools <coding-dev-tools@users.noreply.github.com>
Bumps [impeccable](https://github.com/pbakaus/impeccable) from 4.7.0 to 4.8.0. - [Release notes](https://github.com/pbakaus/impeccable/releases) - [Changelog](https://github.com/pbakaus/impeccable/blob/main/docs/RELEASE-4.4.0.md) - [Commits](pbakaus/impeccable@cli-v4.7.0...cli-v4.8.0) --- updated-dependencies: - dependency-name: impeccable dependency-version: 4.8.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jaixii <algorithmictradingsolutions@gmail.com>
Bumps [pypdf](https://github.com/py-pdf/pypdf) from 6.21.2 to 6.21.4. - [Release notes](https://github.com/py-pdf/pypdf/releases) - [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md) - [Commits](py-pdf/pypdf@6.21.2...6.21.4) --- updated-dependencies: - dependency-name: pypdf dependency-version: 6.21.4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jaixii <algorithmictradingsolutions@gmail.com>
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 7.0.0 to 7.1.0. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](actions/setup-python@5fda3b9...6d4fd22) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: 7.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jaixii <algorithmictradingsolutions@gmail.com>
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 7.0.0 to 7.1.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](actions/setup-node@8207627...949feb2) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 7.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jaixii <algorithmictradingsolutions@gmail.com>
…ates (#291) Bumps the codeql-action group with 3 updates in the / directory: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `github/codeql-action/init` from 4.39.0 to 4.39.1 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@6f2ac81...9b32540) Updates `github/codeql-action/analyze` from 4.39.0 to 4.39.1 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@6f2ac81...9b32540) Updates `github/codeql-action/upload-sarif` from 4.39.0 to 4.39.1 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@6f2ac81...9b32540) --- updated-dependencies: - dependency-name: github/codeql-action/analyze dependency-version: 4.39.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/init dependency-version: 4.39.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.39.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: codeql-action ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jaixii <algorithmictradingsolutions@gmail.com>
* chore(ci): let dependabot rebase its own branches main requires branches to be up to date before merging (strict required checks), so every merge leaves the other dependency PRs behind and needs a manual update-branch plus a full CI cycle. rebase-strategy: auto keeps them current without that dance. * chore(ci): keep the dependabot config line endings stable --------- Co-authored-by: coding-dev-tools <coding-dev-tools@users.noreply.github.com>
) The dashboard no longer exchanges a deployment token from a URL fragment, so the e2e specs that navigated with #token=<ENGRAPHIS_API_TOKEN> were exercising a dead path while the automatic session did the real work. Open the dashboard directly and let the shipped automatic-session path run, including the Firefox/WebKit smoke. The deliberate obsolete-fragment test in ask-home.spec.js and the mocked one-time handoff test in ledger.spec.js remain. Co-authored-by: coding-dev-tools <coding-dev-tools@users.noreply.github.com>
Guard the security-relevant ENGRAPHIS_BROWSER_AUTO_SESSION default (on) and its off switches, including the malformed-value fallback. The configuration and Playwright comments now describe the shipped behavior: token-protected API routes, automatic browser access. Co-authored-by: coding-dev-tools <coding-dev-tools@users.noreply.github.com>
- Lead the Jev section with "included free with every paid plan: Pro and Team" - Keep the entitlement, rolling limits, fleet guard, consent, and BYOK terms intact - Record the clarification under Unreleased Co-authored-by: coding-dev-tools <coding-dev-tools@users.noreply.github.com> Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
* docs(plans): include 500 free Jev calls per day for Pro and Team - Replace the three rolling caps with one free 500-call daily allowance - State the included allowance in the README, plan comparison, configuration, MCP reference, bundled skill, env sample, and dashboard messages - Update the documentation contract to pin the policy; historical 1.7.9 notes stay unchanged Co-authored-by: CommandCodeBot <noreply@commandcode.ai> * docs(plans): announce managed Jev availability for paid plans - Replace the not-yet-available notice with live availability and enablement - Keep the 500-call daily allowance and per-call consent rules - Refresh the bundled skill checksum Co-authored-by: CommandCodeBot <noreply@commandcode.ai> --------- Co-authored-by: coding-dev-tools <coding-dev-tools@users.noreply.github.com> Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
* chore(release): prepare 1.7.12 candidate - Bump package, plugin, and commercial-manifest versions to 1.7.12 - Record the 1.7.12 changelog entry for automatic browser access, the salvaged verification tooling, and dependency/CI upkeep - Refresh Claude plugin asset checksums Co-authored-by: CommandCodeBot <noreply@commandcode.ai> * docs(readme): state Jev is free for Pro and Team up front - Lead the Jev section with "included free with every paid plan: Pro and Team" - Keep the entitlement, rolling limits, fleet guard, consent, and BYOK terms intact - Record the clarification under Unreleased Co-authored-by: CommandCodeBot <noreply@commandcode.ai> * fix(sync,manifest): record sync authorization denial and support public-offer cloud contract - Record authoritative entitlement denial when POST /api/sync/run fails with 401/402/403, and return account_url() when connected to prevent lapsed Team users from misrouting to Pro checkout - Accept schema 'engraphis-public-offer/v1' in scripts/check_commercial_manifest.py --cloud-contract to cleanly validate against engraphis-cloud - Add regression test in tests/test_sync_dashboard.py Agent: antigravity * fix(benchmark,eval): isolate offline chunking eval and refresh 1.7.12 release evidence - Ensure chunking_eval uses retention_supervisor=none so offline evaluations remain deterministic and independent of local user LLM retention settings - Export fresh immutable offline evidence artifact for 1.7.12 release - Update benchmark report images (SVG and PNG provenance chunks) - Bind new fixture digest and artifact sha256 across tests and documentation Agent: antigravity --------- Co-authored-by: coding-dev-tools <coding-dev-tools@users.noreply.github.com> Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
An owner-private ~/.engraphis/config.env can enable live extraction, retention supervision, or a BYOK decision backend. The autouse fixture already pins paths, models, and cloud credentials; also pin the provider features and remove provider key variables so the documented offline gate cannot block on a live DNS lookup. Tests that exercise these paths opt in explicitly with monkeypatch. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Coding-Dev-Tools
force-pushed
the
main
branch
from
November 4, 2026 04:39
6c75758 to
b5b006d
Compare
This was referenced Nov 4, 2026
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.
Summary
The autouse deployment-isolation fixture pins state paths, models, and cloud credentials, but it did not pin provider features. An owner-private
~/.engraphis/config.envor exported environment could enable live LLM extraction, retention supervision, or a BYOK decision backend, so the documented offline suite could block on a provider DNS lookup instead of running inert.This pins:
settings.extractor = nonesettings.llm_auto_extract = Falsesettings.retention_supervisor = nonesettings.decision_backend = noneand removes
ENGRAPHIS_EXTRACTOR,ENGRAPHIS_LLM_AUTO_EXTRACT,ENGRAPHIS_RETENTION_SUPERVISOR,ENGRAPHIS_DECISION_BACKEND,ENGRAPHIS_LLM_PROVIDER,ENGRAPHIS_LLM_MODEL,ENGRAPHIS_LLM_API_KEY,TYPESAFE_API_KEY, andJEV_API_KEY.Tests that exercise these paths already opt back in explicitly with
monkeypatch.Verification
pytest tests/test_config.py tests/test_jev_backend.py tests/test_jev_configuration.py tests/test_jev_deadlines.py tests/test_jev_integration.py tests/test_jev_origin_binding.py tests/test_jev_transport.py tests/test_llm_config.py tests/test_llm_dashboard.py tests/test_mcp_jev_consent.py tests/test_mcp_jev_payloads.py tests/test_retention.py tests/test_retention_policy.py tests/test_service_context.py -q— all passed.ruff check .— clean.Agent: commandcode