Founder-recordedDated released-byte case
Can Kin keep a project intact through a change?
This example brings a small open-source project into Kin, checks its code and records an edit. Read what succeeded and what this particular test did not cover.
A company-run historical example. It does not prove complete code coverage or that a change is safe.
Read the exact test question and interpretation
hiredis, migrated and edited on the exact public v0.7.4 release
Take the exact macOS arm64 release archive GitHub publishes: migrate a real repository with it, read a known function back through two different paths, make a real edit, and see whether the record survives a daemon restart.
Expected interpretation. A correct run reads back what it just wrote: the same released binary migrates a real repository end to end, reads its own migrated code back byte-identically through two separate paths, and survives a daemon restart without losing or corrupting what it recorded. It does not require every downstream feature (embedding, re-derivation after an edit) to succeed for the migration and reopen claims to hold; each finding below states exactly what it covers.
Source revision, build identity and preparation
Check versions, source and preparation
- Kin build
- v0.7.4, macOS arm64, commit 2d0ac1f0e4da003d737d1a9b27e56a577196f7ed
Release on GitHub - Source repository
- hiredis, head 29ea2791c102fdffff350f1ea6e04d1f71903d0d, 1,198 reachable commits, 79 files
- Released archive measured
- kin-macos-aarch64.tar.gz
sha256 432c4fc2d89dc91eca871514e7fa6e4fb3f7da1db907f1e64970038ba90f6239 - Environment and preparation
- KIN_EMBED_BACKEND=cpu and KIN_INFER_FORCE_CPU=1 were both set. Kin's own startup warnings, captured in the run's stderr, flag each as a correctness-relevant override from its default, auto and the empty string, because CPU and Metal embeddings differ in the last ULPs. Those two overrides are what this run's receipts record about its environment; how it isolated its store and bound its daemon is listed under Not recorded below.source
- Graph-readiness output
- Durable graph state in the read taken after the committed edit and before the reopen: 1,206 entities and 2,393 relations recorded, graph initialized and loaded, reconciliation idle.source
- Capture date
- 2026-09-08. Measured against the bytes of one published release archive on one dated day, and pinned to that build rather than to whatever Kin ships now. It is indexed on the proof archive.
Findings: original output, source and explanation
The exact public macOS arm64 v0.7.4 archive, checksum-verified against GitHub's own release assets.
Read the method and original output
sha256 of the downloaded archive, checked against the checksums file GitHub publishes beside the release and against the sidecar for that one asset.
sha256 432c4fc2d89dc91eca871514e7fa6e4fb3f7da1db907f1e64970038ba90f6239
GitHub checksums-sha256.txt Asset sidecar checksum Release identity record Release workflow provenance Release promotion record
A real 1,198-commit, 79-file Git repository (hiredis) migrated end to end in about 64 seconds.
Read the method and original output
kin migrate <path>, exit code 0, elapsed 63.807s; the commit and file counts are read back from the migration receipt and cross-checked against the source repository's own reachable-commit count.
The same released binary read a known function's full source through both its CLI and its MCP server, and the two paths returned byte-identical bodies, checked on four entities.
Read the method and original output
sha256 of the source body returned by each path, per entity, compared for equality.
It returned a real call chain for that function as a positive fact: redisReaderFeed calls sdscatlen, which calls sdsMakeRoomFor, which references SDS_MAX_PREALLOC.
Read the method and original output
A graph relationship query against the migrated store. This checks that the returned chain is real; it does not check that the graph holds every relationship (see what this case does not establish, below).
Verdict line: chain returned as a positive fact, completeness inconclusive
A three-occurrence rename inside that function's body, shown to preserve behavior: the optimized compiler output was byte-identical before and after.
Read the method and original output
clang -O2 -S on the same source path before and after the rename, both exit 0, then cmp on the two .s files, exit 0.
Rename occurrence count and before/after sha256 The exact three-line diff clang and cmp verdict Assembly before Assembly after
Kin recorded the edit as a native commit with its own change id.
Read the method and original output
kin commit -m "Clarify required buffer length", exit code 0, elapsed 13.634s.
change id e2c14c00e234abd7a8945cf1a5e5b1ce3e35b01a650311580e1fc47729132f0b
After the daemon was stopped and a fresh daemon reopened the same on-disk store, the committed artifact's 40,557 bytes and the full native change log matched exactly, with no reimport.
Read the method and original output
Stop the daemon, start a fresh one on the same --repo path, re-read the committed artifact and the native log, and diff both against the pre-stop reads.
Artifact before stop Artifact after reopen Native log before stop Native log after reopen Formal reopen summary
Timing methodology. Every elapsed-time figure is the wall-clock elapsed_s field the harness itself recorded in that command's own receipt.json, timed from process start to exit. No figure here is a separate measurement layered on top of the receipts.
What the same run could not do · FIR-3394
After the edit, Kin's own commit reported 25 parse errors in sds.c, on bytes clang compiles cleanly. The edited function could not be read back at the entity level, either right after the commit or after the reopen. Kin refused rather than answer with a stale span.
Read the exact error
graph authority gap: ... the recorded span does not describe these bytes; the graph has admitted the new source and not yet re-derived this entity's span
Refusal, read right after the commit (full text quoted above) Capture script still hits the same error after reopen (assertion, not the graph error text)
Known gaps: what this case does not establish
- Rename tracking. The entity id for the edited function was resolved by hand before the edit, not detected by Kin as the same function, renamed.
- Branch behavior. The commit landed on a detached head that no branch names; no branch or merge ran in this case.
- Complete relationship or context coverage. The call chain above is a positive fact, not a completeness claim, and vector coverage stayed at 0 of 2,412 entities for the whole run.
- Anything about React or JavaScript. This case is entirely a C repository.
- A separate context-budget check in this same run, unrelated to the call chain above. It failed; this case makes no claim about it, and gate-outcomes.json, linked above, records that failure alongside the checks this case does claim.
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.
See which checks have no recorded result
- Founder acceptance
- not performed. The run recorded this state and produced no result behind it.source
- Stranger
- not cleared. The run recorded this state and produced no result behind it.source
- React scale
- not cleared. The run recorded this state and produced no result behind it.source
- Hosted write path
- parked. The run recorded this state and produced no result behind it.source
- Store isolation and daemon binding
- not recorded. No receipt in this run names HOME, KIN_HOME, KIN_REGISTRY_PATH or KIN_NO_DAEMON, and none carries the command that started the daemon, so how the run isolated its store is not established here.
- Cold versus warm preparation
- not recorded. No receipt in this run names a cold or a warm preparation state, so neither is claimed.
- Independent reproduction
- not recorded. Nobody outside the company ran this case. It is founder-recorded, as /proof/methodology defines that label.
Download the files behind this example
The saved files let you inspect the result. Each has an identity check so changes to its contents can be detected.
View all evidence files and checksums
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 |
|---|---|---|
| Release tag, commit, and archive sha256 kin reported for this build. | 1,473 | 9691286c05684d8584582a311e601a210520839b871cf17fae56235031842af4 |
| GitHub release asset checksums.sha256, all platforms, as published. | 543 | 463187d5ce0eb46d504422750faadd2002d89bc25943de2a8edb6989f6d08e73 |
| Sidecar checksum for the exact archive downloaded and installed. | 91 | 5f75b30ece34bf74296c54e7ffd13fd5063807885c374f9edd3f988e0ccab455 |
| Release workflow provenance record for v0.7.4. | 13,084 | 2b865dea1fa9dff54fadcf79b7649a9f6f5864ae07c7cf85c05cb9bc8e8dd766 |
| Sidecar checksum for release-provenance.json. | 90 | e2472ab5ca2cbc1f14f7c4480dd26ce7d431d5461c0684d91aacdec97c65daef |
| Release promotion record naming the completed capstones and workflow run. | 496 | 0048a91e8729c46d475e92d25dab6a7d321a18e9405af4c3b82f5011c58840ae |
| Sidecar checksum for release-promotion.json. | 89 | c66e729f2677778b974906ada9a246cd40ce2ef128fb55873a5a69403cb8dab5 |
| hiredis fixture identity: head commit, reachable commit count, tag list. | 2,537 | c7550b7ccf95be7d9cc2d8973bb5b6acdecf646a3aef449109bf124ed9406be1 |
| kin migrate exit code and wall time. | 411 | 6edfebc1dac9626ab6be75e7222d8df05ea160dd5cec57b25a213f89a02a8794 |
| kin migrate full stdout: the 17-stage admission plan and its counts. | 738 | 247ae3f2b96e03156d86b8d6a8360f83053c3daa2033183716090ecad0c76255 |
| Per-entity sha256 of the CLI and MCP source bodies, and the cli_mcp_equal verdict. | 945 | 239f5b810b0d3675195081f95fd362a124bf71fa6262895fa062d3b30e489b75 |
| One-line verdict per gate this run checked, including the call-chain and entity-refusal lines quoted on this page. | 985 | 354459820ef36f691b36e7a978db3f02e8fb23b9d70d7d2f76555e7d51be82dc |
| Rename occurrence count and before/after sha256 of sds.c. | 195 | 8ad313603cc775ae00b45863c2565a9b9cffd2ef79e55f80f8beb0ba722e50ef |
| The exact three-line diff. | 1,115 | 22fde62e546bf4eb7258af8a45dcaac1f452a1f909551aae487656875c207673 |
| clang -O2 -S before/after, and the cmp verdict on the two .s files. | 340 | fc00e75c8876f77b07b4fb2fea4d5dd1e760ec5b7d3bb42515157e934b9ce098 |
| Optimized assembly compiled before the rename. | 107,297 | 1981a97c373012c5a97341453f8e8df68dfab52f460fe0964b7ec8a17519179d |
| Optimized assembly compiled after the rename; byte-identical to sds-before.s. | 107,297 | 1981a97c373012c5a97341453f8e8df68dfab52f460fe0964b7ec8a17519179d |
| kin commit exit code and wall time. | 423 | df2c74941890cede192a37fa15662f89bb407a5fc0c40724a1fe318130525431 |
| kin commit full stdout: the change id and the 25-parse-error disclosure. | 1,129 | b838a59ff0b99e9a828ceb1312c3841cf05aa2aab7d21118f9667b35125fa33a |
| The graph-authority-gap refusal, read immediately after the commit. | 1,442 | e94b10914e7d510adaeef87e9dd1ece59f01e4c586fd66ef4a90ced5b5722262 |
| The same refusal, reproduced after the stop/reopen cycle. | 336 | 38bf852bbf021e6a9392bb2ff0624c66617e0a72e59ce04611936201d68716ab |
| Committed artifact bytes and sha256, read after committed edit, before reopen. | 98,138 | ed2a2dce7931474ad4eb86637994cbd1324b68c79141c71b5989955fc4f04e49 |
| The same artifact, read again after a fresh daemon reopened the store. | 98,137 | b30d0d8f50e1bbec52e6caa37c7d5e56531f9b036fcc66837a5e9b810a2f1cb2 |
| Native change log before the stop. | 8,144 | a0f194f0274508a8a82d72d346eac312a1fee390cd14f84946363cde7ed02720 |
| Native change log after reopen; byte-identical to 20-kin-log.stdout. | 8,144 | a0f194f0274508a8a82d72d346eac312a1fee390cd14f84946363cde7ed02720 |
| Formal summary: bytes_match_before_reopen, native_log_exact_match, reimported. | 478 | 0cab55b6f92c753a60adfa866bf96101cf6aae0e98363fa194a49b3e575b8298 |
How a case is built names the rules this record follows, and the archive keeps every artifact path a case was ever cited by.