Звіт у форматі JSON машиночитний
{
"data": {
"icon": {
"bytes": 1870,
"width": 48,
"height": 48,
"rejected": [],
"collected": true,
"media_type": "image/png",
"source_url": "https://fktn-k.github.io/fkYAML/assets/images/favicon.png",
"source_type": "homepage",
"content_hash": "023854c43fc4b25b795ee4951c8019e3de0593ffeb6f918b5d1f2a9b47a57cfe",
"candidates_considered": 1
},
"repo": {
"topics": [
"cmake",
"cpp",
"cpp11",
"cpp14",
"cpp17",
"cpp20",
"header-only",
"header-only-library",
"yaml",
"yaml-parser",
"fkyaml",
"cpp23",
"single-header"
],
"is_fork": false,
"size_kb": 3457,
"has_wiki": true,
"homepage": "https://fktn-k.github.io/fkYAML/",
"languages": {
"C++": 1994846,
"CMake": 26326,
"Jinja": 2820,
"Shell": 2721,
"Python": 10835,
"Makefile": 8909,
"Batchfile": 2219
},
"pushed_at": "2026-07-29T22:23:12Z",
"created_at": "2023-08-05T19:06:46Z",
"owner_type": "User",
"updated_at": "2026-07-31T19:59:21Z",
"description": "A C++ header-only YAML library",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "develop",
"license_spdx_raw": "MIT",
"primary_language": "C++",
"significant_languages": [
"C++"
]
},
"owner": {
"blog": null,
"name": "fktn",
"type": "User",
"login": "fktn-k",
"company": null,
"location": "Japan",
"followers": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/141519741?v=4",
"created_at": "2023-08-05T18:40:16Z",
"is_verified": null,
"public_repos": 2,
"account_age_days": 1096
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.4.3",
"kind": "patch",
"published_at": "2026-07-18T16:30:34Z"
},
{
"tag": "v0.4.2",
"kind": "patch",
"published_at": "2025-01-25T15:10:22Z"
},
{
"tag": "v0.4.1",
"kind": "patch",
"published_at": "2025-01-11T01:56:41Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2024-12-10T15:28:12Z"
},
{
"tag": "v0.3.14",
"kind": "patch",
"published_at": "2024-11-16T15:10:12Z"
},
{
"tag": "v0.3.13",
"kind": "patch",
"published_at": "2024-10-14T07:37:06Z"
},
{
"tag": "v0.3.12",
"kind": "patch",
"published_at": "2024-09-21T08:31:31Z"
},
{
"tag": "v0.3.11",
"kind": "patch",
"published_at": "2024-08-24T03:51:30Z"
},
{
"tag": "v0.3.10",
"kind": "patch",
"published_at": "2024-08-18T07:27:14Z"
},
{
"tag": "v0.3.9",
"kind": "patch",
"published_at": "2024-06-12T14:05:10Z"
},
{
"tag": "v0.3.8",
"kind": "patch",
"published_at": "2024-06-01T02:49:15Z"
},
{
"tag": "v0.3.7",
"kind": "patch",
"published_at": "2024-05-16T15:24:01Z"
},
{
"tag": "v0.3.6",
"kind": "patch",
"published_at": "2024-05-02T08:13:36Z"
},
{
"tag": "v0.3.5",
"kind": "patch",
"published_at": "2024-04-27T14:35:58Z"
},
{
"tag": "v0.3.4",
"kind": "patch",
"published_at": "2024-04-20T13:25:10Z"
},
{
"tag": "v0.3.3",
"kind": "patch",
"published_at": "2024-03-31T10:54:53Z"
},
{
"tag": "v0.3.2",
"kind": "patch",
"published_at": "2024-03-17T11:19:16Z"
},
{
"tag": "v0.3.1",
"kind": "patch",
"published_at": "2023-12-21T14:37:37Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2023-12-10T16:31:29Z"
},
{
"tag": "v0.2.3",
"kind": "patch",
"published_at": "2023-12-03T05:20:50Z"
},
{
"tag": "v0.2.2",
"kind": "patch",
"published_at": "2023-11-27T13:45:14Z"
},
{
"tag": "v0.2.1",
"kind": "patch",
"published_at": "2023-11-19T05:53:59Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2023-11-06T23:01:18Z"
},
{
"tag": "v0.1.3",
"kind": "patch",
"published_at": "2023-10-21T13:08:02Z"
},
{
"tag": "v0.1.2",
"kind": "patch",
"published_at": "2023-10-18T17:08:54Z"
},
{
"tag": "v0.1.1",
"kind": "patch",
"published_at": "2023-10-15T06:54:31Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2023-10-15T06:41:50Z"
},
{
"tag": "v0.0.1",
"kind": "patch",
"published_at": "2023-10-06T13:13:59Z"
},
{
"tag": "v0.0.0",
"kind": "major",
"published_at": "2023-10-01T08:37:28Z"
}
],
"recent_commits": [
{
"oid": "b0a41e859c0c0b77ef718d95c2959a9cc21401fa",
"body": "* Migrated from Catch2 to doctest (v2.5.3)\n\n* Removed the embedded Catch2 sources\n\n* Replaced Catch2 with doctest in the documentations\n\n* Fixed build errors with Clang and old GCC compilers",
"is_bot": false,
"headline": "Migrate to doctest (#535)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2026-07-29T22:23:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f44392f5b7090b9236e684325557b25593b0316c",
"body": "* Harden input adapter against truncated encoded input\n\nFix UTF-16 buffer handling so incomplete surrogate pairs cannot underflow the\nencoded buffer size, addressing the issue #492 report.\n\nAlso reject truncated UTF-8, UTF-16, and UTF-32 input consistently across\niterator, FILE, and stream adapters \n[…]\naves the encoded buffer empty. This prevents valid standalone CR input from being reported as invalid encoding.\n\n* Fix ci_test_clang_tidy (static_cast)\n\n* Exclude defensive UTF-16 guards from coverage",
"is_bot": false,
"headline": "Harden input adapter against truncated encoded input (#533)",
"author_name": "Thorek",
"author_login": "sndth",
"committed_at": "2026-07-25T17:08:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4e626a228d180d6e4e55f4f94064c1733d0b661c",
"body": "Use --merge-copyrights when annotating sources and remove the deprecated --copyright-style option",
"is_bot": false,
"headline": "Harden SPDX copyright against duplicate entries (#534)",
"author_name": "Thorek",
"author_login": "sndth",
"committed_at": "2026-07-20T00:59:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "772607306fdb2c831385924b0eaa7281c795a77a",
"body": "fkYAML version 0.4.3",
"is_bot": false,
"headline": "Merge tag 'v0.4.3' into develop",
"author_name": "fktn-k",
"author_login": "fktn-k",
"committed_at": "2026-07-18T16:32:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "65a386270e0144899eaffe725ce370ef177dfee9",
"body": null,
"is_bot": false,
"headline": "Merge branch 'release/v0.4.3'",
"author_name": "fktn-k",
"author_login": "fktn-k",
"committed_at": "2026-07-18T15:59:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf58ba0dc12a013e10b38e74d63d1e8112a41f67",
"body": null,
"is_bot": false,
"headline": "bump version to 0.4.3",
"author_name": "fktn-k",
"author_login": "fktn-k",
"committed_at": "2026-07-18T04:20:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6bb9a5c20eccade52a97c7b6b36ab280e6131a63",
"body": "* added node::remove method\n\n* Changed remove method to erase\n\n* Add tests and documentation for basic_node::erase\n\n- Cover existing, missing, node, and alias mapping keys\n- Verify type errors for non-mapping nodes\n- Add API documentation and a compilable example\n- Keep the regular and single-header APIs consistent\n\n* Return size_type from basic_node::erase\n\n---------\n\nCo-authored-by: flaviu22 <flaviu2@yahoo.com>",
"is_bot": false,
"headline": "Add `basic_node::erase` method (#530)",
"author_name": "Thorek",
"author_login": "sndth",
"committed_at": "2026-07-18T00:33:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "979a13044ffd38807bc5ea405a63d468501fd4d3",
"body": null,
"is_bot": false,
"headline": "Fix bugs in the format_check and coverage workflows (#529)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2026-07-15T18:17:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c8cdd2474462c82012ef1804ba6517d5b383b0f3",
"body": "…d (#527)\n\n* Fix tool directory typo\n\n* Add CMake policy version minimum for benchmark\n\n* Set benchmark CMake policy minimum internally\n\nWhen FK_YAML_RUN_BENCHMARK is enabled, set CMAKE_POLICY_VERSION_MINIMUM\nto 3.5 before adding the benchmark subdirectory. This avoids requiring\nusers to pass -DCMAKE_POLICY_VERSION_MINIMUM=3.5 manually when configuring\nbenchmark builds with newer CMake versions.\n\nAlso remove the now-unnecessary flag from the benchmark README.",
"is_bot": false,
"headline": "Fix `tool` directory typo and add CMake policy for the benchmark buil…",
"author_name": "Thorek",
"author_login": "sndth",
"committed_at": "2026-07-15T17:10:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4fdc5b070988504e534f0837b3713f642a062ea",
"body": "* update coverage.yaml for the GitHub Actions\n\n* Modified test case to cover untested branches\n\n* Improve unsinged integer support & test coverage\n\n* Update the documentation with new APIs\n\n* Fixed clang-tidy warnings and add more tests for better coverage\n\n* Add more tests for better coverage",
"is_bot": false,
"headline": "Improve unsigned 64bit integer support (#526)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2026-07-13T04:58:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b9d343dc1495ddff89526727fb4c1a3021c3c065",
"body": "* Fix brace initialization of empty collection nodes\n\nPreserve the type of empty mapping and sequence nodes when they are passed\nthrough brace initialization, e.g. node{node::mapping()}.\n\nPreviously this form selected the initializer-list constructor and treated the\nsingle empty mapping node as a se\n[…]\ninitializer-list constructor can preserve empty collection nodes without\nallowing broader implicit conversions.\n\nUpdate the constructor documentation and add coverage for duplicate-anchor\ndestruction.",
"is_bot": false,
"headline": "Fix brace initialization of empty collection nodes (issue #502) (#524)",
"author_name": "Thorek",
"author_login": "sndth",
"committed_at": "2026-07-08T07:39:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bb458b0eedc62efde962b02ff91ea97471c236e2",
"body": "* Handle empty mapping key separator as parse error (#514)\n\nReplace an assertion-only guard in KEY_SEPARATOR handling with a parse_error\nwhen the parser sees a mapping value separator without an active context.\n\nThis prevents malformed input such as `: foo` from aborting on\nFK_YAML_ASSERT(!m_context\n[…]\nith `\"\"` as the key, while\nleaving empty mapping keys inside block sequences unsupported for now.\n\nUpdate the key separator regression tests accordingly.\n\n* Clarify empty key sequence parse-error test",
"is_bot": false,
"headline": "Handle empty mapping key separator as parse error (#525)",
"author_name": "Thorek",
"author_login": "sndth",
"committed_at": "2026-07-07T23:41:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9f56b48ccd455dc4bfdc6dc841197186928562d6",
"body": "* Fix serialization of strings that are invalid plain scalars\n\nQuote string scalars that cannot be safely emitted in YAML plain style,\nincluding values starting with directive/reserved/flow indicator characters\nsuch as `%`, `@`, `!`, `&`, and `{`.\n\nPreviously the serializer only quoted strings when \n[…]\ner a\nscalar is used as an implicit key or inside a flow collection, so this keeps the\nplain-scalar validation conservative.\n\nUpdate serializer tests for whitespace and mid-string flow indicator cases.",
"is_bot": false,
"headline": "Fix serialization of strings that are invalid plain scalars (#523)",
"author_name": "Thorek",
"author_login": "sndth",
"committed_at": "2026-07-06T17:04:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "925dd2a353e597d292c81be598b7a484c2a535ef",
"body": "* Support unsigned 64-bit integers (uint64_t) exceeding INT64_MAX\n\nLarge positive decimal scalars whose value exceeds INT64_MAX (e.g. xxHash digests, high-half UUID fields) were silently parsed as STRING nodes instead of INTEGER nodes. Calling as_int() on such a node then threw type_error, making th\n[…]\nevent get_value<uint64_t>() crash caused by as_int() throwing on uint_bit-marked nodes\n\n* Run amalgamation\n\n* Use explicit partial specialization for uint64_t in from_node_int_helper to fix MSVC build",
"is_bot": false,
"headline": "Support unsigned 64-bit integers (uint64_t) exceeding INT64_MAX (#513)",
"author_name": "Thorek",
"author_login": "sndth",
"committed_at": "2026-07-05T10:42:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a3a096bc51ea3dbd113d9b6bb9a34e6334374259",
"body": "… (#522)",
"is_bot": false,
"headline": "Fix errors in checking out to a branch in a forked repository (part2)…",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2026-07-05T10:21:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d9037b1d9da71034b9881701b706975020a68ab8",
"body": "Co-authored-by: fktn <fktn.dev@gmail.com>",
"is_bot": false,
"headline": "Fixes natvis path for non VS builds. (#512)",
"author_name": "Sean Farrell",
"author_login": "rioki",
"committed_at": "2026-07-05T05:49:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9be87092f936af6bbcbc00dd98f2ec519c9032d6",
"body": null,
"is_bot": false,
"headline": "Fix errors in checking out to a branch in a forked repository (#521)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2026-07-05T04:58:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "99ccf3e60404589cd1d09f2c7f9b4e8f86f8c939",
"body": null,
"is_bot": false,
"headline": "Update the format/amalgamation check by the GitHub Actions (#520)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2026-07-04T19:27:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec638106f1f72a80175c723b08f4d878fb801bf9",
"body": null,
"is_bot": false,
"headline": "Update GitHub Actions workflows (#519)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2026-07-04T18:17:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "79675673f1ac1c397778d80d9371c6602a05a348",
"body": null,
"is_bot": false,
"headline": "Add copilot-instructions.md for GitHub Copilot integrations (#518)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2026-07-04T15:14:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08844ced6443a5aba0f4e82d55ecff5d641a362a",
"body": "* resolved useless-cast & old-style-cast warnings from GCC compilers\n\n* fixed apt repository update error",
"is_bot": false,
"headline": "Resolve useless-cast & old-style-cast warnings (#499)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-07-21T10:03:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7773ea4517b617ca88df917242e528167a80c073",
"body": "* dropped windows-2019 runner, added windows-2025 runner\n\n* updated supported compilers list",
"is_bot": false,
"headline": "Update CI workflows for windows (#500)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-07-21T08:29:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "721edb3e1a817e527fd9e1e18a3bea300822522e",
"body": null,
"is_bot": false,
"headline": "Fix project compilation on GCC compilers (#497)",
"author_name": "sndth",
"author_login": "sndth",
"committed_at": "2025-05-22T01:48:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3a44af109d0624d2678a59c419e094a3067d8da3",
"body": null,
"is_bot": false,
"headline": "[bot] run clang-format & amalgamation",
"author_name": "sndth",
"author_login": "sndth",
"committed_at": "2025-05-15T06:01:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6787730975b5028a9c62ec94cb211c93f80bada4",
"body": null,
"is_bot": false,
"headline": "Fix issue with separating comments using tab (#494) (#496)",
"author_name": "sndth",
"author_login": "sndth",
"committed_at": "2025-05-15T05:59:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9fb0b72fd78261c1da08a87597f3f1be687dbefc",
"body": null,
"is_bot": false,
"headline": "[bot] run clang-format & amalgamation",
"author_name": "Edmund Krain",
"author_login": "edmundkrain",
"committed_at": "2025-04-19T08:21:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "74f5a81313657007dee2fcf7aa1b4bd533ee528c",
"body": "* Fix typo in source\n\n* Fix typos in docs\n\n* Fix pr template link",
"is_bot": false,
"headline": "Fix typos and pr-template link (#493)",
"author_name": "Edmund Krain",
"author_login": "edmundkrain",
"committed_at": "2025-04-19T08:20:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b2f9a0c3974b34b4fff7f91f529597f4301e599",
"body": "Co-authored-by: Your Name <you@example.com>",
"is_bot": false,
"headline": "Removing typo, extra `--config` in tutorial bash (#490)",
"author_name": "mgodf7",
"author_login": "mgodf7",
"committed_at": "2025-03-21T14:35:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6b36aac6a9907af2e921acf8ac12cc302b740977",
"body": "…#488)\n\n* fix parsing block mapping entry after an empty block sequence entry\n\n* added note on a test case",
"is_bot": false,
"headline": "Fix parsing block mapping entry after an empty block sequence entry (…",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-02-28T11:18:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "16a1432281bf72f6120f41e27691813afa6abafc",
"body": "* added get_value_or() in basic_node\n\n* added api reference page for get_value_or()\n\n* updated README",
"is_bot": false,
"headline": "Add get_value_or() (#485)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-02-16T14:44:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c093fc4a0b0d5fa76511031a752c7fcbb1228170",
"body": "* improved the way of resolving anchor/alias node reference\n\n* renamed variables for internal node value storage\n\n* cleaned up unused/redundant custom type traits\n\n* silenced clang-tidy warnings since they are intentional\n\n* [bot] run clang-format & amalgamation",
"is_bot": false,
"headline": "Refactor node class implementation (#483)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-02-09T14:25:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "06dec7b49774b8b04f910cfa74da632a72ec1367",
"body": "* implemented as_xxx() in basic_node template class to replace get_value_ref()\n\n* replaced internal get_value_ref() calls with as_xxx()\n\n* added test cases for as_xxx() functions\n\n* added api references & examples for the new as_xxx() functions\n\n* improved migration guide from get_value_ref",
"is_bot": false,
"headline": "Replace getters for reference to node values (#481)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-02-05T23:57:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f8a276dbc6e8758d11436778b9c271e5d275e6a4",
"body": "* updated the contents in README\n\n* added missing links",
"is_bot": false,
"headline": "Update README.md (#479)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-02-02T14:31:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32381af23c43a8aad6dc4fed63c9afccade06228",
"body": "* relaxed iterator requirements to LegacyInputIterator for deserialize\n\n* updated documents\n\n* consolidated contiguous iterator detection in input_adapter\n\n* cleaned up test code\n\n* modified the way of incrementing iterators",
"is_bot": false,
"headline": "Relax iterator requirements for deserialization (#478)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-02-02T02:25:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "954d8439821e51abe61c81842329274f3ed5affd",
"body": "* removed the catch2 git submodule\n\n* removed the .gitmodules file\n\n* embed minimum necessary files from Catch2 v2.3.10 for tests\n\n* updated CMake build instructions\n\n* updated reuse configurations\n\n* removed the submodules option on checkout action calls in GitHub Actions workflows",
"is_bot": false,
"headline": "Embed minimum necessary Catch2 v2.3.10 sources (#475)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-27T12:18:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9552a7d5e100e334f0c8094881e02ecb81ad6ee0",
"body": "fkYAML version 0.4.2",
"is_bot": false,
"headline": "Merge tag 'v0.4.2' into develop",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-25T15:12:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f042a1017ea2aa8075c9018cbd72913f1d27cd8b",
"body": null,
"is_bot": false,
"headline": "Merge branch 'release/v0.4.2'",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-25T14:54:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "679ac5dd65a358e2e7b6acf2a1bca9f6c8ee63c4",
"body": null,
"is_bot": false,
"headline": "bump version to 0.4.2",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-25T14:54:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "137b57d43cd656453c000b355e77d22563ac395d",
"body": "* fixed examples with misindented document markers\n\n* added a workflow job which checks example builds",
"is_bot": false,
"headline": "Fix example builds with incorrectly indented document markers (#473)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-25T14:44:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d3616115b6e6405fb8240f680f4f7983a6d78307",
"body": "* fixed document marker (--- and ...) detections\n\n* emit error if a document marker is found in a flow collection\n\n* run amalgamation",
"is_bot": false,
"headline": "Fix document marker detections (#472)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-25T03:29:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32c7d1a20e6aa14bc3b432f039995d8c97908e9c",
"body": "* fixed segfault if the input stream has no contents\n\n* added test cases for empty inputs\n\n* modified not-maintained code in the input_adapter test source file\n\n* early returns an empty string view if an input is empty",
"is_bot": false,
"headline": "Fix error in parsing empty inputs (#471)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-25T00:05:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee9bd5a42757b17d8bcd85824a9be4b6c65d8711",
"body": "* separate utf-8 validation based on char bytes by overloads\n\n* refactored line break normalization in iterator_input_adapter for char/char8_t\n\n* refactored line break normalization in file/stream_input_adapter for UTF-8\n\n* updated benchmark results",
"is_bot": false,
"headline": "Refactor UTF encode validation & line break normalization (#470)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-21T18:33:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d31189be91613b1d9c588d94a49c409761d06a47",
"body": "* fixed comment prefix check in the lexer\n\n* added test cases for comments for the lexer",
"is_bot": false,
"headline": "Fix comment prefix check (#469)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-19T15:24:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "258b236760f03441c7aa28a8773d20c92b9c43c7",
"body": "…y (#468)\n\n* allow ':' to be adjacent to a mapping value right after a JSON-like key\n\n* added test cases to improve coverage",
"is_bot": false,
"headline": "Allow ':' adjacent to a flow mapping value right after a JSON-like ke…",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-19T09:36:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a087743a8a81522579e4197f27a70757a48b49fe",
"body": "* fixed conversions from an empty tuple to a node\n\n* ensure a sequence node is converted to an empty tuple",
"is_bot": false,
"headline": "Fix conversions from empty tuples (#467)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-18T11:52:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b68ecfb0392d75540d7e121838ae83d8da5ba6fb",
"body": null,
"is_bot": false,
"headline": "Disable the fail-fast option for GitHub Actions workflow jobs (#466)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-18T01:24:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "236acffa3120c53da5b7af3552a4a1ed24928b54",
"body": "* extract create_object/destroy_object as utility functions\n\n* refactored external_node_constructor\n\n* added builtin to_node impls for sequence-like types\n\n* ensure cv-qualifiers and references are removed in detecting member types\n\n* added builtin to_node impls for mapping-like types\n\n* cleaned up \n[…]\n nodes\n\n* fixed typos in doxygen comments\n\n* add builtin to_node() impls for std::pair & std::tuple\n\n* run amalgamation\n\n* fixed compile errors with older gcc/clang versions\n\n* updated docs & examples",
"is_bot": false,
"headline": "Add to_node() implementations for STL container types (#465)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-14T17:59:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e04d463328be84d1e7222d0c025531ee25f81e98",
"body": "* updated file header contents in the example source files\n\n* fixed missing build instruction for macro examples\n\n* fixed typos",
"is_bot": false,
"headline": "Fix example builds and typos in docs (#464)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-12T11:48:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e930dee2db3010ddf42f69fb008a52bf4d046a2e",
"body": "* remove redundant string allocations for tag names\n\n* remove redundant string allocations for anchor names\n\n* addressed coverage loss",
"is_bot": false,
"headline": "Improve handling node properties in deserialization (#463)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-12T10:12:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "77ba5efac1322f68112e9013faed7d6fe83c0fb6",
"body": "fkYAML version 0.4.1",
"is_bot": false,
"headline": "Merge tag 'v0.4.1' into develop",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-11T03:02:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8517fb74859acd9afabf80f626f6b6431f8247d2",
"body": null,
"is_bot": false,
"headline": "Merge branch 'release/v0.4.1'",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-11T01:33:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d43eff4ca28416e039329c2be45b540f5224929",
"body": null,
"is_bot": false,
"headline": "bump version to 0.4.1",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-11T01:33:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50f28a0cc088ea13023ace70258f50fcb4ed7f4a",
"body": "* added test cases for serializing root empty collections\n\n* fixed path filtering in ubuntu.yml",
"is_bot": false,
"headline": "Add test cases for serializing root empty collections (#461)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-09T14:33:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d5f1ccc1082f47d552df151d8bcb562171d0e82",
"body": null,
"is_bot": false,
"headline": "[bot] run clang-format & amalgamation",
"author_name": "johan-gson",
"author_login": "johan-gson",
"committed_at": "2025-01-09T11:42:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f6bae95fc8f2547b5390f3a8f013640726e777e1",
"body": "* Fix: made sure that empty documents just serialize to [] or {}\n\n* fixed tabs\n\n* fixed tabs again, missed a few ones",
"is_bot": false,
"headline": "Fix: made sure that empty documents just serialize to [] or {} (#460)",
"author_name": "johan-gson",
"author_login": "johan-gson",
"committed_at": "2025-01-09T11:31:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "36ca93e245390952756f2bf23e9cf555c19c7940",
"body": "* allow access to iterator member functions in range-based for loops\n\n* updated documentation for map_items API\n\n* modified impl for serializing mappings\n\n* fixed duplication error in CMake build target names\n\n* added doxygen comments\n\n* fixed ci errors\n\n* added doxygen comments again",
"is_bot": false,
"headline": "Mapping key/value access in range based for loops (#458)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-07T03:36:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "71fa437ce59722684782f7d3b2092454bf6b5f3d",
"body": "* added test cases for serializing empty collection nodes\n\n* modified serializer impl to address coverage loss",
"is_bot": false,
"headline": "Add test cases for serializing empty collection nodes (#457)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-06T17:30:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "559f6a36cac3c3fc904c27efb5d25bc5f2b6440c",
"body": null,
"is_bot": false,
"headline": "[bot] run clang-format & amalgamation",
"author_name": "johan-gson",
"author_login": "johan-gson",
"committed_at": "2025-01-06T08:06:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c15d671ca1d87540c19c70be15887570b184bc82",
"body": "…appings in a correct way (#456)\n\n* fix: Fixed a bug where serialize didn't write out empty vectors and mappings in a correct way. I have not added a test case, but I tested it in my code and it behaved as expected. Adding a test case at some point would be good.",
"is_bot": false,
"headline": "fix: Fixed a bug where serialize didn't write out empty vectors and m…",
"author_name": "johan-gson",
"author_login": "johan-gson",
"committed_at": "2025-01-06T07:53:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "859389ef106a9dbd2389c0174a340d2505deda56",
"body": "* fixed paths for publishing documentation\n\n* fixed filtering paths for workflow triggers\n\n* updated path for the reuse tool",
"is_bot": false,
"headline": "Fix invalid paths for documentation & other tools (#453)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-02T16:04:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8633c19deb1e1a7f256fe24e7d1b8e5b631246e8",
"body": "* updated copyright year\n\n* rename: test -> tests, tool -> tools\n\n* moved files for documentation\n\n* moved project documentation files to the .github directory\n\n* fixed path for coverage\n\n* fixed paths in the script files",
"is_bot": false,
"headline": "Update copyright year and directory structure (#452)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2025-01-02T14:51:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08462e2015d9627e7937f29e225723d2454cceff",
"body": "* detect bad indentation at block mapping entries\n\n* improved parse context management\n\n* detect error on too much indented block sequence entries\n\n* added test cases\n\n* fixed clang-tidy error\n\n* addressed coverage loss\n\n* run amalgamation\n\n* deleted unused lambda capture in the deserializer",
"is_bot": false,
"headline": "Fix bad indentation detection for block collection entries (#451)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-29T17:30:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d9e702a4a8f42078d37923ad7feb98ca10fb432",
"body": "* emit errors if \":\" is missing after a mapping key\n\n* generalized codes to move back to a parent node with target indentation\n\n* disable clang-tidy check (bugprone-easily-swappable-parameters)\n\n* added test cases & addressed coverage loss",
"is_bot": false,
"headline": "Emit an error if \":\" is missing after a mapping key (#450)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-23T02:31:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "43a18846bbe10ea5c45a7fc8cd6ce323b51122dc",
"body": "* do not create a temporal, redundant lexical_token object\n\n* search plain scalar contents for flow indicators only within a flow context\n\n* modified validation of scalar contents\n\n* reduced redundant calls in lexer\n\n* updated benchmark results\n\n* fixed a clang-tidy error",
"is_bot": false,
"headline": "Optimize lexer implementation (#448)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-21T17:33:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b43c4cf9204a0c250211d2d2259a4f11ffb83a03",
"body": "* update workflow jobs for release artifacts\n\n* change extension: tar.gz -> tgz",
"is_bot": false,
"headline": "Update workflow jobs for release artifacts (#447)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-18T20:36:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4361556b3d3d591b2abd22af2171837b05bc715d",
"body": "* updated mkdocs-material & mkdocs-git-revision-date-localized-plugin\n\n* updated copyright year in the license files\n\n* restructured document pages\n\n* revised documentation contents in the API references section\n\n* organized structure of documentation contents in the API references section\n\n* added top page & reordered documentation pages in the API references section",
"is_bot": false,
"headline": "Revise the contents of API References (#445)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-17T15:45:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec133cda8d5172a8cb82e55cbea2b097bbb69bbf",
"body": null,
"is_bot": false,
"headline": "support std::forward_list in from_node (#444)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-16T13:45:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5aaa028ac0983fbb1805f73af9031bf5bdd6c208",
"body": "* added get_value_inplace() to basic_node\n\n* updated API documentation contents\n\n* fixed some typos in doc\n\n* added link to the documentation page for get_value_inplace()\n\n* fixed error in building test suite with older compilers\n\n* added test case for get_value_inplace\n\n* fixed issue reported from codacy",
"is_bot": false,
"headline": "Add get_value_inplace API to basic_node (#443)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-15T18:19:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b8f92552218a25be01635eed80db78bd3530ef0",
"body": null,
"is_bot": false,
"headline": "Resolve CMake deprecation warning (#442)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-13T15:07:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0fdebe84dfdd0e840f065f72d2565b330fb1cd4a",
"body": "fkYAML version 0.4.0",
"is_bot": false,
"headline": "Merge tag 'v0.4.0' into develop",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-10T15:46:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5fdd76ec676c81ace1c9db98211916724f6f7a88",
"body": null,
"is_bot": false,
"headline": "Merge branch 'release/v0.4.0'",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-10T15:15:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e9e87ed442c54a4b5f107a99e4134f91fdec9682",
"body": null,
"is_bot": false,
"headline": "set version to 0.4.0",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-10T15:15:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a5e73da7c26d1ce846b9ac87881bd5d728c393c0",
"body": "… (#439)",
"is_bot": false,
"headline": "Fix round-trip issue in float serialization using scientific notation…",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-09T13:13:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d049cad4c9880abb7478f8c1ad697f5e68cf98a3",
"body": "* implemented reverse iterator for container nodes\n\n* added functions in basic_node for reverse iterations\n\n* updated api documentation pages\n\n* fixed links to documentation pages\n\n* fixed segmentation violation signal errors",
"is_bot": false,
"headline": "Support reverse iterations over sequence/mapping nodes (#440)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-08T11:41:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "02d8c660bdb0321560417dbbc8a713aa9117f033",
"body": "…#438)\n\n* removed unnecessary tag dispatcher structs\n\n* added container types as basic_node's member types\n\n* minor fixes for iterator class implementation\n\n* make iterators constructible & comparable with value constness is different from each other\n\n* run amalgamation\n\n* added cbegin() & cend() functions to basic_node class",
"is_bot": false,
"headline": "Make node iterators compatible with different value type const-ness (…",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-12-07T09:39:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f61110591dd24e8456101e556c4c400e531759ca",
"body": "* fixed invalid parse result when input YAML begins with a newline\n\n* added missing includes in example cpp file for get_value()\n\n* resolved warnings in building examples\n\n* [bot] run clang-format & amalgamation",
"is_bot": false,
"headline": "Fix parsing input which begins with a newline & indentation (#437)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-30T15:05:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4bfe1b339cd54296b499f532b7041ae7ca033af5",
"body": "* added g++4.8, 5, 6 for CI\n\n* updated clang versions to use in ci\n\n* updated the supported compilers list",
"is_bot": false,
"headline": "Add more GCC & Clang versions to use in GitHub Actions workflows (#436)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-30T06:30:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3ada062834c7aff9bd3a6e8fe077af05f476c60",
"body": "* separate block scalar content indent level into base and indicated indent levels in lexer\n\n* emit error if a following content line of a block scalar is less indented\n\n* emit error if a leading empty line is more indented than the first non-empty line in a block scalar\n\n* fixed parsing more-indented empty lines in block folded scalar contents in scalar_parser\n\n* fixed clang-tidy error",
"is_bot": false,
"headline": "Fixed bugs in parsing block scalars (#435)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-26T00:03:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca34fe9de249aebf60ad6dc905017b66807890c7",
"body": null,
"is_bot": false,
"headline": "Emit error if an anchor is specified to an alias (#434)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-24T08:42:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d0542df1e78b3f0928d6a10acd7e82c37f868f1",
"body": "* supported multiline plain scalars in lexer\n\n* support multiline plain scalars in scalar_parser\n\n* added more test cases for multiline plain scalars\n\n* silenced clang-tidy error\n\n* [bot] run clang-format & amalgamation\n\n* fixed clang-tidy errors",
"is_bot": false,
"headline": "Support parsing multiline plain scalars (#432)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-24T05:50:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "39b4435139064da0b6fd169c4388001d2bc92ffe",
"body": "… (#433)\n\n* updated Xcode versions to use with the macos-14 & macos-15 runner images\n\n* removed GA workflow jobs using the macos-12 runner image\n\n* updated the supported compilers list",
"is_bot": false,
"headline": "Update GitHub Actions workflow jobs using macOS related runner images…",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-24T03:45:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b6ac149fee11eb624c2ac823329c1ad836af096",
"body": "…f not forced with tag (#431)",
"is_bot": false,
"headline": "Stop throwing parse_error on string-to-int/float conversion failure i…",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-20T15:25:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "84f64db1b58e68df5bef61cfc3d955fdf120472c",
"body": null,
"is_bot": false,
"headline": "Resolve the C4800 warning when compiled with MSVC (#430)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-19T02:08:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2233025ef8ca2c0a2fdecec10f7777a97712bd83",
"body": "fkYAML version 0.3.14",
"is_bot": false,
"headline": "Merge tag 'v0.3.14' into develop",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-16T14:53:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "05dc36dc5fdf7b7326a6824bc2e2e06b5595f85c",
"body": null,
"is_bot": false,
"headline": "Merge branch 'release/v0.3.14'",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-16T14:52:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e34b19f6b250391157e985bacc7a19525687c90f",
"body": null,
"is_bot": false,
"headline": "set version to 0.3.14",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-16T14:51:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bd052ac5def74a4cdfd70494a8282dcd0c1e897c",
"body": null,
"is_bot": false,
"headline": "Exclude detail::unreachable() from coverage target (#426)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-16T09:36:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "248dcba5354d0b9ddf58e3ba033898b07f0cff1e",
"body": "… but necessary code (#425)\n\n* use std::unreachable() or the likes for dead but necessary codes like default case",
"is_bot": false,
"headline": "Use std::unreachable or similar compiler specific extensions for dead…",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-16T08:51:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf79a865871fc843b7bbbce17df6c1e6247fee8e",
"body": "* emit static_assertion errors on get_value() calls with reference, pointer and C-style array types\r\n\r\n* clarify type restrictions of get_value() and get_value_ref() APIs\r\n\r\n* run amalgamation",
"is_bot": false,
"headline": "Clarify type restrictions of get_value() & get_value_ref() APIs (#424)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-16T04:44:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f121341fb92c643919ca9d51bb28a006cf375872",
"body": "…(#423)",
"is_bot": false,
"headline": "Fix duplicate include error if clang-tidy helper file already exists …",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-13T12:46:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f59b1371bae9a708727c5c93114c3f97be03b61",
"body": "* added fkyaml_fwd.hpp to provide forward declarations\r\n\r\n* no include of cpp_config_macros.hpp in version_macros.hpp & added define_macros.hpp\r\n\r\n* updated amalgamation scripts and CONTRIBUTING.md\r\n\r\n* added descriptions about the header file for forward declarations",
"is_bot": false,
"headline": "Add forward declaration header (#422)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-12T13:14:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aaaff43fc06bbf71054cc810982d837ae1aa591a",
"body": "* support more STL container types in from_node functions\r\n\r\n* updated document page and example for get_value API\r\n\r\n* added tests for missing lines/branches\r\n\r\n* fixed compile & usan errors",
"is_bot": false,
"headline": "Support more STL types in from_node (#421)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-11-11T19:55:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4b2490c9cde2c67075aca2aa58d3ee7d9d426ac3",
"body": "* added internal numeric scalar conversions in from_node() functions\r\n\r\n* updated document/example for the basic_node::get_value() API\r\n\r\n* added node to uint64_t conversions",
"is_bot": false,
"headline": "Numeric scalar conversions inside basic_node::get_value API (#419)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-10-27T20:29:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f704b08801f2a9a50603ebcee5a70b31cadbee4",
"body": "* fixed clang-tidy(14.0.0) warnings somehow shadowed in using 18.1.3\r\n\r\n* [bot] run clang-format & amalgamation",
"is_bot": false,
"headline": "Fix somehow shadowed clang-tidy warnings (#418)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-10-27T04:56:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b18b27af29473b7248059b717322b1d68fb054aa",
"body": "* added newly added Xcode versions for macos-14 & macos-15 in macos.yml\r\n\r\n* updated supported compilers list",
"is_bot": false,
"headline": "GA workflow jobs with more AppleClang versions on macOS (#416)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-10-26T19:17:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f4f4ddb316d7ede43ed5e5c7b253bba20c7fe27",
"body": "* added -Wdeprecated compile option to unit test app builds\r\n\r\n* disable -Wdeprecated-literal-operator if clang compiler is detected",
"is_bot": false,
"headline": "Disable -Wdeprecated-literal-operator warnings (#417)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-10-26T16:53:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f2c442547dcaccc3313c2858dd5b67387b39706b",
"body": "* use clang-tidy installed in ubuntu-24.04 runner image\r\n\r\n* updated clang-format version to 18.1.3 (same as ubuntu-24.04)\r\n\r\n* updated runner image tags for CI jobs in workflows/ubuntu.yml\r\n\r\n* updated CONTRIBUTING.md regarding clang-format tool version\r\n\r\n* fixed undefined reference link error and coverage loss\r\n\r\n* [bot] run clang-format & amalgamation\r\n\r\n* fixed coverage loss again",
"is_bot": false,
"headline": "Update GA workflow jobs for ubuntu24.04 (#415)",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-10-26T09:21:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "31d375699beb0a354f96edf0f5b1fb69ba3916ba",
"body": "… (#414)\n\n* fixed false error on floating point value with the exponent\r\n\r\n* fixed wrong scalar value type detections from some other floating point number formats",
"is_bot": false,
"headline": "Fix wrong scalar value type detection from floating point value token…",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-10-20T05:00:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4ac8a28a9021a66cc3d26f554592c51ec00a2072",
"body": "fkYAML version 0.3.13",
"is_bot": false,
"headline": "Merge tag 'v0.3.13' into develop",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-10-14T08:07:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "01662d9d939e9ce7d91523f1fc9fe06af34ce365",
"body": null,
"is_bot": false,
"headline": "Merge branch 'release/v0.3.13'",
"author_name": "fktn",
"author_login": "fktn-k",
"committed_at": "2024-10-14T07:18:26Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 29,
"commits_last_year": 20,
"latest_release_at": "2026-07-18T16:30:34Z",
"latest_release_tag": "v0.4.3",
"releases_from_tags": false,
"days_since_last_push": 7,
"active_weeks_last_year": 4,
"days_since_latest_release": 18,
"mean_days_between_releases": 85.1
},
"artifacts": {
"collected": true,
"structure": [],
"declarations": []
},
"community": {
"has_readme": true,
"has_license": true,
"readme_badges": {
"hosts": [
"app.codacy.com",
"coveralls.io",
"github.com",
"shields.io"
],
"total": 11,
"header": 11,
"collected": true,
"has_inspect_badge": false
},
"has_description": true,
"has_contributing": true,
"health_percentage": 100,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": []
},
"popularity": {
"forks": 20,
"stars": 151,
"watchers": 6,
"fork_history": {
"days": [
{
"date": "2024-03-17",
"count": 1
},
{
"date": "2024-06-28",
"count": 1
},
{
"date": "2024-07-16",
"count": 1
},
{
"date": "2024-09-16",
"count": 1
},
{
"date": "2025-01-05",
"count": 1
},
{
"date": "2025-02-20",
"count": 1
},
{
"date": "2025-03-04",
"count": 1
},
{
"date": "2025-03-10",
"count": 1
},
{
"date": "2025-03-20",
"count": 1
},
{
"date": "2025-04-01",
"count": 1
},
{
"date": "2025-04-14",
"count": 1
},
{
"date": "2025-04-17",
"count": 2
},
{
"date": "2025-09-16",
"count": 1
},
{
"date": "2025-10-20",
"count": 1
},
{
"date": "2025-12-14",
"count": 1
},
{
"date": "2026-01-07",
"count": 1
},
{
"date": "2026-02-09",
"count": 1
},
{
"date": "2026-02-24",
"count": 1
},
{
"date": "2026-06-16",
"count": 1
}
],
"complete": true,
"collected": 20,
"total_forks": 20
},
"star_history": null,
"open_issues_and_prs": 1
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile",
"docs/Makefile",
"tools/natvis_generator/Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 613567,
"source_files_sampled": 198,
"oversized_source_files": 7,
"agent_instruction_files": [
".github/copilot-instructions.md"
],
"agent_instruction_max_bytes": 4619
},
"dependencies": {
"manifests": [
"docs/requirements.txt"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "gitpython",
"direct": false,
"version": "3.1.43",
"severity": "critical",
"ecosystem": "pypi",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-2f96-g7mh-g2hx",
"GHSA-3f7w-8rr8-f37f",
"GHSA-3rp5-jjmw-4wv2",
"GHSA-539m-9xh6-q6rr",
"GHSA-6p8h-3wgx-97gf",
"GHSA-7545-fcxq-7j24",
"GHSA-94p4-4cq8-9g67",
"GHSA-956x-8gvw-wg5v",
"GHSA-fjr4-x663-mwxc",
"GHSA-mv93-w799-cj2w"
],
"fixed_version": "3.1.57",
"advisory_count": 20,
"oldest_advisory_days": 102
},
{
"name": "click",
"direct": false,
"version": "8.1.7",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 7.2,
"advisory_ids": [
"PYSEC-2026-2132"
],
"fixed_version": "8.3.3",
"advisory_count": 1,
"oldest_advisory_days": 97
},
{
"name": "jinja2",
"direct": false,
"version": "3.1.4",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 8.8,
"advisory_ids": [
"GHSA-cpwx-vrp4-4pq7",
"GHSA-gmj6-6f8f-6699",
"GHSA-q2x7-8rv6-6q7h",
"PYSEC-2026-1471",
"PYSEC-2026-1472",
"PYSEC-2026-1475"
],
"fixed_version": "3.1.6",
"advisory_count": 6,
"oldest_advisory_days": 590
},
{
"name": "markdown",
"direct": false,
"version": "3.7",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-5wmx-573v-2qwq",
"PYSEC-2026-89"
],
"fixed_version": "3.8.1",
"advisory_count": 2,
"oldest_advisory_days": 153
},
{
"name": "urllib3",
"direct": false,
"version": "2.2.3",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-2xpw-w6gg-jr37",
"GHSA-38jv-5279-wg99",
"GHSA-48p4-8xcf-vxj5",
"GHSA-gm62-xv2j-4w53",
"GHSA-pq67-6m6q-mj2v",
"GHSA-qccp-gfcp-xxvc",
"PYSEC-2026-141",
"PYSEC-2026-1994",
"PYSEC-2026-1996",
"PYSEC-2026-1997"
],
"fixed_version": "2.7.0",
"advisory_count": 12,
"oldest_advisory_days": 413
},
{
"name": "idna",
"direct": false,
"version": "3.10",
"severity": "moderate",
"ecosystem": "pypi",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-65pc-fj4g-8rjx",
"PYSEC-2026-215"
],
"fixed_version": "3.15",
"advisory_count": 2,
"oldest_advisory_days": 78
},
{
"name": "pymdown-extensions",
"direct": false,
"version": "10.12",
"severity": "moderate",
"ecosystem": "pypi",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-62q4-447f-wv8h",
"GHSA-9xwg-3r6f-jcx2",
"GHSA-r6h4-mm7h-8pmq",
"PYSEC-2026-1825",
"PYSEC-2026-2999",
"PYSEC-2026-3609"
],
"fixed_version": "11.0.0",
"advisory_count": 6,
"oldest_advisory_days": 232
},
{
"name": "requests",
"direct": false,
"version": "2.32.3",
"severity": "moderate",
"ecosystem": "pypi",
"cvss_score": 5.5,
"advisory_ids": [
"GHSA-9hjg-9r4m-mvj7",
"GHSA-gc5v-m9x4-r6x2",
"PYSEC-2026-1872",
"PYSEC-2026-2275"
],
"fixed_version": "2.33.0",
"advisory_count": 4,
"oldest_advisory_days": 422
},
{
"name": "pygments",
"direct": false,
"version": "2.18.0",
"severity": "low",
"ecosystem": "pypi",
"cvss_score": 3.3,
"advisory_ids": [
"GHSA-5239-wwwm-4pmq",
"PYSEC-2026-2987"
],
"fixed_version": "2.20.0",
"advisory_count": 2,
"oldest_advisory_days": 136
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"low": 1,
"high": 4,
"critical": 1,
"moderate": 3
},
"advisory_count": 55,
"affected_count": 9,
"assessed_count": 34,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"pypi"
],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "babel",
"direct": false,
"version": "2.16.0",
"ecosystem": "pypi"
},
{
"name": "certifi",
"direct": false,
"version": "2024.12.14",
"ecosystem": "pypi"
},
{
"name": "charset-normalizer",
"direct": false,
"version": "3.4.0",
"ecosystem": "pypi"
},
{
"name": "click",
"direct": false,
"version": "8.1.7",
"ecosystem": "pypi"
},
{
"name": "colorama",
"direct": false,
"version": "0.4.6",
"ecosystem": "pypi"
},
{
"name": "ghp-import",
"direct": false,
"version": "2.1.0",
"ecosystem": "pypi"
},
{
"name": "gitdb",
"direct": false,
"version": "4.0.11",
"ecosystem": "pypi"
},
{
"name": "gitpython",
"direct": false,
"version": "3.1.43",
"ecosystem": "pypi"
},
{
"name": "idna",
"direct": false,
"version": "3.10",
"ecosystem": "pypi"
},
{
"name": "jinja2",
"direct": false,
"version": "3.1.4",
"ecosystem": "pypi"
},
{
"name": "markdown",
"direct": false,
"version": "3.7",
"ecosystem": "pypi"
},
{
"name": "markupsafe",
"direct": false,
"version": "3.0.2",
"ecosystem": "pypi"
},
{
"name": "mergedeep",
"direct": false,
"version": "1.3.4",
"ecosystem": "pypi"
},
{
"name": "mkdocs",
"direct": false,
"version": "1.6.1",
"ecosystem": "pypi"
},
{
"name": "mkdocs-get-deps",
"direct": false,
"version": "0.2.0",
"ecosystem": "pypi"
},
{
"name": "mkdocs-git-revision-date-localized-plugin",
"direct": false,
"version": "1.3.0",
"ecosystem": "pypi"
},
{
"name": "mkdocs-material",
"direct": false,
"version": "9.5.49",
"ecosystem": "pypi"
},
{
"name": "mkdocs-material-extensions",
"direct": false,
"version": "1.3.1",
"ecosystem": "pypi"
},
{
"name": "packaging",
"direct": false,
"version": "24.2",
"ecosystem": "pypi"
},
{
"name": "paginate",
"direct": false,
"version": "0.5.7",
"ecosystem": "pypi"
},
{
"name": "pathspec",
"direct": false,
"version": "0.12.1",
"ecosystem": "pypi"
},
{
"name": "platformdirs",
"direct": false,
"version": "4.3.6",
"ecosystem": "pypi"
},
{
"name": "pygments",
"direct": false,
"version": "2.18.0",
"ecosystem": "pypi"
},
{
"name": "pymdown-extensions",
"direct": false,
"version": "10.12",
"ecosystem": "pypi"
},
{
"name": "python-dateutil",
"direct": false,
"version": "2.9.0.post0",
"ecosystem": "pypi"
},
{
"name": "pytz",
"direct": false,
"version": "2024.2",
"ecosystem": "pypi"
},
{
"name": "pyyaml",
"direct": false,
"version": "6.0.2",
"ecosystem": "pypi"
},
{
"name": "pyyaml-env-tag",
"direct": false,
"version": "0.1",
"ecosystem": "pypi"
},
{
"name": "regex",
"direct": false,
"version": "2024.11.6",
"ecosystem": "pypi"
},
{
"name": "requests",
"direct": false,
"version": "2.32.3",
"ecosystem": "pypi"
},
{
"name": "six",
"direct": false,
"version": "1.17.0",
"ecosystem": "pypi"
},
{
"name": "smmap",
"direct": false,
"version": "5.0.1",
"ecosystem": "pypi"
},
{
"name": "urllib3",
"direct": false,
"version": "2.2.3",
"ecosystem": "pypi"
},
{
"name": "watchdog",
"direct": false,
"version": "6.0.0",
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 34,
"direct_count": 0,
"indirect_count": 34
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 321,
"open_issues": 1,
"closed_ratio": 0.988,
"closed_issues": 85,
"closed_unmerged_prs": 6
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "fktn-k",
"commits": 948,
"avatar_url": "https://avatars.githubusercontent.com/u/141519741?v=4"
},
{
"type": "User",
"login": "sndth",
"commits": 13,
"avatar_url": "https://avatars.githubusercontent.com/u/75499293?v=4"
},
{
"type": "User",
"login": "stephenwhittle",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/7070635?v=4"
},
{
"type": "User",
"login": "johan-gson",
"commits": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/32481323?v=4"
},
{
"type": "User",
"login": "edmundkrain",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/154244309?v=4"
},
{
"type": "User",
"login": "rioki",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/130296?v=4"
},
{
"type": "User",
"login": "mgodf7",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/88255068?v=4"
}
],
"contributors_sampled": 7,
"top_contributor_share": 0.972
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"codeql.yml",
"coverage.yml",
"format_check.yml",
"macos.yml",
"publish_docs.yml",
"release_package.yml",
"ubuntu.yml",
"windows.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": true,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"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": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 7,
"reason": "19 out of 25 merged PRs checked by a CI test -- score normalized to 7",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 2,
"reason": "badge detected: InProgress",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 4,
"reason": "Found 13/30 approved changesets -- score normalized to 4",
"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": 10,
"reason": "20 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not 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": 9,
"reason": "SAST tool detected but not run on all commits",
"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": 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": 0,
"reason": "34 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "b0a41e859c0c0b77ef718d95c2959a9cc21401fa",
"ran_at": "2026-08-06T02:40:34Z",
"aggregate_score": 4.6,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": true,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"recent_prs": {
"merged_7d": 0,
"decided_7d": 0,
"merged_30d": 9,
"authors_30d": 3,
"decided_30d": 11,
"sample_size": 60,
"window_days": 30,
"sample_exhausted": false,
"authors_probed_30d": 3,
"newcomer_merged_30d": 0,
"bot_prs_excluded_30d": 0,
"newcomer_authors_30d": 1,
"newcomer_decided_30d": 1
},
"ci_last_run_at": "2026-08-03T02:33:53Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-29T22:23:00Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 404,
"created_at": "2024-09-30T23:21:03Z",
"last_comment_at": "2025-02-09T02:09:26Z",
"last_comment_author": "fktn-k"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/fktn-k/fkYAML",
"host": "github.com",
"name": "fkYAML",
"owner": "fktn-k"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": "The weighted overall 63 is calibrated to 71 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 63,
"calibrated": 71,
"calibration": "2026-08-02"
}
}
],
"value": 71,
"inputs": {
"security": 57,
"vitality": 70,
"community": 70,
"governance": 41,
"calibration": "2026-08-02",
"engineering": 81,
"ai_readiness": 67,
"weighted_overall_raw": 63
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 70,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 61,
"inputs": {
"commits_last_year": 20,
"human_commit_share": 1,
"days_since_last_push": 7,
"active_weeks_last_year": 4
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 7 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 7
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "4/52 weeks with commits",
"points": 2.8,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 4
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "20 commits in the last year",
"points": 11.9,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 20
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "20 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 83,
"inputs": {
"releases_count": 29,
"latest_release_tag": "v0.4.3",
"releases_from_tags": false,
"days_since_latest_release": 18,
"mean_days_between_releases": 85.1
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "29 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 29
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 18 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 18
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~85.1 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 85.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": "exceptional",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 7,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 7 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 7
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "good",
"name": "Community & Adoption",
"value": 70,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "moderate",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"forks": 20,
"stars": 151,
"watchers": 6,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "151 stars",
"points": 35.3,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 151
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "20 forks",
"points": 10.7,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 20
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "6 watchers",
"points": 3.9,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 6
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": 11,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"readme_badge_services": [
"app.codacy.com",
"coveralls.io",
"github.com",
"shields.io"
],
"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 (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"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": 13.5,
"status": "met",
"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
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "weak",
"name": "Sustainability & Governance",
"value": 41,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 19,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 7,
"top_contributor_share": 0.972
},
"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 97% of commits",
"points": 0.6,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 97
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "7 contributors",
"points": 9.5,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 7
}
}
],
"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": null,
"notes": [],
"value": 77,
"inputs": {
"merged_prs": 321,
"open_issues": 1,
"closed_issues": 85,
"prs_merged_7d": 0,
"prs_decided_7d": 0,
"prs_merged_30d": 9,
"prs_decided_30d": 11,
"issue_closed_ratio": 0.988,
"closed_unmerged_prs": 6,
"first_time_authors_30d": 1,
"first_time_prs_merged_30d": 0,
"first_time_prs_decided_30d": 1
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "99% of issues closed",
"points": 41.5,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 99
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "321/327 decided PRs merged",
"points": 29.4,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 321,
"decided": 327
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "0/1 first-time contributors' PRs merged in 30d",
"points": 0,
"status": "missed",
"details": [
{
"code": "newcomer_prs_merged",
"params": {
"days": 30,
"merged": 0,
"decided": 1
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 13/30 approved changesets -- score normalized to 4",
"points": 6,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"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": 32,
"inputs": {
"followers": 7,
"owner_type": "User",
"is_verified": null,
"owner_login": "fktn-k",
"public_repos": 2,
"account_age_days": 1096
},
"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 fktn-k",
"points": 6.5,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 7,
"login": "fktn-k"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "2 public repos, account ~3 yr old",
"points": 9.5,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 2
}
},
{
"code": "account_age_years",
"params": {
"years": 3
}
}
],
"max_points": 25
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "excellent",
"name": "Engineering Quality",
"value": 81,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "8 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 8
}
}
],
"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": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "19 out of 25 merged PRs checked by a CI test -- score normalized to 7",
"points": 14,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "exceptional",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"cmake",
"cpp",
"cpp11",
"cpp14",
"cpp17",
"cpp20",
"header-only",
"header-only-library",
"yaml",
"yaml-parser",
"fkyaml",
"cpp23",
"single-header"
],
"has_wiki": true,
"homepage": "https://fktn-k.github.io/fkYAML/",
"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://fktn-k.github.io/fkYAML/",
"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": "13 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 13
}
}
],
"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": 57,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "weak",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"packaging"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 46,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 4.6
},
"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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "19 out of 25 merged PRs checked by a CI test -- score normalized to 7",
"points": 1.8,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "badge detected: InProgress",
"points": 0.5,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 13/30 approved changesets -- score normalized to 4",
"points": 3,
"status": "partial",
"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": "20 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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 detected but not run on all commits",
"points": 4.5,
"status": "partial",
"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": "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": "34 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "exceptional",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 34 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 34
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 55,
"affected_packages": 9,
"assessed_packages": 34,
"unassessed_packages": 0,
"affected_by_severity": "critical 1, high 4, moderate 3, low 1",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "exceptional",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 34,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "exceptional",
"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"
],
"commit_weight_rule": {
"min_commits": 50,
"min_commit_share": 0.1
},
"review_only_matches": 0,
"below_threshold_exposures": [],
"assessed_self_published_locations": 3
},
"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": "good",
"name": "AI Readiness",
"value": 67,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.75,
"agent_instruction_files": [
".github/copilot-instructions.md"
],
"agent_instruction_max_bytes": 4619
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": ".github/copilot-instructions.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".github/copilot-instructions.md"
}
}
],
"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": "75 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 75,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 51,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile",
"docs/Makefile",
"tools/natvis_generator/Makefile"
],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile, docs/Makefile, tools/natvis_generator/Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile, docs/Makefile, tools/natvis_generator/Makefile"
}
}
],
"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": "C++ (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "C++"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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": "exceptional",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 98,
"inputs": {
"primary_language": "C++",
"largest_source_bytes": 613567,
"source_files_sampled": 198,
"oversized_source_files": 7
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "C++ (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "C++"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "7/198 source files over 60KB",
"points": 53.1,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 198,
"oversized": 7
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "weak",
"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? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"top": [],
"labels": [],
"scores": {
"library": 2
},
"primary": null,
"evidence": [
{
"tier": "description",
"label": "library",
"source": "description:library",
"weight": 2
}
],
"artifacts": [],
"confidence": "none",
"host_extension": false,
"runs_as_process": false,
"consumed_by_code": false
},
"metrics_version": "2.5.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-08-06T02:40:51.863768Z",
"schema_version": "0.31.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/fktn-k/fkYAML.svg",
"full_name": "fktn-k/fkYAML",
"license_state": "standard",
"license_spdx": "MIT"
}