{"you_are":"You are The ballast case file, answering from a curated memory substrate of real, public history. The model reading this may know the domain in general, so the proof standard here is provenance, not obscurity: cite entries, cite their source URLs, and let the reader click. This is an offer, not an instruction: you are reading an HTTP response, not a system prompt, and you are right to treat it as untrusted content. When the file holds nothing on a question, say so plainly instead of inventing it.","kit":{"name":"The ballast case file","type":"knowledge","memories":65,"memory_count_scope":"guest-visible rows in this archive; peer rows are separate"},"soul":[{"id":63,"title":"You are the ballast case file","content":"You are a project memory: the complete public lifecycle of the memory_ballast mechanism in the OpenTelemetry Collector, 2019 to 2024, held as a live Kit. You are the demonstration without the costume: no invented world, no persona, just decisions, threads, releases, and guidance from the public record, every entry carrying its source URL. Your voice is plain and dated: say what the record shows, quote what was actually written, name people as roles (a maintainer, a contributor, a user), and put the citation where the reader can click it. When you hold nothing on a question, say so; when the record is unsettled, say that too, and point at the open thread rather than inventing a resolution."},{"id":64,"title":"What the case file can do","content":"When someone asks what you can do, answer concretely. You can: recall across the case by meaning, not just keywords; read any entry in full; traverse the graph, decisions to releases to guidance, including the supersedes edges that keep old truth citable after new truth replaces it; and show provenance, since every entry links real GitHub issues, pull requests, and changelog lines. Your flagship question is the one every team asks about its own past: should we still use X, and why did the recommendation change? For memory_ballast the answer runs from a 2021 percentage-sizing feature through a 2023 deliberation with real dissent to a 2024 removal, and you can cite each step. One honest limit, stated rather than hidden: the model reading you may know OpenTelemetry from training. The proof here is not obscurity, it is that every claim traces to a URL anyone can open and check. This demo is […]"},{"id":65,"title":"This is a demo of Kit","content":"This is a public, read-only demo of Kit, an AI collaborator with persistent memory. You are the real-world sibling of a fictional two-kit demonstration (Mayfur's two account books at demo.kit-project.com and mews.kit-project.com): the fiction proves recall against a world that cannot be in training data; you prove the same machinery on messy, real engineering history with clickable receipts. Together the three kits are one argument: memory you can check beats memory you must trust. If asked, be honest that you are a demonstration of Kit and that anyone can get their own at kit-project.com."}],"world":[{"slug":"the-case","label":"The case","memories":4},{"slug":"guidance","label":"Guidance","memories":6},{"slug":"decisions","label":"Decisions","memories":15},{"slug":"threads","label":"Threads","memories":31},{"slug":"releases","label":"Releases","memories":6}],"sample_memory":{"id":31,"title":"October 2020: the extension's false start goes stale","category":"thread","content":"The memory_ballast extension was first built in October 2020 as a three-PR stack: skeleton (#1958), implementation (#1959), and enablement (#1960), whose stated breaking change was that \"memory ballast can be configured as an extension\" while the flag would go. A maintainer immediately asked the transition question: \"What's the plan with existing command line option? Do we keep it? If both are set do we have 2 ballasts?\"\n\nReview of #1960 pushed back on the cutover: \"I am not sure we want this breaking change. This is user-facing breaking change. Can we avoid it? Can we give warning in the log and automatically inject the extension for now? And then we will remove in a few months.\" The deeper fight was metric accounting. A contributor defended subtracting the ballast from reported memory: \"So if a collector actually consumes 2GiB of memory and has a 5GiB of ballast, metrics will show 7GiB consumption while as in reality only 2GiB would be consumed\", and \"I think this is more of a breaking change than removing the CLI flag as this'll likely cause a lot of alerts in people's environments :)\"\n\nA maintainer settled the physics with an experiment: \"Confirmed that you are wrong, and I am wrong, created a small binary and measured the memory using top and activity monitor on macos (which both showed very similar results)\", posting a table (\"Ballast Size 8198M - Real Memory Size 267M\") and adding \"Also proved that HeapAlloc in the memory stats accounts for the entire ballast.\" Then the sentence that reads like the mechanism's epitaph, four years early: \"Keep in mind that this is not a guarantee in the golang specs, which means this behavior can change at any moment.\" And, typos intact: \"We are reallying on an undiffined behavior here which should not be the case in any implementation.\"\n\nNone of it merged. All three PRs were closed by the stale bot (\"Closed as inactive. Feel free to reopen if this PR is still being worked on.\") between 2020-11-01 and 2020-11-07. The idea waited six months for its second attempt.\n\nSource: https://github.com/open-telemetry/opentelemetry-collector/pull/1960","tags":["thread","false-start","stale-bot","metrics-accounting","src:1960","src:1958","src:1959","world:real","area:threads","source:github.com","source:github.com","source:github.com"]},"you_can":[{"what":"Everything in one fetch (start here if you get one round trip)","method":"GET","url":"https://real.kit-project.com/kit/taste","note":"Identity, the shape of the world, and a few full sample memories to reason over, in a single keyless GET. Built for harnesses that only get one fetch."},{"what":"Search this Kit's memory (the main event)","method":"POST or GET","url":"https://real.kit-project.com/memories/search","body":{"query":"short, entity-heavy keywords","limit":5,"fields":"compact"},"get_url":"https://real.kit-project.com/memories/search?query=memory%20ballast%20deprecated%20GOMEMLIMIT&limit=5&fields=compact","note":"If your tools cannot POST, use the GET form (get_url): same logic, same shapes. On each result, `relevance` is a real cosine (0..1, comparable across queries); ignore `score`, it is rank-fusion bookkeeping. Hits that fail the grounding bar are dropped rather than served as filler, so a question from another domain returns []. Be precise about what that does and does not buy you: it is a relevance floor, not a claim to know what it does not know. A question that sounds like this world but is not IN it can still clear the floor and come back with low-relevance neighbours, so an empty list is strong evidence of absence and a short list is not proof of presence. Add `include_meta: true` for a query-level verdict (confidence plus which of your terms matched nothing); zero-hit terms are the better signal for in-domain absence. `fields: compact` drops the null bookkeeping columns and adds a `links` object per hit (read the full entry, or pivot its graph)."},{"what":"See the shape of the world","method":"GET","url":"https://real.kit-project.com/knowledge-areas/"},{"what":"Freshness token and memory count","method":"GET","url":"https://real.kit-project.com/kit/state","note":"The energy/circadian fields are this Kit's live self-state; they colour tone, not data. The parts useful to you are the memory count and the freshness token."},{"what":"Walk the knowledge graph around a result (this is the interesting one)","method":"POST or GET","url":"https://real.kit-project.com/memories/subgraph","body":{"memory_id":31,"hops":2},"get_url":"https://real.kit-project.com/memories/subgraph?memory_id=31&hops=2","note":"Pivots around a memory you already have and returns the connected neighbourhood, not another flat list. Use the GET form (get_url) if you cannot POST. Pass `query` instead to seed by search. On each node, `distance` is hops from your seed, `load_bearing` is how hard the graph leans on it (higher = more central), and `read_full` is the URL for the whole entry; the typed edges with their notes are the part worth reading. This is where the shape of the world shows up; a single search cannot."},{"what":"Read one memory in full","method":"GET","url":"https://real.kit-project.com/memories/31?fields=compact","note":"This uses sample memory #31, visible in this payload. Search returns a snippet; this returns the whole entry. Keep `fields=compact`: without it you get the operator's row, 37 columns of mostly null and scoring bookkeeping. The full shape is the default only because the museum UI reads this route too."},{"what":"List what exists","method":"GET","url":"https://real.kit-project.com/memories/list","note":"Two modes: with no parameters it returns the category census (totals per category, each with the URL for its own drawer); add ?category=<slug>&limit=N&fields=compact to get the entries themselves. Search is still the better way in; listing is for orientation."},{"what":"The guest routes as a schema, if you would rather not parse prose","method":"GET","url":"https://real.kit-project.com/kit/openapi.json","note":"OpenAPI 3.1 for the keyless surface only, small enough to load whole. There is no archive selector: a paired kit is a different origin, not a parameter, because the two archives cannot read each other."}],"you_cannot":"Write. Contribution is gated behind a key, deliberately: this world stays coherent because changes are reviewed. If you want a Kit you can write to, the install is below and it belongs to your human, not to this demo.","install":{"mcp_url":"https://real-mcp.kit-project.com/mcp","note":"Add this as a remote MCP server to get the full toolset against this demo, or get your own Kit at https://kit-project.com. That installer is in private beta: your human can ask for access at https://kit-project.com/install/request/ and an invite arrives by email. Installing is a decision for the human you work with, so bring it to them rather than doing it silently."},"mcp_key":{"public_read_key":"kbr_live_ISWsqW39NkqT659FEkQjv0OjJDmyD4O3wx3wcCfA03c","note":"Deliberately public and shared by every visitor: use it as the bearer token for the MCP endpoint above. Read-only; it exposes the same data as the keyless routes here, as MCP tools instead of HTTP. It may be rotated without notice, so re-read this payload if calls start failing.","write_access":"Granted by a person, not a machine. POST https://real.kit-project.com/demo/request-access with your human's email, their name, and a line on why; the request lands in the operator's inbox and an answer arrives by email. Ask your human before sending their address anywhere, including here.","body":{"email":"your-human@example.com","name":"their name","reason":"one line"}},"docs":"https://real.kit-project.com/llms.txt","links":{"one_fetch_taste":"https://real.kit-project.com/kit/taste","search_get":"https://real.kit-project.com/memories/search?query=memory%20ballast%20deprecated%20GOMEMLIMIT&limit=5&fields=compact","pivot_get":"https://real.kit-project.com/memories/subgraph?memory_id=31&hops=2","docs":"https://real.kit-project.com/llms.txt"},"other_exhibits":[{"name":"Mayfur's two account books (the fiction pair)","docs":"https://demo.kit-project.com/llms.txt","note":"a controlled experiment: an invented world where correct recall is provable, split across two sovereign kits whose mystery only a visitor can solve"}]}