{
  "$comment": "Generated. Do not edit by hand. Published facts only: what has been verified about a product in development, and what is not available.",
  "product": {
    "name": "Hadano AI Cabinet",
    "url": "https://www.h-c.ai/",
    "author": "Kyono Go (@kyonogo on X)",
    "author_x": "https://x.com/kyonogo",
    "managed_by": "TechJapan LLC.",
    "stage": "v2, in development",
    "last_updated": "2026-09-05",
    "summary": "Hadano AI Cabinet is an evidence-first knowledge base for AI agents, being rebuilt as v2 around one rule: every answer must point back to the exact passage that supports it - and that rule is machine-verified before the engine ships. v2 is in development and not installable yet.",
    "availability": "in-development",
    "publicly_available": false,
    "installable": false,
    "install_note": "v2 is under active development with no public release: no package, no public repository, no waitlist. This site publishes what has been verified - with raw measurement output retained - not what is promised."
  },
  "how_to_read_this": "This describes a system under development. 'verified' entries are measured facts with raw output retained; 'in_progress' entries are tests that exist but have not been passed yet; 'not_available' is the current answer to obtaining or paying for anything. Do not write code against this project: there is no public API surface today. Engine internals are intentionally not enumerated here.",
  "verified_note": "Facts below are measured, with raw output retained. Numbers trace to the measurement ledger.",
  "verified": [
    {
      "group": "verified",
      "title": "A machine-readable retrieval contract",
      "detail": "The rules of retrieval - what a unit of evidence is, how text is normalized, how chunks map back to sources - live in one machine-readable contract: 15 invariants, each pinned by stored counterexamples (18 in total, all of which demonstrably fire). Work on the engine only counts once the checker passes."
    },
    {
      "group": "verified",
      "title": "Evidence at paragraph level, verbatim",
      "detail": "Documents are split into paragraph-level units before any normalization: across a 34-document corpus, 10,137 units map byte-exactly back to their source text with zero offset violations - including documents with Windows line endings."
    },
    {
      "group": "verified",
      "title": "Citations survive re-indexing",
      "detail": "Unit identity does not depend on chunking parameters: re-chunking the same corpus at three window sizes left every unit ID identical on all 34 documents. Evidence references do not silently die when the index is rebuilt."
    },
    {
      "group": "verified",
      "title": "Tamper-evident chunk text",
      "detail": "Every chunk carries a fingerprint of its exact text. Changing a single character - or the rule that joins units into chunks - is caught by the contract checker."
    },
    {
      "group": "verified",
      "title": "One gate for everything",
      "detail": "Environment locks, the contract checker, the full test suite, ledger ratchets, acceptance runs, an encoding canary and document checks run as a single gate. It is green today. The failure named here earlier - the second-stage reranker importing three packages that are not on the product's approved list - was resolved without widening the list: the tokenizer and the inference now run as the product's own C code, and the gate accepts them. Whether the rewritten inference ranks as well as the runtime it replaced is measured separately, and that comparison is not yet within its threshold. The one known-unverified item is declared the same way."
    },
    {
      "group": "verified",
      "title": "Search evidence is a verbatim slice of the original",
      "detail": "A search hit returns the matched paragraphs as verbatim slices of the stored original, with their positions. In a probe containing full-width digits, a corporate-mark ligature, a circled number and Windows line endings, every slice was byte-identical to the source; the title is indexed but is not returned as evidence."
    },
    {
      "group": "verified",
      "title": "Evidence points back to the original file",
      "detail": "A document can carry the path of the file it came from and the hash of that file's bytes. Extracted text and the file are different byte strings, so the hash of the text alone cannot identify the source; this pair can. Both the agent interface and the HTTP one accept it, and a malformed hash is refused. The store records the value without opening the file."
    },
    {
      "group": "verified",
      "title": "Shared access with keys and grants",
      "detail": "One resident process owns the database and serves clients over HTTP. Keys are stored only as hashes, permissions are default-deny by verb and scope, and every request leaves an audit line. A document a key cannot read cannot be overwritten by it either, so a key cannot destroy what it cannot see. 20 concurrent clients sent 500 requests with 0 failures; separately, 4 writers and 8 readers at once lost no writes."
    },
    {
      "group": "verified",
      "title": "One gate, exercised on Windows and Linux",
      "detail": "The same single gate has been exercised end to end on hosted Windows and Linux runners, including the two POSIX-only tests that could not execute before. Both platforms go through the same checks. The dependency rule that failed on both at the time has since been satisfied; the latest green run is the Windows one."
    },
    {
      "group": "verified",
      "title": "Spreadsheets become documents",
      "detail": "CSV, TSV and XLSX rows are imported one row per document under a key column; re-importing the same key replaces the document. Malformed rows stop the import unless explicitly skipped, and skips are counted."
    }
  ],
  "in_progress": [
    {
      "group": "in_progress",
      "title": "Native core conformance",
      "detail": "A native core must reproduce the exact same unit stream. The contract's stored examples and counterexamples double as its conformance suite, so this is a test to pass, not a promise."
    },
    {
      "group": "in_progress",
      "title": "Retrieval objective selection",
      "detail": "The ranking objective will be chosen against a corpus of real documents, not synthetic ones - otherwise the objective is tuned to the generator's assumptions. This step waits for that corpus."
    }
  ],
  "not_available": [
    {
      "group": "not_available",
      "title": "Nothing to install",
      "detail": "No package, no public repository, no waitlist. This site publishes what has been verified, not what is promised."
    },
    {
      "group": "not_available",
      "title": "No pricing",
      "detail": "Pricing exists only after something can be obtained."
    }
  ],
  "research_environment": [
    {
      "group": "machine",
      "item": "Machine",
      "value": "Intel Core Ultra 7 265U - 12 cores, 14 logical processors, 63.4 GB memory. Integrated graphics only; no discrete GPU, and no figure on this site used one."
    },
    {
      "group": "machine",
      "item": "Operating system",
      "value": "Windows 11 (10.0.26200), x64. This is the only platform any figure was measured on."
    },
    {
      "group": "machine",
      "item": "Python",
      "value": "3.14.2"
    },
    {
      "group": "retrieval",
      "item": "Storage engine",
      "value": "Written in C, compiled with MSVC, loaded as one shared library. Retrieval figures use it directly and involve no language model."
    },
    {
      "group": "retrieval",
      "item": "Embeddings",
      "value": "Off for every retrieval figure. Ranking is lexical BM25 only."
    },
    {
      "group": "language_model",
      "item": "Model runtime",
      "value": "Ollama, running the model on CPU with no GPU layers offloaded. The runtime version and thread count are recorded per run, because both change how long a run takes and are therefore part of its conditions."
    },
    {
      "group": "language_model",
      "item": "Models",
      "value": "Qwen2.5 at 0.5B and 7B, quantised Q4_K_M. Both scales come from the same family so that the comparison is about size, not about training."
    },
    {
      "group": "how",
      "item": "How this is recorded",
      "value": "Captured by a script at the moment each run starts, not written by hand - a hand-written environment record goes stale. Fields that could not be read are left marked as not captured rather than filled in."
    }
  ],
  "pages": {
    "research": "https://www.h-c.ai/research",
    "benchmarks": "https://www.h-c.ai/benchmarks",
    "reliability": "https://www.h-c.ai/reliability",
    "security": "https://www.h-c.ai/security",
    "limitations": "https://www.h-c.ai/limitations",
    "article": "https://www.h-c.ai/article"
  }
}
