Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-07-26 07:06 UTC

FuelLabs / fuel-specs

📝 Specifications for the Fuel protocol and the FuelVM, a blazingly fast blockchain VM.

Apache-2.0★ 1 782 зірки⑂ 704 форкиз серп. 2020 р.Переглянути на GitHub ↗

FuelLabs/fuel-specs має індекс здоров’я 54 зі 100, що відповідає смузі «Помірний». Найвищий показник — Community & Adoption (72/100), найнижчий — Vitality (29/100). Останнє оновлення було 102 дні тому. Більшість нещодавньої роботи виконує один учасник.

54
загалом / 100
Помірний

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

54
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

Fuel LabsОрганізація
6 521 підписник208 публічних репозиторіївз вер. 2019 р.

За цим репозиторієм стоїть організація — спільна, підзвітна опіка, здатна пережити будь-якого окремого мейнтейнера.

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

29Критичний · 22% загального індексу
Як обчислюється оцінка
9.9/36Свіжість push — останній push 102 дн. тому
2.8/36Ритм комітів — 4/52 тижнів із комітами
6.3/18Обсяг комітів — 4 комітів за останній рік
0/10OpenSSF Scorecard: Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Використані вхідні дані
commits_last_year4
human_commit_share1
days_since_last_push102
active_weeks_last_year4

Дисципліна релізів

44У зоні ризику
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 1 релізів
0/36Свіжість релізів — останній реліз 940 дн. тому
12.6/27Ритм релізів — ритм невідомий (єдиний реліз)
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count1
latest_release_tagv0.5.0
releases_from_tagsні
days_since_latest_release940
mean_days_between_releases
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

72Добрий · 18% загального індексу
Як обчислюється оцінка
52.7/60Зірки — 1 782 зірок
23.7/25Форки — 704 форків
8.8/15Спостерігачі — 40 спостерігачів
Використані вхідні дані
forks704
stars1 782
watchers40
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (Apache-2.0)
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
6.3/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingні
has_issue_templateні
has_code_of_conductні
has_pull_request_templateтак

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

69Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
9.7/22.5Розподіл комітів — головний контриб’ютор — автор 57% комітів
13.5/13.5Широта контриб’юторів — 36 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 3 contributing companies or organizations -- score normalized to 10
Використані вхідні дані
bus_factor1
contributors_sampled36
top_contributor_share0,567
Як обчислюється оцінка
37.5/46.8Вирішення issue — закрито 80% issue
36.2/38.3Прийняття PR — злито 368/389 вирішених PR
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Використані вхідні дані
merged_prs368
open_issues47
closed_issues191
issue_closed_ratio0,803
closed_unmerged_prs21
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
25/25Охоплення власника — 6 521 підписників у FuelLabs
25/25Послужний список — 208 публічних репозиторіїв, вік облікового запису ~6 р.
Використані вхідні дані
followers6 521
owner_typeOrganization
is_verified
owner_loginFuelLabs
public_repos208
account_age_days2 490

Інженерна якість

Чи наявні базові інженерні практики та документація?

56Помірний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 3 процес(ів) CI
24/24Наявні тести
0/16Конфігурація лінтера
0/9.6Pre-commit-хуки
0/6.4.editorconfig
2/20OpenSSF Scorecard: CI-Tests — 4 out of 30 merged PRs checked by a CI test -- score normalized to 1
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configні
has_precommit_configні

Документація

65Помірний
Як обчислюється оцінка
30/30README
0/25Каталог документації
15/15Сайт документації / домашня сторінка — https://fuellabs.github.io/fuel-specs/master
10/10Опис репозиторію
10/10Теми — 3 тем
0/10Wiki
Використані вхідні дані
topicsfuel, blockchain, fuelvm
has_wikiні
homepagehttps://fuellabs.github.io/fuel-specs/master
has_readmeтак
has_docs_dirні
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

44У зоні ризику · 16% загального індексу

Стан безпеки

44У зоні ризику
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
3/7.5Branch-Protection — branch protection is not maximal on development and all release branches
0.2/2.5CI-Tests — 4 out of 30 merged PRs checked by a CI test -- score normalized to 1
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 3 contributing companies or organizations -- score normalized to 10
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
0/7.5Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
0/5Packaging — немає даних
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4,4
Виключено з оцінювання (немає даних або не застосовно): packaging, signed_releases. Залишкові ваги перенормовано.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

30У зоні ризику · 0% загального індексу
Як обчислюється оцінка
0/45Інструкції для агентів — немає CLAUDE.md / AGENTS.md / правил редактора
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 97 з 100 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,97
agent_instruction_files
agent_instruction_max_bytes
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
0/11Статична перевірка типів
0/10Відтворюване середовище
0/10Підтверджена практика роботи з агентами — серед останніх 100 комітів немає створених агентом
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfiles
has_dockerfileні
typed_languageні
bootstrap_files
has_devcontainerні
has_linter_configні
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0

Ключові факти

1 782зірок GitHub
36контриб'юторів
4комітів за останні 12 місяців
102днів від останнього пушу
1релізів
1бас-фактор
47відкритих issue
пакетних екосистем

Попередження щодо збору даних

  • Language breakdown unavailable
  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Докладніше

Історія зірок і форків 0 ★ / 704 ⇿
0Зірки
704Форки
1Релізи

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

01252503755006257506871232022-022024-012025-11
Мажорні 0Мінорні 1Патчі 0

Кожна точка охоплює 4 днів.

OpenSSF Scorecard 4.4 / 10
4.4сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-07-26 07:06 UTC

10Binary-Artifactsno binaries found in the repo
4Branch-Protectionbranch protection is not maximal on development and all release branches
1CI-Tests4 out of 30 merged PRs checked by a CI test -- score normalized to 1
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
10Code-Reviewall changesets reviewed
10Contributorsproject has 3 contributing companies or organizations -- score normalized to 10
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintained0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
н/дPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Усі залежності 0

Повний розв'язаний набір залежностей із графа залежностей GitHub: 0 прямих і 0 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

РеєстрПакетВерсіяЗв'язок
Сповіщення про залежності не оцінено

Звірка сповіщень не відбулася для цього звіту: No resolved dependencies to assess

Звіт у форматі 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"
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v1.13.0, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистика.