Skip to content

InterLock 1.0.0-rc.14

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 01 Oct 14:10
· 24 commits to main since this release

Security

  • PyJWT moves from 2.13.0 to 2.15.1. Ten advisories published against 2.13.0
    (fixed in 2.14.0) failed the dependency audit on every build. PyJWT reaches
    the image through the GitHub, Redis, Salesforce and Snowflake client
    libraries.
  • urllib3 moves from 2.7.0 to 2.8.0, for three advisories fixed in 2.8.0.
    InterLock depends on it directly, and through requests, botocore and
    PyGithub.
  • oauthlib moves to 4.0.0 and sentence-transformers to 5.7.0, for one
    advisory each. Neither is in the published image: oauthlib comes with the
    Atlassian connectors' client library and sentence-transformers with the
    ml extra, but the release preflight audits both.

Added

  • make smoke-eval runs the quick start as an acceptance test: from an empty
    Compose project it signs in with the default password and changes it,
    registers the sample database through the wizard, grants an agent the read
    role, and checks the redacted rows over both protocols, a refused DELETE
    and the audit record. CI runs it beside the end-to-end suite. The evaluation
    guide now has two tracks: start from empty, or explore the seeded demo.

Fixed

  • MCP recorded the client's X-Correlation-ID only on failed calls; served,
    cached and denied calls were audited under a new random ID, so the ID a
    client sent could not find its request in the audit log. Every MCP audit row
    now carries it. Found by make smoke-eval.
  • The same SQL from the same agent over MCP and then over the PostgreSQL wire
    protocol shared one cache entry, so the second read got the first's format:
    psql received MCP's JSON and failed with lost synchronization with server, and an MCP agent could receive PostgreSQL wire bytes as its result.
    The cache key now includes the protocol (key format v6, so existing entries
    become misses), and each protocol checks a cached entry's format before
    serving it. Reported by an independent evaluation of rc.13; covered by
    end-to-end tests that compare the rows psql and MCP decode, in both orders.
  • A redacted answer served from cache was audited with pii_detected false,
    because no scanner ran on the hit. The redaction applied when the answer was
    cached now travels with the entry in both cache tiers, and PostgreSQL, MCP
    and HTTP cache hits record it; the event page marks it as redaction from
    when the answer was cached.
  • The audit event page showed an empty correlation ID, which lives in the
    request metadata, and printed policy decisions and metadata as Python
    dictionaries; both now render properly. The CSV export gains protocol and
    correlation_id columns (appended, so existing columns keep their
    positions), and Audit & Costs gains the protocol filter the docs
    described.
  • An MCP query the database rejected, such as one naming a column that does
    not exist, returned only tool execution failed. Query errors (SQLSTATE
    classes 42, 22, 23 and 0A, and the MySQL equivalents) now return their code
    and the database's primary message, as a readable isError result for
    handshake clients and -32602 with the text for modern ones. Connection and
    server errors stay opaque. Both carry a correlation ID that matches the
    audit event.
  • The console could not register a source on a private network, such as the
    quick start's sample database, because only the API could set
    allow_private_egress. The new-source form, the wizard and the edit page now
    have an Allow a private network address option, with the same rules as
    the API.
  • The quick start stays in the console: the sample database is registered
    through the wizard with the private-network option, the wizard's default
    read role is the agent's role (the old step that asked for one hand-made
    statement did not match the role editor), both protocols run the same
    statement, psql runs inside the stack, the refused write is shown over MCP,
    and a port override is given. Compose no longer warns about the optional
    Anthropic and Mistral keys; the guide says no model key is needed.
  • HTTP sources can set probe_path, the route Test Connection requests,
    for APIs whose root answers 404; a failed test now names the path it
    requested. It must be a path on base_url.
  • Connector pages and the console call a connector's status its
    implementation, separate from release status, and a semantic cache
    strategy says semantic serving is disabled. The MCP tools reference names
    the source-role action each tool needs.
  • The console's browser tab now follows sidebar navigation instead of staying
    on the first page's title, and no longer prints that title in the page.
  • Docs: readable sidebar labels for guide groups; the testing page says
    make load needs Docker and deletes its project's volumes; contributor
    notes moved out of known limitations, and its release-gate line is current.

Documentation

  • Two DigitalOcean deployment guides: an evaluation on one Droplet with Docker
    Compose, reached through an SSH tunnel, and a production deployment on DOKS
    with Managed PostgreSQL and Valkey, Traefik and Let's Encrypt. Each was
    followed from an empty account to a governed, redacted query and torn down.
    The DOKS guide sizes PostgreSQL by connections: six pods with the default
    pool exhaust the 1 GB plan, so it uses the 2 GB plan and a pool of 4.
  • The documentation site is published at https://interlock.contextdata.dev by
    DigitalOcean App Platform, from the spec in .do/docs-app.yaml, and is rebuilt
    from main on every push. Canonical URLs and the sitemap use that address;
    DOCS_SITE_URL builds for another.
  • The DigitalOcean (DOKS) deployment and live certification gate is closed:
    v1.0.0-rc.13 was deployed from its signed digests to a disposable cluster,
    certified (35/35 governed-core end-to-end tests, readiness across an upgrade)
    and torn down by the automated workflow. The release process page cites the
    run, the date and both digests.