{
  "module": "packs",
  "version": "1.0.0",
  "what_this_is": "A public library of decision packs for the token saver. A pack is data, not code: conditions over the nine signals the engine already measures, and a verdict for each.",
  "the_deal": {
    "free_forever_no_account": [
      "write a pack",
      "read any pack",
      "fork any pack",
      "seal a pack so its date and wording are provable",
      "validate a pack's syntax"
    ],
    "needs_a_key": [
      "run a pack against a request",
      "get a verdict",
      "get a sealed receipt for that verdict"
    ],
    "why": "A pack on its own decides nothing and produces no evidence. The thresholds are the author's and they are public. The execution, the measurement and the receipt are the engine's, and that is what is being sold. An author can therefore build something genuinely theirs and prove it is theirs without paying anything - and everyone who uses it arrives here to run it."
  },
  "language": {
    "signals, 0.0 to 1.0": "exposure size ask depth tools loop burst grind novelty",
    "raw counts": "chars max_tokens turns tool_count loop_count burst_count grind_count",
    "flags": "unattended deterministic",
    "the engine's score": "score",
    "operators": "> >= < <= == != and or not ( )",
    "verdicts": "allow downgrade challenge block"
  },
  "language_notes": [
    "There is no syntax for calling anything, reading anything, or assigning anything. Expressions are parsed into a tree and walked; nothing reaches eval, exec or compile.",
    "Rules are tried in order and the first match decides. If none match, the pack's default decides.",
    "A pack can only make the engine's decision stricter. It can never weaken a hard rule, and an attempt to do so is reported rather than silently dropped.",
    "A pack can never return 'serve'. Serving from store is a fact about whether an identical request was answered before, not a policy."
  ],
  "limits": {
    "rules_per_pack": 40,
    "characters_per_expression": 400,
    "manifest_bytes": 32768
  },
  "sigil": "Every pack draws itself: nine spokes, one per signal, each as long as the pack leans on that signal, in a hue derived from its own digest. Computed from the rules, so the drawing is the pack rather than a picture attached to it.",
  "routes": {
    "public": [
      "GET spec",
      "GET list",
      "GET get",
      "GET status",
      "POST validate",
      "POST publish",
      "POST fork"
    ],
    "keyed": [
      "POST run"
    ]
  },
  "page": "/packs",
  "does_not_prove": [
    "That a pack's thresholds are good ones. Sealing fixes the wording and the date, not the judgement.",
    "That an author is who they say they are. Names are self-declared, as everywhere else on this deployment."
  ]
}