Skip to content

Releases: kinlab-ai/kin

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 27 Sep 09:46
b47cbd1

A graph-native code repository for people and AI agents.
v0.8.1 lands 18 changes, listed below.

[0.8.1] - 2026-09-26

Added

  • Language-server sweeps prove each call at its callee token. The definition
    answer at a call site proves that call, and call hierarchy is judged per
    call instead of per caller, so one unprovable call no longer discards its
    caller's proven ones. A call through a value slot, such as an interface
    member, a property or a parameter, proves nothing and retires nothing. A
    name-only guess the server contradicts is retired, and an answer outside
    the repository refutes the guess at that site. What counts as inside the
    repository is decided by what the graph holds, so a symlinked workspace
    package is inside and node_modules is not. Python decorator calls bind
    through their receiver instead of by bare name.
  • A call that resolves outside the repository gets a proven edge to an
    external symbol, named by package, version and symbol in the SCIP symbol
    grammar, so the same symbol has the same id in every repository. Call rows
    in MCP and the CLI show external targets, get_entity, find_references
    and graph_neighborhood accept external ids, and trace_data_flow stops
    at the symbol as a leaf. Every other tool answers an external id by what it
    is, never as a missing entity, and reads no file for it.
  • Analysis environments, on by default. Kin fetches the dependencies a
    repository's lockfile pins (Python wheels, npm, pnpm and yarn tarballs,
    crates and Go modules), checks each against its hash before unpacking it,
    and keeps them in a store shared across repositories under
    KIN_HOME/cache, so language servers can resolve calls into them. For
    Python it also fetches a standalone CPython build of the pinned version,
    and for Rust the rust-src component when the pinned toolchain lacks it.
    Kin never runs an installer, a build script, an install script or any
    repository or dependency code. The user's own environment wins when it
    matches the lockfile. KIN_ANALYSIS_ENVIRONMENTS=0 turns fetching off,
    and a repository without a matching environment of its own then reports
    its environment missing.
  • kin init --json reports the generation the store ended at in a new
    authority_as_of field.

Changed

  • Language servers load all of a repository's code: every workspace folder,
    rust-analyzer's linked projects with all features, pyright's settings
    through workspace/configuration, TypeScript workspace packages resolved
    to their source even when build output exists, and gopls build tags and
    go.work. Proc macros and build scripts stay off. A TypeScript server is
    judged ready per document instead of after a fixed wait.
  • The store format steps to new versions: repository snapshots 21 to 26,
    authority frames 6 to 8 and graph deltas 6 and 7. A store records a
    completion mark for each file a language-server sweep finishes, resolution
    records, calls proven into named symbols outside the repository, and one
    call-site ledger per caller, with one state for each call site. Each version
    is written only by a store that carries what it adds, so a store this
    version has not enriched keeps its bytes. Existing stores are swept again
    once on the first start, since nothing an earlier version finished recorded
    these states. An older Kin refuses a store this version has written at its
    header, naming the version it cannot read, instead of misreading it.

Fixed

  • Call guesses a language server had already refuted and retired no longer
    come back after a commit to an unrelated file. An edit now re-derives the
    files that depend on the edited one only when something they bind against
    moved: a declaration, a signature, an import or a structural relation.
  • A watcher round that finds only bytes Kin already holds no longer moves the
    graph epoch, so the enrichment a pass finished in the meantime is kept
    instead of being discarded and asked again.
  • Incremental enrichment after an edit proves calls the way the full sweep
    does: each call at its callee token, guesses the answers contradict
    retired, calls into symbols outside the repository named, and every caller
    in the file given its call-site ledger, so the file keeps its completion
    mark.
  • Answers carry the call-site state of the callers they read. kin refs,
    find_references, get_context_pack, graph_neighborhood,
    kin_graph_status and kin context report each caller's sites as proven,
    unresolved, failed, outside any build or still owed a sweep, over the
    focal's own body, the callers in the files that import the focal's file,
    or the whole store. While a caller in that scope has sites a sweep has not
    settled, the verdict is inconclusive under call_sites_owed and the
    terminal output prints a not settled: line. An owed caller whose whole
    body never spells a name a call to the focal uses cannot call it by that
    name and is not counted. A member is matched by each segment of its name,
    such as send or Session for Session.send, never by the qualified name
    no call spells. kin refs gates its absence on the same
    readings, so it never certifies an absence find_references refuses. A
    caller no resolver can
    prove on this host, because enrichment is switched off, no language server
    serves its language or the one that does cannot start, reads
    call_sites_unproven_no_resolver instead, with the reason. A caller can
    also reach the focal without importing its file, such as a method called
    through another object, so kin refs, find_references,
    get_context_pack and impact_analysis also read the focal's language
    outside that scope: while a caller there is still owed its sites, the
    answer names those files, says it may be missing a caller, and its verdict
    is inconclusive under call_sites_owed until kin daemon sweep settles
    them. kin init waits for the sweep by default.
  • A commit made after language-server enrichment no longer fails with
    has unadmitted destination endpoint external_reference:.... The workspace
    a commit moves now carries the external symbols and proof contexts its
    edges name, as the change it publishes already did.
  • A guarded entity edit no longer comes back source_base_conflict when
    enrichment landed between the read and the write, a daemon restart that
    flushed pending enrichment included. A source base now compares the
    workspace's repository, head and tree, as a repository base does, and the
    entity's own artifact, bytes, span and body; a workspace generation that
    advanced with no source change is not a conflict.
  • An interrupted sweep resumes from per-file completion marks kept in the
    store's authority instead of starting over. Sweep checkpoints no longer
    grow with the store and are spaced to cost about 5% of a sweep.
  • A language server's deterministic refusal settles its call sites as
    unprovable instead of leaving them owed on every sweep. A request Kin stops
    waiting for is cancelled, and a TypeScript backend that exits is noticed.
  • kin setup defaults to installing a language server when the runtime it
    needs is present, and asks only about the languages the repository
    contains. When a sweep skips or cannot serve a language for want of a
    server, kin init names kin doctor --fix --install-language-servers,
    and a skipped server's line prints that command rather than a version
    string.
  • kin doctor --fix --install-language-servers installs servers only for the
    repository's languages. It keeps installer output for a failed install,
    says so before it writes outside Kin's directory, and refuses an installer
    it found only outside PATH, printing the command to run instead. A server
    missing for a language the repository does not use no longer fails the
    command.
  • Setup no longer warns that the VFS shim is missing on an install that ships
    no filesystem projection. It prints one line saying projection is not part
    of the install.
  • kin_graph_status no longer reports saved work as recorded from a reading
    taken before the latest admission. While the graph is changing it now waits,
    up to five seconds, for writers and the pending admission to finish, and a
    reading it still has to replay reports durability unknown instead of an
    all-clear.

