Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [
"fuel",
"blockchain",
"fuelvm"
],
"is_fork": false,
"size_kb": 7866,
"has_wiki": false,
"homepage": "https://fuellabs.github.io/fuel-specs/master",
"languages": {},
"pushed_at": "2026-04-14T08:54:16Z",
"created_at": "2020-08-27T21:08:42Z",
"owner_type": "Organization",
"updated_at": "2026-07-24T05:28:56Z",
"description": "📝 Specifications for the Fuel protocol and the FuelVM, a blazingly fast blockchain VM.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "master",
"license_spdx_raw": "Apache-2.0",
"primary_language": null,
"significant_languages": []
},
"owner": {
"blog": "https://fuel.network",
"name": "Fuel Labs",
"type": "Organization",
"login": "FuelLabs",
"company": null,
"location": "Ethereum",
"followers": 6521,
"avatar_url": "https://avatars.githubusercontent.com/u/55993183?v=4",
"created_at": "2019-09-30T15:56:25Z",
"is_verified": null,
"public_repos": 208,
"account_age_days": 2490
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2023-12-28T18:13:54Z"
}
],
"recent_commits": [
{
"oid": "dd11147b8d7f0ba9d6ae3bbdab8909a4027619f6",
"body": "Discussed in #517. VM impl PR:\nhttps://github.com/FuelLabs/fuel-vm/pull/982\n\nAdds a minimal set of opcodes required to operate with dynamic\n(variable-sized) storage slots. More instructions can be added later to\nspeed up common operations, as discussed in #517.\n\nThis PR marks sequential bulk read an\n[…]\n sized slots.\n\n### Before requesting review\n- [x] I have reviewed the code myself\n\n---------\n\nCo-authored-by: Brandon Kite <brandonkite92@gmail.com>\nCo-authored-by: Igor Rončević <ironcev@hotmail.com>",
"is_bot": false,
"headline": "Dynamic storage opcodes: base instructions (#640)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2026-04-14T08:53:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2f7abd93b3751dcdbe07fe9e5259af2cb96f0be2",
"body": "https://github.com/FuelLabs/fuel-specs/issues/617\n\nVM PR : https://github.com/FuelLabs/fuel-vm/pull/872\n\n### Before requesting review\n- [x] I have reviewed the code myself\n\n### After merging, notify other teams\n\n[Add or remove entries as needed]\n\n- [ ] [Rust SDK](https://github.com/FuelLabs/fuels-rs\n[…]\nQUEST.yml&title=%5BRequest%5D%3A+)\n(for out-of-organization contributors, the person merging the PR will do\nthis)\n- [ ] Someone else?\n\n---------\n\nCo-authored-by: Brandon Kite <brandonkite92@gmail.com>",
"is_bot": false,
"headline": "Add owner policy (#618)",
"author_name": "AurelienFT",
"author_login": "AurelienFT",
"committed_at": "2025-09-26T13:42:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "de99ceb81d0ba8a13b670690e27d876806db7e1a",
"body": "Introduce a new GM flag to retrieve the gas price of the block, enabling\nthe functionality for gas price access inside of scripts or contracts.\n\ncloses #631",
"is_bot": false,
"headline": "Add GM flag to fetch the current gas price (#634)",
"author_name": "Brandon Kite",
"author_login": "Voxelot",
"committed_at": "2025-09-11T01:21:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2869996dd52c2381f879dfc23f458e64f01750c0",
"body": "Closes #627. VM issue: https://github.com/FuelLabs/fuel-vm/issues/857.\nVM PR: https://github.com/FuelLabs/fuel-vm/pull/925.\n\nThe design is quite similar of the RISC-V of the same name. `JAL $ra $rb\nimm` stores the address of the next instruction to `$ra`, so that\nregister can be used as a return add\n[…]\nhere jnzf jumps to\npopl 0b11110 // Restore return_address and local{1,2,3}\njal $zero $return_addr 0 // Return from subroutine\n```\n\n### Before requesting review\n- [x] I have reviewed the changes myself",
"is_bot": false,
"headline": "Jump-and-link instruction (#630)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2025-07-28T15:56:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "64bfa19477d80ce8c7f23b3b1841cebdb4c9c44a",
"body": "When implemention `niop`, I discovered that the subtraction via `sub`\ninstruction doesn't work for narrower integer types, as the result will\nnot be properly truncated if the operation overflows. This PR adds\nsubtraction mode, corresponding the the commit\nhttps://github.com/FuelLabs/fuel-vm/pull/922\n[…]\nin the fuel-vm branch. SInce the `niop` isn't implemented yet, we can\nfreely change the operation table to keep it more consistent.\n\n\n### Before requesting review\n- [x] I have reviewed the code myself",
"is_bot": false,
"headline": "Add SUB operation to NIOP (#637)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2025-05-19T08:28:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fbc14c73205651653ca9d1999f06ee98bd4c29f2",
"body": "Add documentation for the new GTF expiration policy field in the\ntransaction format.\n\nrelated: #616\n\nCo-authored-by: Anderson Arboleya <anderson@arboleya.me>",
"is_bot": false,
"headline": "Document GTF for expiration policy (#636)",
"author_name": "Brandon Kite",
"author_login": "Voxelot",
"committed_at": "2025-04-18T11:04:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bfbc667f1a0e26d61bc52d04de9bd136ea5b5597",
"body": null,
"is_bot": false,
"headline": "Add new GTF arguments for upload, upgrade, and blob transactions (#635)",
"author_name": "Brandon Kite",
"author_login": "Voxelot",
"committed_at": "2025-04-17T22:42:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d22608f317b940f5164d1a50a5ca5e87a50051a",
"body": null,
"is_bot": false,
"headline": "Changed `message_id` to `messageId` in the `messageTypes` (#633)",
"author_name": "Peter Smith",
"author_login": "petertonysmith94",
"committed_at": "2025-04-11T14:12:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5825aaff2e7df14703df6c0b8bfc945516cf2b3b",
"body": null,
"is_bot": false,
"headline": "chore: fix BLDD instruction table (#625)",
"author_name": "Luiz Estácio | stacio.eth",
"author_login": "luizstacio",
"committed_at": "2025-03-17T20:40:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cad8e69789173f7f56a20a54c5eea4f1f0854b60",
"body": "Closes #626. VM PRs: https://github.com/FuelLabs/fuel-vm/pull/922 and\nhttps://github.com/FuelLabs/fuel-vm/pull/923.\n\nImplementing correct overflow handling for narrow integer types (`u8`,\n`u16`, `u32`) is tedious, error prone, and needs lots of instructions.\nLikewise, memory load/store operations wi\n[…]\nLabs/devrel-requests/issues/new?assignees=&labels=new+request&projects=&template=NEW-REQUEST.yml&title=%5BRequest%5D%3A+)\n(for out-of-organization contributors, the person merging the PR will do\nthis)",
"is_bot": false,
"headline": "Narrow integer instructions (#628)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2025-03-11T13:39:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6be5f5b8443f034eb76321329cc68c2c57fd634f",
"body": "Some minor adjustments that arose from code review done with @rafal-ch.\r\n\r\n### Before requesting review\r\n- [x] I have reviewed the code myself",
"is_bot": false,
"headline": "Improve notes on RET, RETD, GTF opcodes (#624)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2025-02-10T10:58:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cca2e8cd2e475263c909cb902620b5ff143713ec",
"body": "https://github.com/FuelLabs/fuel-specs/issues/615\n\nVM PR : https://github.com/FuelLabs/fuel-vm/pull/870\n\n### Before requesting review\n- [x] I have reviewed the code myself\n\n### After merging, notify other teams\n\n[Add or remove entries as needed]\n\n- [ ] [Rust SDK](https://github.com/FuelLabs/fuels-rs\n[…]\nllani <43716372+rymnc@users.noreply.github.com>\nCo-authored-by: Hannes Karppila <2204863+Dentosal@users.noreply.github.com>\nCo-authored-by: Rafał Chabowski <88321181+rafal-ch@users.noreply.github.com>",
"is_bot": false,
"headline": "Add ZK opcodes definition (#619)",
"author_name": "AurelienFT",
"author_login": "AurelienFT",
"committed_at": "2025-01-16T15:23:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cebd4c56072180433f52140a4374800b5da393d1",
"body": "In the ABI spec, a `typeArgument` is missing the `name` property, as\r\nshown\r\n[here](https://github.com/FuelLabs/sway/blob/0ccf47bbf991617af4e7f238f704a8ab5de5d184/forc-plugins/forc-client/test/data/deployed_script/deployed_script-loader-abi.json#L168-L173).\r\n\r\n### Before requesting review\r\n- [x] I h\n[…]\nsues/new?assignees=&labels=new+request&projects=&template=NEW-REQUEST.yml&title=%5BRequest%5D%3A+)\r\n(for out-of-organization contributors, the person merging the PR will do\r\nthis)\r\n- [ ] Someone else?",
"is_bot": false,
"headline": "Add missing type argument name from ABI spec (#620)",
"author_name": "Daniel Bate",
"author_login": "danielbate",
"committed_at": "2024-12-06T11:05:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7a2aa80c7d8f19e2eb6e5ee94171a40eab44c3c0",
"body": "https://github.com/FuelLabs/fuel-specs/issues/593\n\nVM PR : https://github.com/FuelLabs/fuel-vm/pull/871\n\n### Before requesting review\n- [x] I have reviewed the code myself\n\n### After merging, notify other teams\n\n[Add or remove entries as needed]\n\n- [ ] [Rust SDK](https://github.com/FuelLabs/fuels-rs\n[…]\n/issues/new?assignees=&labels=new+request&projects=&template=NEW-REQUEST.yml&title=%5BRequest%5D%3A+)\n(for out-of-organization contributors, the person merging the PR will do\nthis)\n- [ ] Someone else?",
"is_bot": false,
"headline": "Add policy expiration (#616)",
"author_name": "AurelienFT",
"author_login": "AurelienFT",
"committed_at": "2024-11-28T13:17:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f9e6b9e42d0375e5d9200adbfe714264e175b27b",
"body": "### Description\n\nThis PR fixes the documentation of the `SUB` and `SUBI` instructions and\nmakes it follow the same pattern as the `ADD` and `ADDI` instructions.\n\nThe documentation was wrongly using the term \"overflow\" in the \"Notes\"\nof those two instructions, instead of \"underflow\" (as used in the l\n[…]\nw the instruction).\n\nThe PR simply removes the erroneous description from the \"Notes\" and\nleaves them empty, as in `ADD` and `ADDI`.\n\n### Before requesting review\n- [x] I have reviewed the code myself",
"is_bot": false,
"headline": "Remove erroneous \"Notes\" from `SUB` and `SUBI` instructions (#613)",
"author_name": "Igor Rončević",
"author_login": "ironcev",
"committed_at": "2024-10-23T22:25:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6d91f86215ad7f2660412b93b7e3755a2a6a7adb",
"body": "Closes https://github.com/FuelLabs/fuel-specs/issues/456\r\n\r\nRequires #611\r\nVM PR https://github.com/FuelLabs/fuel-vm/pull/848\r\n\r\n### Before requesting review\r\n- [x] I have reviewed the code myself\r\n\r\n---------\r\n\r\nCo-authored-by: Brandon Kite <brandonkite92@gmail.com>",
"is_bot": false,
"headline": "LDC support in predicates (#612)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-10-23T13:00:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f0b29bc17a860a9793b974d490bbbf86d06f1dd8",
"body": "VM PR https://github.com/FuelLabs/fuel-vm/pull/849",
"is_bot": false,
"headline": "Add LDC mode 2, which allows code from memory (#611)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-10-15T13:37:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "799d6aec5eb4725e268d841264f9d8ebc45b7469",
"body": "### Before requesting review\r\n- [x] I have reviewed the code myself",
"is_bot": false,
"headline": "Use right naming for receipts as in the implementation (#610)",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2024-09-16T15:10:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b35a2bfdb88a3e5309e0c7746d253aa815e02260",
"body": "The main reason for removing it from canonical serialization is to avoid\r\naffecting the block ID for different panic reasons. The primary goal is\r\njust to know that some operation was done incorrectly; what exactly\r\nfailed is less important. It reduces the chance of getting different\r\nblocks within one panic.\r\n\r\nRelated VM change: https://github.com/FuelLabs/fuel-vm/pull/826\r\n\r\n### Before requesting review\r\n- [x] I have reviewed the code myself",
"is_bot": false,
"headline": "Skip panic reason in the canonical form (#609)",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2024-09-13T11:38:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aece3d369e93210aa318e3d9a0366792d28e3ec1",
"body": "### Description\r\n\r\nSome of the `wqxx` and `wdxx` instructions had a wrong documentation,\r\nvery likely due the copy-pasting of the documentation of `wdxx`\r\ninstructions when documenting their `wqxx` counterparts.\r\n\r\n### Before requesting review\r\n- [x] I have reviewed the code myself",
"is_bot": false,
"headline": "Fix wrong documentation of some `wq/wdxx` instructions (#604)",
"author_name": "Igor Rončević",
"author_login": "ironcev",
"committed_at": "2024-08-31T12:53:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f182c5525cc5d0394c235f28f2a93a622ec75f2d",
"body": "Work towards https://github.com/FuelLabs/fuel-specs/issues/589. The VM\r\nPR https://github.com/FuelLabs/fuel-vm/pull/780 contains a working\r\nimplementation.\r\n\r\nTo allow contracts larger than the contract size limit, and to allow\r\nupgradability, we'll be adding a new tx type that's just a bunch of\r\nby\n[…]\nZ` and `BLDD` and the new blob mode\r\nfor `LDC` closely follow how `CSIZ`, `LDC` and `CCP` work, but only\r\noperation on blob data.\r\n\r\n### Before requesting review\r\n- [x] I have reviewed the code myself",
"is_bot": false,
"headline": "Blob tx and instructions (#592)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-07-31T16:20:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6ebbe21dce65e19c93e4bf87317c265c9e13d565",
"body": "When using EdDSA (Ed25519) to verify a signature, the payload is not\r\nlimited by 32 bytes.\r\n\r\n### After merging, notify other teams\r\n\r\n- [ ] [Rust SDK](https://github.com/FuelLabs/fuels-rs/)\r\n- [ ] [Sway compiler](https://github.com/FuelLabs/sway/)\r\n- [ ] [Platform\r\ndocumentation](https://github.com\n[…]\n](https://github.com/FuelLabs/fuel-connectors/)\r\n\r\n---------\r\n\r\nCo-authored-by: Hannes Karppila <2204863+Dentosal@users.noreply.github.com>\r\nCo-authored-by: Hannes Karppila <hannes.karppila@gmail.com>",
"is_bot": false,
"headline": "change ed19 verify operator, to comply with ed spec (#600)",
"author_name": "Luiz Estácio | stacio.eth",
"author_login": "luizstacio",
"committed_at": "2024-07-29T21:24:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "afb3c8e79053ce654df913bf379794c054960aec",
"body": "Found while reviewing https://github.com/FuelLabs/fuels-rs/pull/1472.\n\n### Before requesting review\n- [x] I have reviewed the code myself",
"is_bot": false,
"headline": "Fix `cfei -> cfe` typo in `instruction-set.md` (#601)",
"author_name": "Oleksii Filonenko",
"author_login": "Br1ght0ne",
"committed_at": "2024-07-25T10:20:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b095eb2bea53cc760ab66b337aeec928ba72f842",
"body": "https://github.com/FuelLabs/sway/issues/5151\r\nhttps://github.com/FuelLabs/sway/issues/5952\r\nhttps://github.com/FuelLabs/sway/issues/5954\r\n\r\n[Rendered\r\nfile](https://github.com/FuelLabs/fuel-specs/blob/882a860a4aa11ba8c6f91085a0ab4d483c6ce3fb/src/abi/json-abi-format.md)\r\n\r\nWith the changes proposed i\n[…]\nsues/new?assignees=&labels=new+request&projects=&template=NEW-REQUEST.yml&title=%5BRequest%5D%3A+)\r\n(for out-of-organization contributors, the person merging the PR will do\r\nthis)\r\n- [ ] Someone else?",
"is_bot": false,
"headline": "Adds concrete types distinction to JSON ABI. (#599)",
"author_name": "Marcos Henrich",
"author_login": "esdrubal",
"committed_at": "2024-07-24T14:17:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "63844b515363a96c0cf58e6dffb6385966948cf6",
"body": "[#5151](https://github.com/FuelLabs/sway/issues/5151)\r\n[#5952](https://github.com/FuelLabs/sway/issues/5952)\r\n[#5954](https://github.com/FuelLabs/sway/issues/5954)\r\n\r\nAdds specification for how hashes based ids are generated from a string\r\nrepresentation of types.\r\n\r\nUpdates `json-abi-format.md` wit\n[…]\nsues/new?assignees=&labels=new+request&projects=&template=NEW-REQUEST.yml&title=%5BRequest%5D%3A+)\r\n(for out-of-organization contributors, the person merging the PR will do\r\nthis)\r\n- [ ] Someone else?",
"is_bot": false,
"headline": "Updates ABI spec with hash based ids, versions and program type. (#596)",
"author_name": "Marcos Henrich",
"author_login": "esdrubal",
"committed_at": "2024-07-13T08:38:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b40d87d2515727188b9ae2dd23602316c50519c0",
"body": "Clarifies for all operations that pointer operation overflow (over\r\n`Word::MAX`) and over `VM_MAX_RAM` both panic. Unifies the formatting\r\nfor this.\r\n\r\n### Before requesting review\r\n- [x] I have reviewed the code myself\r\n\r\nCo-authored-by: Green Baneling <XgreenX9999@gmail.com>",
"is_bot": false,
"headline": "Clean up overflow conditions (#588)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-07-01T18:48:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c778d521b9a689aaea5ce5eccdc292e046d81aad",
"body": "Clarify inaccessible memory part.\r\n\r\n---------\r\n\r\nCo-authored-by: Hannes Karppila <2204863+Dentosal@users.noreply.github.com>",
"is_bot": false,
"headline": "Fix confusion regarding inaccessible memory (#594)",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2024-06-28T14:53:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "092a5e80dfa6b2984bd0f9839d9a04c7904c38a5",
"body": null,
"is_bot": false,
"headline": "Fix wording where \"unspecified\" was used for defined behavior (#586)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-06-03T08:16:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7637befac0fe3f6fa3adb6a979ed74bba2cdda65",
"body": "VM PR: https://github.com/FuelLabs/fuel-vm/pull/743\r\n\r\nCalled contracts shouldn't inherit the `$flag` register.\r\n\r\n### Before requesting review\r\n- [x] I have reviewed the code myself",
"is_bot": false,
"headline": "Zero $flag on call (#585)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-06-03T07:58:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc3623c461ae1ecc66317a3cbe7786c63a0b1f2a",
"body": "Introduced here: https://github.com/FuelLabs/fuel-vm/pull/736\r\n\r\n### Before requesting review\r\n- [x] I have reviewed the code myself",
"is_bot": false,
"headline": "Pad CallFrame::codesize to word boundary (#584)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-05-28T17:46:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ed5c58c4aad718409888869e2da44f573a1fa8e",
"body": "… (#583)\n\nVM PR: https://github.com/FuelLabs/fuel-vm/pull/737\r\n\r\nWhat is says on the tin. This is a small but breaking change. It's\r\nunlikely to cause any breakage, as no Sway code or code constructed\r\nusing the fuel-asm helper functions is affected.\r\n\r\nThis change is originating from an audit repor\n[…]\ny unintentional behavior of the unused part of instruction is\r\nignored.\r\n\r\n### Before requesting review\r\n- [x] I have reviewed the code myself\r\n\r\nCo-authored-by: Green Baneling <XgreenX9999@gmail.com>",
"is_bot": false,
"headline": "Clarify that non-zero reserved part of an instruction causes vm panic…",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-05-27T12:29:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "525f6a61ee87b2552a5e5f42ec8e5108ebb26074",
"body": "### Before requesting review\r\n- [x] I have reviewed the code myself",
"is_bot": false,
"headline": "Fix some types and wordings (#582)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-05-27T12:28:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9788fffb48119a4a8f1915aef6e2583b67f5f083",
"body": "The `TxPointer.txIndex` is `u16`, so `txCount` can't be more than `u16`.\r\n\r\n<img width=\"444\" alt=\"image\"\r\nsrc=\"https://github.com/FuelLabs/fuel-specs/assets/18346821/abfaedd5-f475-4b64-a43e-d3c4e886b53a\">\r\n\r\nThe maximum number of receipts is limited to `255` per transaction.\r\nAllowing only `u16` tra\n[…]\nns we can have a maximum\r\nof `255 * u16::MAX` that is less than `u32`.\r\n\r\n### Before requesting review\r\n- [x] I have reviewed the code myself\r\n\r\n### After merging, notify other teams\r\n\r\n- [x] [Bridge]",
"is_bot": false,
"headline": "Use `u16` for `txCount` and `u32` for `message_receipt_count` (#578)",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2024-04-29T10:48:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b7c1a7e8ed5b069a40b27ab6369a92ef364c7cb7",
"body": "Something was missed in this\r\n[PR](https://github.com/FuelLabs/fuel-specs/pull/571) and this fixes it.\r\n\r\n### Before requesting review\r\n- [x] I have reviewed the code myself\r\n\r\n### After merging, notify other teams\r\n\r\n- [ ] [Rust SDK](https://github.com/FuelLabs/fuels-rs/)\r\n- [ ] [Sway compiler](htt\n[…]\nsues/new?assignees=&labels=new+request&projects=&template=NEW-REQUEST.yml&title=%5BRequest%5D%3A+)\r\n(for out-of-organization contributors, the person merging the PR will do\r\nthis)\r\n- [ ] Someone else?",
"is_bot": false,
"headline": "Fix false claim that message count is included on header (#577)",
"author_name": "Mitchell Turner",
"author_login": "MitchTurner",
"committed_at": "2024-04-26T03:58:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e09a271abda1705a2ce045e64d1e26bbe21ae62f",
"body": null,
"is_bot": false,
"headline": "Add info about `event_inbox_root` on the header (#571)",
"author_name": "Mitchell Turner",
"author_login": "MitchTurner",
"committed_at": "2024-04-23T17:14:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0dbcea0967a95c135d838afa305d24e4ecc8680e",
"body": "What is says on the tin.\r\n\r\n### Before requesting review\r\n- [x] I have reviewed the code myself",
"is_bot": false,
"headline": "Remove unused MEM_MAX_ACCESS_SIZE constant (#574)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-04-22T16:55:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0cb0a4528567c1c7a59b3da3c72e6456c2ba9261",
"body": "Part of https://github.com/FuelLabs/fuel-core/issues/1804\r\n\r\nAdds a template for the PR description, containing a handy checklist.",
"is_bot": false,
"headline": "Add PR template (#569)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-04-15T16:39:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aa06d95d60705c5f56002d1c26e8f05c40553c83",
"body": "…#570)\n\nCorresponding implementation:\r\nhttps://github.com/FuelLabs/fuel-vm/pull/720\r\nThe change adds a new `Upload` transaction that allows uploading huge\r\nbyte code on chain subsection by subsection.\r\n\r\nThe `Upload` transaction is chargeable and is twice as expensive as the\r\n`Create` transaction. Anyone can submit this transaction.\r\n\r\nThe specification contains more description about the flow.",
"is_bot": false,
"headline": "A new `Upload` transaction to upload the huge bytecode on the chain (…",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2024-04-15T15:22:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f50504ada016f9075631fb5379c269231c7f611",
"body": "Corresponding implementation:\r\nhttps://github.com/FuelLabs/fuel-vm/pull/707\r\n\r\nThe change adds a new `Upgrade` transaction that allows upgrading either\r\nconsensus parameters or state transition function used by the network to\r\nproduce future blocks.\r\n\r\nThe purpose of the upgrade is defined by the `U\n[…]\nr a predicate.\r\n\r\nWe use postcard algorithm to serialize and deserialize consensus\r\nparameters during the upgrade. This algorithm works with numbers in a\r\nmore sufficient way and compresses them well.",
"is_bot": false,
"headline": "Added a new `Upgrade` transaction to perform a network upgrade (#567)",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2024-04-09T13:46:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "722eedc5d1d87470c80e2eaf97b76d4cc709a286",
"body": "VM PR: https://github.com/FuelLabs/fuel-vm/pull/697",
"is_bot": false,
"headline": "Add new access rules from stack-heap separation (#566)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-04-05T10:05:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c34165264ace17eddd3876be91f667d45583b24c",
"body": "…om the witness (#563)\n\nCorresponding change on VM side\r\nhttps://github.com/FuelLabs/fuel-vm/pull/709.\r\n\r\nRemoved the `bytecodeLength` field since this information is available\r\nfrom the witness. The transaction still will be unique and unchanged\r\nbecause of the `contract_id` from `Output::ContractCreated`.",
"is_bot": false,
"headline": "Removed `bytecodeLength` field since this information is available fr…",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2024-03-26T14:37:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c4acab694833802fb50614909ea4e32914a6e5c8",
"body": "Soon, we will add several more transaction variants that are also\r\nchargeable. Because of that, I've decided to move unique fields of the\r\ntransaction to the top while keeping the common part at the end.\r\n\r\nImplementation part with description of how it can be used\r\nhttps://github.com/FuelLabs/fuel-vm/pull/703#issue-2202505020",
"is_bot": false,
"headline": "Grouped unique fields for transactions at the beginning (#562)",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2024-03-26T08:31:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "184f86fba7ee5aa24da3cff8e43b72a5736738f8",
"body": "Closes #559\r\n\r\nVM PR: https://github.com/FuelLabs/fuel-vm/pull/700",
"is_bot": false,
"headline": "Add GM_BASE_ASSET_ID (#561)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-03-21T21:57:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f228e7fc90283b6fd85752f7b6002867fa42f85",
"body": "Closes https://github.com/FuelLabs/fuel-specs/issues/553\r\n\r\nVM PR: https://github.com/FuelLabs/fuel-vm/pull/698",
"is_bot": false,
"headline": "Increase size of inputs, outputs and witnesses to uint16 (#558)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-03-14T14:38:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e236148569725bbef84315ca984378c9dba6374",
"body": "https://github.com/FuelLabs/fuel-specs/pull/546\r\n\r\nThis includes the changes for:\r\n- Remove`gas_price` from tx\r\n- Include `gas_price` on `Mint` tx\r\n- Remove `GasPrice` policy\r\n- Add `Tip` policy\r\n- Make `MaxFee` mandatory\r\n\r\nSince there is no concept of the client API in these specs, and also the\r\ni\n[…]\ndon't want the scope of the VM to include those sort\r\nof things, but it's not clear to me _what_ these specs are constrained\r\nby.\r\n\r\n---------\r\n\r\nCo-authored-by: Green Baneling <XgreenX9999@gmail.com>",
"is_bot": false,
"headline": "Update Specs to Include Gas Price changes (#546)",
"author_name": "Mitchell Turner",
"author_login": "MitchTurner",
"committed_at": "2024-03-13T18:30:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d2ae22cf30e42c426c01f7fd86bfeb487d83f429",
"body": "Closes https://github.com/FuelLabs/fuel-specs/issues/554\r\n\r\nVM PR: https://github.com/FuelLabs/fuel-vm/pull/692",
"is_bot": false,
"headline": "Add GTF getters for tx bytes size and address (#556)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-03-08T14:51:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b13a9206cd6db434bbcff5499ccc0dfe23b377a6",
"body": "Closes #552\r\n\r\nHopefully I caught everything.",
"is_bot": false,
"headline": "Change vec lengths to uint64 to match vm behavior (#555)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-03-06T16:36:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2742f30f963f4bcd9b165165606f51a218b812ee",
"body": "Closes #542.\r\n\r\nAlso changes `tx.receiptsRoot` to only be updated after the tx has\r\nterminated, as the intermediate values are no longer useful. The speeds\r\nup and simplifies implementation of receipt-pushing opcodes.",
"is_bot": false,
"headline": "Zero all malleable fields before execution (#545)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-02-22T09:27:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c7b6f7f5639e4914ef537f62e75ab1e2a6abe00a",
"body": "Follow-up to #545.",
"is_bot": false,
"headline": "Remove maturity field from InputCoin (#548)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-02-21T17:26:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1eafbe265f0e46e0c04d78fbc5c3f2c17fc1e975",
"body": null,
"is_bot": false,
"headline": "Clarify meaning of the bitmask of push and pop opcodes (#543)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2024-02-12T13:21:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6cd7270d82cb1c128e9cbef92e69d36bf0dac73b",
"body": "This PR has the first version of the documentation of the new encoding\r\nversion 1.",
"is_bot": false,
"headline": "Encoding version 1 documentation (#541)",
"author_name": "Daniel Frederico Lins Leite",
"author_login": "xunilrj",
"committed_at": "2024-01-24T16:23:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a44cacd2fc74b6caa9adcd2e2f7080eccc6531cc",
"body": "This PR configures the spell-check added to the docs workflow in the\r\ngithub-actions repo: https://github.com/FuelLabs/github-actions/pull/23\r\n\r\nThe files checked are configured in `.spellcheck.yml`. This is also\r\nwhere you can configure what types of elements are ignored.\r\n\r\nRight now it ignores:\r\n\n[…]\nand add\r\n\"ing\" to the custom words list. Instead, rewrite the sentence as\r\n\"locking with the `lock` method\".\r\n- If it otherwise should be ignored, you can configure the pipeline in\r\n`.spellcheck.yml`.",
"is_bot": false,
"headline": "docs: configure spell check (#539)",
"author_name": "Sarah Schwartz",
"author_login": "sarahschwartz",
"committed_at": "2023-12-12T22:02:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d7e18fc59656132cf6b311ce318deee0cf770e0f",
"body": "…yte costs (#529)\n\ncloses: https://github.com/FuelLabs/fuel-specs/issues/461\r\n\r\nIncreases the granularity of how the base fee for a transaction is\r\ncomputed. These base fee components are referred to as intrinsic costs,\r\nwhich are intended to cover the overhead of operations such as:\r\n\r\n- read, inse\n[…]\neenX9999@gmail.com>\r\nCo-authored-by: Brandon Vrooman <brandon.vrooman@gmail.com>\r\nCo-authored-by: Brandon Vrooman <brandon.vrooman@fuel.sh>\r\nCo-authored-by: Hannes Karppila <hannes.karppila@gmail.com>",
"is_bot": false,
"headline": "Introduce intrinsic fees for transaction validation beyond script & b…",
"author_name": "Brandon Kite",
"author_login": "Voxelot",
"committed_at": "2023-12-12T02:12:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0904457888801e10c3271ebde80268a5583ae8b2",
"body": "Findings after implementation\r\nhttps://github.com/FuelLabs/fuel-vm/pull/623",
"is_bot": false,
"headline": "Some clarification after implementation (#533)",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2023-11-30T22:01:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6bdea627421452eedaad1ca1efc5da8c773c1c14",
"body": "See this issue for context:\r\nhttps://github.com/FuelLabs/fuel-vm/issues/602\r\nFuelVM PR: https://github.com/FuelLabs/fuel-vm/pull/634",
"is_bot": false,
"headline": "Charge for new storage slots (#536)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-11-17T11:40:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "640390108a0441906327cdf9750901233ba4f6bd",
"body": "Increases the receipt limit from `u8::MAX` to `u16::MAX`, leaving space\r\nfor panic and script result. The old limit was not enforced, but\r\nhttps://github.com/FuelLabs/fuel-vm/pull/633 is going to enforce the new\r\nrules defined here.\r\n\r\nThe number of receipts is limited separtely from gas, since adding more\r\nreceipts slows down all instructions that operate on them. Moreover,\r\nthis change makes the upper bound for memory use clear.",
"is_bot": false,
"headline": "Limit the number of receipts to u16::MAX (#535)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-11-10T14:32:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1b3b772a824c276c686434f39bbdb0e8e91edaed",
"body": "See https://github.com/FuelLabs/fuel-vm/issues/616",
"is_bot": false,
"headline": "Add memory executability permissions (#530)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-10-31T11:14:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a841c59dc39d75a1a8e37ecc7ea3c9a54301bc8",
"body": "# Summary\r\n\r\nUse a dynamic set of policies for transaction validation requirements\r\nsuch as gaslimit & maturity. This will reduce the size of transactions\r\nthat always leave these fields unset, and also future proof the\r\ntransaction format for later requirements such as multi-dimensional\r\npricing.\r\n\n[…]\nce kind. By abstracting these limits\r\ninto a dynamic set of policies, new resource types can be added in the\r\nfuture more easily.\r\n\r\n---------\r\n\r\nCo-authored-by: Green Baneling <XgreenX9999@gmail.com>",
"is_bot": false,
"headline": "Transaction Policies (#514)",
"author_name": "Brandon Kite",
"author_login": "Voxelot",
"committed_at": "2023-10-26T17:16:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "89b2a2a2644bc3da41321409f53b49aa46d054a5",
"body": "Related issues:\r\n- Progresses https://github.com/FuelLabs/fuel-vm/issues/384\r\n\r\nThis PR specifies the maximum size of a transaction and that a\r\ntransaction that exceeds the maximum size is invalid.\r\n\r\nThis PR also renames the `constants.md` file to\r\n`consensus_parameters.md` to better reflect how th\n[…]\ns are not constants outlined by the specification, this\r\nchange proposes to remove the `value` column altogether, allowing the\r\ncurrent definition of consensus parameters to be decided by maintainers.",
"is_bot": false,
"headline": "docs: Specify max transaction size (#525)",
"author_name": "Brandon Vrooman",
"author_login": null,
"committed_at": "2023-10-19T15:25:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "efc31b0cc210bb0f7df62da1de71c01734aae026",
"body": "Closes #505 partially.\r\n\r\nCo-authored-by: Brandon Kite <brandonkite92@gmail.com>\r\nCo-authored-by: Hannes Karppila <hannes.karppila@gmail.com>",
"is_bot": false,
"headline": "specs: add encoding specs for vectors, tuples and u128/u256 (#520)",
"author_name": "iqdecay",
"author_login": "iqdecay",
"committed_at": "2023-10-18T16:11:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "822f13a2b85fd3487352c8cef4c59d088e454f32",
"body": "Closes https://github.com/FuelLabs/fuel-specs/issues/521",
"is_bot": false,
"headline": "Add ECAL instruction (#523)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-10-12T06:04:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fffabbaa7d86af1fc68f7f7c4f0be46f2adf5a90",
"body": "ChainId was previously added to the predicate ID calculation (see #462)\r\nto avoid replay attacks with predicates. However, replay attacks are\r\nalready not a significant issue due to Fuel's architecture, and the\r\ninclusion of the ChainId causes other issues.\r\n\r\n## Replay attacks\r\n\r\nGenerally, predica\n[…]\n(https://www.coindesk.com/tech/2022/06/09/15m-of-optimism-tokens-stolen-by-an-attacker-after-wintermute-sent-wrong-wallet-address/),\r\nwhen in reality that address was only the expected multisig on L1.",
"is_bot": false,
"headline": "Remove CHAIN_ID from predicate ID calculation (#519)",
"author_name": "David Mihal",
"author_login": "dmihal",
"committed_at": "2023-10-09T13:53:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "80d0c298501194e7b88e93ec97bfe06b43af6021",
"body": "…#518)\n\nImplementation: https://github.com/FuelLabs/fuel-vm/pull/593",
"is_bot": false,
"headline": "Minor simplification to `Mint` transaction after the implementation (…",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2023-10-03T16:32:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec799b913e974fbdf098fe09673c324c908b6d1d",
"body": "I had to read the current phrase a couple of times to understand it.\r\n\r\nAlternatively, we could say \"There is given a\" or \"It is given a\".",
"is_bot": false,
"headline": "docs: polish \"balanceOfStart\" explanation (#516)",
"author_name": "Paul Razvan Berg",
"author_login": "PaulRBerg",
"committed_at": "2023-09-14T02:14:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "762b35dad38050e2a8c58128ba02e5c93f97142f",
"body": "…n (#511)\n\nThe mint transaction is no longer allowed to create coin outputs, and\r\ninstead performs an intrinsic contract balance increase.\r\n\r\nThis is lighterweight compared to using a script transaction as a\r\ncoinbase, as no VM execution needs to occur. This prevents dust\r\naccumulation of low-value coinbase coin outputs compared to the previous\r\ndesign.\r\n\r\n---------\r\n\r\nCo-authored-by: Green Baneling <XgreenX9999@gmail.com>\r\nCo-authored-by: Hannes Karppila <hannes.karppila@gmail.com>",
"is_bot": false,
"headline": "Change mint tx format and coinbase rules to mitigate dust accumulatio…",
"author_name": "Brandon Kite",
"author_login": "Voxelot",
"committed_at": "2023-08-28T17:48:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b1c5dccec7277cdfaebf5ee1c0aff40e463288e",
"body": null,
"is_bot": false,
"headline": "`ecr` opcode is no longer supported (#513)",
"author_name": "Braqzen",
"author_login": "Braqzen",
"committed_at": "2023-08-24T17:23:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6b805991bf022337a06e5ca76f09665c57e032a3",
"body": null,
"is_bot": false,
"headline": "update docs CI (#507)",
"author_name": "Sarah Schwartz",
"author_login": "sarahschwartz",
"committed_at": "2023-08-07T21:47:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b241dc9c39be62a43af477bd34c79abd6038cecf",
"body": "### Abstract\r\n\r\nThis PR introduces granular asset minting which would enable sub\r\nidentifiers to be included at asset creation. These sub identifiers can\r\ninclude important metadata and be used to enable native level NFTs.\r\n\r\n**This adds:**\r\n- A new asset ID construction (which incorporates the cont\n[…]\nbs/fuel-indexer/issues/1012\r\n- https://github.com/FuelLabs/sway/pull/4651\r\n\r\n---------\r\n\r\nCo-authored-by: Brandon Kite <brandonkite92@gmail.com>\r\nCo-authored-by: Green Baneling <XgreenX9999@gmail.com>",
"is_bot": false,
"headline": "Granular Asset Minting (#491)",
"author_name": "Nick",
"author_login": "SilentCicero",
"committed_at": "2023-08-07T21:40:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "117651517d08432e8a2d14486b0f54b3baf56b9d",
"body": "The configuration value for it was fixed to `MEM_MAX_ACCESS_SIZE =\r\nVM_MAX_RAM`. The rule against exceeding `VM_MAX_RAM` always triggers\r\nfirst. See\r\nhttps://github.com/FuelLabs/fuel-vm/pull/511#discussion_r1276819690 and\r\nthe PR in general for the removal from `fuel-vm`.",
"is_bot": false,
"headline": "Remove unused MEM_MAX_ACCESS_SIZE (#508)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-08-03T21:06:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c7b9da6ede906fbe69e8766f5ed7c00c24aa3af6",
"body": "Causes this issue https://github.com/FuelLabs/sway/issues/4828",
"is_bot": false,
"headline": "Do not restore $hp when returning from a context (#506)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-07-26T20:13:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e29fcd9267fe192a8472ed7a9333a8218b2ed827",
"body": "Related issues:\r\n- https://github.com/FuelLabs/fuel-vm/issues/501#issue-1792237720\r\n\r\nThis PR gives the Fuel specs its own Merkle tree specification, and\r\nremoves links to the archived Celestia spec. This gives Fuel ownership\r\nover its own Merkle tree specification and allows us to adapt it to our\r\n\n[…]\nf format.\r\n\r\nLastly, this PR removes the specification for the binary Merkle sum tree\r\n(BMST). The BMST is currently not supported by Fuel and does not fall\r\nunder the Fuel specification at this time.",
"is_bot": false,
"headline": "docs: Add Merkle tree specs to cryptographic primitives (#504)",
"author_name": "Brandon Vrooman",
"author_login": null,
"committed_at": "2023-07-14T04:19:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6d93912004de826c858abe375fa3969c541c6047",
"body": null,
"is_bot": false,
"headline": "Add scattered push/pop operations (#499)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-07-12T16:24:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cec6e3781249053a65420355dfa438375d8cdceb",
"body": "### Abstract\r\nAdd additional signature recovery operations for Edwards 25519 and\r\nSecp256r1 (or P256) and renames `ERC` to `ECK1` for consistency.\r\n\r\n### Opcodes\r\n- `ECK1` for [Secp256k1](https://en.bitcoin.it/wiki/Secp256k1) signature\r\nrecovery (non recoverable compressed signature)\r\n- `ECR1` for [\n[…]\nsecp256r1)\r\nsignature recovery (non recoverable compressed signature)\r\n- `ED19` for [ED25519](https://ed25519.cr.yp.to/) verification.\r\n\r\n---------\r\n\r\nCo-authored-by: Voxelot <brandonkite92@gmail.com>",
"is_bot": false,
"headline": "Add ED25519 and Secp256r1 (#484)",
"author_name": "Nick",
"author_login": "SilentCicero",
"committed_at": "2023-07-12T03:36:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7310128720bb17621d6b4cb6cf8ff251fd39fc1d",
"body": "The opcode mnemonics were incorrect. The correct ones were always used\r\nin fuel-vm. The semantics and all other details are correct.",
"is_bot": false,
"headline": "Use correct mnemonics for jnef and jneb instructions (#503)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-07-11T08:12:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "714cc7d03faacf703dc739930d9aad241e7e005b",
"body": null,
"is_bot": false,
"headline": "Fix broken links (#500)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-07-10T22:56:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eec1bb883e2c416be24a9c805fc79702e1fa9f93",
"body": "The `WQOP` opcode interpretation of the immediate value currently refers\r\nto itself. This should instead refer to the `WDOP` opcode which has the\r\ndefinition for the interpretation.\r\n\r\nCo-authored-by: bitzoic <bitzoic.eth@gmail.com>",
"is_bot": false,
"headline": "Fix typo in instruction-set.md (#502)",
"author_name": "Cameron Carstens",
"author_login": "bitzoic",
"committed_at": "2023-07-10T14:06:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1cc31e71fbbe55c8c53c886e58f366faf19d8bfd",
"body": "Related to https://github.com/FuelLabs/fuel-vm/pull/503",
"is_bot": false,
"headline": "Clarify the gas forwarded field in call receipt (#501)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-07-10T11:58:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c0cb3920646b1769ce5ced1197d6f45d9d22ed6f",
"body": "This PR helps to standardize the Specs docs with other Fuel\r\ndocumentation and fix issues in the development of the Fuel docs hub.\r\n\r\n- removes any nested subfolders in the navigation\r\n- renames folders & files to match navigation\r\n- updates links as needed for new structure/names\r\n- forwards old urls to new ones",
"is_bot": false,
"headline": "refactor: remove nested folders in nav (#497)",
"author_name": "sarahschwartz",
"author_login": "sarahschwartz",
"committed_at": "2023-06-23T16:37:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "927f194f4423ba42669e5bcf6c9a3e02f51aa2d4",
"body": "We use SMT in two places for contract balances and contract state. While\r\nit is not a huge problem for balances SMT root(because `AssetId` is\r\nrandomly derived from `sha256`), it is a massive problem for contract\r\nstate root. Each leaf key is specified by the user/developer for the\r\nstorage key-valu\n[…]\ncause of the randomness\r\nleafs are distributed in a better way preventing a huge number of empty\r\nside nodes.\r\n\r\nThis PR proposes to hash each leaf key of any SMT to prevent any kind of\r\nmanipulation.",
"is_bot": false,
"headline": "Hash the SMT leaf key to prevent tree structure manipulation (#496)",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2023-06-12T22:30:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "57260c70639b6cb5e00f745e51d750d5e653d6cd",
"body": "Part of the https://github.com/FuelLabs/fuel-specs/pull/466",
"is_bot": false,
"headline": "Minor fix of the vm initialization description (#493)",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2023-06-12T13:28:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "365b07614a940f397ff72f657203336fccc2d531",
"body": null,
"is_bot": false,
"headline": "Add link to Predicate page (#494)",
"author_name": "David Mihal",
"author_login": "dmihal",
"committed_at": "2023-06-12T11:56:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cfdc0b5ae6b267ddb5ef5ebb64fcb6185c65db99",
"body": "Actualize the specification for inputs with the\r\nhttps://github.com/FuelLabs/fuel-vm/pull/386.\r\n- Moved `predicateGasUsed` into the static section before dynamic data.\r\n- During execution, `TxPointer` and `predicateGasUsed` are set, but\r\nduring the predicate phase, they are empty.\r\n\r\n---------\r\n\r\nCo-authored-by: Brandon Vrooman <brandon.vrooman@gmail.com>",
"is_bot": false,
"headline": "Actualize the specification for inputs with the implementation (#487)",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2023-05-25T16:35:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a937dac06f6eda0905c2e3bcbee6038d39748b32",
"body": "Calculating the merkle root of across every instruction pair is turning\r\nout to be quite cost prohibitive, as noted in this issue:\r\nhttps://github.com/FuelLabs/fuel-vm/issues/385\r\n\r\nIncreasing the leaf size when computing a code root drastically reduces\r\nthe sha256 overhead. I assume the original de\n[…]\nexecution.\r\n\r\nI also made a benchmarking framework to experiment with various leaf\r\nsizes, making it easy to verify the improvement due to leaf size\r\nincreases: https://github.com/Voxelot/merkle-bench",
"is_bot": false,
"headline": "increase code root merkle leaf size to 16KiB (#476)",
"author_name": "Brandon Kite",
"author_login": "Voxelot",
"committed_at": "2023-05-02T03:09:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6786e8a9e51237bf856e5c2007c13742420784fa",
"body": "Bit shift to right was documented to set `$of` in case of underflow.\r\nThis behavior is both unintuitive and different from the current\r\nimplementation.",
"is_bot": false,
"headline": "Bitshift should discard overflow (#486)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-05-01T19:47:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9784735daa0556bcc8e43069348d7a65f2467438",
"body": "Progress towards https://github.com/FuelLabs/fuel-specs/issues/478.\r\nImplementation PR: https://github.com/FuelLabs/fuel-vm/pull/424\r\n\r\nThis PR adds instructions for handling wideint types, specifically\r\nmemory-stored 128- and 256-bit unsigned integers. The following opcodes\r\nare added:\r\n\r\n* MLDV - \n[…]\nommitted to backwards compatibility of the current ops even now.\r\n\r\n---------\r\n\r\nCo-authored-by: Mitch Martin <111294749+mitch-fuel@users.noreply.github.com>\r\nCo-authored-by: Tom <tomrgowan@gmail.com>",
"is_bot": false,
"headline": "Wideint instructions (#483)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-04-28T18:24:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5c78c43bd88a2545ae7786809c08957d6eb4b0c1",
"body": "Clarify the purpose of flags. The current wording has caused by some\r\nconfusion, for instance\r\nhttps://github.com/FuelLabs/fuel-vm/pull/424#discussion_r1178550425.",
"is_bot": false,
"headline": "Clarify flag behaviour regarding panics (#485)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-04-27T23:07:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "813faf0b94bc45cd5e9b55826b57831d27bed394",
"body": "The previous description was somewhat ambiguous about whether the `CB`\r\nopcode returns the address for the block producer or it's coinbase\r\naddress (which can be a distinct cold wallet for collecting fees).",
"is_bot": false,
"headline": "clarify the description of the coinbase instruction (#477)",
"author_name": "Brandon Kite",
"author_login": "Voxelot",
"committed_at": "2023-04-05T23:10:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee158347e211409e4b13d58efc64e702f7b9be88",
"body": "Predicates previously used the tx.gasLimit for initialization but could\r\nnever be more than MAX_GAS_PER_PREDICATE so they should also be\r\ninitialized to that value if tx.gasLimit is greater than\r\nMAX_GAS_PER_PREDICATE.",
"is_bot": false,
"headline": "Update gas initialization for predicate estimation (#474)",
"author_name": "Mitch Martin",
"author_login": null,
"committed_at": "2023-04-04T17:38:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a1ff912fb89b656af8dfdd7562e1f56068b89971",
"body": "See https://github.com/FuelLabs/fuel-specs/issues/430 for discussion on\r\nthis\r\n\r\nFuelVM implementation PR: https://github.com/FuelLabs/fuel-vm/pull/381",
"is_bot": false,
"headline": "Add relative jump opcodes (#470)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-03-20T23:11:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f4eb0e8dd5ae86f8b36c8082cb1564fba50df5ed",
"body": "FuelVM now supports unlimited nested calls, so this limit is removed.\r\n\r\nSee https://github.com/FuelLabs/fuel-vm/pull/399",
"is_bot": false,
"headline": "Remove nested call limit (#473)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-03-20T23:10:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "70774baa1b85ecdda2d00613fbd7c66bfb9af358",
"body": "The specs say that the `Nonce` is a 32 bytes array but the current code\r\nuses `Word`. In the follow-up PR in `fuel-vm` we will replace `Word`\r\nwith a 32-byte array.\r\n\r\n---------\r\n\r\nCo-authored-by: Voxelot <brandonkite92@gmail.com>",
"is_bot": false,
"headline": "Make `Nonce` as 32 bytes array (#472)",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2023-03-18T13:25:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8257ff4108c4621b155ff54fa8e9a107f45ce7a8",
"body": "… true (#469)\n\nThis is the current VM bevior",
"is_bot": false,
"headline": "Conditional jumps only check for address validity if the condition is…",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-03-17T16:11:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94953e699ff55775752172f029cb9cec9cd64912",
"body": "closes: https://github.com/FuelLabs/fuel-specs/issues/346\r\n\r\nAdds the ability to perform a dynamic cfe",
"is_bot": false,
"headline": "add dynamic cfe & cfs (#471)",
"author_name": "Brandon Kite",
"author_login": "Voxelot",
"committed_at": "2023-03-17T00:50:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e02d131a13d58b86a9b79a44fe736a41d2f01e86",
"body": "Accessing invalid memory regions panics, but this was not documented.",
"is_bot": false,
"headline": "Document the panic conditions of logd (#468)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-03-15T23:14:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "51de8eab8eeaa83f2d9a58877ea30ed0a4a16204",
"body": "This follow-up PR removes the `MessageId` from the receipt. Previously\r\nwe removed it from the `Input` in the\r\nhttps://github.com/FuelLabs/fuel-specs/pull/443",
"is_bot": false,
"headline": "Remove the `messageId` field from the MessageOut Receipt (#467)",
"author_name": "Green Baneling",
"author_login": "xgreenx",
"committed_at": "2023-03-13T22:19:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2821d155a146323ac64584cc587cd206da6741f1",
"body": "… it (#466)\n\nSee https://github.com/FuelLabs/fuel-vm/pull/377",
"is_bot": false,
"headline": "Make $hp point to the first available byte, instead of the one before…",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-03-10T21:06:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "884701ac8103caccf468cd8dfca7cbaf770a3157",
"body": "Closes #340\r\n\r\nRather than adding chain ID as a new field to the transaction, this\r\napproach includes chain id as part of our identifier hashing procedures.\r\nThis means predicates, contracts and transactions will be innately chain\r\nspecific, preventing cross-chain replay.\r\n\r\nConsider the scenario wh\n[…]\ne current bridging designs, this should already be covered for the\r\nmajority of use-cases.\r\n\r\n---------\r\n\r\nCo-authored-by: ControlCplusControlV <44706811+ControlCplusControlV@users.noreply.github.com>",
"is_bot": false,
"headline": "Chain Identifier (#462)",
"author_name": "Brandon Kite",
"author_login": "Voxelot",
"committed_at": "2023-03-10T17:28:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "03d4f4811c5942de265f6222aa94398e073e229f",
"body": "This updates the description of script gas to explicitly mention that it\r\nincludes predicate gas costs and removes comments mentioning that gas is\r\nnot charged for predicates.\r\n\r\nCloses https://github.com/FuelLabs/fuel-specs/issues/440\r\n\r\n---------\r\n\r\nCo-authored-by: Brandon Kite <brandonkite92@gmail.com>\r\nCo-authored-by: Green Baneling <XgreenX9999@gmail.com>",
"is_bot": false,
"headline": "Changes for predicate gas metering (#448)",
"author_name": "Mitch Martin",
"author_login": null,
"committed_at": "2023-03-06T18:04:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d7c95a588948f69daf2cbd9008620481f17e0f6",
"body": "See https://github.com/FuelLabs/fuel-vm/pull/370",
"is_bot": false,
"headline": "Add nested call limit (#465)",
"author_name": "Hannes Karppila",
"author_login": "Dentosal",
"committed_at": "2023-03-01T20:43:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8805f192da944956f63a50bedf798686ea3bd29e",
"body": "Fixes #322",
"is_bot": false,
"headline": "Make `$hp` point to immediately after usable memory. (#464)",
"author_name": "John Adler",
"author_login": "adlerjohn",
"committed_at": "2023-03-01T15:01:42Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 1,
"commits_last_year": 4,
"latest_release_at": "2023-12-28T18:13:54Z",
"latest_release_tag": "v0.5.0",
"releases_from_tags": false,
"days_since_last_push": 102,
"active_weeks_last_year": 4,
"days_since_latest_release": 940,
"mean_days_between_releases": null
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 50,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": []
},
"popularity": {
"forks": 704,
"stars": 1782,
"watchers": 40,
"fork_history": {
"days": [
{
"date": "2022-02-11",
"count": 1
},
{
"date": "2022-05-21",
"count": 1
},
{
"date": "2022-06-01",
"count": 1
},
{
"date": "2022-07-08",
"count": 1
},
{
"date": "2022-07-14",
"count": 1
},
{
"date": "2022-09-14",
"count": 1
},
{
"date": "2022-10-16",
"count": 1
},
{
"date": "2022-11-07",
"count": 1
},
{
"date": "2022-11-30",
"count": 1
},
{
"date": "2022-12-11",
"count": 1
},
{
"date": "2023-04-01",
"count": 1
},
{
"date": "2023-04-03",
"count": 1
},
{
"date": "2023-04-11",
"count": 1
},
{
"date": "2023-06-01",
"count": 1
},
{
"date": "2023-06-20",
"count": 1
},
{
"date": "2023-06-27",
"count": 1
},
{
"date": "2023-06-28",
"count": 1
},
{
"date": "2023-07-02",
"count": 1
},
{
"date": "2023-07-03",
"count": 3
},
{
"date": "2023-07-04",
"count": 2
},
{
"date": "2023-07-06",
"count": 2
},
{
"date": "2023-07-08",
"count": 1
},
{
"date": "2023-07-11",
"count": 2
},
{
"date": "2023-07-13",
"count": 2
},
{
"date": "2023-07-14",
"count": 1
},
{
"date": "2023-07-16",
"count": 2
},
{
"date": "2023-07-18",
"count": 1
},
{
"date": "2023-07-19",
"count": 1
},
{
"date": "2023-07-20",
"count": 1
},
{
"date": "2023-07-23",
"count": 1
},
{
"date": "2023-07-26",
"count": 1
},
{
"date": "2023-07-27",
"count": 10
},
{
"date": "2023-07-28",
"count": 2
},
{
"date": "2023-07-29",
"count": 1
},
{
"date": "2023-07-30",
"count": 1
},
{
"date": "2023-07-31",
"count": 3
},
{
"date": "2023-08-01",
"count": 4
},
{
"date": "2023-08-03",
"count": 2
},
{
"date": "2023-08-04",
"count": 2
},
{
"date": "2023-08-05",
"count": 1
},
{
"date": "2023-08-11",
"count": 1
},
{
"date": "2023-08-16",
"count": 1
},
{
"date": "2023-08-19",
"count": 1
},
{
"date": "2023-08-20",
"count": 1
},
{
"date": "2023-08-24",
"count": 1
},
{
"date": "2023-08-25",
"count": 1
},
{
"date": "2023-09-02",
"count": 5
},
{
"date": "2023-09-04",
"count": 1
},
{
"date": "2023-09-07",
"count": 1
},
{
"date": "2023-09-11",
"count": 1
},
{
"date": "2023-09-23",
"count": 2
},
{
"date": "2023-09-29",
"count": 2
},
{
"date": "2023-10-05",
"count": 1
},
{
"date": "2023-10-06",
"count": 1
},
{
"date": "2023-10-09",
"count": 16
},
{
"date": "2023-10-10",
"count": 27
},
{
"date": "2023-10-11",
"count": 5
},
{
"date": "2023-10-12",
"count": 1
},
{
"date": "2023-10-13",
"count": 1
},
{
"date": "2023-10-17",
"count": 2
},
{
"date": "2023-10-20",
"count": 2
},
{
"date": "2023-10-22",
"count": 1
},
{
"date": "2023-10-24",
"count": 2
},
{
"date": "2023-10-26",
"count": 1
},
{
"date": "2023-10-27",
"count": 2
},
{
"date": "2023-11-07",
"count": 1
},
{
"date": "2023-11-10",
"count": 1
},
{
"date": "2023-11-12",
"count": 1
},
{
"date": "2023-11-14",
"count": 1
},
{
"date": "2023-11-16",
"count": 1
},
{
"date": "2023-11-18",
"count": 1
},
{
"date": "2023-11-19",
"count": 3
},
{
"date": "2023-11-20",
"count": 1
},
{
"date": "2023-11-22",
"count": 1
},
{
"date": "2023-11-24",
"count": 1
},
{
"date": "2023-11-25",
"count": 1
},
{
"date": "2023-11-26",
"count": 2
},
{
"date": "2023-11-27",
"count": 1
},
{
"date": "2023-11-28",
"count": 1
},
{
"date": "2023-12-01",
"count": 1
},
{
"date": "2023-12-02",
"count": 1
},
{
"date": "2023-12-06",
"count": 3
},
{
"date": "2023-12-12",
"count": 2
},
{
"date": "2023-12-14",
"count": 2
},
{
"date": "2023-12-16",
"count": 1
},
{
"date": "2023-12-17",
"count": 2
},
{
"date": "2023-12-18",
"count": 1
},
{
"date": "2023-12-20",
"count": 2
},
{
"date": "2023-12-25",
"count": 1
},
{
"date": "2024-01-04",
"count": 1
},
{
"date": "2024-01-14",
"count": 1
},
{
"date": "2024-01-15",
"count": 1
},
{
"date": "2024-01-20",
"count": 1
},
{
"date": "2024-01-28",
"count": 1
},
{
"date": "2024-02-09",
"count": 2
},
{
"date": "2024-02-13",
"count": 5
},
{
"date": "2024-02-14",
"count": 1
},
{
"date": "2024-02-15",
"count": 2
},
{
"date": "2024-02-16",
"count": 1
},
{
"date": "2024-02-18",
"count": 2
},
{
"date": "2024-02-19",
"count": 1
},
{
"date": "2024-02-20",
"count": 1
},
{
"date": "2024-02-21",
"count": 3
},
{
"date": "2024-02-22",
"count": 1
},
{
"date": "2024-02-25",
"count": 6
},
{
"date": "2024-02-26",
"count": 49
},
{
"date": "2024-02-27",
"count": 16
},
{
"date": "2024-02-28",
"count": 8
},
{
"date": "2024-02-29",
"count": 5
},
{
"date": "2024-03-01",
"count": 16
},
{
"date": "2024-03-02",
"count": 5
},
{
"date": "2024-03-03",
"count": 11
},
{
"date": "2024-03-04",
"count": 30
},
{
"date": "2024-03-05",
"count": 51
},
{
"date": "2024-03-06",
"count": 31
},
{
"date": "2024-03-07",
"count": 11
},
{
"date": "2024-03-08",
"count": 15
},
{
"date": "2024-03-09",
"count": 13
},
{
"date": "2024-03-10",
"count": 10
},
{
"date": "2024-03-11",
"count": 2
},
{
"date": "2024-03-12",
"count": 7
},
{
"date": "2024-03-13",
"count": 10
},
{
"date": "2024-03-14",
"count": 3
},
{
"date": "2024-03-15",
"count": 2
},
{
"date": "2024-03-16",
"count": 2
},
{
"date": "2024-03-17",
"count": 3
},
{
"date": "2024-03-19",
"count": 2
},
{
"date": "2024-03-20",
"count": 16
},
{
"date": "2024-03-21",
"count": 4
},
{
"date": "2024-03-22",
"count": 3
},
{
"date": "2024-03-23",
"count": 1
},
{
"date": "2024-03-25",
"count": 1
},
{
"date": "2024-03-28",
"count": 2
},
{
"date": "2024-03-30",
"count": 1
},
{
"date": "2024-04-01",
"count": 2
},
{
"date": "2024-04-02",
"count": 1
},
{
"date": "2024-04-03",
"count": 1
},
{
"date": "2024-04-04",
"count": 5
},
{
"date": "2024-04-05",
"count": 2
},
{
"date": "2024-04-06",
"count": 3
},
{
"date": "2024-04-07",
"count": 1
},
{
"date": "2024-04-13",
"count": 1
},
{
"date": "2024-04-18",
"count": 2
},
{
"date": "2024-04-19",
"count": 4
},
{
"date": "2024-04-20",
"count": 2
},
{
"date": "2024-04-22",
"count": 29
},
{
"date": "2024-04-23",
"count": 1
},
{
"date": "2024-04-24",
"count": 1
},
{
"date": "2024-04-25",
"count": 1
},
{
"date": "2024-04-28",
"count": 4
},
{
"date": "2024-04-29",
"count": 1
},
{
"date": "2024-05-04",
"count": 1
},
{
"date": "2024-05-06",
"count": 3
},
{
"date": "2024-05-07",
"count": 4
},
{
"date": "2024-05-08",
"count": 3
},
{
"date": "2024-05-13",
"count": 1
},
{
"date": "2024-05-17",
"count": 1
},
{
"date": "2024-05-18",
"count": 1
},
{
"date": "2024-05-21",
"count": 1
},
{
"date": "2024-05-23",
"count": 2
},
{
"date": "2024-05-27",
"count": 1
},
{
"date": "2024-05-28",
"count": 1
},
{
"date": "2024-06-01",
"count": 1
},
{
"date": "2024-06-02",
"count": 2
},
{
"date": "2024-06-03",
"count": 3
},
{
"date": "2024-06-05",
"count": 2
},
{
"date": "2024-06-06",
"count": 1
},
{
"date": "2024-06-09",
"count": 3
},
{
"date": "2024-06-10",
"count": 5
},
{
"date": "2024-06-11",
"count": 4
},
{
"date": "2024-06-12",
"count": 1
},
{
"date": "2024-06-15",
"count": 2
},
{
"date": "2024-06-17",
"count": 1
},
{
"date": "2024-06-19",
"count": 1
},
{
"date": "2024-06-21",
"count": 1
},
{
"date": "2024-06-22",
"count": 1
},
{
"date": "2024-06-26",
"count": 2
},
{
"date": "2024-06-29",
"count": 1
},
{
"date": "2024-06-30",
"count": 1
},
{
"date": "2024-07-01",
"count": 1
},
{
"date": "2024-07-03",
"count": 2
},
{
"date": "2024-07-05",
"count": 7
},
{
"date": "2024-07-08",
"count": 2
},
{
"date": "2024-07-19",
"count": 2
},
{
"date": "2024-07-25",
"count": 2
},
{
"date": "2024-07-26",
"count": 1
},
{
"date": "2024-07-27",
"count": 1
},
{
"date": "2024-08-04",
"count": 1
},
{
"date": "2024-08-27",
"count": 1
},
{
"date": "2024-09-02",
"count": 2
},
{
"date": "2024-09-07",
"count": 1
},
{
"date": "2024-09-14",
"count": 1
},
{
"date": "2024-09-19",
"count": 1
},
{
"date": "2024-09-30",
"count": 1
},
{
"date": "2024-10-22",
"count": 1
},
{
"date": "2024-10-29",
"count": 1
},
{
"date": "2024-12-11",
"count": 2
},
{
"date": "2024-12-12",
"count": 2
},
{
"date": "2024-12-16",
"count": 2
},
{
"date": "2025-01-11",
"count": 1
},
{
"date": "2025-01-21",
"count": 1
},
{
"date": "2025-04-29",
"count": 1
},
{
"date": "2025-11-30",
"count": 1
}
],
"complete": true,
"collected": 687,
"total_forks": 704
},
"star_history": null,
"open_issues_and_prs": 52
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": null,
"source_files_sampled": 0,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [],
"advisories": {
"error": "No resolved dependencies to assess",
"scope": "repository_graph",
"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": [],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [],
"collected": true,
"truncated": false,
"total_count": 0,
"direct_count": 0,
"indirect_count": 0
}
},
"maintainership": {
"issues": {
"open_prs": 5,
"merged_prs": 368,
"open_issues": 47,
"closed_ratio": 0.803,
"closed_issues": 191,
"closed_unmerged_prs": 21
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "adlerjohn",
"commits": 258,
"avatar_url": "https://avatars.githubusercontent.com/u/3290375?v=4"
},
{
"type": "User",
"login": "Dentosal",
"commits": 47,
"avatar_url": "https://avatars.githubusercontent.com/u/2204863?v=4"
},
{
"type": "User",
"login": "shahankhatch",
"commits": 28,
"avatar_url": "https://avatars.githubusercontent.com/u/14043935?v=4"
},
{
"type": "User",
"login": "Voxelot",
"commits": 19,
"avatar_url": "https://avatars.githubusercontent.com/u/794823?v=4"
},
{
"type": "User",
"login": "xgreenx",
"commits": 17,
"avatar_url": "https://avatars.githubusercontent.com/u/18346821?v=4"
},
{
"type": "User",
"login": "mohammadfawaz",
"commits": 13,
"avatar_url": "https://avatars.githubusercontent.com/u/59666792?v=4"
},
{
"type": "User",
"login": "pixelcircuits",
"commits": 9,
"avatar_url": "https://avatars.githubusercontent.com/u/28695548?v=4"
},
{
"type": "User",
"login": "iqdecay",
"commits": 5,
"avatar_url": "https://avatars.githubusercontent.com/u/32623452?v=4"
},
{
"type": "User",
"login": "wolflo",
"commits": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/33909953?v=4"
},
{
"type": "User",
"login": "digorithm",
"commits": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/3484025?v=4"
}
],
"contributors_sampled": 36,
"top_contributor_share": 0.567
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"docs.yml",
"gh-pages.yml",
"mdbook.yml"
],
"has_docs_dir": false,
"linter_configs": [],
"has_editorconfig": false,
"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": 4,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 1,
"reason": "4 out of 30 merged PRs checked by a CI test -- score normalized to 1",
"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": 10,
"reason": "all changesets reviewed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 3 contributing companies or organizations -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"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": 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": 0,
"reason": "security policy file not 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": "dd11147b8d7f0ba9d6ae3bbdab8909a4027619f6",
"ran_at": "2026-07-26T07:06:15Z",
"aggregate_score": 4.4,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-24T20:21:32Z",
"oldest_open_prs": [
{
"number": 492,
"created_at": "2023-06-06T10:14:33Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 498,
"created_at": "2023-06-20T21:14:47Z",
"last_comment_at": "2023-07-07T15:30:26Z",
"last_comment_author": "SilentCicero"
},
{
"number": 531,
"created_at": "2023-11-04T14:52:39Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 579,
"created_at": "2024-05-02T12:23:45Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 639,
"created_at": "2025-09-24T17:16:20Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-04-14T08:53:59Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 40,
"created_at": "2021-01-29T21:00:05Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 88,
"created_at": "2021-02-18T16:05:59Z",
"last_comment_at": "2021-02-18T20:43:45Z",
"last_comment_author": "adlerjohn"
},
{
"number": 90,
"created_at": "2021-02-20T21:09:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 111,
"created_at": "2021-02-23T15:56:30Z",
"last_comment_at": "2021-02-23T16:12:32Z",
"last_comment_author": "SilentCicero"
},
{
"number": 119,
"created_at": "2021-02-27T16:23:48Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 146,
"created_at": "2021-03-25T14:24:54Z",
"last_comment_at": "2021-03-31T21:12:50Z",
"last_comment_author": "SilentCicero"
},
{
"number": 148,
"created_at": "2021-04-05T22:51:15Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 231,
"created_at": "2021-12-01T18:42:03Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 242,
"created_at": "2021-12-10T01:38:41Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 271,
"created_at": "2022-01-17T03:21:05Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 280,
"created_at": "2022-02-06T18:10:23Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 320,
"created_at": "2022-05-23T22:12:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 358,
"created_at": "2022-06-20T19:00:11Z",
"last_comment_at": "2022-06-20T19:04:42Z",
"last_comment_author": "mohammadfawaz"
},
{
"number": 362,
"created_at": "2022-06-21T20:17:54Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 404,
"created_at": "2022-09-12T21:14:35Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 412,
"created_at": "2022-10-04T19:01:29Z",
"last_comment_at": "2022-12-09T05:05:41Z",
"last_comment_author": "Voxelot"
},
{
"number": 429,
"created_at": "2022-11-05T19:02:12Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 436,
"created_at": "2022-11-30T16:31:22Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 451,
"created_at": "2023-02-04T03:56:30Z",
"last_comment_at": "2023-02-16T23:37:06Z",
"last_comment_author": "otrho"
},
{
"number": 455,
"created_at": "2023-02-17T18:59:44Z",
"last_comment_at": "2023-06-19T11:30:52Z",
"last_comment_author": "SilentCicero"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/FuelLabs/fuel-specs",
"host": "github.com",
"name": "fuel-specs",
"owner": "FuelLabs"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"security": 44,
"vitality": 29,
"community": 72,
"governance": 69,
"engineering": 56
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "critical",
"name": "Vitality",
"value": 29,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "critical",
"name": "Development activity",
"note": null,
"notes": [],
"value": 19,
"inputs": {
"commits_last_year": 4,
"human_commit_share": 1,
"days_since_last_push": 102,
"active_weeks_last_year": 4
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 102 days ago",
"points": 9.9,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 102
}
}
],
"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": "4 commits in the last year",
"points": 6.3,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 4
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "at_risk",
"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": 44,
"inputs": {
"releases_count": 1,
"latest_release_tag": "v0.5.0",
"releases_from_tags": false,
"days_since_latest_release": 940,
"mean_days_between_releases": null
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "1 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 1
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 940 days ago",
"points": 0,
"status": "missed",
"details": [
{
"code": "release_recency",
"params": {
"days": 940
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "cadence unknown (single release)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "release_cadence_unknown",
"params": {}
}
],
"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": "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": 102,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 102 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 102
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "good",
"name": "Community & Adoption",
"value": 72,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "excellent",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"forks": 704,
"stars": 1782,
"watchers": 40,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "1,782 stars",
"points": 52.7,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 1782
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "704 forks",
"points": 23.7,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 704
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "40 watchers",
"points": 8.8,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 40
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 57,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"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": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 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": "moderate",
"name": "Sustainability & Governance",
"value": 69,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "at_risk",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 42,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 36,
"top_contributor_share": 0.567
},
"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 57% of commits",
"points": 9.7,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 57
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "36 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 36
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 3 contributing companies or organizations -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "excellent",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 89,
"inputs": {
"merged_prs": 368,
"open_issues": 47,
"closed_issues": 191,
"issue_closed_ratio": 0.803,
"closed_unmerged_prs": 21
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "80% of issues closed",
"points": 37.5,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 80
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "368/389 decided PRs merged",
"points": 36.2,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 368,
"decided": 389
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "all changesets reviewed",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"followers": 6521,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "FuelLabs",
"public_repos": 208,
"account_age_days": 2490
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "6,521 followers of FuelLabs",
"points": 25,
"status": "met",
"details": [
{
"code": "owner_followers",
"params": {
"count": 6521,
"login": "FuelLabs"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "208 public repos, account ~6 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 208
}
},
{
"code": "account_age_years",
"params": {
"years": 6
}
}
],
"max_points": 25
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "moderate",
"name": "Engineering Quality",
"value": 56,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 50,
"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": "3 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 3
}
}
],
"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": "4 out of 30 merged PRs checked by a CI test -- score normalized to 1",
"points": 2,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [
"fuel",
"blockchain",
"fuelvm"
],
"has_wiki": false,
"homepage": "https://fuellabs.github.io/fuel-specs/master",
"has_readme": true,
"has_docs_dir": false,
"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": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://fuellabs.github.io/fuel-specs/master",
"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": "3 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 3
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 44,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 44,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 4.4
},
"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 is not maximal on development and all release branches",
"points": 3,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "4 out of 30 merged PRs checked by a CI test -- score normalized to 1",
"points": 0.2,
"status": "partial",
"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": "all changesets reviewed",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 3 contributing companies or organizations -- score normalized to 10",
"points": 2.5,
"status": "met",
"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": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"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 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 not detected",
"points": 0,
"status": "missed",
"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": 7
},
"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": 30,
"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": 0.97,
"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": "97 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 97,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "critical",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 22,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"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": 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": 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
}
]
}
],
"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": [
"Language breakdown unavailable",
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-26T07:06:41.622026Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/FuelLabs/fuel-specs.svg",
"full_name": "FuelLabs/fuel-specs",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}