{
  "ok": true,
  "role": "product",
  "slug": "trajectorylock",
  "name": "TrajectoryLock",
  "version": "0.1.0",
  "one_line": "Auditable geometric test. Research prototype, not a certified forensic instrument.",
  "author": "Aziel Eliab",
  "identity": "Aziel Eliab",
  "license": "Apache-2.0",
  "github": "https://github.com/AzielEliab/trajectorylock",
  "skill_url": "https://aziel-runtime.vibelock.workers.dev/v1/pull/trajectorylock/skill",
  "worker_skill": "https://trajectorylock-download-tracker.vibelock.workers.dev/v1/skill",
  "skill": "---\nname: TrajectoryLock\ndescription: Use this when testing geometric compatibility of a reconstructed trajectory with a declared official line. Research prototype, not a certified forensic instrument. Hosted /v1 via this Worker and aziel-runtime. Author Aziel Eliab.\n---\n\n# TrajectoryLock\n\nAuditable geometric trajectory test. Author: **Aziel Eliab**.\n\n**THIS IS:** research prototype / auditable geometric test. Compatibility vs declared official line. Independence groups so copies don't inflate certainty. CLI + local workbench + JSON API.\n\n**THIS IS NOT:** a certified forensic instrument; substitute for scene reconstruction, medical findings, lab exam; shooter/intent/guilt/narrative identifier; automatic detection of invisible projectiles; face recognition. Match probability is P(match | declared model), not P(official account is true). Synthetic example results must never be represented as real-case findings.\n\nAlways send a normal `User-Agent` (for example `Mozilla/5.0`). Cloudflare Workers may 403 empty agents.\n\n## When to call it\n\n- Score a **small JSON case** (sources + observations + official_hypothesis) for geometric compatibility.\n- Fetch the synthetic example. Never present it as a real case.\n- Health / skill / OpenAPI. Never invent a shooter, intent, or guilt.\n\nLocal UI is one screen: load JSON, run check, see the result. Import and Export. Doctor/Verify speak in plain words.\n\nHosted `/v1/analyze` caps JSON size and **never stores media**. Full reconstruction is the local package: `trajectorylock analyze` / `trajectorylock ui`.\n\n## Endpoints (this Worker)\n\nHost: `https://trajectorylock-download-tracker.vibelock.workers.dev`\n\n| Method | Path | What |\n|--------|------|------|\n| GET | `/v1/health` | Liveness. Does not increment downloads. |\n| GET | `/v1/skill` | This markdown. Does not increment downloads. |\n| GET | `/v1/example` | Synthetic small JSON case. Not a real case. |\n| POST | `/v1/analyze` | Small JSON case in → result. Cap size. Never stores media. |\n\nOpenAPI: `https://trajectorylock-download-tracker.vibelock.workers.dev/openapi.json`\n\nCatalog OpenAPI: `https://aziel-runtime.vibelock.workers.dev/openapi.json`\n\nMCP: `POST https://trajectorylock-download-tracker.vibelock.workers.dev/mcp`\nalso `POST https://aziel-runtime.vibelock.workers.dev/mcp`\n\n## How to call (Mozilla/5.0)\n\n```bash\ncurl -s -A 'Mozilla/5.0' https://trajectorylock-download-tracker.vibelock.workers.dev/v1/health\n\ncurl -s -A 'Mozilla/5.0' https://trajectorylock-download-tracker.vibelock.workers.dev/v1/example\n\ncurl -s -A 'Mozilla/5.0' -X POST https://trajectorylock-download-tracker.vibelock.workers.dev/v1/analyze \\\n  -H 'content-type: application/json' \\\n  -d '{\"case_id\":\"MINIMAL-DIRECT-LINE\",\"sources\":[{\"id\":\"survey-a\",\"quality\":0.95,\"calibrated\":true,\"independence_group\":\"survey-a\"}],\"observations\":[{\"type\":\"direct_line\",\"source_id\":\"survey-a\",\"point\":[0,0,1.2],\"direction\":[1,0.1,0.02],\"angular_sigma_deg\":0.5,\"offset_sigma_m\":0.02}],\"official_hypothesis\":{\"point\":[0.01,0.01,1.19],\"direction\":[1,0.11,0.02],\"angular_sigma_deg\":0.7,\"offset_sigma_m\":0.04,\"angle_tolerance_deg\":3.0,\"offset_tolerance_m\":0.25},\"analysis\":{\"monte_carlo_samples\":400,\"random_seed\":7}}'\n```\n\nCatalog aliases:\n\n```bash\ncurl -s -A 'Mozilla/5.0' -X POST https://aziel-runtime.vibelock.workers.dev/p/trajectorylock/analyze \\\n  -H 'content-type: application/json' \\\n  -d '{\"case_id\":\"MINIMAL-DIRECT-LINE\",\"sources\":[{\"id\":\"survey-a\",\"quality\":0.95,\"calibrated\":true,\"independence_group\":\"survey-a\"}],\"observations\":[{\"type\":\"direct_line\",\"source_id\":\"survey-a\",\"point\":[0,0,1.2],\"direction\":[1,0.1,0.02],\"angular_sigma_deg\":0.5,\"offset_sigma_m\":0.02}],\"official_hypothesis\":{\"point\":[0.01,0.01,1.19],\"direction\":[1,0.11,0.02],\"angular_sigma_deg\":0.7,\"offset_sigma_m\":0.04,\"angle_tolerance_deg\":3.0,\"offset_tolerance_m\":0.25}}'\n```\n\nMCP tools: `trajectorylock_health`, `trajectorylock_example`, `trajectorylock_analyze`, `trajectorylock_skill`.\n\nGrok: import the catalog OpenAPI as a custom tool. ChatGPT: GPT Actions. Venice: HTTP tools.\n\n## Honest banner\n\nTHIS IS: research prototype / auditable geometric test. Compatibility vs declared official line. Independence groups so copies don't inflate certainty.\n\nTHIS IS NOT: a certified forensic instrument; substitute for scene reconstruction, medical findings, lab exam; shooter/intent/guilt/narrative identifier; automatic detection of invisible projectiles; face recognition.\n\nMatch probability is P(match | declared model), not P(official account is true). Synthetic example results must never be represented as real-case findings.\n\nPaper: TL-WP-0.1 · TrajectoryLock_v0.1.pdf\n\nDOI: https://doi.org/10.5281/zenodo.22258015\nRecord: https://zenodo.org/records/22258015\nFile: TrajectoryLock_v0.1.pdf · Apache-2.0 · Eliab, Aziel\n\nForks are welcome and always allowed.\n\nLocal UI: Import JSON file and Export JSON.\n",
  "download": "https://trajectorylock-download-tracker.vibelock.workers.dev/download",
  "count": "https://trajectorylock-download-tracker.vibelock.workers.dev/count",
  "install": "https://trajectorylock-download-tracker.vibelock.workers.dev/install.sh",
  "install_sh": "curl -fsSL https://trajectorylock-download-tracker.vibelock.workers.dev/install.sh | bash",
  "openapi": "https://trajectorylock-download-tracker.vibelock.workers.dev/openapi.json",
  "runtime_openapi": "https://aziel-runtime.vibelock.workers.dev/openapi.json",
  "ops": [
    {
      "op": "health",
      "method": "GET",
      "summary": "Liveness. Does not increment download KV. Hosted never stores media. Not a certified instrument."
    },
    {
      "op": "example",
      "method": "GET",
      "summary": "Synthetic small JSON case. Not a real case. Does not increment download KV."
    },
    {
      "op": "analyze",
      "method": "POST",
      "summary": "Small JSON case in, geometric result out. Cap size. NEVER store media. Not a certified forensic instrument."
    },
    {
      "op": "skill",
      "method": "GET",
      "summary": "Return TrajectoryLock skill markdown. Does not increment download KV."
    }
  ],
  "banner": "TrajectoryLock is a research prototype / auditable geometric test. Not a certified forensic instrument. Hosted never stores media. Match probability is P(match | declared model), not P(official account is true). Synthetic example results must never be represented as real-case findings.",
  "limitations": "TrajectoryLock is a research prototype / auditable geometric test. Not a certified forensic instrument. Hosted never stores media. Match probability is P(match | declared model), not P(official account is true). Synthetic example results must never be represented as real-case findings.",
  "aliases": {
    "catalog_card": "https://aziel-runtime.vibelock.workers.dev/p/trajectorylock",
    "catalog_skill": "https://aziel-runtime.vibelock.workers.dev/p/trajectorylock/skill",
    "catalog_health": "https://aziel-runtime.vibelock.workers.dev/p/trajectorylock/health",
    "invoke_prefix": "https://aziel-runtime.vibelock.workers.dev/p/trajectorylock",
    "worker_home": "https://trajectorylock-download-tracker.vibelock.workers.dev/",
    "slugs": [
      "trajectorylock"
    ]
  },
  "doi": "10.5281/zenodo.22258015",
  "doi_note": "Historical DOI only. Do not invent a replacement. See /cite.json.",
  "skill_source": "https://trajectorylock-download-tracker.vibelock.workers.dev/v1/skill (service binding)",
  "kv_increment": false
}