JSON-Rohbericht maschinenlesbar
{
"data": {
"repo": {
"topics": [
"agents",
"dsl",
"llm",
"python",
"state-machine"
],
"is_fork": false,
"size_kb": 35499,
"has_wiki": true,
"homepage": "https://gianlucamazza.github.io/mklang/",
"languages": {
"Shell": 10895,
"Python": 718364
},
"pushed_at": "2026-07-27T12:23:40Z",
"created_at": "2026-07-16T13:24:16Z",
"owner_type": "User",
"updated_at": "2026-07-27T12:23:31Z",
"description": "A declarative language for LLM-driven state machines - the .mkl document is the program, an LLM is the runtime",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Python",
"significant_languages": [
"Python"
]
},
"owner": {
"blog": "https://gianlucamazza.it",
"name": "Gianluca Mazza",
"type": "User",
"login": "gianlucamazza",
"company": "gianlucamazza",
"location": "Italy",
"followers": 67,
"avatar_url": "https://avatars.githubusercontent.com/u/25006045?v=4",
"created_at": "2017-01-09T11:14:58Z",
"is_verified": null,
"public_repos": 61,
"account_age_days": 3486
},
"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": "v1.0.11",
"kind": "patch",
"published_at": "2026-07-27T12:20:59Z"
},
{
"tag": "v1.0.10",
"kind": "patch",
"published_at": "2026-07-26T01:19:50Z"
},
{
"tag": "v1.0.9",
"kind": "patch",
"published_at": "2026-07-25T07:15:36Z"
},
{
"tag": "v1.0.8",
"kind": "patch",
"published_at": "2026-07-24T22:18:20Z"
},
{
"tag": "v1.0.7",
"kind": "patch",
"published_at": "2026-07-24T12:38:18Z"
},
{
"tag": "v1.0.6",
"kind": "patch",
"published_at": "2026-07-24T11:30:06Z"
},
{
"tag": "v1.0.5",
"kind": "patch",
"published_at": "2026-07-24T07:57:49Z"
},
{
"tag": "v1.0.4",
"kind": "patch",
"published_at": "2026-07-24T07:15:13Z"
},
{
"tag": "v1.0.3",
"kind": "patch",
"published_at": "2026-07-23T23:27:30Z"
},
{
"tag": "v1.0.2",
"kind": "patch",
"published_at": "2026-07-23T23:16:29Z"
},
{
"tag": "v1.0.1",
"kind": "patch",
"published_at": "2026-07-23T22:55:30Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2026-07-23T15:38:38Z"
},
{
"tag": "v0.16.0",
"kind": "minor",
"published_at": "2026-07-23T12:49:43Z"
},
{
"tag": "v0.15.0",
"kind": "minor",
"published_at": "2026-07-23T08:45:54Z"
},
{
"tag": "v0.14.0",
"kind": "minor",
"published_at": "2026-07-23T08:10:58Z"
},
{
"tag": "v0.13.0",
"kind": "minor",
"published_at": "2026-07-22T23:16:10Z"
},
{
"tag": "v0.12.0",
"kind": "minor",
"published_at": "2026-07-22T22:27:33Z"
},
{
"tag": "v0.11.0",
"kind": "minor",
"published_at": "2026-07-18T10:35:59Z"
},
{
"tag": "v0.10.0",
"kind": "minor",
"published_at": "2026-07-18T08:58:43Z"
},
{
"tag": "v0.9.3",
"kind": "patch",
"published_at": "2026-07-17T18:14:26Z"
},
{
"tag": "v0.9.2",
"kind": "patch",
"published_at": "2026-07-17T18:04:07Z"
},
{
"tag": "v0.9.1",
"kind": "patch",
"published_at": "2026-07-17T13:22:17Z"
},
{
"tag": "v0.9.0",
"kind": "minor",
"published_at": "2026-07-17T13:13:03Z"
},
{
"tag": "v0.8.2",
"kind": "patch",
"published_at": "2026-07-17T12:34:12Z"
},
{
"tag": "v0.8.1",
"kind": "patch",
"published_at": "2026-07-17T12:34:00Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2026-07-17T11:42:25Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2026-07-17T11:02:15Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2026-07-17T09:21:15Z"
},
{
"tag": "v0.5.4",
"kind": "patch",
"published_at": "2026-07-16T21:37:07Z"
},
{
"tag": "v0.5.3",
"kind": "patch",
"published_at": "2026-07-16T20:30:10Z"
}
],
"recent_commits": [
{
"oid": "2376e5adcd15d1ddb27a93d9689ac4c28cc052c1",
"body": "Point PKGBUILD at the published PyPI sdist content-addressed URL and digest.",
"is_bot": false,
"headline": "chore: pin Arch source for 1.0.11",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-27T12:23:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c80bca49fb485ee4d37ed60375d409413fea7587",
"body": "release: mklang 1.0.11",
"is_bot": false,
"headline": "Merge pull request #68 from gianlucamazza/fix/adr-0016-status-1.0.11",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-27T12:20:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da7f38d050cb3f86b4fb93784b7870410cde21ca",
"body": "Align ADR 0016 Status (and the ADR index) with the shipped runtime.yaml\ntools: block, and pin the claim with a release-suite guard so the\ndeferred wording cannot reappear.",
"is_bot": false,
"headline": "release: mklang 1.0.11",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-27T12:19:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f4b048d34e70168f94d1fa252e594a4f3344889",
"body": "Content-addressed pythonhosted URL and sha256 from the PyPI JSON,\ndigest verified against a local download.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: pin Arch source for 1.0.10",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-26T01:22:45Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3679d918436e8947c37a60ea8b14241a569f35c2",
"body": "The cli split and the console bridge/capabilities moves touched\ndemo-pinned sources; the recordings are unchanged in behavior.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: re-pin demo manifest after the layout refactor",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-26T01:17:45Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5767f1c4b1d9be153a22fb239a9ce237331eb631",
"body": "Fold the audit fixes and the internal layout refactor (ADR 0029) into\nthe 1.0.10 entry — the version was prepared but never published, so it\nships as one release dated today.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: mklang 1.0.10",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-26T01:14:24Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4a63303a82d7576be1df009b104ba596b11cf58e",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: record ADR 0029 (internal layout refactor)",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-26T01:08:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9f738c1f72edcba5fb938f1aa467f34616c3224a",
"body": "architecture.md maps the post-refactor layout (cli_doctor/cli_parser,\nconsole bridge and capabilities, and the previously undocumented fs.py\nand toolconfig.py); prose references point at the new tests/ paths.\nHistorical ADRs keep their era-accurate paths on purpose.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: refresh internal layout references",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-26T01:07:53Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "dc6021d3ea4477af0fe2b788b92b09212223f29e",
"body": "51 pure git mv into domain directories (engine/ lang/ llm/ console/\nmcp/ tools/ host/ conformance/ repo/); basenames keep their domain\nprefixes (prepend import mode requires global uniqueness, no\n__init__.py). conftest.py gains a REPO_ROOT anchor replacing the four\ndepth-sensitive parents[1] paths; \n[…]\n_first_run and test_toolconfig\nshare tests/host/ (cross-module helper import). test_live.py stays at\nthe root — the workflows invoke it by path.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test: mirror the src layout in tests/",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-26T01:07:00Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e2f1bb350e3085e85c73cc11cb861c56dc189d9f",
"body": "test_remediation_002 -> test_judge_tier, test_lang03 ->\ntest_lang_parse_list, test_hardening -> test_cost_and_judge_errors,\ntest_golden -> test_golden_trace, test_gate_divergence_suite ->\ntest_gate_divergence_script (it tests the script, not a gate suite),\ntest_openai_compat -> test_openai_compat_retry, test_openai_compat_paths\n-> test_openai_compat_adapter. Content unchanged; the historical codes\nstay in the docstrings.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test: rename opaque test modules",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-26T01:02:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "fd8d4fe44e1adb1eefa6ef26515d73716ad59597",
"body": "The worker↔UI bridge and its _BridgeApp protocol captured no closure\nstate from build_app and do not import textual — they move verbatim to\nconsole/bridge.py with an eager import. run_engine stays module-level in\nconsole/app (test patch-point). Behavior-neutral.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor: extract TextualBridge into console/bridge.py",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-26T00:59:28Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "efafb5ca2c7577219b0c7cdbb0eab9fbfddd0cee",
"body": "capabilities.py had a single consumer, console/tools.py — the host-side\nconsent policy belongs to the console surface. Not in any entry point,\nmypy strict tier or documented API; behavior-neutral move.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor: move capabilities into the console package",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-26T00:54:38Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ad3ce5e4887f56d9ef3adc03276bfbe8a1aadb16",
"body": "cli.py mixed command handlers, the doctor diagnostics and the argparse\ntree in ~1140 lines. The doctor block moves verbatim to cli_doctor.py\n(no private cli helpers involved); the argparse tree moves to\ncli_parser.py as build_parser(handlers) with injected handlers, so the\nparser module never import\n[…]\npatch-points (_build_llm, _prepare) and the\n\"mklang.cli\" logger. Behavior-neutral; internal layout is not part of\nthe stable surface (ADR 0026).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor: extract doctor and parser modules from cli.py",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-26T00:54:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d3fef832a4bb2b0165d259365df4d877551ecfb1",
"body": "The budget commits touched demo-pinned sources (cli, engine, console,\nagent tape) without re-pinning; check-drift on main was red.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: re-pin demo asset manifest",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-26T00:45:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5e171b623c5b8d583c740b5527dc0298e712f537",
"body": "- sdist: exclude dist-release/, packaging/ and uv.lock (the 1.0.9 sdist\n shipped a stale copy of itself and an old makepkg tarball); ignore\n makepkg outputs at the root .gitignore\n- tests: run every examples/*.test.yaml scenario offline and pin machines/\n workspace copies byte-identical to their \n[…]\nented in .env.example, EOL normalization\n in .gitattributes, de-facto public API exported from mklang/__init__,\n scripts/ type-checked by mypy\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: land coherence audit fixes",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-26T00:45:40Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f21b59abe3c7b2106971ba72f758c9b81d255493",
"body": null,
"is_bot": false,
"headline": "docs: verify live demo budget setup",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T09:18:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "90a7d5115f644a4cb8f8fb0c35548d6101d98a0c",
"body": null,
"is_bot": false,
"headline": "docs: raise live demo budget ceiling",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T09:14:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a79e69ffa4223beea613c2583a115ed642d04f78",
"body": null,
"is_bot": false,
"headline": "release: prepare mklang 1.0.10",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T09:06:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "914953fe7c3585a83418ab27651e4ee466fc703b",
"body": null,
"is_bot": false,
"headline": "docs: describe console agent budget",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T09:04:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "660d419692e82136e36910ee5e40cacd0254f564",
"body": null,
"is_bot": false,
"headline": "fix: apply console budget to agent turns",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T08:58:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "faa620177c5f9c99b623eba61bea2502c95e63ba",
"body": null,
"is_bot": false,
"headline": "docs: configure console demo budget",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T08:52:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d0cfd3981eb7c63b7b9dd6fab210c145455eb6bf",
"body": null,
"is_bot": false,
"headline": "docs: size live demo token budget",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T08:50:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8bcc3ecbd4aa0020dbd2ef1deb853a9781ced533",
"body": null,
"is_bot": false,
"headline": "fix: enforce workspace isolation and runtime budgets",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T08:46:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b22c1d3d56b31d1c83973199eca3134bf4d56eef",
"body": null,
"is_bot": false,
"headline": "docs: document hierarchical project machine resolution",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T08:02:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8a9a387b1e4a47dd2351e5c28235e55691ae3880",
"body": null,
"is_bot": false,
"headline": "feat(registry): unify project machine scope",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T08:02:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "be6f9f112110541ee8634b631123740593ae18e0",
"body": null,
"is_bot": false,
"headline": "chore: pin Arch source for 1.0.9",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T07:18:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2592e7c6ee779a15bf420de32bc3dd270b50fe75",
"body": "release: mklang 1.0.9",
"is_bot": false,
"headline": "Merge pull request #66 from gianlucamazza/agent/1.0.9-agentic-console",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T07:15:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cdba2880e509ccaa0304c1604c7cfa0a5b7b28a0",
"body": null,
"is_bot": false,
"headline": "chore: refresh demo asset manifest",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T07:13:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d07e54aec557e002c464753b643d4dd1e9708fb8",
"body": null,
"is_bot": false,
"headline": "test: allow unreleased changelog entry",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T07:12:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "635ed1c02d120b60e55937b12531d62351c43f4b",
"body": null,
"is_bot": false,
"headline": "release: mklang 1.0.9",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-25T07:11:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6e79759820bacdc0c53d1242522036e8a08f9c82",
"body": null,
"is_bot": false,
"headline": "chore: update Arch source for 1.0.8",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T22:20:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "baefa09dc3adbdb5e3f53485cf1f94f6f33c46a1",
"body": null,
"is_bot": false,
"headline": "test: stabilize severity release fixture",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T22:17:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "876f6da4088b1cd735d64b8796a5aa0613990719",
"body": null,
"is_bot": false,
"headline": "chore: prepare Arch version for 1.0.8",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T22:10:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e314c3227a8f2f0d12d06aee10d71aebb989073f",
"body": null,
"is_bot": false,
"headline": "docs: pin DeepSeek V4 demo assets",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T22:10:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4316902d248ad27477f6bf8f7140a1c77c429a81",
"body": null,
"is_bot": false,
"headline": "fix: migrate DeepSeek to V4 thinking mode",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T22:10:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1e28d8ae90e6b0b58ab7fa8f6ec387f127272e06",
"body": null,
"is_bot": false,
"headline": "chore: update Arch source for 1.0.7",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T12:40:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "26dd07d36e6bba85bb2676cdf780b0ea2454502a",
"body": null,
"is_bot": false,
"headline": "docs: pin mklang 1.0.7 demos",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T12:37:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "263852b3450f41089c9b34518d1d151f74d8632b",
"body": null,
"is_bot": false,
"headline": "release: prepare mklang 1.0.7",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T12:37:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6e8b01d651050384e97028c11722a6988a75c0ea",
"body": null,
"is_bot": false,
"headline": "chore: update Arch source for 1.0.6",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T11:33:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "74cd423343c72c05dc776b0c96a59e465aa50a25",
"body": null,
"is_bot": false,
"headline": "fix: stabilize release demos across terminals",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T11:29:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22fa2880d04ed0a0856d8a2f7927e039fe7d417a",
"body": null,
"is_bot": false,
"headline": "release: prepare mklang 1.0.6",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T10:51:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6df32ccbb9ee1e7e1aa8297a589ecfea210c10ae",
"body": null,
"is_bot": false,
"headline": "feat: harden console agent safety and recovery",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T10:48:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "46c42197b971bd74eac677c510866d703182735f",
"body": "Add bounded read-only workspace inspection, deterministic analysis guards, and evidence-driven console workflows. Update tests and documentation for the new architecture and safety limits.",
"is_bot": false,
"headline": "feat: harden workspace project analysis",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T10:18:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bce63440609f50cabc11a131024de5eac8189010",
"body": null,
"is_bot": false,
"headline": "release: pin Arch package to 1.0.5",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T08:12:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c5f2f380d983c553ca3c891c0bd177cc7401e26d",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "docs: regenerate live demo assets (#65)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-24T08:09:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e201ec788dcb6eb596aef1c9cefd27e99123f943",
"body": null,
"is_bot": false,
"headline": "fix: type the console bridge",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T08:02:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19490c17687b9faf0278f45644cf3cb800e273d0",
"body": null,
"is_bot": false,
"headline": "style: format release changes",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T07:59:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "691ec489b1adc511a427bd0995be39086dab8706",
"body": null,
"is_bot": false,
"headline": "release: publish mklang 1.0.5",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T07:57:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "81261fb03dc6cd054c2c397f13f0b99e45345e84",
"body": null,
"is_bot": false,
"headline": "release(arch): pin the 1.0.4 sdist",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-24T07:18:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "62e5a5d9fd3d9f05b72276a87409f2260a35e090",
"body": "Replace the monolithic _run_impl (CC 53) with a _Runner class\n(execute / judge / transition methods). Split _exec_one into\ncall/tool/produce and _select_gate into prose-batch helpers.\nAdd mklang.engine to the mypy strict tier. Release 1.0.4 —\nbehaviour unchanged; language stays 0.3.",
"is_bot": false,
"headline": "refactor: _Runner engine core and mypy strict for engine",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T23:41:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "31b264798bf7fa474030bdb5338b69d03d993838",
"body": "…hecklist",
"is_bot": false,
"headline": "docs(arch): prefer content-addressed PyPI sdist URLs in the release c…",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T23:30:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0be78adfef6a883d323124590efe8823b156a9a9",
"body": null,
"is_bot": false,
"headline": "release(arch): pin the 1.0.3 sdist (content-addressed URL)",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T23:29:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3fdf3fd4923d99a2ef60cddef43ad2f5d558003",
"body": "Extract fan-out, deposit, and gate-transition helpers from _run_impl\n(CC 82→53); split semantic_check into cohesive helpers. Add model,\ninterpolate, registry, checkpoint, hooks, loader to the mypy strict tier.\nRelease 1.0.3 — behaviour unchanged; language stays 0.3.",
"is_bot": false,
"headline": "refactor: P2 engine/loader split and mypy strict ratchet",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T23:27:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6ce4be9802110e1eba33bd903a4da4bd6bfc40e6",
"body": "The legacy packages/source/m/mklang/ path 404s for this release; pin the\nhash-addressed files.pythonhosted.org URL so AUR/makepkg can fetch the sdist.",
"is_bot": false,
"headline": "fix(arch): use content-addressed PyPI sdist URL for 1.0.2",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T23:20:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4caf68574c6003318bd47bb71b20345327f13dd4",
"body": "Double-checked against the published PyPI sdist digest for 1.0.2.",
"is_bot": false,
"headline": "release(arch): pin the 1.0.2 sdist sha256 in the PKGBUILD",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T23:19:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "632ba7628a27dbc330656a0d715c980673adc134",
"body": "Reliability honesty and release-gate strengthen: severity_escalate measured\nwith a 0.5 floor, SPEC §9 aligned to measured agreement, escalate lint notes,\nagent.mkl budget headroom. Spec stays 0.3.",
"is_bot": false,
"headline": "release: 1.0.2",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T23:16:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d5502117e5f3ee9c13e48bdcc9f1ff1e1b0bacf",
"body": "P0/P1 from the architecture inventory:\n\n- SPEC §9: honest gate-divergence history (1.0 on 2026-07-23; 0.917 / escalate\n 0.667 on 2026-07-24) and release-gate distinction.\n- Release live matrix: measure severity_escalate with a 0.5 floor; keep\n gate_divergence at 1.0 (--min-agreement-by-machine).\n- lint: note: advisory on escalate machines; --strict ignores note: findings.\n- agent.mkl budget 16→24 for static authoring repairs; best-practices for\n escalate, console vs MCP, authoring budget.",
"is_bot": false,
"headline": "fix: strengthen reliability claims and authoring headroom",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T23:16:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "397d5ef8a545285ce26b8183adc7cf2e1d213cfd",
"body": "Honest re-run of the four-machine suite on release day: three machines stay\nat agreement 1.0; severity_escalate drops to 0.667 on one DeepSeek repeat.\nRelease-gate single-machine rate remains 1.0. Document Anthropic blocked by\nmissing key in both local env and GitHub secrets.",
"is_bot": false,
"headline": "docs: record 1.0.1 gate-divergence suite (severity_escalate 0.667)",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T23:05:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "414a20bab79de002acce9b96fe86f2b608b8fde8",
"body": "Refresh the demo manifest package_version, README status (1.0 posture +\nAUR link), ROADMAP shipped 1.0.1 follow-ups, and the distribution protocol\nversion pointer. AUR mklang 1.0.1-1 was published separately.",
"is_bot": false,
"headline": "docs: align living surfaces with 1.0.1 and AUR",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T23:00:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0cb91989d13c92fa027374e3eb247dd8959951a7",
"body": "Double-checked against the published PyPI sdist digest for 1.0.1.",
"is_bot": false,
"headline": "release(arch): pin the 1.0.1 sdist sha256 in the PKGBUILD",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T22:58:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "65fd712b0a3c907f7aefa6df2947b629b235bb9d",
"body": "Validation follow-ups after 1.0.0: authoring blind_spot measurement, ADR 0028\nprovisional 1.0 posture, doctor complexity cut, CI format/tag gates. Spec stays\n0.3. Bump package across the release-sync surface; cut [Unreleased] → [1.0.1].",
"is_bot": false,
"headline": "release: 1.0.1",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T22:55:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ec377def972f88a6a2c281f38da8d6488a47019",
"body": "Align the audit register/detail for A1–A4 with the landed CI and doctor\nfollow-ups; document post-1.0 Unreleased work (ADR 0028, blind_spot, CI\ngates, doctor). Import mklang at package scope in gate_divergence.py so\nscripts stay free of noqa/sys.path hacks.",
"is_bot": false,
"headline": "chore: clear residual validation drift and drop gate_divergence noqa",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T22:53:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "97925e2de6f731b1314a7a2439c1559769fbd3c1",
"body": "Re-pin the demo manifest after the cmd_doctor refactor (cli.py source hash\nonly; assets unchanged) so quality.yml check-drift stays green. Align the\nvalidation report's detail/§5 with measured B1/B2 and ADR 0028, publish the\nnew experiment pages in the mkdocs Research nav, and refresh the ADR count.",
"is_bot": false,
"headline": "chore: close demo-source drift and doc gaps after validation follow-ups",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T22:49:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3717c7c019ac1d916ebc41fe98a0004addfb9140",
"body": "… 0028\n\n- Extract cmd_doctor helpers (CC 41 → 8); keep cli dispatch table intact (#63)\n- Freeze authoring corpus + harness; live DeepSeek run: blind_spot=0.0167 →\n do not build test_machine (#59)\n- ADR 0028: provisional 1.0.0 posture with falsifiable 2.0 conditions (#62)\n- Five-reader protocol for D1; leave Anthropic gate-divergence external (#60/#61)",
"is_bot": false,
"headline": "Close validation follow-ups: doctor refactor, blind_spot measure, ADR…",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T22:42:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6f0a781b4ec115933f27b2c10f51403213ff5627",
"body": "…an-vzb550\n\nValidate the 2026-07-23 audit: verdicts, deterministic fixes, best-practices docs",
"is_bot": false,
"headline": "Merge pull request #57 from gianlucamazza/claude/mklang-validation-pl…",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T17:36:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "25b3673521f4a820424b1a9cfc06d905983c762e",
"body": "Closes #58 — the two workflow enforcements deferred from the validation\nbranch because the automation account lacked workflows permission.\n\n- quality.yml checks: add `ruff format --check` after Lint (A1)\n- quality.yml test: fetch-depth: 0 so the tag↔CHANGELOG test runs in CI (A3)\n- validation report: mark A1/A3 CI items DONE",
"is_bot": false,
"headline": "ci: gate ruff format and fetch tags for the release invariant",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T17:34:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f8589cc092bb98d27db08e1881da8792e6419e9f",
"body": "- SECURITY.md + best-practices.md: \"no filesystem authority\" overstated the\n guarantee (ADR 0013 allows an explicit per-call checkpoint_path write).\n Reword to \"no general filesystem-write authority\", keeping the checkpoint\n opt-in caveat.\n- validation report: complete the truncated \"SPEC §\" cita\n[…]\nthub/workflows/. Replying on the thread; not weakening the test's skip.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01MPyaGeffXcgvNWgsjybgiQ",
"is_bot": false,
"headline": "docs/test: address CodeRabbit review on PR #57",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-07-23T17:20:45Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e815eb1a19d09cbfeb531f7dab11c68bbf26e52c",
"body": "Fill the gaps the 2026-07-23 validation identified in the project's\nbest-practices and contributor documentation. Docs only — no code, no\nworkflow changes.\n\nbest-practices.md:\n- B1: new §10 note \"Static checks are not behavioural correctness\" — check/\n lint prove well-formedness, not behaviour; run\n[…]\ns the validation report to mark C2 done and record the doc completions.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01MPyaGeffXcgvNWgsjybgiQ",
"is_bot": false,
"headline": "docs: complete best practices surfaced by the validation findings",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-07-23T17:00:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d9ea50630d2fca1e1b79b4cfccc6b72c65ba15c1",
"body": "Fixes the four code/doc defects whose verdicts were CONFIRMED and whose fix\nis unambiguous. Blocked items (B1 magnitude, C3 live, D1 external) and the\njudgement ADRs (C1/C2/C4) are left for a keyed/maintainer session.\n\nA1 — format gate absent, one file drifted:\n - reformat tests/test_truncation.py \n[…]\nsion.\n\nOffline suite: 448 passed, 2 skipped, coverage 91.81% (gate 90).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01MPyaGeffXcgvNWgsjybgiQ",
"is_bot": false,
"headline": "fix: address the deterministic findings from the validation report",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-07-23T16:53:25Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "861254f765071c0ef4e6cf6bebb9e2862b496a84",
"body": "Execute the twelve-finding validation plan against a clean clone and fill\nthe §4 results register with evidence, falsifier status, and a verdict per\nclaim. No fixes prescribed beyond the derived backlog (plan method §0).\n\nSettled deterministically:\n- A1 format gate absent (reproduced on CI-resolved \n[…]\n re-run, D1 external reader test. Each marked with the resource needed.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01MPyaGeffXcgvNWgsjybgiQ",
"is_bot": false,
"headline": "docs(experiments): record validation verdicts for the 2026-07-23 audit",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-07-23T16:44:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e525a1b8afeea3d6966e4022e9067d95bca52b70",
"body": "release(arch): pin the 1.0.0 sdist sha256 in the PKGBUILD",
"is_bot": false,
"headline": "Merge pull request #56 from gianlucamazza/release/1.0.0-arch-pin",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T15:47:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5771ecedb7b7d1c510248f3f8aaf7ff67244d18e",
"body": "Co-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "release(arch): pin the 1.0.0 sdist sha256 in the PKGBUILD",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T15:46:40Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "551970f0359adf9cf4c3ca9f3c2c48844fbe908e",
"body": "The .github/ tree (excluded from the sdist but run by CI) still referenced examples/*.mk, triage.mk, hello.mk; update to .mkl so the schema check, mklang check/lint/test, and check-drift steps resolve.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci: rename .mk -> .mkl in the quality gate and issue templates",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T15:34:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "fa094f9851fd30ad76f4442310e81351d8bfb0c7",
"body": "Re-render agent + language demos (vhs 0.11.0, DeepSeek) so recordings and manifest track the renamed .mkl sources; clears the demo-assets source-drift CI gate.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(demos): regenerate live demos for the .mkl rename",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T15:30:15Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "37bd155ba95c1aea785d96d272b2343fb0c3d23a",
"body": "release: 1.0.0 (.mkl rename + stability policy)",
"is_bot": false,
"headline": "Merge pull request #55 from gianlucamazza/release/1.0.0",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T15:10:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "debfedf2a7b78869921c807c3654a75a6cf95f14",
"body": "Drop Development Status :: 4 - Beta -> 5 - Production/Stable and bump the\npackage 0.16.0 -> 1.0.0 across the release-sync surface (pyproject,\n__init__, PKGBUILD pkgver, README, ROADMAP, CHANGELOG, uv.lock). Spec\nstays 0.3. Cut [Unreleased] -> [1.0.0].\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: 1.0.0",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T15:06:49Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "42ac9641217c3f935438b60c23ba44598333b433",
"body": "Machine file extension .mk -> .mkl, hard cut: directory discovery\n(registry.load_registry, stdlib loader, CLI project scan) matches *.mkl only;\n.mk still loads by explicit path. Sheds the Makefile / GitHub Linguist\ncollision (ADR 0027; .gitattributes Linguist override).\n\nSPEC section 9 triaged: ever\n[…]\nes/stability.md). Also fixes a\nbuild-docs.sh gap: depth-2 (../../) CHANGELOG/CONTRIBUTING link rewrites.\n\nSpec stays 0.3; CHANGELOG history kept on .mk.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor!: rename .mk -> .mkl and state the 1.0 stability surface",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T15:03:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e1c2cdc4ce25af36998473aa979316a4309633f6",
"body": "release(arch): pin the 0.16.0 sdist sha256",
"is_bot": false,
"headline": "Merge pull request #54 from gianlucamazza/release/0.16.0-arch-pin",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T12:55:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "95e5ba1f44d7c7f3a1d6c3d217e518817219b99b",
"body": "pkgver was already bumped to 0.16.0 in the release commit; this pins the\nsha256sums to the published PyPI sdist digest\n(d1b089c99c62cbec90c616418ade0412c19b71ffc1b77a80ef154475a4fd0bda),\ndouble-verified against a local download. pkgrel stays 1.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "release(arch): pin the 0.16.0 sdist sha256 in the PKGBUILD",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T12:54:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e81cd44d750b591b85d60658ad1b28fff4d08a46",
"body": "…-gate-count\n\nfix(gate-divergence): exclude skipped-provider rows from the machine count",
"is_bot": false,
"headline": "Merge pull request #53 from gianlucamazza/fix/gate-divergence-release…",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T12:48:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fba0e863ce1a95e7deedbf70376d92ace0c2944e",
"body": "…count\n\n_ci_errors derived n_machines from the distinct `machine` values across ALL\nrows, but skipped-provider rows carry no `machine` field, so `None` was counted\nas a machine. With the release matrix always skipping the no-key optional\nproviders, `expected = repeats * n_machines` became 2x the run\n[…]\noviders plus machine-less skipped rows for the optional ones. Record the fix\nunder CHANGELOG [0.16.0] (### Fixed) since it ships with the re-cut 0.16.0.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(gate-divergence): exclude skipped-provider rows from the machine …",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T12:46:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "649b3c4e1375b2f3d2bb9d6bab3370f4535b017b",
"body": "release: 0.16.0",
"is_bot": false,
"headline": "Merge pull request #52 from gianlucamazza/release/0.16.0",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T12:12:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "60a1802f5c13924b9ace8ff711a6b27f44f42b92",
"body": "Version bump to 0.16.0, kept synchronized across the release-provenance surface\n(tests/test_release.py): pyproject.toml + mklang.__version__, uv.lock, the Arch\nPKGBUILD pkgver (sha256sums follows the published sdist in a later step), the\nREADME current-version line, and the ROADMAP pointers. Fix the\n[…]\nge gate 90 / mypy strict tier, four-machine gate-divergence suite, demo\nrefocus) ships as 0.16.0 so the 1.0 groundwork starts from a published baseline.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: 0.16.0",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T12:10:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "63b6d5f3076df86d17c7986288ab1f13f382221f",
"body": "…-refresh\n\ndocs: land the 2026-07-23 four-machine gate-divergence results on main",
"is_bot": false,
"headline": "Merge pull request #51 from gianlucamazza/docs/roadmap-close-showcase…",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T12:01:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f1720b0b640d2445fc25573690b475ba7d8bb6c",
"body": "…uite\n\ndocs: publish the 2026-07-23 four-machine gate-divergence results",
"is_bot": false,
"headline": "Merge pull request #50 from gianlucamazza/docs/gate-divergence-live-s…",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T11:31:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b54c903b93e54c5796d53745ab33e78c411404d2",
"body": "…-refresh\n\ndocs: mark the showcase refresh shipped in the ROADMAP",
"is_bot": false,
"headline": "Merge pull request #49 from gianlucamazza/docs/roadmap-close-showcase…",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T11:31:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "633bf791772755ab473bcc8abf01e11aa1568516",
"body": "First live run of the full suite (--machines all) across DeepSeek and\nOpenAI, 3 repeats each: 24/24 runs done, per-machine agreement 1.0 on\nall four gate shapes, zero gate errors. Free-text outputs diverge on\nthe contestable machines (sentiment_borderline, severity_escalate)\nwhile the gate signature\n[…]\nreliability claim in\nminiature. Dated row + detail section in the experiment doc; the\nROADMAP item moves from [next] to [shipped].\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: publish the 2026-07-23 four-machine gate-divergence results",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T11:24:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b57d39f91051a7cd3efc1ad5c87f2afb636dd2d1",
"body": "The near-term list still carried Showcase refresh as [next], but the\ndemo suite was already refocused and pruned to the two product surfaces\n(agent + language) in the PR 42-48 cycle. Record the outcome as shipped\nso the remaining [next] items reflect the real open work.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: mark the showcase refresh shipped in the ROADMAP",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T11:21:32Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "dcf2eaa954bfcc1233d9a6add86822c83e65e385",
"body": "docs: prune the demo suite to two (agent + language)",
"is_bot": false,
"headline": "Merge pull request #48 from gianlucamazza/docs/demo-prune-to-two",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T11:16:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "001c98796d75406376312bba3e9bd37f2e73f7ce",
"body": "…age)\n\nSix separate recordings were more than the language+console focus needs and\ncost maintenance/review/drift-pinning per demo. Keep the two that map to the\nproduct pillars — agent (console TUI: NL commissioning + consent + trace) and\nlanguage (react.mk CLI: gates + tool + accumulate loop + tier)\n[…]\nat the 12 removed files are actually gone).\n\ncheck-drift/validate/ruff/shellcheck/mkdocs --strict and the offline suite all\ngreen.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: prune the demo suite to the two product surfaces (agent + langu…",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T11:15:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3853aebf41148a2840f93766c6c18c6396c9448a",
"body": "fix: remove orphan cli/search demo assets and guard against recurrence",
"is_bot": false,
"headline": "Merge pull request #47 from gianlucamazza/fix/demo-orphan-assets",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T10:37:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac03dccaaa4b3db512debae4105c483349dc2c8d",
"body": "The language+console demo refocus deleted the cli/search *tapes* but left\ntheir rendered assets (cli/search .webm/.gif/.txt, 6 files) tracked on main\n— no tape, no DEMOS entry, unreferenced by the README or demos.md. The\nexisting check-drift only compares the manifest's asset SET (the six live\ndemos\n[…]\nanifest for the demo_assets.py change; the six demos' asset\n hashes are unchanged (no re-render), only source/provenance updates.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: remove orphan cli/search demo assets and guard against recurrence",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T10:34:41Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a2c4ed40938a192ac593453f4e7ccdcbd14807e3",
"body": "…-precision\n\ndocs: state the gate-agreement result precisely in the README",
"is_bot": false,
"headline": "Merge pull request #46 from gianlucamazza/docs/readme-gate-divergence…",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T10:30:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eb17ad34263135812c096ad699ad69b5d8532fce",
"body": "The release matrices measure the blocking gate-agreement check on the\nsingle `gate_divergence` machine (release.yml runs it with no --machines,\ni.e. the default), so the 1.0 result is that check — not the four-machine\nsuite, which is available but not yet measured live at scale. Rewords the\nStatus \"Live\" line to avoid overclaiming the suite.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: state the gate-agreement result precisely in the README",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T10:29:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7c493c67ab343eaf88ecdb4ba24fd9a497dee376",
"body": "fix: update the build-docs demo guards to the refocused set",
"is_bot": false,
"headline": "Merge pull request #45 from gianlucamazza/fix/build-docs-demo-guards",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T10:17:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "81414569948f53eb770c15ba644562fc35fd33f1",
"body": "scripts/build-docs.sh asserts that each demo's webm src survives the\nraw-HTML path rewrite, but the list still named cli.webm/search.webm — the\nrecordings removed in the language+console demo refocus. On main the docs\ndeploy failed at \"Assemble docs source\" (set -e on the missing grep); the\nsite wen\n[…]\ntl/test) and a note to keep it in\nsync with scripts/demo_assets.py. Verified: shellcheck + build-docs +\nmkdocs --strict all green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: update the build-docs demo guards to the refocused set",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T10:16:41Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "53c61c09b9231899086537cb2e1b802b24d95f68",
"body": "docs: regenerate live demo assets",
"is_bot": false,
"headline": "Merge pull request #44 from gianlucamazza/automation/demo-assets",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T10:12:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "30b790840630ffce7a87a42b00ba83f6e04fd4cb",
"body": null,
"is_bot": true,
"headline": "docs: regenerate live demo assets",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-23T09:59:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca8f5529991d1b419ec29baa5323a3444d8e633a",
"body": "Replace the two peripheral recordings with depth demos, keep the count at\nsix (maintenance tax flat):\n\n- CUT cli (trivial 1-state summarize_doc) and search (near-duplicate of the\n agent demo — same news_search machine + live web).\n- ADD language (react.mk): check + lint, then a real reason -> tool \n[…]\nthe tapes, pipeline,\nand doc references. CI stays red (check-drift + mkdocs strict) until the render\nlands the assets — by design.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: refocus the demo suite on language + console",
"author_name": "Gianluca",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T09:52:22Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3cb8f2a524745fd11638533a3d9d057e689669a7",
"body": "…e-console\n\ndocs: refocus the README on the language + console",
"is_bot": false,
"headline": "Merge pull request #43 from gianlucamazza/docs/readme-refocus-languag…",
"author_name": "Gianluca Mazza",
"author_login": "gianlucamazza",
"committed_at": "2026-07-23T09:46:56Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 30,
"commits_last_year": 267,
"latest_release_at": "2026-07-27T12:20:59Z",
"latest_release_tag": "v1.0.11",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 3,
"days_since_latest_release": 0,
"mean_days_between_releases": 0.4
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 85,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "mklang",
"exists": true,
"license": "Apache-2.0",
"keywords": [
"agents",
"dsl",
"llm",
"reasoning",
"state-machine",
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Software Development :: Interpreters"
],
"ecosystem": "pypi",
"matches_repo": true,
"registry_url": "https://pypi.org/project/mklang/",
"is_deprecated": false,
"latest_version": "1.0.11",
"repository_url": "https://github.com/gianlucamazza/mklang",
"versions_count": 27,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 2747,
"first_published_at": "2026-07-16T21:38:34.442232Z",
"latest_published_at": "2026-07-27T12:23:00.742321Z",
"latest_version_yanked": null,
"days_since_latest_publish": 0
}
]
},
"popularity": {
"forks": 0,
"stars": 1,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": null,
"open_issues_and_prs": 4
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"demos",
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": true,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 40448,
"source_files_sampled": 104,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"pyproject.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": [
"pypi"
],
"dependencies": [
{
"name": "pyyaml",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=6"
},
{
"name": "jsonschema",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=4"
},
{
"name": "python-dotenv",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=1"
},
{
"name": "openai",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=1.40"
},
{
"name": "rich",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=13.7"
},
{
"name": "textual",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=0.80"
}
],
"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": 1,
"merged_prs": 58,
"open_issues": 3,
"closed_ratio": 0.571,
"closed_issues": 4,
"closed_unmerged_prs": 2
},
"bus_factor": 1,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "gianlucamazza",
"commits": 253,
"avatar_url": "https://avatars.githubusercontent.com/u/25006045?v=4"
},
{
"type": "User",
"login": "claude",
"commits": 12,
"avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.955
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"demo-assets.yml",
"docs.yml",
"quality.yml",
"release.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"uv.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": "2 out of 2 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/26 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 6,
"reason": "project has 2 contributing companies or organizations -- score normalized to 6",
"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": 10,
"reason": "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": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"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": "2376e5adcd15d1ddb27a93d9689ac4c28cc052c1",
"ran_at": "2026-07-27T12:25:32Z",
"aggregate_score": 5,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-27T12:25:05Z",
"oldest_open_prs": [
{
"number": 67,
"created_at": "2026-07-25T08:12:19Z",
"last_comment_at": "2026-07-25T09:22:54Z",
"last_comment_author": "github-actions"
}
],
"last_merged_pr_at": "2026-07-27T12:20:52Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 60,
"created_at": "2026-07-23T17:09:36Z",
"last_comment_at": "2026-07-23T23:30:07Z",
"last_comment_author": "gianlucamazza"
},
{
"number": 61,
"created_at": "2026-07-23T17:09:42Z",
"last_comment_at": "2026-07-23T23:05:07Z",
"last_comment_author": "gianlucamazza"
},
{
"number": 64,
"created_at": "2026-07-23T23:16:16Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/gianlucamazza/mklang",
"host": "github.com",
"name": "mklang",
"owner": "gianlucamazza"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 62,
"inputs": {
"security": 50,
"vitality": 74,
"community": 42,
"governance": 57,
"engineering": 81
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 74,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 56,
"inputs": {
"commits_last_year": 267,
"human_commit_share": 0.98,
"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": "267 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 267
}
}
],
"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": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 30,
"latest_release_tag": "v1.0.11",
"releases_from_tags": false,
"days_since_latest_release": 0,
"mean_days_between_releases": 0.4
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "30 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 30
}
}
],
"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 ~0.4 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 0.4
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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": "at_risk",
"name": "Community & Adoption",
"value": 42,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 1,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "1 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 1
}
}
],
"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": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"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": 18,
"status": "met",
"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": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"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": 57,
"inputs": {
"packages": [
"mklang"
],
"dependents": null,
"ecosystems": "pypi",
"total_downloads": null,
"monthly_downloads": 2747
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "2,747 downloads/month across pypi",
"points": 45.9,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 2747,
"ecosystems": "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": 57,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 19,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.955
},
"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 96% of commits",
"points": 1,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 96
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 2 contributing companies or organizations -- score normalized to 6",
"points": 6,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 64,
"inputs": {
"merged_prs": 58,
"open_issues": 3,
"closed_issues": 4,
"issue_closed_ratio": 0.571,
"closed_unmerged_prs": 2
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "57% of issues closed",
"points": 26.7,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 57
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "58/60 decided PRs merged",
"points": 37,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 58,
"decided": 60
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/26 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": 60,
"inputs": {
"followers": 67,
"owner_type": "User",
"is_verified": null,
"owner_login": "gianlucamazza",
"public_repos": 61,
"account_age_days": 3486
},
"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": "67 followers of gianlucamazza",
"points": 13.2,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 67,
"login": "gianlucamazza"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "61 public repos, account ~9 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 61
}
},
{
"code": "account_age_years",
"params": {
"years": 9
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"mklang"
],
"ecosystems": "pypi",
"any_deprecated": false,
"min_days_since_publish": 0
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on pypi",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "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": "27 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 27
}
}
],
"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": "5 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 5
}
}
],
"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": "2 out of 2 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",
"dsl",
"llm",
"python",
"state-machine"
],
"has_wiki": true,
"homepage": "https://gianlucamazza.github.io/mklang/",
"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://gianlucamazza.github.io/mklang/",
"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": "5 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 5
}
}
],
"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": "moderate",
"name": "Security",
"value": 50,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 50,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 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": "2 out of 2 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/26 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 2 contributing companies or organizations -- score normalized to 6",
"points": 1.5,
"status": "partial",
"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": "update tool detected",
"points": 7.5,
"status": "met",
"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": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 2
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "at_risk",
"name": "AI Readiness",
"value": 48,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "98 of 98 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 98,
"sampled": 98
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 47,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"uv.lock"
],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.31,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "31 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 31,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "dependency automation configured, none observed in the sampled commits",
"points": 5,
"status": "partial",
"details": [
{
"code": "dependency_bot_config_only",
"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": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 40448,
"source_files_sampled": 104,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Python without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "Python"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/104 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 104,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "moderate",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"example_dirs": [
"demos",
"examples"
],
"has_mcp_signal": true,
"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": 20,
"status": "met",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "demos, examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "demos, 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",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"deps.dev does not index pypi:mklang@1.0.11; advisories assessed against the repository dependency graph instead"
],
"report_type": "repository",
"generated_at": "2026-07-27T12:25:41.956872Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/gianlucamazza/mklang.svg",
"full_name": "gianlucamazza/mklang",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}