Skip to main content
All evidence

Go identities and saved history on v0.7.20 · Founder-recorded

Can Kin tell two same-name functions apart, and keep an edit through a restart?

Two saved answers about functions named listRun in GitHub CLI, and a separate run that edited one of them, stopped Kin and read the edit back.

A company-run historical example. It does not prove complete code coverage or that a change is safe.

What it showed

  • The two saved answers identify two different functions that share the name listRun, behind gh issue list and gh secret list.

  • An edit recorded in Kin was still there when a new session read it back after Kin was stopped.

Behind gh issue list

listRun

  • NewCmdList
  • runCommand
  • TestIssueList_web

Behind gh secret list

listRun

  • NewCmdList
  • Test_listRun
  • Test_listRun_populatesNumSelectedReposIfRequired
The two saved answers name different functions that share one name, each with the callers Kin recorded for it.

listRun behind gh issue list

Recorded as "Cache issue feature detection for twelve hours"

if opts.Detector == nil {
Before: cachedClient := api.NewCachedHTTPClient(httpClient, time.Hour*24)
After: cachedClient := api.NewCachedHTTPClient(httpClient, time.Hour*12)
opts.Detector = fd.NewDetector(cachedClient, baseRepo.RepoHost())
}
features, err := opts.Detector.IssueFeatures()
The recorded edit, as the saved before and after bodies have it. A new session read it back after Kin was stopped.
  1. RecordedKin kept the edit as a change in its own history.
  2. StoppedKin's background service for the project was shut down.
  3. ReopenedA new session read the edit back, with the same three callers.

Limits

  • This is a saved example on Kin 0.7.20. It is not a test of the v0.8.0 release.
  • The edit was made for this example. It is not a change from GitHub CLI itself.
  • Kin can miss callers. These answers list the callers Kin recorded, which may not be all of them.
  • The caller answers and the edit come from separate runs, each with its own setup.
  • Nothing here measures speed or compares Kin with other tools.
How this was checked

The question

Can saved Kin replies distinguish two same-name Go functions, and can a separate local capture read a native edit through a fresh client after a daemon restart?

Expected interpretation. The caller examples resolve two specific identities and their recorded sites. The separate history capture preserves the focal identity across one native edit and reopen. Each setup is named separately; neither proves complete references, faster work or v0.8.0 acceptance.

Build, source and preparation

Kin build
v0.7.20, aarch64-apple-darwin, commit 9af9b04437fe380b2376e4ceb1fdaa69679b02dc. Release on GitHub
Source repository
cli/cli, prepared one-commit snapshot, head c033f2961104e1f932406325341147ace3b7ff21, 1 reachable commit, 921 files
Released archive measured
kin-macos-aarch64.tar.gz, sha256 c8f459855935fd7edc6be4b3b5dffe2be66905faf6deb712908c0971971904a8
Environment and preparation
The earlier caller replies use gopls. The separate history capture uses the full MCP profile, CPU, no automatic embedding and no gopls. Local paths are omitted from the public preparation metadata. source
Graph-readiness output
The saved references report partial coverage and an inconclusive verdict. Recording warned that cross-file enrichment was still catching up. The observed caller rows do not mean enrichment completed. source
Capture date
2026-09-17 (gopls caller replies); 2026-09-22 (separate history capture). Two separately recorded configurations on a dated released build, preserved with their limits. It is indexed on the proof archive.

How each result was checked

  1. The two saved answers identify two different functions that share the name listRun, behind gh issue list and gh secret list.

    Read the focal UUID, file and reference rows from each independently saved gopls-assisted reply. Both replies report 20 same-name candidates; this package displays two captured identities, not an exhaustive candidate-list capture.

    Issue-list replySecret-list reply

  2. An edit recorded in Kin was still there when a new session read it back after Kin was stopped.

    The imported state and the native state have different semantic change IDs. Each displayed body matches the recorded full-body hash for that state. The capture observed the old daemon absent, then queried a fresh client and new daemon for the native change. UUID continuity is asserted only within this separate capture.

    db6e4fb4cedc3590f8d8c1e02ec2464eb8676ef416be86030300c30cdccda257

    Reopened focal extractRecorded full-body diff

Timing methodology. No timing or comparative performance claim is made. The capture records lifecycle timestamps only.

Recorded limitations

Partial references and an overbroad history response. The Go build does not produce entity-level import edges. The history setup had no language server, and cross-file enrichment remained incomplete. Released entity_history returned entire change records; the browser downloads are labelled compact focal extracts with exact full-reply hashes retained in the offline audit.

Record warningExtraction scope and full-reply hashes