What's Changed

Full Changelog: v0.8.0...v0.8.1

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 13:41
99881b9

A graph-native code repository for people and AI agents.
v0.8.0 lands 44 changes, listed below.

[0.8.0] - 2026-09-26

Added

  • lexical_lookup finds exact literals, including punctuation, in stored
    graph fields: names, signatures, summaries, body previews and file context.
    It reports the matching field and verified source line when available.
    Stable content-bound pagination retains hits withheld by response limits.
    Each page scans the scoped graph; previews can be bounded, so a miss does
    not prove repository absence. Literal hits are distinct from resolved calls
    and references.

Changed

  • Breaking for MCP clients: every whole-entity replacement now carries the
    source_base of the version it replaces. A kin_mutate,
    kin_transaction_stage or kin_transaction_commit operation that sends
    update or modify with a body and no payload, or an explicit Entity
    payload with a body, is refused as source_base_required before anything
    is begun or applied. The fix is one step: call get_entity_source, then
    resend with the entity's UUID as target and
    payload.EntitySourceBase set to the source_base it returned, unchanged,
    or send an anchored EntitySourcePatch. A current read of an entity whose
    span has no recorded source digest answers source_base_unavailable
    instead. An older repository may need kin upgrade; the caller must reread
    and obtain a source base before editing, or report the verification gap.
  • kin agent run no longer carries edit_file or write_file. The agent
    changes code only through kin_mutate, naming the entity it changes, and
    KIN_AGENT_PURE_KIN set to a false value, which used to add the two file
    tools back, now makes the run refuse to start. Exit code 6
    (changes_unpublished) is retired with them, along with the local_calls,
    unpublished_changes and files_changed fields of the result record.
    entities_changed still names every entity a run changed.
  • entity_history answers a bounded page: offset from 0, limit 20 by
    default and 100 at most, with change_count, latest_change_id,
    returned and next_offset beside result[]. Each row is the change's
    projection onto that one entity, with its original id, origin and
    parents and exact counts for the sections it leaves out. max_chars
    bounds the reply from 2,000 to 60,000 UTF-8 bytes. An out-of-range or
    non-integer offset, limit or max_chars is refused with a structured
    error instead of clamped. The daemon's raw route returns the same paging
    object, so a client of it reads result[] rather than a bare array.
  • Advance hydration semantics so stored derived graphs are re-evaluated using
    the corrected Rust import and call extraction rules.

