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
runCommandTestIssueList_web
Behind gh secret list
listRun
NewCmdList
Test_listRun Test_listRun_ populatesNumSelectedReposIfRequired
listRun behind gh issue list
if opts.Detector == nil { cachedClient := api.NewCachedHTTPClient(httpClient, time.Hour*24) cachedClient := api.NewCachedHTTPClient(httpClient, time.Hour*12) opts.Detector = fd.NewDetector(cachedClient, baseRepo.RepoHost())}features, err := opts.Detector.IssueFeatures()- RecordedKin kept the edit as a change in its own history.
- StoppedKin's background service for the project was shut down.
- 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
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.
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
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 backs | Bytes | sha256 |
|---|---|---|
| GitHub CLI source license accompanying the displayed excerpts. | 1,068 | 6da4adc42392c8485e40b4251c7e332fc3352df1947c9ffade71dd60b14a7a4f |
| Saved capture artifact: go-history-before-references-raw.json. | 10,132 | 7e010429b75e7e4c0824b6cee91197b4901345736c5d87291e1a68adacb50be6 |
| Saved capture artifact: go-history-before.go. | 2,387 | ce765038c908347af0445ae001babe0d49b240f9bd14b7b8111bbd1a4a7ff3a1 |
| Compact focal extract of the imported semantic change; full-reply hashes retained. | 27,646 | ebdeace4e7f99e806759f3c3fb32583a835cfe4844c20085b796e95d2d29db9a |
| Saved capture artifact: go-history-cleanup.txt. | 246 | 5be1f3255e4a3286710b0a800b9e02bf806eaec5b03d59275f697861dd2137c7 |
| Saved capture artifact: go-history-cli.txt. | 265 | c0955fcc4c02c132d2969b01ebaaa8bbb75cb1d7338e5d95ad0c37344cea647d |
| Record command output including the incomplete cross-file enrichment warning. | 645 | d88ef4abc9a5dc84701904d2cb8f82e5fe1bd081df15764e5ae02146a3028b00 |
| Saved capture artifact: go-history-recorded-diff.json. | 39,489 | 2b9efbbcd401d784f84fe0ed230151399b1e3433b6bbe44e1cf2a2dafacc72d6 |
| Saved capture artifact: go-history-reopened-references-raw.json. | 10,132 | 5fc2b30bc91936e216ac304a421c8006caa2d763f132e4e8b4a00bbdfa291e83 |
| Saved capture artifact: go-history-reopened.go. | 2,387 | 4fad1a5f0ce366f8737a00dfe372cde801c2005c3e0c01e7f8abc43da684b393 |
| Compact focal extract of the native change read through a fresh client after reopen. | 43,545 | 561de525e07eb93a9b7275d4304495f196626995faeea6ffc5df9f25149852fc |
| Saved capture artifact: go-history-stop.txt. | 246 | f314ec6c65930cb61cd880e0b7002b9ca0b80f4b72ce06f581698a8d158feaa0 |
| Qualified before and reopened history states with source hashes and setup limits. | 15,968 | 029c000db08f9c39f303dfb56aad3743bbc355801ca90e1dd46bbbe7bbaa156e |
| Display identities and source excerpts derived from the saved replies and pinned Git input. | 4,398 | 62e7e73fe8b40165aa31e7545d4da2ede441e356d0b5f88714ffaff8561fda0b |
| Saved gopls-assisted reference reply for the issue-list function. | 9,339 | a1c4f892554adcbd449ff86c96f493934d52811e212b8ae5104a957c9872df8c |
| Request arguments reconstructed from the study adapter and saved reply. | 526 | 7a50194094f0fe290c1e8414963c6d6f1edd817204c09ee1c05673e17b15f437 |
| Public preparation and exact released-archive identity with local paths removed. | 2,324 | 569e4fa0f5ce4ed3099bd8452bc812dd362653ebfe19163a498efe7ee0c677ac |
| Exact prepared Git file inventory used for the repository file count. | 32,543 | 8b438f398e52a3385134fe06fdef81235a11cac43c6d5eaf646ff88c24a1ef25 |
| Separate saved gopls-assisted reference reply for the secret-list function. | 9,379 | f101f3dfc5d5c65295d9fcbc550439fbb6ce82bb54c24a822fac428508fafe9b |
How a case is built explains the rules this page follows, and the archive keeps every file a case has cited.