What this case does not establish, as its receipt records it:

  • Saved local demonstration using released Kin 0.7.20; not v0.8.0 candidate acceptance.
  • The cache-lifetime edit is a task-owned demonstration change, not a change from upstream GitHub CLI.
  • The record command warned that cross-file enrichment was still catching up. Its full output is supplied as go-history-record.txt. The preserved three caller rows do not imply that background cross-file enrichment completed.
  • References are a lower bound: Kin reports an inconclusive verdict and partial coverage because this build produces no Go entity-level import edges and this setup has no Go language server. The three observed rows do not establish exhaustive absence.
  • The full MCP profile was explicitly selected because agent-default does not expose entity_history. Only list_file_entities, find_references and entity_history were invoked through MCP.
  • Entity UUID continuity is asserted only within this capture, across the edit and daemon reopen. The two caller answers come from separate runs with their own setup.
  • The first state is a Kin semantic change imported from the prepared Git snapshot, not a native-origin edit. The second change has native origin.
  • Compact history extracts retain only focal-entity deltas plus change metadata. Full original replies remain in the local audit bundle and are identified by SHA256 and byte count; released entity_history returned entire change records, including 6082 imported entity deltas.

Not recorded

A field with no receipt behind it is listed here with the state recorded for it, rather than filled in with a plausible guess. The rows that link a source are named from that receipt's own keys and carry its exact wording, so a reader can find each one in it. Nothing below is a result.

Independent reproduction
not recorded. No outside party independently reproduced these captures.
Comparative performance
not recorded. No time, task-token, cost or correctness advantage was measured by these demonstrations.
Every file behind this example, with its checksum

Every file below is committed with its own sha256 sidecar, listed in manifest.json, and checked against that manifest at every build by check-proof-artifacts.mjs. This table is generated from that manifest, not typed by hand. check-case-record-integrity.mjs then reads this rendered page back and fails the build on a row the manifest does not list, a manifest row this table dropped, a row rendered twice, a row carrying another row's label, a byte count or hash here that stopped matching the manifest, and any row that did not come from the manifest at all.

What it backsBytessha256
GitHub CLI source license accompanying the displayed excerpts.1,0686da4adc42392c8485e40b4251c7e332fc3352df1947c9ffade71dd60b14a7a4f
Saved capture artifact: go-history-before-references-raw.json.10,1327e010429b75e7e4c0824b6cee91197b4901345736c5d87291e1a68adacb50be6
Saved capture artifact: go-history-before.go.2,387ce765038c908347af0445ae001babe0d49b240f9bd14b7b8111bbd1a4a7ff3a1
Compact focal extract of the imported semantic change; full-reply hashes retained.27,646ebdeace4e7f99e806759f3c3fb32583a835cfe4844c20085b796e95d2d29db9a
Saved capture artifact: go-history-cleanup.txt.2465be1f3255e4a3286710b0a800b9e02bf806eaec5b03d59275f697861dd2137c7
Saved capture artifact: go-history-cli.txt.265c0955fcc4c02c132d2969b01ebaaa8bbb75cb1d7338e5d95ad0c37344cea647d
Record command output including the incomplete cross-file enrichment warning.645d88ef4abc9a5dc84701904d2cb8f82e5fe1bd081df15764e5ae02146a3028b00
Saved capture artifact: go-history-recorded-diff.json.39,4892b9efbbcd401d784f84fe0ed230151399b1e3433b6bbe44e1cf2a2dafacc72d6
Saved capture artifact: go-history-reopened-references-raw.json.10,1325fc2b30bc91936e216ac304a421c8006caa2d763f132e4e8b4a00bbdfa291e83
Saved capture artifact: go-history-reopened.go.2,3874fad1a5f0ce366f8737a00dfe372cde801c2005c3e0c01e7f8abc43da684b393
Compact focal extract of the native change read through a fresh client after reopen.43,545561de525e07eb93a9b7275d4304495f196626995faeea6ffc5df9f25149852fc
Saved capture artifact: go-history-stop.txt.246f314ec6c65930cb61cd880e0b7002b9ca0b80f4b72ce06f581698a8d158feaa0
Qualified before and reopened history states with source hashes and setup limits.15,968029c000db08f9c39f303dfb56aad3743bbc355801ca90e1dd46bbbe7bbaa156e
Display identities and source excerpts derived from the saved replies and pinned Git input.4,39862e7e73fe8b40165aa31e7545d4da2ede441e356d0b5f88714ffaff8561fda0b
Saved gopls-assisted reference reply for the issue-list function.9,339a1c4f892554adcbd449ff86c96f493934d52811e212b8ae5104a957c9872df8c
Request arguments reconstructed from the study adapter and saved reply.5267a50194094f0fe290c1e8414963c6d6f1edd817204c09ee1c05673e17b15f437
Public preparation and exact released-archive identity with local paths removed.2,324569e4fa0f5ce4ed3099bd8452bc812dd362653ebfe19163a498efe7ee0c677ac
Exact prepared Git file inventory used for the repository file count.32,5438b438f398e52a3385134fe06fdef81235a11cac43c6d5eaf646ff88c24a1ef25
Separate saved gopls-assisted reference reply for the secret-list function.9,379f101f3dfc5d5c65295d9fcbc550439fbb6ce82bb54c24a822fac428508fafe9b

How a case is built explains the rules this page follows, and the archive keeps every file a case has cited.