Fixed

  • find_references and kin refs confirm a caller's site only when an edge
    they count recorded it. A caller's row summarized every edge behind it, so
    one proven edge confirmed every site that caller's other edges recorded:
    on the gh CLI, RepoOwner() calls on a ghrepo.Interface value, recorded
    only by the parser's receiver fan-out, read as type_resolved calls of
    Repository.RepoOwner because the same callers also call it directly. The
    sites only a held edge recorded now travel as that caller's row in
    candidates, under the resolution those edges earned, and the counted row
    reads reference_lines_partial_reason: unconfirmed_sites_in_candidates.
    kin refs prints them under the candidate headings, marked as belonging to
    a caller counted above.
  • A store enriched before a Go method's reference sites were proven no longer
    confirms the sites that answer widened. Released builds recorded an
    interface method's gopls answer as it came, so every direct call of a
    concrete method read as a reference to the interface method it implements,
    and no later sweep removed those records. They are now read as no evidence,
    the proven sites are recorded under their own evidence rule, and a Go file
    an earlier build enriched is swept again to record them, while every other
    language's files stay enriched.
  • A Go method's confirmed references are the sites gopls resolves to that
    method. gopls answers a method's references with those of every method
    related to it through interface satisfaction, and a site from that answer
    is now recorded only when gopls's definition there is the method asked
    about. A call through an interface stays a caller of the interface method
    and an interface-dispatch candidate of each concrete method behind it, and
    a direct call of a concrete method is no longer a reference to the
    interface method it implements.
  • The language-server sweep records a Go file as enriched once its queries
    are answered. gopls answers a request that does not apply where it was asked,
    such as a type definition at a keyword or a call hierarchy at a package
    clause, with an error, and those were counted as failed queries, so every Go
    file was held back and every daemon start queried the whole repository again.
    Those answers are now recognized by method and message, never by error code
    alone. A file whose queries got no answer is recorded as owed with the
    reason and asked again after a backoff, or sooner when its bytes change or a
    sweep is requested, and /lsp/sweep/status lists every owed file. The
    completion marker now carries a version, so a store enriched by an earlier
    build is swept once more.
  • Accepted language-server evidence is recorded in full. The crash record of
    evidence not yet published refused new entries past 16 MiB, which one cold
    sweep of a mid-size Go repository crosses, so evidence accepted after that
    point did not survive a crash before the sweep's publication.
  • The language-server sweep keeps a Python file's proven references when one
    declaration in it cannot be asked about. A decorated method's name query ran
    past the end of its decorator line, and a module surface's past the end of a
    short first line, and either failure discarded the whole file's definitions
    pass. A failed declaration query could therefore discard references proved
    by other declarations in the file. Each declaration is now
    asked at the token its declaration line spells its name with, a module
    surface is not asked about its own name at all, and a query that fails still
    keeps the file from being recorded as enriched without costing it the
    relations other queries proved. That includes a member expression whose
    candidate export cannot be located.
  • An imported value read as a receiver, such as current_app in
    current_app.config[...], is a reference to that value when the language
    server resolves it to the value's own declaration. It was read as a module
    and recorded as nothing.
  • A Python definition or type answer counts only on the line that declares
    what it names. An answer inside a property setter's body made the
    attribute's own line a reference to the setter, and an import of a module
    was read as a reference to whatever class the module's first line declares.
  • A call to a function defined in the caller's own file no longer also links
    every same-named function in other files as a callee. Without a language
    server, that linked each copy of a helper defined in several files to the
    callers of every copy, so kin refs and impact answers listed callers from
    files that call their own copy. Only a C or C++ prototype, or a local
    definition whose parameter count cannot take the call, still hands the call
    to same-named definitions elsewhere, and those stay name_only candidates.
  • impact_analysis no longer certifies a zero consumer count when a file that
    can reach the entity holds call sites that became no edge. Each entity it
    reports with no consumers now carries the caller_arrival reading
    find_references uses, and when that reading is incomplete the verdict is
    inconclusive and names the files. kin impact reads the same block for an
    empty answer.
  • A tracked file edited or deleted while no daemon ran is now admitted when the
    next daemon starts, the way a watched edit is. Before, the startup catch-up
    left tracked paths alone, so after an idle daemon exited the graph kept
    answering from the old bytes: a renamed function was found only under its old
    name, the new name was certified absent, and a deleted file stayed a top hit.
    The daemon now plans the catch-up before it publishes its endpoint, reading
    only tracked files whose modification or change time falls after the last
    admission, and every answer reads inconclusive under
    tracked_changes_unadmitted until they land. A command that starts the
    daemon waits up to 30 s for that catch-up. kin status with no daemon
    running names those files on a new Tracked changes since the last admission line, and kin graph status withholds its all-clear while any are
    owed. Divergence that predates the last admission is still projection drift
    for kin doctor --drift and --heal.
  • CLI data-flow traces apply max_response_chars to the final serialized
    UTF-8 bytes, including required resolution, terminal and clipping disclosures.
    Bodies and branches are trimmed before emission; a response whose required
    identity and disclosures still cannot fit is explicitly refused instead of
    returning an oversized or misleading empty answer. The refusal no longer
    suggests reducing depth or fan-out after the smallest retained walk fails,
    and only suggests a larger budget below the 60,000-byte maximum.
  • The MCP trace_data_flow tool answers the same walk instead of refusing it.
    Every MCP reply carries an envelope the walk's budget does not count, so a
    refusal there shipped over the budget too, only without the chain. Below its
    floor the tool now returns the smallest retained walk, cut and disclosed the
    way a walk that fit would be, with a response_over_budget de...
