Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"agents",
"ai-agents",
"cost-optimization",
"inference",
"llm",
"llm-router",
"observability",
"proxy",
"reliability",
"rust"
],
"is_fork": false,
"size_kb": 1965,
"has_wiki": true,
"homepage": "https://dshakes.github.io/firstpass",
"languages": {
"Rust": 1229302,
"Shell": 3067,
"Dockerfile": 1307
},
"pushed_at": "2026-07-26T02:59:24Z",
"created_at": "2026-07-08T15:39:57Z",
"owner_type": "User",
"updated_at": "2026-07-26T02:55:59Z",
"description": "Route every LLM request to the cheapest model that provably passes your quality gate — with a signed, tamper-evident receipt for every decision. Proof over prediction.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Rust",
"significant_languages": [
"Rust"
]
},
"owner": {
"blog": null,
"name": "Shakes",
"type": "User",
"login": "dshakes",
"company": null,
"location": null,
"followers": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/7453460?v=4",
"created_at": "2014-04-30T20:44:31Z",
"is_verified": null,
"public_repos": 46,
"account_age_days": 4469
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.2.7",
"kind": "patch",
"published_at": "2026-07-26T03:03:27Z"
},
{
"tag": "v0.2.6",
"kind": "patch",
"published_at": "2026-07-26T00:33:01Z"
},
{
"tag": "v0.2.5",
"kind": "patch",
"published_at": "2026-07-25T22:57:30Z"
},
{
"tag": "v0.2.4",
"kind": "patch",
"published_at": "2026-07-25T19:19:46Z"
},
{
"tag": "v0.2.3",
"kind": "patch",
"published_at": "2026-07-25T17:29:18Z"
},
{
"tag": "v0.2.2",
"kind": "patch",
"published_at": "2026-07-25T17:10:02Z"
},
{
"tag": "v0.2.1",
"kind": "patch",
"published_at": "2026-07-24T05:20:13Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2026-07-20T10:28:14Z"
},
{
"tag": "v0.1.7",
"kind": "patch",
"published_at": "2026-07-17T04:04:48Z"
},
{
"tag": "v0.1.6",
"kind": "patch",
"published_at": "2026-07-17T01:46:36Z"
},
{
"tag": "v0.1.5",
"kind": "patch",
"published_at": "2026-07-16T12:28:32Z"
},
{
"tag": "v0.1.4",
"kind": "patch",
"published_at": "2026-07-15T22:39:39Z"
},
{
"tag": "v0.1.3",
"kind": "patch",
"published_at": "2026-07-15T16:24:15Z"
},
{
"tag": "v0.1.2",
"kind": "patch",
"published_at": "2026-07-15T15:43:37Z"
},
{
"tag": "v0.1.1",
"kind": "patch",
"published_at": "2026-07-14T12:41:32Z"
},
{
"tag": "v0.1.0-rc.1",
"kind": "prerelease",
"published_at": "2026-07-14T04:18:00Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2026-07-09T03:08:24Z"
}
],
"recent_commits": [
{
"oid": "9fb7340d4988ccb70903070272dba461c50b2465",
"body": "Cuts the release that repairs `ghcr.io/dshakes/firstpass:latest`.\n\n`latest` had been gated on `is_default_branch`, so every main push overwrote it\nwith an amd64-only build (arm64 is emulated and slow, so it is reserved for\ntags). Anyone on Apple Silicon pulling the recommended image got amd64. #155\n\n[…]\nio timeouts. That was the failure mode worth checking —\na `secrets`-gated `if` can evaluate false silently, leaving a fix that looks\napplied and never fires.\n\n481 tests, clippy -D warnings, fmt clean.",
"is_bot": false,
"headline": "chore(release): 0.2.7 — restore a dual-arch `latest` image (#156)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-26T02:55:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "36af9cedca7931f189cf777136875eb5f4aa9503",
"body": "…mmit (#155)\n\n`latest` was tagged with `enable={{is_default_branch}}`, so every push to main\noverwrote it — and main builds are amd64 ONLY (arm64 is emulated and slow, so it\nis reserved for tags). The result: `ghcr.io/dshakes/firstpass:latest` was\nsingle-arch almost all the time, and anyone on arm64\n[…]\nease tags, which are the dual-arch builds. Main pushes\nstill publish `sha-<short>` tags, so per-commit images remain available for\ndebugging; they simply no longer masquerade as the recommended image.",
"is_bot": false,
"headline": "fix(docker): point `latest` at the last release, not the last main co…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-26T02:52:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5fce88a7d86ddb85013aa9c7ab5f4eaf318f6004",
"body": "Docker Hub's ANONYMOUS pull limit is what actually failed runs here — BuildKit\npulls timing out with registry-1.docker.io DeadlineExceeded, not the build.\nAuthenticating lifts that limit substantially.\n\nTwo deliberate choices, both because of how the previous attempt at this went:\n\n - **Fails open.\n[…]\nt by the repo\nowner and consumed only by docker/login-action.\n\nThe pre-existing login-action step is unrelated — it authenticates to GHCR for\npushing. This one authenticates to Docker Hub for pulling.",
"is_bot": false,
"headline": "ci(docker): authenticate to Docker Hub when credentials exist (#154)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-26T02:01:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "21722acec5ffcf34dd27cd4338181dac8d3e9f29",
"body": "Ships the fix for the last known limitation in ADR 0009: resolved outcomes now\nattribute to the route that produced them, rather than pooling onto route 0.\n\nThat pooling was a hole in the guard, not just imprecision. A healthy route's\nsuccesses dilute a failing route's rate, so the bound can sit und\n[…]\nfloor. Set min_n too low and a\nperfectly acceptable route trips the moment judging begins. That belongs in the\noperator's config guide, not buried in a test.\n\n481 tests, clippy -D warnings, fmt clean.",
"is_bot": false,
"headline": "chore(release): 0.2.6 — guardrail route attribution (#153)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-26T00:26:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3474449994248a32550037685bbc3f4d3b3dd6b5",
"body": "…152)\n\nCloses the limitation carried since D3: every resolved outcome was recorded\nagainst route 0, because deferred verdicts had no way to say which route the\ndecision came from.\n\nThat is not merely imprecise in a multi-route config — it is a hole in the guard.\nPooled onto one bucket, a healthy rou\n[…]\null window. The min_n floor added with D3 only guarantees a zero-failure window\ncannot breach; a low-but-nonzero rate can still fire early if min_n is small.\n\n481 tests, clippy -D warnings, fmt clean.",
"is_bot": false,
"headline": "fix(guardrail): attribute outcomes to the route that produced them (#…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-26T00:23:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "527a8c8ab8d2335acc144128337b7e65fb55111e",
"body": "Ships the three mechanisms that turn \"flip to enforce and hope\" into a path an\noperator can walk: shadow -> ramp -> guard. All default-off; a config that omits\nthem behaves byte-identically to 0.2.4.\n\n - [route.shadow] measure what Firstpass would have served, on your own\n tra\n[…]\nch\n\nVerified on the 0.2.5 build: a config exercising all three parses and clears\n`firstpass doctor`.\n\nVersion bumped across Cargo, README and 30 site pages — every occurrence, not\njust nav and footer.",
"is_bot": false,
"headline": "chore(release): 0.2.5 — progressive delivery (ADR 0009) (#151)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T22:48:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "26d9ac95b1145d5d3024f8ec53d2a80fce4cab7c",
"body": "…ADR 0009 D3 + D4) (#150)\n\n* feat: wire the guardrail end to end, and document progressive delivery (ADR 0009 D3 + D4)\n\n**Wiring.** The guardrail had decision logic and a state machine but nothing\ncalled it. Now:\n\n - `[guardrail]` exists as global config, validated at parse;\n - dispatch checks dem\n[…]\nthe honest mitigation\nis a re-run, or authenticating to Docker Hub if it becomes frequent enough to\njustify a secret. Redirecting to a registry without checking the image is there\nis not a mitigation.",
"is_bot": false,
"headline": "feat: wire the guardrail end to end + document progressive delivery (…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T22:22:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8b2416255555750483e6e63ccf593c44ed194def",
"body": "…breach (ADR 0009 D3) (#149)\n\nFirstpass publishes a distribution-free bound on served failures, calibrates it\nonce, and then trusts it indefinitely. Metrics expose counters and gate error\nbudgets trip individual gates, but nothing watched the served-failure rate\nitself — the quantity the headline gu\n[…]\nce from a regime no longer in effect.\n\n479 tests, clippy -D warnings, fmt clean.\n\nNot yet wired into dispatch or the feedback path — the decision logic and state\nmachine land first, as with D1 and D2.",
"is_bot": false,
"headline": "feat(core): guardrail — watch the served-failure bound and demote on …",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T22:05:26Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d145497537d4562e35d9acc5cd0753ba10d751d9",
"body": "…R 0009 D2, part 1) (#148)\n\n* feat(core): shadow-scoring primitives — sampling and spend ledger (ADR 0009 D2, part 1)\n\nFoundation for shadow scoring. Deliberately does NOT add `[route.shadow]` yet:\nthe execution path is not wired, and a config block that parses but changes\nnothing reads as a working\n[…]\n by default, invalid values rejected\nat parse rather than clamped — a silently-corrected ceiling would spend a\ndifferent amount than the operator authorised.\n\n463 tests, clippy -D warnings, fmt clean.",
"is_bot": false,
"headline": "feat(core): shadow-scoring primitives — sampling and spend ledger (AD…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T21:57:14Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6f80e09b8b4ac9ee8b18213a21622d508716ad5f",
"body": "… (#147)\n\nAdds ADR 0009 (progressive delivery) and implements its first decision.\n\nEnforce was all-or-nothing. `Route.match_` slices traffic by request features,\nso there was no way to say \"5% of otherwise-identical traffic\" — the only ramp\navailable was to hand-craft a matcher selecting a small sli\n[…]\nisabled — \"a session is self-consistent\" is also true when\neverything enforces — so it now asserts the concrete arm `rollout::decide`\npredicts for each session, and requires both arms to be exercised.",
"is_bot": false,
"headline": "feat(routing): percentage rollout with stable bucketing (ADR 0009 D1)…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T21:30:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b5f06abaef3ae6834c4073e27d43adebea89b8b1",
"body": "…alls (#146)\n\n0.2.3 shipped `firstpass upgrade`, and on a real pipx install it reported\n\"unrecognised\" and printed all six commands. This cuts the release that carries\nthe fix to installed users — the detection is only useful once it is in the\nartifact people actually have.\n\nVersion bumped across Ca\n[…]\neplaced this time, not just the nav and footer: the 0.2.2 bump left three\nversion mentions in the docs overview prose contradicting that same page's\nchrome, and it took a verification sweep to notice.",
"is_bot": false,
"headline": "chore(release): 0.2.4 — `firstpass upgrade` recognises symlinked inst…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T19:09:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "09b941df5920018b7094cf2bb9489fbb8b833cfe",
"body": "Reported from a real machine: `firstpass upgrade` on a pipx install reported\n\"unrecognised\" and printed all six commands instead of the one that applies.\n\n`current_exe()` returns the path the binary was LAUNCHED through, not the file\nitself. pipx installs into its own venv and puts a symlink on PATH\n[…]\ntelling a pipx user to run\n`uv tool upgrade` is still the wrong instruction, just a more specific one.\npipx is matched before the generic Python markers because a pipx venv contains\nsite-packages too.",
"is_bot": false,
"headline": "fix(cli): resolve symlinks before detecting the install channel (#145)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T19:05:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e492ce60286d9ff20264e9873d0b812f53940df2",
"body": "The docs builder and `firstpass onboard` were two implementations of the same\nTOML format. Both were parser-verified and they agreed, but nothing held them\ntogether — and a docs page that emits config the binary would reject is worse\nthan a page with no builder at all.\n\nRust now owns the format outr\n[…]\nt by driving the real page,\nnot by reading the diff.\n\nVerified end to end: the config the page serves for google/code/enforce is\nbyte-identical to what `firstpass onboard` writes for the same answers.",
"is_bot": false,
"headline": "fix(docs): make Rust the only implementation of the config format (#144)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T18:49:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "51966eb19a7a9cd986d39bcb0bd01af00d4bf611",
"body": "…143)\n\nTwo things, folded into one pass because the first is a bug in code already on\nmain and the second touches the same files.\n\n**The rig hid its own payoff on a phone.** The cost figures lived inside the\nSVG, and an SVG cannot reflow — so at 390px the panel showed the ladder and\npushed the bars,\n[…]\nsibilitychange if it loaded hidden, and runs a failsafe that\nstrips the hiding class from anything still unshown. Worst case is \"no\nanimation\", never \"no content\". Reduced motion never arms it at all.",
"is_bot": false,
"headline": "fix(docs): rig readout reflows on mobile; landing depth and reveal (#…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T18:35:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a58b8957435ca28f4ec6954048afc4d1aa551c3e",
"body": "…t (#142)\n\nThe hero's terminal printed a plausible-looking log. It read as a screenshot of\noutput rather than as the argument, and the argument is the thing worth showing.\n\nReplaces it with \"the rig\": a single instrument panel that draws the motto\ninstead of asserting it. A request opens on rung 0, \n[…]\nee stale \"v0.2.1\" mentions in the docs overview prose, which the\nnav/footer version bumps had never touched — that page had been claiming one\nversion in its chrome and another in its body since 0.2.2.",
"is_bot": false,
"headline": "feat(docs): landing centrepiece — one decision, drawn as an instrumen…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T17:56:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2d87bfb749732efc6bfb37823cd6cde507088c5e",
"body": "…#141)\n\n0.2.2 shipped `firstpass demo`; this cuts the release that makes\n`firstpass upgrade` reachable from the channels people actually install from.\nThe command is only useful once it is in a published artifact — a self-updater\nnobody can install is not an upgrade path.",
"is_bot": false,
"headline": "chore(release): 0.2.3 — `firstpass upgrade` reaches installed users (…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T17:22:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f89cc774a7ff9406a294e71f176feed75119e5a",
"body": "* feat(cli): `firstpass upgrade`, and point the docs at `uvx firstpass demo`\n\nUpgrading was undiscoverable. cargo-dist ships a self-updater, but it is named\n`firstpass-update`/`firstpass-proxy-update` — nobody guesses that — and it only\nexists for the installer-script channel. `firstpass upgrade` no\n[…]\n made-up uv cache path. Replaced with the two\nlayouts actually on disk — uvx's ephemeral env under `archive-v0`, and the\n`uv tool install` location — so the heuristic is pinned to what uv really does.",
"is_bot": false,
"headline": "feat(cli): `firstpass upgrade` + quickstart demo via uvx (#140)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T17:19:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "14ce8a0b765b02c6e474f4a56421433dfe9dbd9e",
"body": "The no-keys demo was a cargo example. Examples are not `[[bin]]` targets, so it\nnever shipped in the wheel or the release binaries — the only way to run it was\nto clone the repo and have a Rust toolchain, which is a steep first step for a\nquickstart that promises 60 seconds.\n\nMoves the demo into the\n[…]\n throughout.\n\nBumps to 0.2.2 so the published wheel actually contains the subcommand — the\ndocs change that points the quickstart at `uvx firstpass demo` follows this\nrelease rather than preceding it.",
"is_bot": false,
"headline": "chore(release): 0.2.2 — `firstpass demo` ships in the binary (#139)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T17:02:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b48888541d72459a3bed6c86c466ecbd246b6caa",
"body": "* feat(onboard): ask three questions and write a runnable firstpass.toml\n\n`firstpass onboard` detected the environment and wired the base URL, but left\nthe routing config as an exercise — the docs handed you a TOML blob to retype.\nIt now asks the three things that actually differ between setups (pro\n[…]\nishes llms.txt (plus AGENTS/README/SPEC) to the site root. Pages\nserves docs/ as root, so the machine-readable entry point the site advertises\nwas returning a 404 to the very agents it is written for.",
"is_bot": false,
"headline": "feat: onboard writes the config; agent-first install, new mark (#138)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-25T03:02:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "36ddb337085c1981e7d03d2207a72ee883af01b3",
"body": "docs(tutorial): Module 1 — response anatomy + Anthropic/Bedrock/Vertex front doors",
"is_bot": false,
"headline": "Merge pull request #137 from dshakes/docs/module1-response-access",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-24T16:58:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ff8a05823156d11ab643d39cb1e91b9c9a777a54",
"body": "…x front doors\n\nTwo additions to the 'One request, one response' module, both requested:\n- 'Same wire, different front doors' — a table of how Anthropic-direct / Amazon\n Bedrock / Google Vertex differ (endpoint, auth, where the model id goes:\n bedrock-2023-05-31 / vertex-2023-10-16 anthropic_versi\n[…]\nation/cache_read fields) and a\n scannable stop_reason values table (end_turn / tool_use / max_tokens / stop_sequence).\n\nModule balanced/validated; front-doors table Chrome-checked, no console errors.",
"is_bot": false,
"headline": "docs(tutorial): Module 1 — response anatomy + Anthropic/Bedrock/Verte…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T16:56:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c09915ba7cc95c280df1f6ef2cef25a985000ea0",
"body": "docs(tutorial): 'how the bill builds' story-arc diagram on the course hub",
"is_bot": false,
"headline": "Merge pull request #136 from dshakes/docs/story-arc",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-24T16:55:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0be0256ef0eeb1a5b32da17843c6ebbd27b7460b",
"body": "…course hub\n\nThe hub had the course index but no picture of the narrative. Added a single\nrising-then-dipping cost curve across the core path — one call (nearly free) →\nmulti-turn (compounds) → tools (× many calls) → caching (bends it down) → a full\nsession (the sum) — so the reader sees the whole story before diving in. Validated\n(balanced, unique ids/markers, no accent-fill).",
"is_bot": false,
"headline": "docs(tutorial): add a 'how the bill builds' story-arc diagram to the …",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T16:52:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf29ff483cd08337221d4aa9308c7e5ef1cae78d",
"body": "docs(tutorial): cover /clear alongside compaction in the CC-session module",
"is_bot": false,
"headline": "Merge pull request #135 from dshakes/docs/cc-clear",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-24T16:29:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "41eb92170ad75a97f386a52c63cd22193dbed70f",
"body": "…odule\n\nThe 'when the window fills' section explained compaction but not its opposite, /clear.\nAdded both with the distinction: compact summarizes and continues the same task (keeps\nthe thread, costs a summary call, invalidates the prompt cache); clear wipes the\nconversation and starts fresh (no summary, cheapest reset, for an unrelated task). Plus a\ncompact-vs-clear comparison table and a Key-idea callout on how each resets the meter.",
"is_bot": false,
"headline": "docs(tutorial): cover /clear alongside compaction in the CC-session m…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T16:27:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bab0e83b88b2fd3cce95ef0c878d7d67fce2a395",
"body": "docs(tutorial): redraw the 7 remaining anchor diagrams + widen course pages",
"is_bot": false,
"headline": "Merge pull request #134 from dshakes/docs/redraw-diagrams",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-24T16:24:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "61cd5f183b2db1bf1432b7b1f24c3c4171e42c12",
"body": "… pages\n\n- Redrew every reused anchor diagram to the fresh bar: one-request (wire),\n multi-turn (rising per-turn input + transcript-grows stacks), tools (model↔code\n racetrack), caching (two-curve, write-spike direction fixed), CC session (session\n timeline, split the combined step + cache-invali\n[…]\nied the wider layout + redrawn loop diagram, no console errors.\n(Note: the live 'Requests 101' text a reader saw was a stale browser cache — the\ndeployed title is already 'How Agents Talk to Models'.)",
"is_bot": false,
"headline": "docs(tutorial): redraw the 7 remaining anchor diagrams + widen course…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T16:15:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5cba18bf3a7e9ca4b284f1c7dec2fc5426814d78",
"body": "docs(tutorial): a concept diagram anchoring every module + Lesson→Module",
"is_bot": false,
"headline": "Merge pull request #133 from dshakes/docs/lesson-diagrams",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-24T15:54:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69d7ddbca65f1f2e85f64a040965df31831557ac",
"body": "…dule'\n\nVisual-first pass on the How Agents Talk to Models tutorial:\n- Added a concept-anchoring fp-svg diagram (right after the intro) to the six modules\n that lacked one: token meter (rate asymmetry + tier ladder), client shapes (3-column\n cost drivers), streaming (non-streaming vs streaming tim\n[…]\n six diagrams: fp-svg idiom, unique marker ids, theme-aware CSS vars, no invalid\nclasses; validated (balance, ids, markers, aria wired). Chrome-verified images +\ntoken-meter render, no console errors.",
"is_bot": false,
"headline": "docs(tutorial): a fresh diagram anchoring every module + 'Lesson'→'Mo…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T15:52:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4d5c24c498fce7477f219ac18653b63244eca2cb",
"body": "docs: 'How Agents Talk to Models' — multi-page tutorial (rebuild of Requests 101)",
"is_bot": false,
"headline": "Merge pull request #132 from dshakes/docs/how-agents-talk-tutorial",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-24T15:17:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b5056034d4226c2b226c4ab86a660eeaf66cc6af",
"body": "…age tutorial\n\nReplaces the single 1,100-line linear-scroll page with a paced, visual-first,\nmulti-page course (the reader's feedback: a linear wall isn't world-class tutorial UX).\n\n- Renamed 'Requests 101' -> 'How Agents Talk to Models' (URL requests-101.html kept\n so no inbound links break; main-\n[…]\ns rewritten from in-page anchors to lesson URLs. Every prev/next,\nsidebar entry, and cross-ref verified to resolve; all pages balanced. Chrome-verified\nhub + a lesson, light + dark, no console errors.",
"is_bot": false,
"headline": "docs: rebuild Requests 101 as 'How Agents Talk to Models' — a multi-p…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T15:14:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d937a5c4922cd4378e58ad74871d6372aef6388c",
"body": "docs(requests-101): rebuild to world-class — running example, module map, 5 new modules",
"is_bot": false,
"headline": "Merge pull request #131 from dshakes/docs/requests-101-worldclass",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-24T14:50:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e136a8d25a757156f38e9f5583ad669e16568a3b",
"body": "…map, 5 new modules\n\nAddresses reviewer + reader feedback that the primer was good but not world-class.\nTwo structural fixes both reviews flagged as biggest gaps:\n- ONE running example threaded through the whole core path: a coding agent doing a\n single real task (make POST /orders reject a missing\n[…]\nHTTP status codes verified; receipt matches the real Trace\nschema; only 82%/7.7%/974 measured numbers cited. Chrome-verified light+dark, no console\nerrors (module map, MCP, images, headless, receipt).",
"is_bot": false,
"headline": "docs(requests-101): rebuild to world-class — running example, module …",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T14:46:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "add65778f9f77de6fa9b5774d3ef92e3e81f6007",
"body": "docs(site): sharpen the product-story arc — rename page 05, de-duplicate the loop",
"is_bot": false,
"headline": "Merge pull request #130 from dshakes/docs/story-flow-polish",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-24T13:41:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a0865c59c54886343daf2cdfd3f5f97603fbf25a",
"body": "…ate the loop\n\nStory/flow pass over the product-narrative spine (Overview → Quickstart →\nRequests 101 → How it works → 05 → Gates → Routing & escalation → …):\n\n- Rename page 05 'Routing, end to end' → 'Every scenario, end to end' site-wide\n (title/h1/crumb/sidebar/pagers/cross-links; filename reque\n[…]\neferences\n that read awkwardly after the rename.\n\nNo SVG diagrams touched; all anchors/ids preserved; Chrome-verified (title,\nsidebar, reframed opening, no console errors); all 15 pages re-validated.",
"is_bot": false,
"headline": "docs(site): sharpen the product-story arc — rename page 05, de-duplic…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T13:35:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "898cfe036ab0306063948c4e226c8612e9d30a86",
"body": "docs(site): Requests 101 + layered/verbose elevation of the full docs guide",
"is_bot": false,
"headline": "Merge pull request #129 from dshakes/docs/requests-101-fundamentals",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-24T12:50:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4dfb715434f0c02ee2f0afedd5362010e68db462",
"body": "Applies the Requests-101 layered style system site-wide: per-page and\nper-section TL;DRs, one-line recaps, and Key idea / Common mistake / Under the\nhood callouts, plus .subh sub-modules — a scannable spine over deep detail.\n\nPages elevated (14): how-it-works, request-flow, gates, routing, guarantee\n[…]\n / 10% / 95%).\nAssets already on ?v=3 site-wide. Six + N verified diagrams byte-intact.\n\nChrome-checked (light+dark, no console errors): requests-101, how-it-works,\nguarantee, configuration, receipts.",
"is_bot": false,
"headline": "docs(site): elevate all guide pages to the layered/verbose bar",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T12:29:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1ee4a45a0201362cd696e6c4b0c2a0e9f2941ba8",
"body": "…louts, Module 8 (Claude Code session), 3 sequence diagrams\n\n- Add layered-doc style system to docs.css (.tldr/.recap/.subh; .modnum) and\n render it: page + per-module TL;DRs, one-line recaps, and Key idea /\n Common mistake / Under the hood callouts (reusing .note variants).\n- Module 4: full four-\n[…]\n known gap; no history summarization).\n\nVerified: HTML structure (unique ids, 9 diagrams wired, markers defined),\nChrome light+dark render of all 3 new diagrams and layered devices, no console errors.",
"is_bot": false,
"headline": "docs(requests-101): elevate to layered/verbose bar — TL;DR spine, cal…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T11:55:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "062bfd99c88458ec5ce39223d03e16160732c75d",
"body": "…idging to Firstpass (Part B)\n\nNew self-contained educational page (docs/guide/requests-101.html), placed at\nsidebar 03 in Getting started. Teaches, from first principles and with no\nFirstpass knowledge assumed:\n\n Part A — the vanilla fundamentals, as world-class UX module-cards:\n 1 one request/r\n[…]\nacross all 14 existing guide pages (03 inserted,\n04-15 bumped) and reroutes the quickstart->requests-101->how-it-works pager\nchain. Verified in Chrome (all 6 diagrams, both themes, no console errors).",
"is_bot": false,
"headline": "docs(site): add Requests 101 — fundamentals + cost primer (Part A) br…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T05:45:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5b964799ce02317546d575de7bcc90a86edd09a1",
"body": "…-story\n\ndocs(site): add Quickstart page + connect the funnel end to end",
"is_bot": false,
"headline": "Merge pull request #128 from dshakes/docs/quickstart-funnel-connected…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-24T05:10:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d4af8b00f007c922271d6461cad261a2e3dfb6e0",
"body": "The elastic-verification page framed the Phase 3 serving path as unbuilt\n('research direction, not shipped', 'Phase 1 shadow measurement is landing'),\nbut PR #123 (081279e) merged the config-gated skip-on-serve path: proxy.rs\nreads escalation.elastic and skips named expensive gates when the visible\n\n[…]\nyte-identical until a calibrated lambda is supplied.\nKeep every honest caveat (offline-only validation, n=150, must replicate\nbefore it earns default status). Uniform verification remains the default.",
"is_bot": false,
"headline": "docs(site): correct elastic under-claim — serving path ships default-off",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T05:08:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "49b47f7f215ca58e6fc6b7c9b7ecfaafbf176329",
"body": "Docs-only release: connected-story funnel overhaul, payload-first request-flow,\nproblem-first routing with hero + money diagrams, diagram alignment/animation\nvalidation, and reality-check accuracy fixes (no over/under-claims). No code\nchange — patch bump. Version strings synced across Cargo.toml, Cargo.lock,\nREADME, and the full docs site (landing + 14 guide pages + ga-handoff).",
"is_bot": false,
"headline": "chore(release): v0.2.1 — docs/site release cut",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T05:01:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bb63d01d909e503d9231ca11ec49ecc51771ddda",
"body": "…ips today\n\nThe per-query P(gate-pass|features) predictor is implemented (predictor.rs,\nADR 0008 Phase 2): default-off, shadow-only, recorded on the receipt. Listing\nit as pure 'Next & research' undersold shipped code. Reword to state the\npredictor ships in shadow; only acting on it is gated on an offline AUC/Brier\neval. Elastic skip-serving left as-is — elastic.rs is offline/bench, so its\n'research, validating' framing is already accurate.",
"is_bot": false,
"headline": "docs(site): correct pass-predictor under-claim — shadow prediction sh…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T04:55:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "61f9c2fc37538acbde29a833e81a5b18b19fe276",
"body": "Verified against docs/benchmarks/mbpp-live-base.txt: it is a SINGLE-model\nconformal run (candidate: one live Anthropic solver), so '82%' is the\nfraction of cheap-rung outputs that clear the conformal serve threshold\n— the other 18% are withheld below threshold, not escalated to a strong\nrung. No com\n[…]\nThe '82% served from the cheap tier' framing on the guarantee/benchmarks/\noverview pages is left as-is: it is an accurate deployment reading of the\nmeasured serve fraction and claims no measured cost.",
"is_bot": false,
"headline": "docs: correct over-claims flagged by reality-check audit",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T04:50:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "12d9a697d74b6907aa1129093f9a82828fb0a63b",
"body": "The landing listed 'Selectable modes' (cost/balanced/quality/latency/max\nvia x-firstpass-mode) under Next & research, but the presets are\nimplemented (firstpass-core/src/config.rs RoutingMode + preset(),\nproxy.rs resolve_mode) and the Overview #status lists Modes as shipped.\nMove the shipped presets to the Shipped column; keep only the genuinely\nfuture constraint-form modes under Next.",
"is_bot": false,
"headline": "docs(site): fix status miscue — mode presets are shipped, not 'next'",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T04:33:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ad036d165742315820b056d13eceb8bad445d8c0",
"body": "- Lifecycle diagram: replace the hand-tuned bezier fork/merge connectors\n (which rendered crooked) with symmetric curves — the match box forks\n cleanly up to enforce and down to observe, and both converge to the\n serve box center.\n- Subagent diagram: straighten the two accent connectors that were 1px\n off horizontal.\n- Add a validator pass: all 10 fp-svg diagrams checked for near-but-not\n horizontal/vertical connectors and text overflow — all clean.",
"is_bot": false,
"headline": "docs(site): fix diagram alignment — lifecycle fork + subagent connectors",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T04:27:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "84261a85c97da0e13ac25182276c588c92ba06b0",
"body": "The page opened on mechanism (the one idea, the unit of routing) and\nburied the value under monotonous box-and-arrow schematics. Lead with\nthe problem and the aha instead, and carry it with two designed\ncenterpieces.\n\n- Rewrite the opening problem-first: the runaway agent bill, why the two\n obvious\n[…]\note #request-shape to a top-level section;\n update the on-this-page TOC.\n\nVerified in Chrome (light + dark): both hero diagrams render, colours\nadapt per theme, on-bar text has contrast, no overflow.",
"is_bot": false,
"headline": "docs(site): reframe routing problem-first with two hero diagrams",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T04:23:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bd8afcc2e5f2bf249da176749993cd5fe1cc8929",
"body": "…rios e2e\n\nThe page showed two routing outcomes end-to-end (cheap-passes, escalate)\nbut buried them under topology prose, and never showed the other three\nreal outcomes at all. A reader couldn't see, per scenario, the request\npayload → what happens → the response + receipt.\n\n- Add a scannable 'Every\n[…]\nnd render correctly in light + dark.\n- TOC updated with the four new sections.\n\nVerified in Chrome (light + dark): all three diagrams render, colors\nadapt per theme, the scenario map + scrollspy work.",
"is_bot": false,
"headline": "docs(site): make request-flow payload-first — add the 3 missing scena…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T03:49:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ba4ef197fe29dc97f3c59d555ccc2df1b6a0d21c",
"body": "The docs told the four-moves story conceptually 3-4x but never once\noperationally, and had no getting-started spine: install/run lived only\nin a buried landing tail, the orphaned usage.html, and cli.html#install.\nA customer landing on the site couldn't get from 'what is this' to\n'I ran it' without h\n[…]\nssets/how.svg (old dark\n site, zero inbound references).\n\nVerified: 01-14 numbering + sidebar aria-current on all 14 pages, pager\nchain intact, all internal links resolve, deleted files unreferenced.",
"is_bot": false,
"headline": "docs(site): add Quickstart page + connect the funnel end to end",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T03:23:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c37480c84739c5d7d476d45b221414cf31b13eb5",
"body": "docs(site): elevate request-flow into a complete end-to-end routing tutorial",
"is_bot": false,
"headline": "Merge pull request #127 from dshakes/docs/request-flow-e2e-polish",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-24T02:55:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd63a97278cbd7cd1f74142cf886992a699aa5b6",
"body": "…agent transcript note\n\n- New #why-expensive section bridges request-shape → lifecycle (the three-beat\n e2e arc: how CC sends requests → why it is expensive → how Firstpass helps).\n Reuses on-page receipt numbers only (/bin/zsh.0630 baseline, /bin/zsh.0128 served).\n- #multiturn now SHOWS accumulat\n[…]\ndy, so a different rung can answer turn 12 and lose nothing).\n- #subagents: own-transcript clarifier (context does not leak between agents).\n- TOC now includes #why-expensive so every h2 is navigable.",
"is_bot": false,
"headline": "docs(site): add why-expensive beat, multi-turn accumulation demo, sub…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T02:43:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "68c172fcd8dd142625c5bad143820d277e8b55f8",
"body": "Direct, plain, short sentences. Cut flourish and cutesy note labels\n(load-bearing sentence, first-class mode, steering wheel) while keeping\nall technical depth, figures, code, and tables intact.",
"is_bot": false,
"headline": "docs(site): tighten routing page to YC prose voice",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T00:33:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9759ef4447b74290ed7bd40acfd3297beb1292f3",
"body": "…ty-first, deeper, richer figures\n\nReframes the page from \"Request flow\" to \"Routing, end to end\" (label only;\nfilename and all hrefs unchanged, so zero link churn). Three axes:\n\n- Framing: lead with capability. The three apologetic \"honest boundary\" /\n \"real cost ceiling\" / \"honest notes\" caveats \n[…]\ns,\n colored verdict lanes, dashed+pulse connectors, staggered delays, and a\n new escalation+receipt marquee for #complex.\n\nSidebar label (12 sibling pages) and the two pager labels updated to match.",
"is_bot": false,
"headline": "docs(site): rework request-flow into \"Routing, end to end\" — capabili…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-24T00:29:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3c8f81bdcf105baa8bf192c6fdc0ebc9d61a445f",
"body": "New guide page \"Request flow\" (Getting started / 03) that walks a prompt\nfrom Claude Code and the Claude Agent SDK to the served answer, basics to\nadvanced:\n\n- the one idea: Firstpass is a proxy below the agent, it sees independent\n POSTs, not turns/agents\n- the unit of routing (one request), reque\n[…]\n lifecycle, subagent routing,\nmulti-turn strip). Wires the page into the sidebar across all 13 guide\npages (renumber 03..12 -> 04..13) and fixes the how-it-works/gates pagers.\nNo product code touched.",
"is_bot": false,
"headline": "docs(site): add end-to-end request-flow tutorial page (#126)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-23T23:22:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "09da5a340bd11ae6da30937e4d522f5c52061313",
"body": "The configuration reference was diagram-less. Add one animated fp-svg\nfigure that makes the page's thesis visual: a firstpass.toml split into\nthe two REQUIRED sections ([ladder] + [[gate]]) and the OPTIONAL,\ndefaulted-and-off rest ([bandit], [speculation], [budget], [[provider]],\n[[route]]), flowing into a running cascade.\n\nLive-validated in Chrome, dark + light themes.",
"is_bot": false,
"headline": "docs(site): add config-anatomy diagram to configuration.html (#125)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-23T02:49:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "14813e9f8d5adec5bd98b58bd621978035f3c880",
"body": "… (#124)\n\nThe gates guide was the only core-mechanics page carrying no diagram.\nAdd two animated fp-svg figures matching the site idiom:\n\n- verdict-flow: candidate → GATE → three color-coded outcomes\n (pass→serve, fail→escalate, abstain→on_abstain), the core mechanic.\n- cost-spectrum: the five built-in gates ordered cheapest-proof-first,\n reinforcing 'run the cheapest proof that settles the decision'.\n\nLive-validated in Chrome, dark + light themes.",
"is_bot": false,
"headline": "docs(site): add verdict-flow and cost-spectrum diagrams to gates.html…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-23T02:45:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "081279e42f12ad5006c6912a8212c73244038ec0",
"body": "…ed, default-off) (#123)\n\n* feat(proxy): ADR 0008 Phase 3 — elastic-skip serving path (config-gated, default-off)\n\nWire the elastic three-regime rule into the serial serving engine, behind\n`routing.escalation.elastic`. When configured with a pre-calibrated λ and the set\nof expensive gate ids:\n\n - v\n[…]\nates; ambiguous runs expensive; off = no field).\nWorkspace: clippy --all-targets clean; 60 bench + 98 core + 271 proxy + 6 integration, 0 failures.\n\n* style: cargo fmt import ordering (1.93.1 rustfmt)",
"is_bot": false,
"headline": "feat(proxy): ADR 0008 Phase 3 — elastic-skip serving path (config-gat…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-22T11:31:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "87a3f35ba28636f719ff03d6b89e049fff24b2b6",
"body": "…animated SVGs (#122)\n\nThe three most-load-bearing landing sections carried prose but no figure. Add an\ninline, animated (reduced-motion-gated) SVG to each, reusing only the existing\nfp-* CSS vocabulary — HTML-only, no docs.css/js change, cache-buster stays ?v=2:\n\n- Elastic three-regime: a cheap k-s\n[…]\nct.\n- Modes frontier: cost/quality Pareto curve with the balanced default haloed and\n latency shown as an orthogonal offshoot (same point, lower tail).\n\nValidated live in Chrome, dark + light themes.",
"is_bot": false,
"headline": "docs(site): fill the landing page's three diagram-less sections with …",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-22T03:36:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c886b85d50e1d1b8b2a5a03804f8197dfe65f423",
"body": "…ost, keep the bound (#121)\n\nfirstpass-bench --elastic: the money-saver, proven safe before it can touch serving. Calibrates\nthe skip threshold on a train split via split-conformal (served-failure among skips bounded ≤ α\nat 1-δ), then measures cost + realized served-failure on a HELD-OUT split. Resu\n[…]\nas verified ones.\nCommitted artifact docs/benchmarks/elastic-validation.txt; ADR 0008 Phase 3 + roadmap updated.\nServing-path change stays default-off until drift + beyond-MBPP replication. 431 tests.",
"is_bot": false,
"headline": "feat(bench): elastic verification Phase 3 offline validation — save c…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-22T03:06:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c6b10101a3571de0212554a121e8cf2182a7afda",
"body": "…afe? (#120)\n\nfirstpass-bench --ablation: over the same tasks + ladder, compares start-0 (naive cascade),\noracle (cheapest passing rung), and a learned per-context start rung (trained on a split,\napplied held-out). The decisive number is gap-closed = fraction of the start-0 → oracle cost\nheadroom th\n[…]\n context fully predicts. The real\nper-deployment number is whatever firstpass predictor-eval reports on the operator's receipts;\nthis measures the mechanism's ceiling. 429 tests, clippy -D, fmt clean.",
"is_bot": false,
"headline": "feat(bench): start-rung ablation — is the cost-brain smart, or just s…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-22T02:56:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "70241ac766ba7161393edc7823de29eb961463c4",
"body": "…(shadow, default-off) (#119)\n\nOnline logistic-regression model of P(gate-pass | rung, query features) — the per-query,\nper-rung success signal the bandit's coarse context buckets can't express. Pure core\n(firstpass-core/predictor.rs, no ML deps): 21-dim encoding, sigmoid + SGD + L2 (bias\nunregulari\n[…]\nidentical (skip-serialized when None → hash-chain compatible).\nfirstpass predictor-eval: prequential AUC + Brier — the honest check before it can ever act.\n427 tests, clippy -D, fmt clean; CLI driven.",
"is_bot": false,
"headline": "feat(predictor): ADR 0008 Phase 2 — per-query P(gate-pass) predictor …",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-22T02:42:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d269ec83563266f5fba93c41e53bb052c5d1f440",
"body": "…served stale (#118)\n\nBrowser-validated the live site (Chrome): the diagrams rendered static with a black-wedge\nartifact because the docs.css/js links had no ?v= cache-buster, so returning visitors got the\npre-animation stylesheet — .flow paths fell back to default (fill:black → the wedge, no stroke\n[…]\n:mint, fill:none, animationName:\nfp-flow (confirmed live via injected reload). Added ?v=2 to every docs.css/docs.js reference\nacross the landing + 12 guide pages so the animated system actually loads.",
"is_bot": false,
"headline": "fix(site): cache-buster on docs.css/js — the animated stylesheet was …",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-21T11:29:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "528b2621a6ed076c09d8a8bd3161279393881e0b",
"body": "…odes, +7 new (#117)\n\nUpgraded every diagram to self-contained animated inline SVG (pure CSS keyframes, no JS, no\nSMIL, no GIFs, no external loads), gated in @media (prefers-reduced-motion:no-preference) so\nthe static/JS-off/reduced-motion fallback is the correct final diagram. Reusable primitives\ni\n[…]\nW: self-tuning loop,\nprobe fan-out, escalation-ladder climb, bandit start-rung, speculative escalation, receipt\nseal/verify, provider fan-out. 151 SVGs valid XML; no competitor names; facts unchanged.",
"is_bot": false,
"headline": "docs(site): animated futuristic diagrams — flowing signals, pulsing n…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-21T11:15:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4d93253c680c69d4fd3b274e79cbbcf109636071",
"body": "Rebuilt README to launch grade: sharp hero (\"proves the answer instead of guessing the\nmodel\"), badge row, the proof with the real committed numbers (974 MBPP tasks, ≤10%@95%\ndistribution-free, 5.5% calib / 7.7% served-fail / 82% cheap-tier), proof-vs-prediction\ncomparison (no competitor names), the\n[…]\nw-it-works, architecture (both\ndialects), guarantee chart, elastic-verification three-regime — all valid XML, readable on\nGitHub light+dark, matching the site's visual language. Zero competitor names.",
"is_bot": false,
"headline": "docs(readme): world-class YC-launch rebuild + polished diagrams (#116)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-21T11:12:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3129a9b92191a96b97d603b3bbf7656e7d93432a",
"body": "…efault-off) (#115)\n\nAdds a pure-measurement shadow probe that runs k concurrent model calls on\na sampled fraction of enforce traffic and classifies the validated k-sample\ngate-pass-count signal into ConfidentPass / Ambiguous / ConfidentFail regimes.\nZero behavioral change when probe is off (Option:\n[…]\ne: None in Trace struct literals (mechanical)\n\nExample config: documented [escalation.probe] block with cost caveat.\n\nGate: cargo fmt --all --check clean, cargo clippy -D warnings clean, 419 tests ok.",
"is_bot": false,
"headline": "feat(probe): ADR 0008 Phase 1 — shadow probe (elastic verification, d…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-21T10:45:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f97e1f57eddbf5de5bf378d4d5c7b8c2234bb01a",
"body": "…h a corrected signal (#114)\n\nRan the ADR 0008 go/no-go live (k=5, n=150 MBPP). Honest result: the pre-registered entropy\nmetric FAILED (AUC 0.431 — entropy discards direction), but the k-sample visible-pass COUNT\nsucceeds decisively: 0/5 pass → 0% oracle-correct (12% of traffic, escalate now); 5/5 \n[…]\nlone at ~99% safety. ADR 0008 → accepted with the\ncorrected signal; committed artifact; roadmap updated. The study reshaped the design instead of\nrubber-stamping it — which is the point of running it.",
"is_bot": false,
"headline": "docs(bench): probe study VERDICT — elastic verification validated wit…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-21T03:19:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "eecff8c382722e5122481a5db2fa0d4e693d52ec",
"body": "* feat(modes): named routing modes as constraint presets (ADR p4)\n\nAdd RoutingMode enum (observe|cost|balanced|quality|latency|max) with\nModePreset knob bundles. A mode is a resolver over existing escalation\nconfig — it overrides only the knobs it has an opinion on; Balanced is a\nstrict no-op (byte-\n[…]\nnstraints on\nthe elastic-verification optimizer once that lands.\n\nBuilt by a delegated engineer; lead re-ran the gate after rebase (fmt fixups): 396 tests,\nclippy -D, fmt clean; drove firstpass modes.",
"is_bot": false,
"headline": "P4: named routing modes (per-task/per-turn, x-firstpass-mode) (#113)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-21T03:15:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cc90fcd4e52ed0783bde2d1b54cbc5d77abecd41",
"body": "…dmap vision (#112)\n\n- docs/index.html rebuilt to launch grade: hero → proof strip (links the committed 974-task\n MBPP artifact) → the wedge → how (route/prove/escalate/learn) → the guarantee (5.5% calib\n risk, 7.7% served-fail, 82% cheap-tier, LTT→enforce→adaptive-conformal) → gates ladder →\n bo\n[…]\nl over the verify/skip decision; pre-registered\n go/no-go validation gate (firstpass-bench --probe-study). Proposed, not accepted.\n- roadmap: elastic verification (P2, gated) + selectable modes (P4).",
"is_bot": false,
"headline": "docs: world-class launch site + ADR 0008 (elastic verification) + roa…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-21T03:08:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8bc1206ba8164c3eccac4c2794e808a37a08fa51",
"body": "…instrument (#111)\n\nfirstpass-bench --probe-study: draw k cheap samples per MBPP task, score each against the\nvisible gate, serve the candidate a cascade would serve, and record whether it clears the\nhidden oracle. Reports AUC(self-consistency uncertainty → oracle failure) + skip-safety when\nconfide\n[…]\ned test of whether elastic verification is justified. Pure stats\n(binary entropy, Mann-Whitney AUC) unit-tested; live run reproducible from the committed\nMBPP command. 370 tests, clippy -D, fmt clean.",
"is_bot": false,
"headline": "feat(bench): probe-signal validation harness — the ADR 0008 go/no-go …",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-21T02:49:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6478095a7827535b0d3c584d500ecd46bab74210",
"body": "…policy, verify_receipts + SLO doc (#110)\n\n- MCP: explain_route (why a decision went as it did), rehearse_policy (off-policy replay of a\n candidate policy before enforcing — reuses ope), verify_receipts (tamper-evident self-audit);\n now 8 tools total, all driven live over stdio\n- firstpass explain\n[…]\niance/slo.md: the served-failure SLO stated contractually, tied to the auditable\n receipts; roadmap Phase 4 policy-rehearsal / SLO-language / MCP-tools items checked\n\n368 tests, clippy -D, fmt clean.",
"is_bot": false,
"headline": "feat(mcp+cli): agent-first Phase 4 surface — explain_route, rehearse_…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T10:46:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f97e697ce501eae9dc5062953427fd5720ac53ff",
"body": "…ify (Phase 4) (#109)\n\n- firstpass export [--out F]: sealed receipt log as JSONL, chain order, hashed bodies only\n- firstpass verify [--file F] [--json]: independently re-derive the hash chain from genesis\n with NO proxy/DB in the loop; tamper or reorder breaks the chain at its index and exits 1\n- \n[…]\nliance/receipt-audit.md (the auditor workflow)\n- LIVE-PROVEN: 3 real receipts exported, verified clean (exit 0), one-field tamper caught at\n the exact index (exit 1)\n\n367 tests, clippy -D, fmt clean.",
"is_bot": false,
"headline": "feat(cli): receipts as a compliance artifact — firstpass export + ver…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T10:40:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ac6af2150537efdc23845fd44685c00fedee1441",
"body": "… the code is done (#108)",
"is_bot": false,
"headline": "docs: GA handoff — the human/clock/credential items that remain after…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T10:23:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3621060d84911499f4c0a4f8dc41e037f153519f",
"body": "… default-on structured enforce, Thompson bandit, LTT, durable receipts (#107)\n\nRelease summary since 0.1.7 (PRs #95-#106): schema gate + per-gate abstain policy + gate\ncost on receipts; savings/evals CLI + MCP tools + value metrics; structured enforce\ndefault-on with verbatim raw carry + fidelity g\n[…]\nisk); LTT calibration; DR estimator; Thompson start-rung with\nMC propensities + discounting + speculative-deferral band (ADR 0007); durable receipts;\n[[price]] overrides; Grafana dashboard. 365 tests.",
"is_bot": false,
"headline": "chore(release): 0.2.0 — verified cascade routing: both wire dialects,…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T10:18:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9eb0069821a4499cdd6098ce5ad0dccc046aa11e",
"body": "…rs, native MC propensities, speculative-deferral band (ADR 0007) (#106)\n\n- algorithm = \"ucb1\" (default, byte-identical) | \"thompson\": per-(context,rung) Beta\n posteriors sampled per decision drive the same expected-cost argmin as UCB1; hand-rolled\n xorshift64* + Box-Muller + Marsaglia-Tsang (no n\n[…]\nes)\n- ADR 0007; example config; roadmap; 6 new tests (sampler correctness, convergence,\n drift adaptation, propensity-vs-empirical-frequency, band config validation)\n\n365 tests, clippy -D, fmt clean.",
"is_bot": false,
"headline": "feat(bandit): Thompson-sampling start-rung — discounted Beta posterio…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T06:15:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "483014ce3d334aa975e656802d8e0ad4c2a1138f",
"body": "…er backpressure, drains on boot, chain stays valid (#105)\n\n- ReceiptsMode config (default best_effort = byte-identical); durable mode: on channel-full\n the trace appends synced to <db>.spill.jsonl instead of dropping; writer drains spill at\n startup + whenever the channel empties, inserting spill\n[…]\n row; roadmap true-up (items shipped\n in earlier PRs checked)\n\nPartial implementation salvaged from a stopped worktree agent, completed and gate-verified\nby the lead: 359 tests, clippy -D, fmt clean.",
"is_bot": false,
"headline": "feat(store): durable receipts — FIRSTPASS_RECEIPTS=durable spills und…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T05:01:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "dd102e819c87f0f832fa4dc1a65c2c668c7fbacf",
"body": "…ld → ACI live tracking → gauges (#104)",
"is_bot": false,
"headline": "docs: the self-tuning loop end-to-end — LTT calibrate → serve_thresho…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T04:46:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "26eb608090d938eab94771494373d19b482205f6",
"body": "…ions (SPEC §M1) (#103)\n\n- New `POST /v1/chat/completions` handler: observe mode transparent passthrough to\n `upstream_openai`; enforce mode translates the inbound body to `ModelRequest`, runs the\n escalation engine, and renders the result as an OpenAI `chat.completion` JSON envelope\n (or `chat.c\n[…]\nelity guard,\n and two e2e handler tests (plain enforce, stream:true SSE).\n- Docs: ADR 0005 M1 addendum, roadmap checkbox flipped, firstpass.example.toml endpoint\n note, README endpoint list updated.",
"is_bot": false,
"headline": "feat(proxy): OpenAI-compatible inbound endpoint POST /v1/chat/complet…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T04:42:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f301e2eeb42503105b09577d3a016986fd8e3593",
"body": "… OPE (#102)\n\nAdds DR = DM(x,a) + w·(r − DM(x,aᵢ)) to `firstpass ope --start-rung N`,\nusing a per-(task-kind, rung) empirical mean as the reward model built from\nthe same propensity-logged receipts. DR is reported next to IPS/SNIPS with\nbootstrap CI (seed 44). Sparse buckets fall back to rung-mean then global\nmean — never NaN.\n\nPhase 2 roadmap item checked. 204 tests pass (4 new DR tests).",
"is_bot": false,
"headline": "feat(ope): doubly-robust estimator alongside IPS/SNIPS for start-rung…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T04:37:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "80a5b5d3e983040491caa2f7db4753c4be1f5dfd",
"body": "… (#101)\n\nAdd `firstpass_core::ltt` — a distribution-free, finite-sample serving-threshold\ncalibrator using fixed-sequence exact-binomial testing (Angelopoulos et al. 2021 /\nRCPS). Exposed through `firstpass calibrate --method ltt`.\n\nKey decisions:\n- Exact binomial CDF in log-space (log-sum-exp rec\n[…]\nence stopping property, infeasible-on-tiny-n, false_accept_rate correctness,\nand CLI wiring (pairs wrapper + render smoke-test).\n\ndocs/roadmap.md: check LTT calibration half; leave ACI loop unchecked.",
"is_bot": false,
"headline": "feat(core+calibrate): Learn-then-Test threshold calibration (Phase 2)…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T04:33:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a1d25a38dcc7a22690af48e8cbf50e579a280b44",
"body": "* feat(cli+mcp): firstpass evals + MCP get_savings/get_evals — the live eval suite from receipts\n\n- firstpass evals [--json]: per-gate pass/fail/abstain, escalation count, serve-by-rung —\n computed from the deployment's own receipts, tenant-scoped\n- MCP tools get_savings + get_evals: agents introsp\n[…]\ned value and gate behavior\n in-context (agent-first constraint, SPEC §0.2)\n\n320 tests, clippy -D, fmt clean; drove the CLI zero-state live.\n\n* test(mcp): tools/list assertion covers the two new tools",
"is_bot": false,
"headline": "P3: firstpass evals + MCP savings/evals tools (#100)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T04:29:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3837802051ce2adfac8799bff8ad7ade536e6535",
"body": "…ana dashboard (#99)\n\n- [[price]] sections pin the operator's real prices onto the built-in defaults (validated:\n finite, >= 0, non-blank model) — savings math tracks the contract, not a stale list\n- docs/observability/grafana-firstpass.json: savings/spend/gate-cost stats, realized\n served-failure vs the 10% target, per-rung served shape, escalations/failures/dropped\n receipts, enforce p50/p95, spend-vs-baseline over time\n\n318 tests, clippy -D, fmt clean.",
"is_bot": false,
"headline": "feat(config+obs): [[price]] per-deployment overrides + committed Graf…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T04:17:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f2a3019184874757b7f6d952620342bc7335dc52",
"body": "…ified' badge (#98)\n\nNightly + manual workflow: per provider (anthropic/openai/groq/deepseek/openrouter/gemini),\nboot the REAL enforcing proxy with a one-rung ladder, send a tiny live request, assert\n200 + served content + a receipt in the trace store. Jobs self-skip when the secret is\nabsent — skip\n[…]\nd as skipped, never as verified.\n\nscripts/provider-smoke.sh validated live against Anthropic locally (200, 'OK' served,\nreceipt chained) — which also live-verifies the raw-carry enforce path from #96.",
"is_bot": false,
"headline": "feat(ci): provider live-smoke matrix — the evidence behind every 'ver…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T04:12:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6a747a2dc977f327bc43614e4de6b3b7cf8d0302",
"body": "…w reproducible from the repo (#97)\n\nRe-ran the full 974-task MBPP coding benchmark live (2026-07-20): conformal threshold\n0.500 serves 82%, calibrated risk 5.5% (≤10% @ 95% holds), realized served-failure 7.7%.\nREADME numbers now cite the committed artifact instead of prose memory; judged-gate\nartifact follows in the same directory.",
"is_bot": false,
"headline": "docs(bench): commit the MBPP live artifact — the headline bound is no…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T04:09:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8a2ed5c544f9233d14efa1fb10bc6923a2cefac1",
"body": "…mment-ping while routing\n\nA streaming client's connection opens the moment the request arrives; the enforce pipeline\n(model + gates + escalation) runs in a spawned task while the body emits SSE comment\nkeepalives (': firstpass routing', spec-defined to be ignored by every parser) every 5s, so\nno cl\n[…]\nne errors surface as the\nAnthropic SSE error event. Hand-rolled Stream impl, futures-core only (already in tree).\n\n316 tests (paused-time keepalive unit test + e2e SSE sequence), clippy -D, fmt clean.",
"is_bot": false,
"headline": "feat(proxy): enforce SSE keepalives — open the stream immediately, co…",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-20T04:07:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a7e11f08d30af1c54a2e8228a813e55d48690469",
"body": "…per rung + fidelity guard (ADR 0005 P4/P5) (#96)\n\n- ModelRequest.raw carries the full inbound JSON; anthropic/bedrock/vertex send it\n verbatim with only model swapped + stream stripped — tools, tool_choice, temperature,\n thinking, stop_sequences all survive the rung (previously silently dropped o\n[…]\nse transparent fallback\n- enforce_structured defaults TRUE: agent (tool) traffic is gated out of the box\n- ADR 0005 addendum, example config + README updated\n\n314 tests, clippy -D warnings, fmt clean.",
"is_bot": false,
"headline": "feat(proxy): structured enforce default-on — verbatim raw-body carry …",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T03:48:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fdca7b8ae6e35a8150854ff2e9f01c9c8d7f5a1b",
"body": "… gate cost on receipts, savings CLI + value metrics, honest claims (#95)\n\n- [[gate]] schema = {...} now resolves to a runnable SchemaGate (was implemented but unwired)\n- per-gate on_abstain = fail_open|fail_closed (§7.2): a fail-closed gate's abstain blocks\n serving like a Fail; the receipt still \n[…]\n- README: provider verification status stated plainly; Status reflects code reality;\n benchmark repro commands that actually reproduce (sim vs live labeled)\n\n310 tests, clippy -D warnings, fmt clean.",
"is_bot": false,
"headline": "feat(p0): truth & trust — schema gate wired, per-gate abstain policy,…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-20T03:24:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4ab260d29e1b4247ba9efcd2d1dbb33e5af39d1b",
"body": "…ropensities + IPS/SNIPS (#94)\n\n[escalation.exploration] epsilon: a small fraction of requests start on a\nuniform rung instead of the greedy choice; every receipt records the\nlogging propensity (PolicyRef.propensity, byte-identical when absent) and\nan honest +eps policy stamp. This makes importance-\n[…]\ned-failure with ESS and bootstrap CIs over propensity-logged\ntraffic. Exploration also feeds the bandit rungs it would never visit\ngreedily. DR estimator and SNIPS ratio-bootstrap noted as follow-ons.",
"is_bot": false,
"headline": "feat(router+ope): epsilon-greedy start-rung exploration with logged p…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-18T01:18:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c5a6f3bed9abf84286cf1a7f52a67c2836f2a9e1",
"body": "…zed served-failure (#93)\n\nfirstpass_serve_threshold and firstpass_realized_served_failure update on\nevery adaptive-conformal feedback nudge — the drift-tracking loop is now\nvisible on /metrics, not just in receipts.",
"is_bot": false,
"headline": "feat(metrics): live gauges for the adaptive serve threshold and reali…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-18T01:06:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eaa678b7c1b1245c21a33f8c021547905b219960",
"body": "Verified live: releases+installer.sh, PyPI 0.1.7, Docker ghcr, brew tap\n(formula is firstpass-proxy, not firstpass). NOT live: npm, crates.io.\nFixes: brew command corrected everywhere; npm rows/tabs removed; cargo\nshown as --git with toolchain note; crates.io badge -> release badge;\nusage.html availability callout rewritten to current truth; site demo\nnotes it builds from source. README/site/usage/llms.txt now agree.",
"is_bot": false,
"headline": "docs: install instructions match verified channel reality (#92)",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-18T00:42:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1fc43111b4e9de1da8e9d281dceb22f7807a6b78",
"body": "…y rehearsal (ope) (#91)\n\nREADME highlights + gates table + vs-predictive synthesis line; usage.html\ngains native-judge and self-consistency gate docs plus the calibrate/ope\nrehearsal story; site roadmap marks the two shipped steps; llms.txt novelty\nlist extended (4)-(6). Status bumped to v0.1.7.",
"is_bot": false,
"headline": "docs: science stack — bandit start-rung, self-consistency gate, polic…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-18T00:23:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b91c5a40eb02365c861c68aaac903f135dba2ff0",
"body": "…ve (#90)\n\nDeterministic UCB1 bandit (Auer 2002) picks the per-request STARTING rung\nfrom (task-kind, prompt-size) context, minimizing expected cost using\nper-rung gate pass-rates learned online from receipts. Prediction only\nchooses where the ladder starts; gating/escalation/serving are untouched,\n\n[…]\nrt = rung 0\nuntil min_observations; warm-started from the trace store on boot; honest\nbandit@v1 policy stamp in receipts; firstpass_bandit_start_rung metric.\nDefault off — [escalation.bandit] opts in.",
"is_bot": false,
"headline": "feat(router): learned starting rung — predict to start, verify to ser…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-17T20:50:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9c4d71372f1614523e90cbd01faf90f04d0345cb",
"body": "… calibrated confidence (#89)\n\nNew consistency gate type: resample the request k times on a configured\nmodel and score the candidate by agreement (final-answer match + Jaccard),\nconcurrent fan-out, abstain on zero usable samples. Continuous score feeds\nthe conformal serve-threshold machinery. Self-consistency (Wang et al.\n2022) / semantic-entropy family (Farquhar et al. 2024); lexical agreement\nceiling and k-call cost documented honestly.",
"is_bot": false,
"headline": "feat(gate): self-consistency uncertainty gate — k-sample agreement as…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-17T17:30:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f6e477c471b588ba75c7361d68b4aae112f33b54",
"body": "… candidate policy (#88)\n\nfirstpass ope --config candidate.toml: direct-method replay of the trace\nstore against a candidate ladder/serve-threshold. Estimates cost/request\nand served-failure with deterministic bootstrap CIs; coverage-honest\n(unlogged rungs counted unevaluable, never guessed). IPS/DR noted as\nfuture work pending stochastic logging.",
"is_bot": false,
"headline": "feat(proxy): off-policy evaluation — replay logged receipts against a…",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-17T17:14:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8bb6def955897ab01f068c1bd8fe578623fa7a5a",
"body": "docs: positive-only headline — Cheap until proven otherwise.",
"is_bot": false,
"headline": "Merge pull request #87 from dshakes/docs/positive-headline",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-17T15:01:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ecba29ba2a3ce47239440fedc6c02c26275ef883",
"body": "User review: the chiasmus criticized competitors (\"Guessing is expensive\"),\nagainst the repo's own credo (competes on evidence, not adjectives). The\npositive-only four-word take carries the same punch: mechanism-true wordplay\n(cheapest-first, escalate only on proven failure), zero criticism. Applied as\nsite H1 + README tagline; sub-lines unchanged in substance.",
"is_bot": false,
"headline": "docs: positive-only headline — \"Cheap until proven otherwise.\"",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-17T14:59:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9871b437c33fcf371c4f6beb77b4fb6720dd1814",
"body": "docs: brand headline — Guessing is expensive. Proof is cheap.",
"is_bot": false,
"headline": "Merge pull request #86 from dshakes/docs/h1-take",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-17T14:58:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04ae6f0752ea72e5857393f8c4cf43081bc20283",
"body": "Top-YC take grounded on the motto (try cheap -> prove it -> escalate only on\nfailure): a six-word chiasmus that indicts predictive routing and prices the\nproduct in the same breath. Applied as the site H1 (two-line split) and the\nREADME tagline for one coherent voice; sub-lines carry the mechanism wordplay —\n\"cheap until proven otherwise\" — plus the honest guarantee.",
"is_bot": false,
"headline": "docs: brand headline — \"Guessing is expensive. Proof is cheap.\"",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-17T14:54:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8c66d2e95017f3f18c599078909ccde3d5045a29",
"body": "docs: universal hero — money + checkmark, zero jargon",
"is_bot": false,
"headline": "Merge pull request #85 from dshakes/docs/universal-hero",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-17T04:03:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "99dccbfdfeda5d37a113529c5b5519badaaab1e2",
"body": "User review: the terminal-transcript hero required reading, and the flow-diagram\nhero required insider knowledge. The new hero is understood by anyone in two\nseconds: YOUR AI BILL $$$$ (struck out) → $ + a shield reading SAME QUALITY,\nguaranteed — with one plain-words line (\"It checks every answer —\n[…]\nnd pays for a\nbig model only when truly needed\") and the honest guarantee caption.\n\nThe terminal transcript (demo.svg) moves down to How it works, where detail\nbelongs. Rendered and visually verified.",
"is_bot": false,
"headline": "docs: universal hero — money + checkmark, zero jargon",
"author_name": "Shekhar Mudarapu",
"author_login": "dshakes",
"committed_at": "2026-07-17T04:02:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0b209f8bcacb2f6b74f9b7d29720795cef94abd5",
"body": "chore(release): 0.1.7 — agentic onboarding + next-gen README",
"is_bot": false,
"headline": "Merge pull request #84 from dshakes/release/v0.1.7",
"author_name": "Shakes",
"author_login": "dshakes",
"committed_at": "2026-07-17T03:58:31Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 17,
"commits_last_year": 283,
"latest_release_at": "2026-07-26T03:03:27Z",
"latest_release_tag": "v0.2.7",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 3,
"days_since_latest_release": 0,
"mean_days_between_releases": 1
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 57,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "firstpass-core",
"exists": true,
"license": "Apache-2.0",
"keywords": [
"audit",
"llm",
"routing",
"verification",
"data-structures"
],
"ecosystem": "crates",
"matches_repo": true,
"registry_url": "https://crates.io/crates/firstpass-core",
"is_deprecated": false,
"latest_version": "0.2.7",
"repository_url": "https://github.com/dshakes/firstpass",
"versions_count": 15,
"total_downloads": 247,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 82,
"first_published_at": "2026-07-14T12:33:59.877047Z",
"latest_published_at": "2026-07-26T02:56:35.840638Z",
"latest_version_yanked": false,
"days_since_latest_publish": 0
},
{
"name": "firstpass-proxy",
"exists": true,
"license": "Apache-2.0",
"keywords": [
"ai",
"anthropic",
"llm",
"proxy",
"routing",
"command-line-utilities",
"web-programming::http-server"
],
"ecosystem": "crates",
"matches_repo": true,
"registry_url": "https://crates.io/crates/firstpass-proxy",
"is_deprecated": false,
"latest_version": "0.2.7",
"repository_url": "https://github.com/dshakes/firstpass",
"versions_count": 15,
"total_downloads": 182,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 61,
"first_published_at": "2026-07-14T12:34:27.705011Z",
"latest_published_at": "2026-07-26T02:57:38.673178Z",
"latest_version_yanked": false,
"days_since_latest_publish": 0
},
{
"name": "firstpass",
"exists": true,
"license": "Apache-2.0",
"keywords": [
"llm",
"proxy",
"routing",
"anthropic",
"ai",
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Programming Language :: Rust",
"Topic :: Software Development :: Build Tools"
],
"ecosystem": "pypi",
"matches_repo": true,
"registry_url": "https://pypi.org/project/firstpass/",
"is_deprecated": false,
"latest_version": "0.2.7",
"repository_url": "https://github.com/dshakes/firstpass",
"versions_count": 14,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2026-07-15T15:38:03.160297Z",
"latest_published_at": "2026-07-26T03:02:28.934565Z",
"latest_version_yanked": null,
"days_since_latest_publish": 0
}
]
},
"popularity": {
"forks": 0,
"stars": 2,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": null,
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": true,
"has_dockerfile": true,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"Cargo.toml",
"crates/firstpass-bench/Cargo.toml",
"crates/firstpass-core/Cargo.toml",
"crates/firstpass-proxy/Cargo.toml"
],
"largest_source_bytes": 214155,
"source_files_sampled": 58,
"oversized_source_files": 5,
"agent_instruction_files": [
"AGENTS.md"
],
"agent_instruction_max_bytes": 4296
},
"dependencies": {
"manifests": [
"Cargo.toml"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"crates"
],
"dependencies": [
{
"name": "firstpass-core",
"manifest": "crates/firstpass-bench/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "serde",
"manifest": "crates/firstpass-bench/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "serde_json",
"manifest": "crates/firstpass-bench/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "reqwest",
"manifest": "crates/firstpass-bench/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "serde",
"manifest": "crates/firstpass-core/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "serde_json",
"manifest": "crates/firstpass-core/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "toml",
"manifest": "crates/firstpass-core/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "uuid",
"manifest": "crates/firstpass-core/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "sha2",
"manifest": "crates/firstpass-core/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "hex",
"manifest": "crates/firstpass-core/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "jiff",
"manifest": "crates/firstpass-core/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "thiserror",
"manifest": "crates/firstpass-core/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "futures-core",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.3"
},
{
"name": "firstpass-core",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "serde",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "serde_json",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "jiff",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "uuid",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "thiserror",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "aes-gcm",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "hex",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "argon2",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "axum",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "tokio",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "reqwest",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "rusqlite",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "tracing",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "tracing-subscriber",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "bytes",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "async-trait",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "tower",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "governor",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "metrics",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "metrics-exporter-prometheus",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "aws-sigv4",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "aws-credential-types",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "aws-smithy-runtime-api",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "gcp_auth",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "http",
"manifest": "crates/firstpass-proxy/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 155,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 1
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "dshakes",
"commits": 288,
"avatar_url": "https://avatars.githubusercontent.com/u/7453460?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"audit.yml",
"ci.yml",
"crates-io.yml",
"docker.yml",
"npm-publish.yml",
"pages.yml",
"provider-smoke.yml",
"python-wheels.yml",
"release.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"Cargo.lock"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "25 out of 25 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/25 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "project was created within the last 90 days. Please review its contents carefully",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 4,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "9fb7340d4988ccb70903070272dba461c50b2465",
"ran_at": "2026-07-26T03:28:35Z",
"aggregate_score": 3.5,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-26T03:05:08Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-26T02:55:55Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/dshakes/firstpass",
"host": "github.com",
"name": "firstpass",
"owner": "dshakes"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"security": 35,
"vitality": 70,
"community": 27,
"governance": 54,
"engineering": 81
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 70,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 56,
"inputs": {
"commits_last_year": 283,
"human_commit_share": 1,
"days_since_last_push": 0,
"active_weeks_last_year": 3
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "3/52 weeks with commits",
"points": 2.1,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 3
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "283 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 283
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 17,
"latest_release_tag": "v0.2.7",
"releases_from_tags": false,
"days_since_latest_release": 0,
"mean_days_between_releases": 1
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "17 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 17
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~1 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 1
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "critical",
"name": "Community & Adoption",
"value": 27,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 2,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "2 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 2
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "at_risk",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 36,
"inputs": {
"packages": [
"firstpass-core",
"firstpass-proxy",
"firstpass"
],
"dependents": null,
"ecosystems": "crates, pypi",
"total_downloads": 429,
"monthly_downloads": 143
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "143 downloads/month across crates, pypi",
"points": 28.8,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 143,
"ecosystems": "crates, pypi"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 54,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 10,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 71,
"inputs": {
"merged_prs": 155,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 1
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "155/156 decided PRs merged",
"points": 38,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 155,
"decided": 156
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/25 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 51,
"inputs": {
"followers": 7,
"owner_type": "User",
"is_verified": null,
"owner_login": "dshakes",
"public_repos": 46,
"account_age_days": 4469
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "7 followers of dshakes",
"points": 6.5,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 7,
"login": "dshakes"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "46 public repos, account ~12 yr old",
"points": 24.2,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 46
}
},
{
"code": "account_age_years",
"params": {
"years": 12
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"firstpass-core",
"firstpass-proxy",
"firstpass"
],
"ecosystems": "crates, pypi",
"any_deprecated": false,
"min_days_since_publish": 0
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "3 package(s) on crates, pypi",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 3,
"ecosystems": "crates, pypi"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 0 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 0
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "15 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 15
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 81,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "9 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 9
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "25 out of 25 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"agents",
"ai-agents",
"cost-optimization",
"inference",
"llm",
"llm-router",
"observability",
"proxy",
"reliability",
"rust"
],
"has_wiki": true,
"homepage": "https://dshakes.github.io/firstpass",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://dshakes.github.io/firstpass",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "10 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 10
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 35,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": null,
"notes": [],
"value": 35,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 18,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 0,
"scorecard_aggregate": 3.5
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "25 out of 25 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/25 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 2,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 73,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"has_llms_txt": true,
"legible_history_share": 1,
"agent_instruction_files": [
"AGENTS.md"
],
"agent_instruction_max_bytes": 4296
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": "llms.txt present",
"points": 15,
"status": "met",
"details": [
{
"code": "llms_txt_present",
"params": {}
}
],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 100,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 56,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"Cargo.lock"
],
"has_dockerfile": true,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [
"Cargo.toml",
"crates/firstpass-bench/Cargo.toml",
"crates/firstpass-core/Cargo.toml",
"crates/firstpass-proxy/Cargo.toml"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Cargo.toml, crates/firstpass-bench/Cargo.toml, crates/firstpass-core/Cargo.toml (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "Cargo.toml, crates/firstpass-bench/Cargo.toml, crates/firstpass-core/Cargo.toml"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Rust (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Rust"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 95,
"inputs": {
"primary_language": "Rust",
"largest_source_bytes": 214155,
"source_files_sampled": 58,
"oversized_source_files": 5
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Rust (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Rust"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "5/58 source files over 60KB",
"points": 50.3,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 58,
"oversized": 5
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"Could not fetch crates package 'firstpass-bench' from its registry",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"deps.dev does not index pypi:firstpass@0.2.7; advisories assessed against the repository dependency graph instead"
],
"report_type": "repository",
"generated_at": "2026-07-26T03:28:50.288485Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/dshakes/firstpass.svg",
"full_name": "dshakes/firstpass",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}