Read more

v0.7.21

Choose a tag to compare

@github-actions github-actions released this 18 Sep 14:38
67a772e

A graph-native code repository for people and AI agents.
v0.7.21 lands 8 changes, listed below.

[0.7.21] - 2026-09-18

Added

  • find_references accepts answer_only. The reply is the reference rows with
    the focal, the relation kinds searched, the headline count and the number of
    unconfirmed candidates held out of it, the degradations, the budget's own
    disclosure, and a _kin reduced to the verdict's state, whether absence is
    safe to conclude, and the limiting factor. Nothing else is removed from the
    tool; a caller who omits the parameter gets the whole reply. Measured over the
    same 75 frozen queries, an answer_only reply is 2,273 bytes mean on the wire
    against 10,013 for the whole reply.

Changed

  • A query to find_references that names the owner is exact:
    Receiver.method in Go, Owner.member in TypeScript. A bare name shared by
    several declarations is ranked, prefers the most referenced one, and says so
    in focal_resolution. The tool description now says this; the resolver has
    not changed.

Fixed

  • A TypeScript interface or class member now has its own entity, named
    Owner.member, so references to it resolve instead of falling to a bare-name
    guess. Two upstream grammar defects that left a fifth of the lines in eight
    files unreadable are fixed in a vendored TypeScript grammar. Measured against
    the compiler on honojs/hono: pooled F1 0.6441 to 0.9365, and the sixteen
    reference lines that never spell the declaration's name are found fourteen
    times over, as before.
  • find_references on a Go interface method now answers where the method is
    implemented. An interface_implementations block names each concrete method
    whose receiver type satisfies the interface, with the file and line of its
    declaration and the files those declarations live in. Measured against the
    compiler on cli/cli: implementation sites 0.0000 to 0.9469, implementation
    files 0.0754 to 0.9390.
  • The reply budget cuts the answer last. The unproven candidate lists that
    qualify a find_references answer, including the interface-dispatch
    candidates nested inside their own block, are cut before the reference rows,
    and a list is trimmed again before the answer is made to pay for the record of
    that cut. On the study's largest reply, all three reference rows now return
    where two were elided before.
  • A daemon whose filesystem reconcile is switched off no longer reports a
    working copy as compared when nothing compared it. host_bytes reads
    unchecked, the verdict names file_bytes_unchecked as the limiting factor,
    and the answer is not certified.
  • reconciliation_status says when an idle reconcile loop stopped with work
    still outstanding, and the reply names kin admit as the command that takes
    the working tree. Two messages that told a caller to run kin reconcile for
    that are corrected.
  • A file with no parse record reads parsed: unrecorded instead of absent,
    which is the word for a file something parsed and found empty.

What's Changed

Full Changelog: v0.7.20...v0.7.21

v0.7.20

Choose a tag to compare

@github-actions github-actions released this 17 Sep 00:55
9af9b04

A graph-native code repository for people and AI agents.
v0.7.20 lands 27 changes, listed below.

[0.7.20] - 2026-09-16

Added

  • kin setup opens with a hardware check. It names the architecture, the
    physical and logical core counts, the memory and the accelerator this machine
    reports, then names the resource profile that follows from them and why. The
    figures come from the same kin-infer detection the embedding budgets and
    kin resources inspect are derived from, so there is one answer to what this
    machine is.
  • kin setup --intent advanced can adjust that profile, with a plain warning
    that a profile budgeting past what the machine actually has can exceed safe
    memory and GPU thresholds and crash it. An adjustment is recorded in
    ~/.kin/config/setup.toml, and both kin and kin-daemon adopt it at their
    next start. An exported KIN_RESOURCE_PROFILE and a repository's
    [resources] config both still outrank it, and kin resources inspect
    reports which of the four chose the profile in effect.
  • kin setup --resource-profile <proof|interactive|throughput|ci> records the
    machine profile without the prompt.
  • kin setup now asks when the embedding model is fetched. The answer defaults
    to later, nothing downloads during setup, and kin embed starts the fetch
    when it is wanted. Answering that this machine does not fetch it is recorded,
    and kin doctor, kin graph status and kin resources inspect then report a
    choice rather than a gap. An air-gapped host is unaffected either way.
    --embedding-model <later|never> is the scripted answer.
  • kin setup now asks where vectors are computed, recommends local, and states
    that a remote OpenAI-compatible provider sends entity text to the endpoint you
    configure. Choosing remote prints the environment variables that provider
    needs and collects no credential. --embedding-provider <local|remote> is the
    scripted answer.
  • An npm or npx install is now asked before ~/.kin/bin is added to the shell
    profile, because that channel cannot make the edit itself and the cost of
    skipping it is re-downloading the release archive on every npx run. The
    edit is recorded in the same install ledger the curl installer's line reaches,
    so kin setup uninstall removes exactly it. --skip-path declines.
  • An interactive run now asks before the MCP round trip that proves each
    configured client can actually reach Kin, and recommends running it. A
    scripted run keeps it on and, on a machine with no repository yet, reports the
    skip with its reason as it already did.
  • A non-interactive kin setup now prints every decision it answered for you,
    the value it took, and the command or flag that changes it later.

Changed

  • MCP find_references answers Go interface dispatch candidates, with truthful
    counts that keep a candidate out of the proven total (#78)

  • The agent belt's response ceiling is per tool: trace_data_flow and
    get_context_pack are served the agent's own 24,576 byte per-result limit and
    every other budgeted tool keeps 12,000 (#78)

  • The seven session and transaction tools describe themselves as write plumbing,
    and the MCP server instructions name the query tools one line each, so a client
    that ranks tools by description can find the tools that answer a code question
    (#77, in #83)

  • Regenerate the KinLab Kin reference data from a current binary and gate it
    against going stale again (#83)

  • kin agent run puts the Kin-only belt on the model by default: no edit_file,
    no write_file, and the one write tool is kin_mutate, which names the
    entity it changes. KIN_AGENT_PURE_KIN=false adds the two file tools back.

  • Remove a kin-vfs and shim pair left by an earlier release. The installer clears them
    when the archive carries no projection runtime, and kin update does the same on its
    next run, so a 0.7.17 projection client cannot sit on PATH beside a newer daemon.

  • KIN_RESOURCE_PROFILE gained a fourth provenance: the machine-wide profile
    kin setup recorded, reported by kin resources inspect and marked by
    KIN_RESOURCE_PROFILE_HOST_CONFIG so a spawned daemon does not read it as an
    operator override.

Fixed

  • The install ledger now follows every value Kin itself records in
    ~/.kin/config/setup.toml. The wizard's embedding model and provider answers
    are written after the ledger has fingerprinted that file, so a second
    kin setup run that recorded either answer left kin doctor and
    kin setup status reporting the ledger STALE with one artifact modified
    since install on a machine nobody but Kin had touched. kin vfs on and
    kin setup --resource-profile write the same file and are covered by the
    same refresh

  • Stop the repo daemon wedging on its own entity read lock. graph_stats held
    the entity read guard across embedding_status, which reads that same lock
    again, and one queued writer parked the whole process at zero CPU with its
    listening socket still open (#79)

  • kin daemon stop can now end a daemon that cannot answer HTTP, escalating to
    SIGTERM and then SIGKILL only after proving the recorded incarnation is still
    live and is running a Kin image (#79)

  • kin daemon status reports a held-but-not-accepting socket as wedged rather
    than as a closed port, and a daemon that never said it was warming and answers
    nothing is reported in twenty seconds rather than after the full readiness
    budget (#79)

  • Count an embedding coverage gap and an embedding backlog apart, so
    indexed + pending == total holds on every answer and a re-embed of an
    already indexed key is reported as queued work (#80)

  • The envelope's embedding class distinguishes a partly built vector index from
    an absent one, so a 99.99 percent complete index is no longer published as
    having no vector index at all (#77, in #83)

  • Record the syntax position on the call edges of the nine language adapters
    that carried none, so every Calls edge in the fleet can report its call site
    (#75 in #81, #81)

  • Extract the calls the Ruby and Swift adapters dropped entirely, and record the
    macro-use and C++ type alias sites beside them (#84)

  • A byte-match refusal on an entity source edit now explains why the text did
    not match, quotes the file's exact bytes, and names the entity-level route, and
    a target refused twice is not attempted a third time (#86)

  • Pin the anchor flag in the kin locate tests that read anchors, so a
    neighbouring test's environment cannot empty their anchor set (#87)

  • Stop requiring the retired kin-vfs projection runtime and its shim when judging a
    release archive. 0.7.18 removed both from the archive, and every updater built before
    this change still demands them, so kin update refuses the release with release archive is incomplete: required component 'kin-vfs' is missing. An install on 0.7.19
    or earlier cannot repair itself and must re-run the installer

    (curl -fsSL https://get.kinlab.dev/install | sh, or
    irm https://get.kinlab.dev/install.ps1 | iex on Windows). The installer reads the
    archive it downloads rather than a list fixed when it was built, so it always reaches
    the current release.

  • Name the installer in the refusal, so the next time a release changes the archive's
    shape the error carries the one command that recovers the install.

What's Changed

New Contributors

  • @kin-public-export[bot] made their first contribution in #1797

Full Changelog: v0.7.19...v0.7.20

v0.7.19

Choose a tag to compare

@github-actions github-actions released this 14 Sep 01:52
e534618

A graph-native code repository for people and AI agents.
v0.7.19 lands 1 change, listed below.

[0.7.19] - 2026-09-13

Changed

  • Complete the v0.7.18 lockstep notes and npm versions (#1788)

What's Changed

Full Changelog: v0.7.18...v0.7.19

v0.7.18

v0.7.18 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 13 Sep 23:17
8d4f7af

A graph-native code repository for people and AI agents.
The changes in this release are listed below.

What's Changed

Full Changelog: v0.7.17...v0.7.18

v0.7.17

Choose a tag to compare

@github-actions github-actions released this 12 Sep 21:36
d2de1a3

A graph-native code repository for people and AI agents.
v0.7.17 lands 5 changes, listed below.

[0.7.17] - 2026-09-12

Changed

  • Compact MCP response envelopes and preserve diagnostic causes (#1773)
  • docs(claude): add plugin requirements (#1774)
  • fix(cli): show continue alias in resolve help (#1776)
  • Package release-matched desktop MCP binaries and maintainer metadata (#1777)

Changed

  • Show the --continue alias in kin resolve --help.

What's Changed

New Contributors

Full Changelog: v0.7.16...v0.7.17

v0.7.16

Choose a tag to compare

@github-actions github-actions released this 12 Sep 16:01
68cdd40

A graph-native code repository for people and AI agents.
v0.7.16 lands 20 changes, listed below.

[0.7.16] - 2026-09-12

Changed

  • Record kin-vfs as parked in the ecosystem manifest and kin's own docs (#1748)
  • Refuse a scope spelled in none of the documented forms instead of reading it as a path (#1749)
  • Key the footprint publish cadence by store root (#1751)
  • Mark the four file-path tool parameters deprecated and say so in the answer (#1752)
  • Take the loopback fixture's accepted socket out of non-blocking mode (#1753)
  • Bring kin-blobs, kin-model, kin-search and kin-vector into the workspace with their history (#1747)
  • Lock the Kin agent belt to Kin tools and let a mutation name its own change (#1738)
  • Anchor a review note on the entity that holds the line it names (#1759)
  • Count a staged release hold as work in flight while the cut is switched on (#1757)
  • Read the query and command authority wrappers through the daemon's held open (#1761)
  • Bring kin-infer, kin-lsp and kin-vfs-core into the workspace with their history (#1758)
  • Compare the kin-vfs-core the release builds with, wherever it comes from (#1763)
  • Stop the witness search spending its budget on a class no build can mint (FIR-3541) (#1764)
  • Raise release alarms on kin-infra through an issues-only App token (#1762)
  • Lead a release with what it is, not with what has not been measured (#1760)
  • Name the namespace an entity lives in, one rule per language (#1767)
  • Consolidate kin-db into the workspace (Tranche 3) (#1768)
  • Give a Rust entity's span its doc comment and attributes, and keep its id on the declaration (#1766)
  • Lead a release with what it is, and stop publishing a pending-proof sentence (#1769)
  • Let the release-intent gate accept independently versioned crates (#1765)

What's Changed

  • Record kin-vfs as parked in the ecosystem manifest and kin's own docs by @troyjr4103 in #1748
  • Refuse a scope spelled in none of the documented forms instead of reading it as a path by @troyjr4103 in #1749
  • Key the footprint publish cadence by store root by @troyjr4103 in #1751
  • Mark the four file-path tool parameters deprecated and say so in the answer by @troyjr4103 in #1752
  • Take the loopback fixture's accepted socket out of non-blocking mode by @troyjr4103 in #1753
  • Bring kin-blobs, kin-model, kin-search and kin-vector into the workspace with their history by @troyjr4103 in #1747
  • Lock the Kin agent belt to Kin tools and let a mutation name its own change by @troyjr4103 in #1738
  • Anchor a review note on the entity that holds the line it names by @troyjr4103 in #1759
  • Count a staged release hold as work in flight while the cut is switched on by @troyjr4103 in #1757
  • Read the query and command authority wrappers through the daemon's held open by @troyjr4103 in #1761
  • Bring kin-infer, kin-lsp and kin-vfs-core into the workspace with their history by @troyjr4103 in #1758
  • Compare the kin-vfs-core the release builds with, wherever it comes from by @troyjr4103 in #1763
  • Stop the witness search spending its budget on a class no build can mint (FIR-3541) by @troyjr4103 in #1764
  • Raise release alarms on kin-infra through an issues-only App token by @troyjr4103 in #1762
  • Lead a release with what it is, not with what has not been measured by @troyjr4103 in #1760
  • Name the namespace an entity lives in, one rule per language by @troyjr4103 in #1767
  • Consolidate kin-db into the workspace (Tranche 3) by @troyjr4103 in #1768
  • Give a Rust entity's span its doc comment and attributes, and keep its id on the declaration by @troyjr4103 in #1766
  • Lead a release with what it is, and stop publishing a pending-proof sentence by @troyjr4103 in #1769
  • Let the release-intent gate accept independently versioned crates by @troyjr4103 in #1765
  • Release Kin v0.7.16 by @kin-release-bot[bot] in #1770
  • Simplify contributor workflow around native tasks by @troyjr4103 in #1771
  • Fix database feature gating and concurrent model tests by @troyjr4103 in #1772

Full Changelog: v0.7.15...v0.7.16

v0.7.15

Choose a tag to compare

@github-actions github-actions released this 12 Sep 00:43
27a542c

First-contact proof pending. This release cleared the machine preflight on its
own bytes. It has NOT been through the stranger arms (green, brown, vcs) that
measure what a first-time user actually meets. It ships and is promoted anyway,
so this notice is how you tell it apart from a release that was measured.

[0.7.15] - 2026-09-11

Changed

  • Bound agent tool results, context and endpoint waits (FIR-3545) (#1694)
  • Level the live graph with repository authority instead of refusing every later admission (FIR-3546) (#1696)
  • Report an empty graph and a missing repository as graph gaps (FIR-3543) (#1695)
  • Publish agent writes through authority and accept a working copy at the staged bytes (FIR-3550) (#1697)
  • Run one exact MCP commit per transaction and let a re-sent request join it (FIR-3550) (#1704)
  • Grade an agent's write end to end in product acceptance (FIR-3550) (#1703)
  • Answer find_references from the last certified graph when a writer holds every settle attempt (FIR-3540) (#1705)
  • Resolve a name one way in refs, impact and graph source, and mark stale pointers (#1702)
  • Configure LM Studio and the Grok CLI in kin setup, and read an artifact by its label (FIR-3544) (#1706)
  • Write nothing when an agent edit cannot open a transaction, and re-open a gone session (FIR-3550) (#1708)
  • Read a standalone daemon in kin status and name any open beside a live one (FIR-3542) (#1710)
  • Run the admission off the runtime worker and answer /health without an authority load (FIR-3542) (#1711)
  • Keep the agent's Kin session alive through a long model turn (#1709)
  • Return a UTF-8 artifact as text alone, and its bytes only on request (#1714)
  • Grade an agent edit made after its daemon restarts (FIR-3550) (#1715)
  • Start the same language server from every daemon and name what a daemon cannot serve (FIR-3551) (#1717)
  • Serve blame and history from the daemon's held authority (FIR-3547) (#1713)
  • Record a watchdog force exit as the daemon ending itself, and date and name a daemon's ending (FIR-3549) (#1716)
  • Serve repo-scoped review reads and semantic diff on the multi-repo daemon surface (#1718)
  • Say why an entity has no history in blame and history (FIR-3547) (#1719)
  • Commit review state to repository authority so reviews survive a restart (#1720)
  • Mark the files a sweep finished even when another file's query failed (#1721)
  • End a stop at once when its in-flight flush cannot finish inside the grace (FIR-3549) (#1723)
  • Name the cross-file edges a graph still holds when no language server can run (#1722)
  • Keep the owner a qualified call wrote when linking by leaf (#1724)
  • Hold one repository authority per publication for the daemon's own readers (#1725)
  • Carry review records through kin push and kin pull (#1727)
  • Answer a hosted context pack on the most-called entity instead of a retryable 503 (#1728)
  • Read and commit an exact MCP commit through the daemon's held authority (#1729)
  • Add the agent-write suite to the acceptance inventory and run the visibility rule on pull requests (#1730)
  • docs: first-screen agent onboarding, allow fork PRs to pass secret scan (#1731)
  • Bound an answer only by the degraded flags that describe what it reads (FIR-3541) (#1726)
  • Rank, page and describe the hosted entity list (#1739)
  • Record a reviewer's removal so it survives a push and a pull (#1742)
  • Give the Linux release build legs swap for the fat-LTO peak (#1741)
  • Read a daemon's death off the record rather than off the sentence it rendered (#1743)
  • Answer the file enumeration's pagination honestly on its last page and its cut ones (#1740)
  • Record v0.7.14 as an abandoned release tag (#1744)
  • Decide a flush publication from the live graph before materializing authority (#1745)

Carried forward from v0.7.14

The following tag was superseded before its release completed, so the notes recorded for it are collected here.

[0.7.14] - 2026-09-11

Changed

  • Grade the flake quarantine's clock on the UTC date (FIR-3531) (#1691)
  • Move to kin-db 0.7.112 and keep a tracked nested control directory through projection (FIR-3527) (#1692)

What's Changed

  • Bound agent tool results, context and endpoint waits (FIR-3545) by @troyjr4103 in #1694
  • Level the live graph with repository authority instead of refusing every later admission (FIR-3546) by @troyjr4103 in #1696
  • Report an empty graph and a missing repository as graph gaps (FIR-3543) by @troyjr4103 in #1695
  • Publish agent writes through authority and accept a working copy at the staged bytes (FIR-3550) by @troyjr4103 in #1697
  • Run one exact MCP commit per transaction and let a re-sent request join it (FIR-3550) by @troyjr4103 in #1704
  • Grade an agent's write end to end in product acceptance (FIR-3550) by @troyjr4103 in #1703
  • Answer find_references from the last certified graph when a writer holds every settle attempt (FIR-3540) by @troyjr4103 in #1705
  • Resolve a name one way in refs, impact and graph source, and mark stale pointers by @troyjr4103 in #1702
  • Configure LM Studio and the Grok CLI in kin setup, and read an artifact by its label (FIR-3544) by @troyjr4103 in #1706
  • Write nothing when an agent edit cannot open a transaction, and re-open a gone session (FIR-3550) by @troyjr4103 in #1708
  • Read a standalone daemon in kin status and name any open beside a live one (FIR-3542) by @troyjr4103 in #1710
  • Run the admission off the runtime worker and answer /health without an authority load (FIR-3542) by @troyjr4103 in #1711
  • Keep the agent's Kin session alive through a long model turn by @troyjr4103 in #1709
  • Return a UTF-8 artifact as text alone, and its bytes only on request by @troyjr4103 in #1714
  • Grade an agent edit made after its daemon restarts (FIR-3550) by @troyjr4103 in #1715
  • Start the same language server from every daemon and name what a daemon cannot serve (FIR-3551) by @troyjr4103 in #1717
  • Serve blame and history from the daemon's held authority (FIR-3547) by @troyjr4103 in #1713
  • Record a watchdog force exit as the daemon ending itself, and date and name a daemon's ending (FIR-3549) by @troyjr4103 in #1716
  • Serve repo-scoped review reads and semantic diff on the multi-repo daemon surface by @troyjr4103 in #1718
  • Say why an entity has no history in blame and history (FIR-3547) by @troyjr4103 in #1719
  • Commit review state to repository authority so reviews survive a restart by @troyjr4103 in #1720
  • Mark the files a sweep finished even when another file's query failed by @troyjr4103 in #1721
  • End a stop at once when its in-flight flush cannot finish inside the grace (FIR-3549) by @troyjr4103 in #1723
  • Name the cross-file edges a graph still holds when no language server can run by @troyjr4103 in #1722
  • Keep the owner a qualified call wrote when linking by leaf by @troyjr4103 in #1724
  • Hold one repository authority per publication for the daemon's own readers by @troyjr4103 in #1725
  • Carry review records through kin push and kin pull by @troyjr4103 in #1727
  • Answer a hosted context pack on the most-called entity instead of a retryable 503 by @troyjr4103 in #1728
  • Read and commit an exact MCP commit through the daemon's held authority by @troyjr4103 in #1729
  • Add the agent-write suite to the acceptance inventory and run the visibility rule on pull requests by @troyjr4103 in #1730
  • docs: first-screen agent onboarding, allow fork PRs to pass secret scan by @troyjr4103 in #1731
  • Bound an answer only by the degraded flags that describe what it reads (FIR-3541) by @troyjr4103 in #1726
  • Rank, page and describe the hosted entity list by @troyjr4103 in #1739
  • Record a reviewer's removal so it survives a push and a pull by @troyjr4103 in #1742
  • Give the Linux release build legs swap for the fat-LTO peak by @troyjr4103 in #1741
  • Read a daemon's death off the record rather than off the sentence it rendered by @troyjr4103 in #1743
  • Answer the file enumeration's pagination honestly on its last page and its cut ones by @troyjr4103 in #1740
  • Record v0.7.14 as an abandoned release tag by @troyjr4103 in #1744
  • Decide a flush publication from the live graph before materializing authority by @troyjr4103 in #1745
  • Release Kin v0.7.15 by @kin-release-bot[bot] in #1746

Full Changelog: v0.7.14...v0.7.15

v0.7.13

Choose a tag to compare

@github-actions github-actions released this 11 Sep 06:16
b010d4c

First-contact proof pending. This release cleared the machine preflight on its
own bytes. It has NOT been through the stranger arms (green, brown, vcs) that
measure what a first-time user actually meets. It ships and is promoted anyway,
so this notice is how you tell it apart from a release that was measured.

[0.7.13] - 2026-09-11

Changed

  • Replace the superseded category line in the Homebrew gate fixture (#1684)
  • Resolve the CLI's local graph open through the daemon's own namespace rule (FIR-3498) (#1685)
  • Retire the FIR-2809 quarantine row after 15 days without a retry (#1687)
  • Hold the reconcile loop's own admission after a run of failures (FIR-3504, FIR-3506) (#1686)
  • Isolate the stand-down footprint publish from the suite clock (#1689)

What's Changed

  • Replace the superseded category line in the Homebrew gate fixture by @troyjr4103 in #1684
  • Resolve the CLI's local graph open through the daemon's own namespace rule (FIR-3498) by @troyjr4103 in #1685
  • Retire the FIR-2809 quarantine row after 15 days without a retry by @troyjr4103 in #1687
  • Hold the reconcile loop's own admission after a run of failures (FIR-3504, FIR-3506) by @troyjr4103 in #1686
  • Isolate the stand-down footprint publish from the suite clock by @troyjr4103 in #1689
  • Release Kin v0.7.13 by @kin-release-bot[bot] in #1690

Full Changelog: v0.7.12...v0.7.13