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

Opus-Aether-AI / pine-transpiler

Transpile Pine Script v5/v6 to executable JavaScript with zero dependencies.

TypeScript · JavaScriptMIT★ 30 зірок⑂ 11 форківз груд. 2025 р.Переглянути на GitHub ↗

Opus-Aether-AI/pine-transpiler має індекс здоров’я 68 зі 100, що відповідає смузі «Помірний». Найвищий показник — Engineering Quality (82/100), найнижчий — Sustainability & Governance (52/100). Останнє оновлення було 3 дні тому. Більшість нещодавньої роботи виконує один учасник.

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

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

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

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

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

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

Власність

Opus Aether AIОрганізація
3 підписники3 публічні репозиторіїз черв. 2025 р.

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

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
npm@opus-aether-ai/pine-transpiler0.4.118 9161229 днів томуpine-scriptchart-hostpinejstranspilercompilertechnical-analysisindicatorschartingtradingfinance

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

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

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

81Добрий · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 3 дн. тому
4.8/36Ритм комітів — 7/52 тижнів із комітами
18/18Обсяг комітів — 128 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year128
human_commit_share0,81
days_since_last_push3
active_weeks_last_year7
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 21 релізів
36/36Свіжість релізів — останній реліз 29 дн. тому
27/27Ритм релізів — реліз кожні ~3,6 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count21
latest_release_tagv0.4.11
releases_from_tagsні
days_since_latest_release29
mean_days_between_releases3,6
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

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

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

62Помірний · 18% загального індексу
Як обчислюється оцінка
23.7/60Зірки — 30 зірок
8.3/25Форки — 11 форків
0/15Спостерігачі — 1 спостерігачів
Використані вхідні дані
forks11
stars30
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
18/18Настанови CONTRIBUTING
13.5/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так
Як обчислюється оцінка
52.7/80Щомісячні завантаження — 8 916 завантажень/місяць у npm
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packages@opus-aether-ai/pine-transpiler
dependents
ecosystemsnpm
total_downloads
monthly_downloads8 916
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

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

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

52Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
6/22.5Розподіл комітів — головний контриб’ютор — автор 73% комітів
2.7/13.5Широта контриб’юторів — 2 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 6 contributing companies or organizations
Використані вхідні дані
bus_factor1
contributors_sampled2
top_contributor_share0,734
Як обчислюється оцінка
23.4/46.8Вирішення issue — закрито 50% issue
29.4/38.3Прийняття PR — злито 50/65 вирішених PR
1.5/15OpenSSF Scorecard: Code-Review — Found 2/18 approved changesets -- score normalized to 1
Використані вхідні дані
merged_prs50
open_issues1
closed_issues1
issue_closed_ratio0,5
closed_unmerged_prs15

Власність та опіка

41У зоні ризику
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
4.3/25Охоплення власника — 3 підписників у Opus-Aether-AI
6.5/25Послужний список — 3 публічних репозиторіїв, вік облікового запису ~1 р.
Використані вхідні дані
followers3
owner_typeOrganization
is_verified
owner_loginOpus-Aether-AI
public_repos3
account_age_days390

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у npm
35/35Свіжість публікацій — остання публікація 29 дн. тому
20/20Історія версій — 12 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packages@opus-aether-ai/pine-transpiler
ecosystemsnpm
any_deprecatedні
min_days_since_publish29

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

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

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

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

85Відмінний
Як обчислюється оцінка
30/30README
25/25Каталог документації
0/15Сайт документації / домашня сторінка
10/10Опис репозиторію
10/10Теми — 11 тем
10/10Wiki
Використані вхідні дані
topicspine-script, technical-analysis, tradingview, transpiler, typescript, finance, indicators, javascript, parser, pinejs, trading
has_wikiтак
homepage
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

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

66Помірний · 16% загального індексу

Стан безпеки

66Помірний
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
3.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2/2.5CI-Tests — 25 out of 30 merged PRs checked by a CI test -- score normalized to 8
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0.8/7.5Code-Review — Found 2/18 approved changesets -- score normalized to 1
2.5/2.5Contributors — project has 6 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
3/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 6
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file 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_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate6,6
Виключено з оцінювання (немає даних або не застосовно): signed_releases. Залишкові ваги перенормовано.

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

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

60Помірний · 0% загального індексу
Як обчислюється оцінка
0/45Інструкції для агентів — немає CLAUDE.md / AGENTS.md / правил редактора
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 78 з 81 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,963
agent_instruction_files
agent_instruction_max_bytes
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — biome.json
11/11Статична перевірка типів — tsconfig.json
0/10Відтворюване середовище
2/10Підтверджена практика роботи з агентами — 1 з останніх 100 комітів створено агентом або з його зазначенням
8/8Автоматизоване супроводження — 12 з останніх 100 комітів — автоматичні оновлення залежностей
6/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 6
Використані вхідні дані
has_nixні
has_testsтак
lockfiles
has_dockerfileні
typed_languageтак
bootstrap_files
has_devcontainerні
has_linter_configтак
typecheck_configstsconfig.json
agent_commit_share0,01
toolchain_manifests
dependency_bot_commit_share0,12
Як обчислюється оцінка
45/45Типізований код — TypeScript (статично типізована)
54.8/55Керовані розміри файлів — 1/233 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageTypeScript
largest_source_bytes174 032
source_files_sampled233
oversized_source_files1

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

30зірок GitHub
2контриб'юторів
128комітів за останні 12 місяців
3днів від останнього пушу
21релізів
1бас-фактор
1відкритих issue
npmпакетних екосистем

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

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • No resolved dependencies carried a version and a supported ecosystem

Докладніше

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

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

0246810121112025-122026-032026-07
Мажорні 0Мінорні 3Патчі 12
OpenSSF Scorecard 6.6 / 10
6.6сукупно

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

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

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

РеєстрПакетВерсіяЗв'язок
npm@biomejs/biome^2.5.3непряма
npm@types/bun^1.3.14непряма
npm@types/node^26.1.1непряма
npm@typescript/typescript6^6.0.2непряма
npmbun-types^1.3.14непряма
npmtypescript^7.0.2непряма
npmvite^8.1.4непряма
npmvite-plugin-dts^5.0.3непряма
Сповіщення про залежності не оцінено

Звірка сповіщень не відбулася для цього звіту: No resolved dependencies carried a version and a supported ecosystem

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "pine-script",
        "technical-analysis",
        "tradingview",
        "transpiler",
        "typescript",
        "finance",
        "indicators",
        "javascript",
        "parser",
        "pinejs",
        "trading"
      ],
      "is_fork": false,
      "size_kb": 1800,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "JavaScript": 179755,
        "TypeScript": 1443717
      },
      "pushed_at": "2026-07-20T00:35:47Z",
      "created_at": "2025-12-01T09:43:57Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-23T10:18:46Z",
      "description": "Transpile Pine Script v5/v6 to executable JavaScript with zero dependencies.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "JavaScript"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Opus Aether AI",
      "type": "Organization",
      "login": "Opus-Aether-AI",
      "company": null,
      "location": null,
      "followers": 3,
      "avatar_url": "https://avatars.githubusercontent.com/u/218289460?v=4",
      "created_at": "2025-06-27T18:15:07Z",
      "is_verified": null,
      "public_repos": 3,
      "account_age_days": 390
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.4.11",
          "kind": "patch",
          "published_at": "2026-06-23T15:23:27Z"
        },
        {
          "tag": "v0.4.10",
          "kind": "patch",
          "published_at": "2026-06-21T19:28:06Z"
        },
        {
          "tag": "v0.4.9",
          "kind": "patch",
          "published_at": "2026-05-23T10:56:55Z"
        },
        {
          "tag": "v0.4.8",
          "kind": "patch",
          "published_at": "2026-05-22T19:07:34Z"
        },
        {
          "tag": "v0.4.7",
          "kind": "patch",
          "published_at": "2026-05-22T11:04:04Z"
        },
        {
          "tag": "v0.4.6",
          "kind": "patch",
          "published_at": "2026-05-21T23:05:27Z"
        },
        {
          "tag": "v0.4.5",
          "kind": "patch",
          "published_at": "2026-05-21T22:57:24Z"
        },
        {
          "tag": "v0.4.4",
          "kind": "patch",
          "published_at": "2026-05-21T23:08:20Z"
        },
        {
          "tag": "v0.4.3",
          "kind": "patch",
          "published_at": "2026-05-21T22:51:21Z"
        },
        {
          "tag": "v0.4.2",
          "kind": "patch",
          "published_at": "2026-05-21T22:51:20Z"
        },
        {
          "tag": "v0.4.1",
          "kind": "patch",
          "published_at": "2026-05-21T22:51:19Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-05-21T22:51:18Z"
        },
        {
          "tag": "v0.3.1",
          "kind": "patch",
          "published_at": "2026-05-17T01:05:26Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-05-17T00:40:30Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-04-25T06:51:22Z"
        },
        {
          "tag": "v0.1.5",
          "kind": "patch",
          "published_at": "2025-12-02T00:00:22Z"
        },
        {
          "tag": "v0.1.4",
          "kind": "patch",
          "published_at": "2025-12-01T22:35:46Z"
        },
        {
          "tag": "v0.1.3",
          "kind": "patch",
          "published_at": "2025-12-01T20:34:03Z"
        },
        {
          "tag": "v0.1.2",
          "kind": "patch",
          "published_at": "2025-12-01T12:50:20Z"
        },
        {
          "tag": "v0.1.1",
          "kind": "patch",
          "published_at": "2025-12-01T12:26:37Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2025-12-01T11:00:41Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "d543840c87a9ef3c62dbd82071f004754c869f72",
          "body": "* chore(deps): consolidate Dependabot updates\n\nAdopt TypeScript 7 with the official TypeScript 6 compatibility alias for declaration tooling.\n\n* fix(deps): make TypeScript 7 tooling portable",
          "is_bot": false,
          "headline": "chore(deps): consolidate Dependabot updates (#68)",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-07-15T10:35:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b848bfce5390338320bf749e6ee82d54fea559cd",
          "body": "#54 changed color output from transparency-dropping hex to correct\nrgba(). The visual-harness baselines committed by #55 captured the old\nhex output, so combined main drifted to 10 reds. Regenerate the 5\naffected color/fill baselines (bgcolor-zones, fill-bands,\ndrawing-lifecycle, table-scanner, ict-killzones). Both factory paths\nagree (visual mismatch, not parity); gate back to PASS 38 / FAIL 5.",
          "is_bot": false,
          "headline": "test(harness): regenerate visual baselines for rgba color emission (#56)",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-06-23T15:30:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8b55d15b0235010337752f817ed7abaa234b2c7",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.4.11 (#53)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-23T15:23:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8638bbfe5663b73d7347b13d70727f218146a2b2",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Commits](https://github.com/actions/checkout/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: '7'\n  depen\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump actions/checkout from 6 to 7 (#47)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-23T15:20:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7cb3ca10b8c1c532d4bb34ce97151d76c1461df3",
          "body": "…shared runtime (ADR-0001/0002/0003) (#55)\n\n* fix: implement linefill runtime so drawing scripts render (#40)\n\nThe Trading Sessions script (and any script using linefill) rendered\nnothing: `linefill` was unimplemented, so `linefill.new(...)` threw and\nhalted the whole script before any box/line/labe\n[…]\narness:gate wired into .github/workflows/ci.yml as a new step\n- run.ts exposes runVisualHarness() without changing CLI behavior\n\nAdditive; suite 1673/0, harness 38/5, gate exits 0, docs deterministic.",
          "is_bot": false,
          "headline": "refactor: collapse duplicate Pine runtimes into one registry-derived …",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-06-23T15:20:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "49129002a769ff31d9529cff3767a295617c24da",
          "body": "…settings + render) (#54)\n\nTradingView's parseRgb rejects 8-digit hex (#RRGGBBAA), so transparent colors\nbroke the indicator settings color picker AND left box/line bgcolor unparseable\n(nothing rendered). Working built-in indicators use rgba(r, g, b, a) — match that.\n\n- src/colors.ts: shared color p\n[…]\nba(41, 98, 255, 0.15);\n  full Trading Sessions emits only rgba/6-digit, never 8-digit hex\n- refresh snapshots/baselines that embedded the old 8-digit hex\n\nRefs #40. Suite 1657/0, typecheck/lint green.",
          "is_bot": false,
          "headline": "fix(color): emit rgba() for transparent colors, not 8-digit hex (#40 …",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-06-23T15:19:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6791216537be15b01ec8889ac3b77a37bf601858",
          "body": "…e 1) (#52)\n\nThe visual harness (introduced in the closed PR #30, stranded on release/0.4.8)\nis the right tool to catch drawing/parity drift during the runtime consolidation.\nBring it to main as a runnable tool (NOT a CI gate yet — Phase 5 promotes it).\n\n- tests/visual-harness/{run.ts,types.ts,rende\n[…]\nss-status.md as the drift baseline the consolidation\n  drives to green (Std.plot linewidth drift x3; stoch/supertrend non-iterable x2)\n\nNot part of `bun test`; full suite 1622/0, typecheck/lint green.",
          "is_bot": false,
          "headline": "test(harness): bring visual harness onto main as a manual guard (Phas…",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-06-23T06:06:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "046f6fcc2776e98a515ba233e5242abff0904a62",
          "body": "…ase 1) (#51)\n\nCloses the 'wrong math is invisible' gap: TA formulas were computed but never\nchecked for correctness (both factory paths share the impl, so the visual\nparity check can't catch a wrong formula).\n\n- golden-value tests for shipped StdPlus.* (bb/bbw/kc/kcw/hma/mom/macd/wpr/ao)\n  and the \n[…]\n-test from first principles (window-mean SMA,\n  Wilder RMA/RSI, EMA seeding, HMA, %R, ...), NOT copied from the impl under\n  test; warmup-NaN + steady-state both asserted\n\nAdditive; full suite 1637/0.",
          "is_bot": false,
          "headline": "test(golden): TA-math correctness vs independent reference values (Ph…",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-06-23T06:05:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "47850c989e15be356596161888e61de2fe7f9a8c",
          "body": "…rary (Phase 1) (#50)\n\nValidates emitted native Std.* TA calls against the REAL TradingView Host\ncontract (vendored from charting_library.d.ts; context is always LAST) — the\nclass of regression that shipped as #35.\n\n- assert each ta.* emits context-LAST with correct arity (14 functions)\n- ratcheting\n[…]\non/ta.stoch/ta.cum series-vs-scalar) found by the test — fails on\n  a new disagreement OR a silently-fixed one. To resolve during the registry\n  consolidation (ADR-0001).\n\nAdditive; full suite 1637/0.",
          "is_bot": false,
          "headline": "test(contract): host-contract test for Std.* TA calls vs charting_lib…",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-06-23T06:03:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "facf0f6974e5da425f61a6c2c67f41f4e88a0934",
          "body": "The Trading Sessions script (and any script using linefill) rendered\nnothing: `linefill` was unimplemented, so `linefill.new(...)` threw and\nhalted the whole script before any box/line/label could draw.\n\n- implement the `linefill` namespace (new/set_color/delete/get_line1/\n  get_line2) in both runti\n[…]\n is\n  emitted when methods are used\n- regression: full Trading Sessions script runs with no caught error and\n  emits box/line/label/linefill events; named-arg ordering covered\n- rebuild dist\n\nRefs #40",
          "is_bot": false,
          "headline": "fix: implement linefill runtime so drawing scripts render (#40) (#49)",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-06-23T06:03:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eadd2c676e6ba4edc3edf8949715ac3d20155351",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>\nCo-authored-by: Aditya Sharma <79504411+Garou11@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.4.10 (#43)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-21T19:27:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "475a2d43c65ed8dfc73f3f8aad2a376cbf2bfc1f",
          "body": null,
          "is_bot": false,
          "headline": "ci: remove invalid dependabot labels (#46)",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-06-21T19:25:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6ca0d34ae45cfa205d31a29bb1d70bfe41e64dd0",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): parse release-please PR JSON at runtime (#45)",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-06-21T19:24:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da00dc35e52621b3a70f406511a7c811cd02a11d",
          "body": "* test: tighten stdplus review coverage\n\n* test: remove stale stdplus cleanup caches\n\n* test: update stdplus cleanup snapshots",
          "is_bot": false,
          "headline": "test: tighten StdPlus review coverage (#44)",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-06-21T19:24:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "16e7ef28403a983910742f1c3da78b5c323ec2ae",
          "body": "* fix: preserve color input metadata\n\n* test: update color input visual snapshot\n\n* fix: preserve color input transparency\n\n* build: regenerate dist for color input fix\n\n* fix: handle named color rgb inputs\n\n* fix: override color alpha transparency\n\n* fix: resolve color input variable defaults\n\n* fi\n[…]\ne defaults\n\n* fix: require color literal kind for hex defaults\n\n* fix: avoid bare color identifier fallback\n\n---------\n\nCo-authored-by: Ithihas Madala <58927988+ithihasmadala@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: preserve color input metadata (#42)",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-06-16T23:03:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5f11eaf268ac90d5654b40dbcd43c7e2e84e6390",
          "body": "* fix: emit PineJS TA context last\n\n* build: regenerate dist for context order fix\n\n---------\n\nCo-authored-by: Ithihas Madala <58927988+ithihasmadala@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: emit PineJS TA context last (#41)",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-06-16T21:46:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d7a66f4fd17e87260ffbfef8d05a54df44a1c4e8",
          "body": "….3 (#39)\n\nUpdates the requirements on [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) to permit the latest version.\n- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)\n- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/co\n[…]\nependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Ithihas Madala <58927988+ithihasmadala@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): update @types/node requirement from ^25.9.1 to ^25.9…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-16T21:35:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "919fc36fc59fcfc881ccb5f25d26b8c5e4c96370",
          "body": "Updates the requirements on [vite-plugin-dts](https://github.com/qmhc/unplugin-dts/tree/HEAD/packages/vite-plugin-dts) to permit the latest version.\n- [Release notes](https://github.com/qmhc/unplugin-dts/releases)\n- [Changelog](https://github.com/qmhc/unplugin-dts/blob/main/packages/vite-plugin-dts/\n[…]\nependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Ithihas Madala <58927988+ithihasmadala@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): update vite-plugin-dts requirement (#38)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-16T21:35:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dd185de5f6c5305688f2dd5d62714ecbee587280",
          "body": "Updates the requirements on [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) to permit the latest version.\n- [Release notes](https://github.com/vitejs/vite/releases)\n- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)\n- [Commits](https://github.com/vitejs\n[…]\nependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Ithihas Madala <58927988+ithihasmadala@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): update vite requirement from ^8.0.14 to ^8.0.16 (#37)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-16T21:32:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e812bc73283c32278d2753c7ca1f56511ee3ba63",
          "body": "Updates the requirements on [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) to permit the latest version.\n- [Release notes](https://github.com/biomejs/biome/releases)\n- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)\n-\n[…]\ndency-version: 2.4.16\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): update @biomejs/biome requirement (#36)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-16T21:32:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "115502468a34fd16e7e46d131d285204f3ac2309",
          "body": "…4 (#33)\n\nUpdates the requirements on [@types/bun](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/bun) to permit the latest version.\n- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)\n- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commi\n[…]\ndency-version: 1.3.14\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): update @types/bun requirement from ^1.3.13 to ^1.3.1…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-16T21:28:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "116eafa9115af4905ff8a69aaaafbf4e212e097e",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.4.9 (#32)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-23T10:56:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b61b4c5e4d8e2e313177fd62c08a85091911177",
          "body": "TradingView's charting_library `parseIdString` only accepts the\ncanonical `tv-basicstudies-N` bundle name; the bare `basicstudies-N`\nform is rejected with\n\n  Error: unexpected study id: User_<id>@basicstudies-1\n    at w.parseIdString\n    at nv.studiesMetadata\n    at nf.getEnabledTools\n\nwhich surface\n[…]\n9) as a transient workaround; once this\npatch ships in a new pine-transpiler release and the package is\nbumped, that workaround can be removed.\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(metainfo): prefix study ids with `tv-basicstudies-N` (#31)",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-05-23T01:10:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8ed67f9fb2b04e77175664c5481c5114d9072f68",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.4.8 (#29)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-22T19:07:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1df4135d7b63a823f5133d7d7813fa6478efcbf",
          "body": "…tes (#28)\n\nPhase 16–18 audit follow-ups and Phase 20 bug fix landing as one\ncoherent quality pass before kicking off Phase 19/20 properly.\n\nRuntime fixes\n- fix(factory): time_tradingday now anchors to the exchange-timezone\n  midnight via __readClockAt instead of JS-local-time setUTCHours(0).\n  Prev\n[…]\n6 net new test cases)\n- corpus:strict: all 25 cases pass within tolerance\n- chart:safety: 0 failures across the 6 contracts\n- corpus:gate: PASS across all lanes/authenticity buckets\n\nRelease-As: 0.4.8",
          "is_bot": false,
          "headline": "feat: corpus + harness polish, top100/200 matrices, and validation ga…",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-05-22T19:04:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d4a9d8bb151fbc9831d7fbfd60ebc3327904ba67",
          "body": "…ase PRs (#27)\n\nConsolidates release detection and publishing into a single workflow run\nso the cross-workflow trigger problem (push: tags: events created by\nGITHUB_TOKEN do not fire downstream workflows) disappears permanently.\nAdds GitHub-native auto-merge on Release PRs so a single feature-PR\nmer\n[…]\nhe primary path fails mid-flight (e.g. one registry\n  up, one down)\n- removed the broken `push: tags:` trigger (GITHUB_TOKEN events do not\n  fire it; that's why v0.4.6 and v0.4.7 never auto-published)",
          "is_bot": false,
          "headline": "ci: merge release-please + publish into one workflow, auto-merge Rele…",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-05-22T11:18:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d3bd49cc6e295e06b7c5f31f37120e88f1222855",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.4.7 (#26)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-22T11:03:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6506237f3a34c8082851e8f8d7da69062f0f4f3b",
          "body": "…idation gates (#25)\n\n- normalize top100/top200 target sets to true 100/200 and regenerate matrix docs\n- keep README SEO/legal language while cleaning non-README host references\n- align changelog/test-path naming after runtime-harness renames\n- clean placeholder URL references in docs/source comments\n- verify full stack passes: typecheck, lint, tests, build, corpus, safety gate, and scanner\n\nRelease-As: 0.4.7",
          "is_bot": false,
          "headline": "chore: finalize corpus + harness polish, top100/200 matrices, and val…",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-05-22T11:02:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b5028e40ec6be8f770b4d5f15142989e5fb67157",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.4.6 (#24)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-21T23:05:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "348f42da451a7375f46793ca8da81b8f85c96d65",
          "body": "v0.4.5 has shipped (tagged on main + published to npm via local\nbun run release), but the release-please manifest still showed 0.4.4\nas the last-released version. That caused PR #19 to keep proposing a\nphantom 0.4.5 release containing #18+#21+#22 — none of which actually\nwent into the real v0.4.5 (that was PR #20's visual-events parity).\n\nBumping manifest to 0.4.5 makes release-please's next Release PR a\nproper 0.4.6 proposal covering #21 (fix(ci)) + #22 (docs) + whatever\nlands next.",
          "is_bot": false,
          "headline": "chore: bump release-please manifest to 0.4.5 (already published) (#23)",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-05-21T23:00:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6ec0273dbe0fd96d32cfde901643388d4d02d151",
          "body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 0.4.5 (#19)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-21T22:58:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "947d4ff22ddda833670e80492319d9daec5132fd",
          "body": "…tstrap-sha (#22)\n\nThree historical releases had git tags + npm presence (0.4.4) but no\nCHANGELOG entry. Adding them now so the file matches the published\nrecord before release-please takes over going forward.\n\n## CHANGELOG entries added\n\n- **0.1.5** (2025-12-02): session inputs, bgcolor extraction,\n[…]\nive op the harness wouldn't authorize from\n  the agent; the commands are handed back to the maintainer.\n- Creating the 6 missing GitHub Releases — separate `gh release create`\n  calls, no diff needed.",
          "is_bot": false,
          "headline": "docs: backfill CHANGELOG entries for 0.1.5 / 0.4.4 / 0.4.5 + bump boo…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-05-21T22:54:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "988650248c108db7dee7f5d5ed3de27439f44550",
          "body": "… correctly (#21)\n\nWithout bootstrap-sha, release-please's first run cannot find a previous\nrelease-please commit on main, so it walks back to genesis and tries to\ninclude every commit since v0.1.0 in the next CHANGELOG entry. PR #19\nwas the symptom — a 0.4.5 release proposal that listed 'implement\n\n[…]\nlives there. The next Release PR will scope to\ncommits AFTER v0.4.4 only — i.e. the feat(ci) from PR #18, the four\nchore(deps) dependabot merges, and whatever feat/fix work lands next\nfrom PR #20 etc.",
          "is_bot": false,
          "headline": "fix(ci): add release-please bootstrap-sha so first run scopes commits…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-05-21T22:43:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "999230cb5551e1327da321eeb159cc8ec89ea3ea",
          "body": "….1 (#14)\n\nUpdates the requirements on [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) to permit the latest version.\n- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)\n- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/co\n[…]\nependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Ithihas Madala <58927988+ithihasmadala@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): update @types/node requirement from ^25.6.0 to ^25.9…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-21T22:42:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f0db6ca434f7f4ada72c709758d10a97b778dcc1",
          "body": "Bumps [vite-plugin-dts](https://github.com/qmhc/unplugin-dts/tree/HEAD/packages/vite-plugin-dts) from 4.5.4 to 5.0.1.\n- [Release notes](https://github.com/qmhc/unplugin-dts/releases)\n- [Changelog](https://github.com/qmhc/unplugin-dts/blob/main/packages/vite-plugin-dts/CHANGELOG.md)\n- [Commits](https\n[…]\nrect:development\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): bump vite-plugin-dts from 4.5.4 to 5.0.1 (#17)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-21T22:40:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8e4ca39e794322007032959b63964492c8395d1c",
          "body": "… fix (#20)\n\n* feat(factory): emit __visualEvents from standalone factory output\n\n- indicator-factory: wrap line/box/label/table stubs + visual Std calls\n  in proxies that push canonical events into a shared VisualEmissionContext,\n  matching live-factory emission. Attach __visualEvents and\n  __visua\n[…]\nession: new feature-matrix scan, CSP safety, output parity,\n  visual-events parity, and shared parity test utils — locks\n  standalone output behavior against the live factory.\n\n* chore(release): 0.4.5",
          "is_bot": false,
          "headline": "release: v0.4.5 — standalone __visualEvents parity + method prototype…",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T22:39:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "292dee26ee78cf1c8c9d0f49f0f7342d69126e8e",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4...v6)\n\n---\nupdated-dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump actions/checkout from 4 to 6 (#12)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-21T22:36:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b9a7c0ca7f76da9408b3ffa0cdbc748e7d53ccb7",
          "body": "Updates the requirements on [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) to permit the latest version.\n- [Release notes](https://github.com/vitejs/vite/releases)\n- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)\n- [Commits](https://github.com/vitejs\n[…]\ndency-version: 8.0.14\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): update vite requirement from ^8.0.10 to ^8.0.14 (#16)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-21T22:36:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cc75f141ce2ab4f0e135f3d8bd1c151fef403a45",
          "body": "Updates the requirements on [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) to permit the latest version.\n- [Release notes](https://github.com/biomejs/biome/releases)\n- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)\n-\n[…]\ndency-version: 2.4.15\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): update @biomejs/biome requirement (#15)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-21T22:36:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a73d26aba5e932a58f3dd79413e0f3a4190ddb9a",
          "body": "… (#13)\n\nUpdates the requirements on [bun-types](https://github.com/oven-sh/bun/tree/HEAD/packages/bun-types) to permit the latest version.\n- [Release notes](https://github.com/oven-sh/bun/releases)\n- [Commits](https://github.com/oven-sh/bun/commits/bun-v1.3.14/packages/bun-types)\n\n---\nupdated-depen\n[…]\ndency-version: 1.3.14\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): update bun-types requirement from ^1.3.13 to ^1.3.14…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-21T22:36:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1ecd42d4071a55ff2b38b3d5a175dc020b95a0da",
          "body": "Closes the \"npm publish via OIDC workflow\" audit P1 from\ndocs/audits/2026-05-21/01-security.md, and replaces the manual\n`bun run release` flow with full end-to-end automation.\n\n## What's new\n\n1. `.github/workflows/release-please.yml`\n   Watches `main` for Conventional Commits. Opens / updates a Rele\n[…]\nne-transpiler`\nthat trusts this repo + `release.yml` + `release` environment. Steps\nin docs/RELEASING.md. The legacy `bun run release` script is kept in\npackage.json as the fallback until that's done.",
          "is_bot": false,
          "headline": "feat(ci): automate releases with release-please + OIDC npm publish (#18)",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-05-21T22:32:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e442da87403fc94b59b3cd43ab830567e970c505",
          "body": "* chore: OSS-readiness pass 1 — docs, hygiene, repo settings\n\nAddresses the P0/P1 OSS items from docs/audits/2026-05-21/. Pure\ndocumentation + GitHub repo hygiene; no source-code changes.\n\n## Docs fixes (P0)\n\n- CONTRIBUTING.md: license line said AGPL-3.0; project is MIT.\n  Fixed to MIT and linked to\n[…]\n-actions PR limit was overkill\n\nThe repo only uses ~2 actions today (actions/checkout,\noven-sh/setup-bun); a limit of 5 was overspecified. Lowered to 3\nwith an inline comment explaining the rationale.",
          "is_bot": false,
          "headline": "chore: OSS-readiness pass 1 — docs, hygiene, repo settings (#10)",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-05-21T22:22:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3bd81159a0231431f0a8cc935391c2791fbaeb42",
          "body": "* fix(generator): scope method prototype lookup to avoid receiver shadowing\n\n- statement-generator: bind prototype to a per-scope local before\n  installing instance methods, so subsequent assignments to the\n  receiver identifier do not break the method-binding emit\n- fixture: drop method_binding fro\n[…]\nings expected\n  signal (now emitted via prototype-var path)\n- add scripts/scan-script.ts + 'scan' package script for ad-hoc\n  standalone-factory smoke runs over .pine fixtures\n\n* chore(release): 0.4.4",
          "is_bot": false,
          "headline": "Release/0.4.4 (#11)",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T22:10:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c87bbba90a02fade8807754a22db051279fd119f",
          "body": null,
          "is_bot": false,
          "headline": "style: biome auto-format on standalone-factory codegen template",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T21:25:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eca585bb0cdd2c80979e74783aa2ae7cb2b2e6c1",
          "body": null,
          "is_bot": false,
          "headline": "0.4.3",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T21:24:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe3afd1a9d82a244f91ad2b71471caae5546ee67",
          "body": "`transpileToStandaloneFactory` now emits a fully self-contained ESM\nmodule that doesn't depend on transpiler internals at chart runtime.\nPreviously the generated code referenced helper functions that lived\nin the transpiler's `dist/` and were unavailable when the factory\nwas built once at deploy tim\n[…]\n runtime. Catches the entire class\n  of \"the string looks right but it doesn't work at runtime\" bugs.\n\n1469/1469 tests pass (was 1425; +44 new — full curated-fixture\nwalk through the standalone path).",
          "is_bot": false,
          "headline": "fix(generator): self-contained standalone factory output",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T21:24:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "795fec9639608cdd45f8f90ed13ba444e6b129d9",
          "body": "…computed vars\n\n`transpileToStandaloneFactory` previously synthesized the indicator\n`main()` body by emitting computed-variable assignments first, then\nattempting to use them. Pine scripts that called user-defined\nfunctions, methods, or `type` constructors from those computed\nassignments produced Ja\n[…]\n standalone factory output.\n\n1425/1425 tests pass (was 1422; +3 new regression tests).\n\nCHANGELOG updated. Version bumped 0.4.1 → 0.4.2 (patch — bug fix on\na path that strict-CSP consumers depend on).",
          "is_bot": false,
          "headline": "fix(generator): standalone factory emits user-defined symbols before …",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T20:44:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "202eac10422cab0a50d484e2bd3456eeb1e00f64",
          "body": "Maps personal emails to GitHub noreply aliases so any future-leaked\ncommit metadata displays the noreply form in git log, GitHub UI, and\ncontributor pages.",
          "is_bot": false,
          "headline": "chore: add .mailmap",
          "author_name": "Ithihas",
          "author_login": "ithihasmadala",
          "committed_at": "2026-05-21T20:20:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e71e7e8b3ec92fb8372027ec68e9585d26baab2c",
          "body": null,
          "is_bot": false,
          "headline": "0.4.1",
          "author_name": "Aditya",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T19:47:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a0f07bbecc005bc3fc475f12166461a96c18213",
          "body": "… codegen\n\n`transpileToStandaloneFactory` (the strict-CSP path) crashed at\n`new Function(...)` parse with `SyntaxError: Identifier 'High_Low' has\nalready been declared` on the ICT killzones fixture. Root cause: the\nnative main-body generator emitted Pine variable names directly into\nthe JS preamble,\n[…]\n------\n\n1422/1422 tests pass (was 1420; +2 new regression tests). `dist/`\nrebuilt with the fix; the standalone factory output now produces\nclean JS for ICT killzones and similar drawing-heavy scripts.",
          "is_bot": false,
          "headline": "fix(generator): sanitize + uniquify identifiers in standalone factory…",
          "author_name": "Aditya",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T19:47:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2286989a7fee122129e3d3070d44d79a6181982f",
          "body": null,
          "is_bot": false,
          "headline": "0.4.0",
          "author_name": "Aditya",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T19:37:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "abeea64775f09df5b095d5434db11d78ee6b1fa5",
          "body": "…ted docs\n\nThe README had grown to 651 lines, burying the value prop under API tables,\npipeline diagrams, corpus tooling, and command lists. Hard to scan, hard for\nsearch engines to weight, and the install instructions sat ~60 lines down.\n\nThis is a structural reshuffle, not a content rewrite — ever\n[…]\ne publish docs from the recent release setup.\n\nVerified\n--------\n\n1420/1420 tests pass. No content lost — every link in the new README\npoints at a real doc that contains the content it used to inline.",
          "is_bot": false,
          "headline": "docs: lean SEO-optimized README + split technical content into dedica…",
          "author_name": "Aditya",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T19:32:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "89069fbe6cbdd7b0143385a6753c6854847a073b",
          "body": "Following a safe-harbor review of the project's posture as a public\nopen-source developer tool. Changes are positioning and licensing only;\nno functional code changes.\n\nLicense: AGPL-3.0 → MIT\n----------------------\n\nAGPL was misaligned with this project's actual use case. As a\ndeveloper interoperab\n[…]\nh\nrun.\n\nTests / dist\n------------\n\n1418 / 1418 passing. `dist/` rebuilt so the published bundle's\n\"Generated by\" header points at the renamed package and the LICENSE\nshipped in the tarball is now MIT.",
          "is_bot": false,
          "headline": "docs: legal-safe framing — MIT license, DISCLAIMER.md, scope reframe",
          "author_name": "Aditya",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T17:52:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1c2472aa376dd5fe792a6e06e9172dcd5ca332d1",
          "body": "Publish to BOTH registries from one command. Public npm is the path\nfor external consumers (no auth); GitHub Packages mirrors the same\npackage for org-internal pipelines that already auth against GitHub.\n\nScripts\n-------\n\n- `publish:npm` — explicitly targets public npm (registry.npmjs.org).\n  Runs `\n[…]\nd a \"Releasing\n(maintainers)\" subsection with the `bun run release` flow.\n\nTests\n-----\n\n1417 / 1417 passing. tests/cli/commands.test.ts updated in the prior\nrename commit; carried over here unchanged.",
          "is_bot": false,
          "headline": "chore: dual-registry publish setup (public npm + GitHub Packages)",
          "author_name": "Aditya",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T16:00:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "efe07a1d4b3938e1aaa3315537c9d45147c00b52",
          "body": "GitHub Packages requires the npm scope to exactly match the owning\nGitHub organization (case-insensitive). The repo lives at\n`Opus-Aether-AI/pine-transpiler`, so the package scope must be\n`@opus-aether-ai` (hyphenated). The previous `@opusaether` name was\nnever published anywhere — confirmed via `np\n[…]\n lands\n- `npm publish` (with GitHub Packages auth via PAT) ships v0.3.x to\n  the registry\n- Consumers update package.json from `github:...#sha` ref to\n  `@opus-aether-ai/pine-transpiler@^0.3.x` semver",
          "is_bot": false,
          "headline": "chore: rename package @opusaether → @opus-aether-ai to match GitHub org",
          "author_name": "Aditya",
          "author_login": "Garou11",
          "committed_at": "2026-05-21T15:55:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4295ac9b51d9729dad78d58329a3982c2bcd1d20",
          "body": "…zeRequiredHelpers (#8)\n\nInternal deepening pass. No public-API breakage — every existing\ntop-level export keeps its signature.\n\nThree changes:\n\n1. **src/csp-errors.ts** — single source of truth for CSP-eval error\n   detection. isUnsafeEvalCspError + withCspEvalHint (string-return)\n   + appendCspHin\n[…]\nry and generateStandaloneFactory. The two paths\nproduce semantically different metainfo shapes by design — extracting\na shared builder would spread shape-adapter complexity rather than\nconcentrate it.",
          "is_bot": false,
          "headline": "refactor: v0.3.1 — extract csp-errors, attachPineJsBody, retire analy…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-05-17T01:04:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2c0d933ba24dba5e0d2f0853eda586aef2b49bfe",
          "body": "Moves the 8 remaining top-level markdown files into docs/ so the\nroot only carries the 4 GitHub-convention files (README, CHANGELOG,\nCONTRIBUTING, CODE_OF_CONDUCT) plus LICENSE:\n\n- docs/CRITICAL_INDICATOR_MATRIX.md\n- docs/DIFFERENTIAL_PARITY_REPORT.md\n- docs/FOREX_XAU_MATRIX.md\n- docs/FUTURE_PARITY_\n[…]\new-top200-matrix.ts\n\nCross-references updated in README.md, CHANGELOG.md,\ndocs/FUTURE_PARITY_ROADMAP.md, src/index.ts,\nsrc/factory/indicator-factory.ts, and\ntests/contract/visual-events-shape.test.ts.",
          "is_bot": false,
          "headline": "docs: move root .md sprawl into docs/, update script output paths (#7)",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-05-17T00:40:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c59d20f68b2cfb5080583e55bbf593adcdfaf0a4",
          "body": "…(#6)\n\nOSS-readiness pass + architectural deepening on top of PR #5's parity\nupgrade. No public-API breakage.\n\nPipeline (src/pipeline.ts) exposes parse, extractMetadata, generateBody,\nbuildFactory, buildStandaloneFactoryCode, compile as composable stages.\ntranspileToPineJS and transpileToStandaloneF\n[…]\nher-AI,\nremoved stale .npmignore. Moved hand-edited reference docs\n(LIMITATIONS.md, CORPUS-BASELINE.md) into docs/ — script-generated\nparity matrices stay in root because scripts/corpus/* write there.",
          "is_bot": false,
          "headline": "feat: v0.3.0 — pipeline API, helper-usage tracker, 95% coverage gate …",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-05-17T00:31:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b07aaa00ec8b4c3abb8bdd3be673d8b174bf04f9",
          "body": "…… (#5)\n\n* feat: major PineScript parity pass with runtime semantics and parity tooling\n\nAdd strict numeric audit and 67-indicator matrix with CI gates.\n\nImplement var/varip persistence, barstate/session/time bindings, and partial request.security passthrough.\n\nUpgrade drawing/table namespaces to st\n[…]\nate const identifiers are handled correctly, verifying that they are transpiled to `var` and do not cause runtime errors.\n\n---------\n\nCo-authored-by: Aditya Sharma <natehiggers@Adityas-Mac-mini.local>",
          "is_bot": false,
          "headline": "feat: major PineScript parity pass with runtime semantics and parity …",
          "author_name": "Aditya Sharma",
          "author_login": "Garou11",
          "committed_at": "2026-05-16T21:31:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2e9f2a89da5c68d6cb32fa247dfb8d65e5dabec0",
          "body": null,
          "is_bot": false,
          "headline": "docs: README install — use GitHub URL until npm publish",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T07:06:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "39bf1ae411071850d53b4562c1bd93c0abc1cd8a",
          "body": null,
          "is_bot": false,
          "headline": "ci: drop leftover vitest/config import from vite.config.ts",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T07:05:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d416b77f3f3643bb223be63707ed7b72ce638c10",
          "body": null,
          "is_bot": false,
          "headline": "ci: drop unsupported --frozen-lockfile=false flag",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T07:04:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2835f96dcc5a943f343db893c5872deea389748d",
          "body": "- Rewrite .github/workflows/ci.yml to use oven-sh/setup-bun\n  (was failing on missing pnpm-lock.yaml since the migration\n  to bun + bun:test in v0.2.0)\n- Scope `lint` to src/ only — scripts/ and tests/ legitimately use\n  console; dist/ is committed for git-URL installs and shouldn't\n  be linted\n- Add `types: [\"node\"]` to tsconfig — process / node:* imports in\n  src/cli/* need explicit node types under bun\n- Add @types/bun devDep\n- Re-organize src/index.ts exports per biome",
          "is_bot": false,
          "headline": "ci: migrate workflow to bun + fix typecheck/lint scope",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T07:03:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b5000aa04994aba8235c652fe8c4f2cb84cd357",
          "body": "34 commits driving real-world Pine pass rate from a fake \"86%\" (silent\nheuristic-masked failures) to an honest 64% on a 92-fixture corpus\nthat includes 52 community scripts scraped from public GitHub repos.\nCurated fixtures: 100% (40/40).\n\nSee CHANGELOG.md for the full v0.2.0 entry.",
          "is_bot": false,
          "headline": "Merge feat/bun-body-corpus-fixes — v0.2.0 corpus-driven correctness pass",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T06:50:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85d330f61162fb666fcebc3d9a2e59ce4ff7386c",
          "body": null,
          "is_bot": false,
          "headline": "style: formatter pass on scrape.ts (DEST_ROOT join + multi-line strings)",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T06:50:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62c4ae2edb4d4d22293e5f0b0447a2e65567778c",
          "body": "Bun's git URL install (`github:Opus-Aether-AI/pine-transpiler#v0.2.x`)\nclones the repo and runs the `prepare` script — but does NOT install\ndevDependencies for the cloned package. So `prepare: vite build`\nfails with \"vite: command not found\" and dist/ never materialises in\nthe consumer's `node_modul\n[…]\nrary, not a workspace.\n- Consumers install pre-built JS, not source.\n- npm's `files` allow-list still scopes the published tarball to dist\n  + README + LICENSE, so npm publishers get the same hygiene.",
          "is_bot": false,
          "headline": "chore: ship dist/ in git for v0.2.x consumers using github: install",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:56:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5d887a94ecdee03aed91c768eb54794e2032a45f",
          "body": "The 31 commits on this branch — corpus framework, parser/generator\nfixes, wrapper expansion — are a major correctness leap. Cut a 0.2.0\nrelease.\n\n`prepare: vite build` is added so consumers installing via a git URL\n(e.g. `github:Opus-Aether-AI/pine-transpiler#v0.2.0`) auto-build the\ndist/ at install\n[…]\ncutive-if and switch-as-expression parser fixes\n- Lexer line-continuation\n- na(x) is a function call, not a NaN literal\n- Wrapper bindings: 25+ new Pine namespaces / globals\n- bun + bun:test migration",
          "is_bot": false,
          "headline": "chore: bump version 0.1.4 → 0.2.0; add prepare script for git installs",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:54:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "48d73796b63b28a8ebe460a19215421a35e0d716",
          "body": "…pass)",
          "is_bot": false,
          "headline": "style: reflow callableProxy + tightened parser whitespace (formatter …",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:51:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2af7ccd78a56349ac41266ec60597eac89f36ed2",
          "body": "…ields\n\nTwo coupled changes for Pine v6 user-defined types:\n\n1. parseTypeDefinition's field parser now also recognises user-type\n   field annotations: \\`Imbalance[] imbalance\\`,\n   \\`Imbalance_Settings settings\\`. Previously the parser only matched\n   built-in TYPE_KEYWORDS in field position; user-t\n[…]\n 59/92 because the fixtures using these features hit the\n*next* downstream issue (e.g. \\`FVG_1 is not defined\\` — yet another\nparser symptom), but again the symptom ladder progresses one rung\nper fix.",
          "is_bot": false,
          "headline": "feat(generator+parser): Pine v6 user types support .new() and array f…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:49:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1b6e5b41f80f4c9ec548e839ef54a8a8be162eb8",
          "body": "Pine v6 lets you declare variables typed by a user-defined type:\n  type Imbalance_Settings\n      bool show\n      ...\n\n  Imbalance_Settings htf_1_Settings = Imbalance_Settings.new()\n\nThe parser only recognised the built-in TYPE_KEYWORDS list (\\`int\\`,\n\\`float\\`, \\`bool\\`, \\`color\\`, \\`array\\`, \\`map\\\n[…]\nType.new()\\` which isn't yet stubbed (next layer), but the symptom\nladder progressed: \\`htf_1_Settings is not defined\\` → \\`Settings.new\nis not a function\\`. Each layer peeled is incremental progress.",
          "is_bot": false,
          "headline": "feat(parser): support Pine v6 user-defined type prefixes in declarations",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:47:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fadc8e2c06e2f9a4242d2634b84705b02afa312c",
          "body": "Pine v6 has compound-assignment operators, and they're common in\nreal-world scripts:\n  current_cum_vol += volume\n  total -= subtotal\n  count *= 2\n\nThe parser only accepted \\`=\\` and \\`:=\\` after an identifier, so a\ncompound assignment threw the operator-validation error, fell through\nto expression p\n[…]\nsting variable\nrather than declaring a new one). The generator passes the operator\nthrough verbatim; JS supports all of them.\n\nCorpus: 58/92 → **59/92 (64%)**, arunkbhaskar 3/26 → 4/26.\nCurated 40/40.",
          "is_bot": false,
          "headline": "feat(parser): support compound-assignment operators (+= -= *= /= %=)",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:45:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b837b5dbfd0bdf7594b7385148e90be9eac2cf56",
          "body": "…ixes\n\n\\`var float[] arr = array.new_float(2)\\` is standard Pine v6 — the\n\\`[]\\` after the type name marks the type as \"array of …\". The parser\nwas reading only the type identifier (\\`float\\`), so the trailing\n\\`[] arr = …\\` confused downstream parsing and the whole declaration\ngot dropped. User cod\n[…]\ndless of declared\nelement type — so consuming and discarding the brackets is enough to\nlet the rest of the declaration parse.\n\nCorpus: 57/92 → **58/92 (63%)**, arunkbhaskar 2/26 → 3/26.\nCurated 40/40.",
          "is_bot": false,
          "headline": "feat(parser): consume Pine v6 \\`float[]\\` / \\`int[]\\` array type suff…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:43:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a76d0c48139b077f46b794ecd4d90441d186ee21",
          "body": "Pine permits multiple typed declarations on a single line:\n  bool ph = false, bool pl = false\n  int prev_ph_bi = na, int prev_pl_bi = na\n\nThe parser was processing only the first one and dropping everything\nafter the comma — so user code that referenced \\`pl\\` or \\`prev_pl_bi\\`\nlater in the script c\n[…]\nuser-vars-not-defined),\nbut the symptom ladder progresses: e.g. ict_equal_highs_and_lows\nnow hits \"ph_arr is not defined\" instead of \"pl is not defined\".\nEach peeled-back layer is a step toward green.",
          "is_bot": false,
          "headline": "feat(parser): support comma-separated typed declarations on one line",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:42:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "def3532aea8a16d1214c0e772d283ee6ca469686",
          "body": "…sing\n\nSame bug pattern as parseTernary / parseSwitchStatement / parseIfStatement:\n\\`match(OPERATOR) && previous().value === '='\\` consumes any OPERATOR\nbefore checking, so a non-\\`=\\` operator (rare but legal in Pine\nparameter lists with default-value clauses or type-field initializers)\nsilently co\n[…]\nform. No corpus delta yet because no\nfixture happened to exercise these paths with a non-\\`=\\` operator,\nbut the latent bug would have surfaced on Pine v6 method types with\ndefault-valued type fields.",
          "is_bot": false,
          "headline": "fix(parser): two more match-then-check-value spots in type/method par…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:40:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ea613eee7b08b63bb6c7e1d53ae2428245516430",
          "body": "parseTernary used the same `match(OPERATOR) && previous().value ===\n'?'` pattern that I'd already fixed in parseIfStatement and\nparseSwitchStatement. \\`match\\` consumes any OPERATOR before the value\ncheck; on a non-\\`?\\` operator (e.g. the \\`=\\` in \\`x = switch …\\` or\nthe \\`+\\` between two operands \n[…]\nitch — and any following code\nthat depended on its result — got dropped.\n\nSwitch as RHS / function body now transpiles cleanly. Corpus:\n56/92 → **57/92 (62%)**, everget 4/8 → 6/8 (75%). Curated 40/40.",
          "is_bot": false,
          "headline": "fix(expression-parser): peek-then-advance for ternary `?` operator",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:39:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2de4df45b5e51836b279e38d95ca47ef3eb49bfd",
          "body": "Pine v6 supports `const color buyColor = color.blue` as a typed const\ndeclaration. parseStatement only matched `var` and `varip` in the\nkeyword switch, so `const` declarations fell through to expression\nparsing, which then failed and the user variable was silently dropped\nfrom scope. Downstream refe\n[…]\n`kind`\nfield already carries the qualifier through to the generator.\n\nCorpus: 54/92 → **56/92 (61%)**. everget moved from 3/8 → 4/8 (50%);\ntwo other harryguiacorn fixtures also flipped. Curated 40/40.",
          "is_bot": false,
          "headline": "fix(parser): handle Pine v6 'const' keyword as variable-decl introducer",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:33:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e720a63442603f4a296f17bd299b3baa8b55b074",
          "body": "…tion\n\nThree more wrapper improvements:\n\n**Callable Pine namespace stubs**: `chart`, `format`, `string`, `ticker`\nwere Proxies that supported member access but not call invocation.\nPine code does `string(NaN)`, `format.price`, etc. and crashed with\n\"X is not a function\". Wrap a function so they're B\n[…]\nespace return an Iterable<NaN> so multi-tf\ndestructure `[a, b, c] = request.security(...)` doesn't crash on\n\"number is not iterable\".\n\nCorpus: 51/92 → **54/92 (59%)**, harryguiacorn 6/17 → 8/17 (47%).",
          "is_bot": false,
          "headline": "feat: callable namespace stubs + str.* methods + JS-reserved sanitiza…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:30:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "02f41bea26824139ab98be9bfea21b4839d67f5d",
          "body": "…tion/text/display)\n\nReal-world Pine routinely references namespace constants like\n`chart.fg_color`, `format.price`, `xloc.bar_index`, `yloc.price`,\n`extend.none`, `position.bottom_left`, `text.align_center`,\n`display.all` etc. Without bindings these throw ReferenceError at\nruntime and the corpus ca\n[…]\nesn't fail with \"number is\n  not iterable\" — it destructures into NaN trio instead.\n\nCorpus: 51/92 → **54/92 (59%)**. harryguiacorn 6/17 → 8/17 (47%).\narunkbhaskar 1/26 → 2/26. Curated holds at 40/40.",
          "is_bot": false,
          "headline": "feat: bind Pine namespaces (chart/format/string/xloc/yloc/extend/posi…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:27:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eb97b0d2e46b2ebda7316f241d80b406d0dbbca6",
          "body": "Pine has BOTH `na` as a NaN constant AND `na(x)` as a builtin\nfunction (\"is x NaN?\"). The lexer was always tokenizing `na` as the\nNA literal, so `na(close[1])` transpiled to `NaN(close[1])` — JS\ntrying to call NaN as a function, exploding at runtime.\n\nLookahead fix: if the next non-whitespace char a\n[…]\nA. Bare `na` continues to emit as `NaN`.\n\nCorpus: 50/92 → **51/92 (55%)**. harryguiacorn 5/17 → 6/17.\nUpdated the regression test to match the new emit (Std.na for the\ncall form, NaN for the literal).",
          "is_bot": false,
          "headline": "fix(lexer): na(x) is a function call, not a NaN literal",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:23:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "566e341f62726145792c9b6e95ce16115e1c54a1",
          "body": "parseIfStatement looked for a trailing `else` clause via:\n  if (this.match(KEYWORD) && this.previous().value === 'else')\n\n`match()` advances unconditionally before the value check, so when the\nNEXT keyword was a sibling `if` (two consecutive ifs at the same\nindent level — very common inside Pine fun\n[…]\nrn 4/17 → 5/17;\nthe rest of the arunkbhaskar fixtures hit different downstream\nfailures (function-body block re-flatten, NaN-as-function, multi-tf\nrequest.security) that are deeper independent issues.",
          "is_bot": false,
          "headline": "fix(parser): two consecutive if-blocks no longer eat the next statement",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:18:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7cf13e4f52ecd9cd41f788694d0b22e4b792188a",
          "body": "…ction\n\nPush for higher real-world corpus pass rate. Lots of small fixes;\nscore moved 47/92 → 48/92 (51% → 52%) and curated stayed at 40/40,\nbut the bigger blockers are now visibly the parser's function-body\nblock-flatten bug (separate, deferred change).\n\n**Lexer line continuation** (`src/parser/lex\n[…]\n needs a different mock fallthrough)\n- ~3 `number is not iterable` (multi-output destructuring on a\n  function we didn't register as multi-output)\n- A few edge cases (`'this' as parameter name`, etc.)",
          "is_bot": false,
          "headline": "feat: lexer continuation, let→var, expanded wrapper, helper auto-inje…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T05:13:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5780fe2bc45e388ab2729dec544e5ad662a73f15",
          "body": "…ess compile-error spam\n\nTwo findings from round-3 reviewers:\n\n**`mapPlotType` missing branches for non-line plot types** (`src/factory/factory-helpers.ts`):\nWith `'char'` added to ParsedPlot.type in round 2, mapPlotType's switch\nfell through to `default: return 0` (line) for shape/char/bg_colorer/\n\n[…]\n still surfaces the failure correctly.\n\n92 fixtures, 47 pass (51%) unchanged; 971 tests pass; tsc clean.\nCurated holds at 40/40.\n\nRound-3 verdict from both reviewers: PASS — no critical/high findings.",
          "is_bot": false,
          "headline": "fix(review-round-3): mapPlotType handles shape/char/bg_colorer; suppr…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T04:57:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e3b305054df1e9a1efef173b3e334c2c2712d082",
          "body": "Round-2 reviewer findings, all addressed:\n\n**Compilation errors now reach the runner**\n`indicator-factory.ts` previously stubbed `compiledScript = () => {}`\non `new Function(...)` failure, silently producing empty `_plotValues`\non every bar with no error signal. The runner reported a plot-count\nmism\n[…]\nsed this round):\n- Wrapper-param shadowing fix proper (needs scope-aware rename pass)\n- HIGH security: timezone + bg.condition raw-string interpolation in\n  generateNativeMainBody (separate code path)",
          "is_bot": false,
          "headline": "fix(review-round-2): compile errors propagate, plotchar is its own type",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T04:53:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6014accf511c2d96241ff82a2ed01b2eb46d6de0",
          "body": "…params\n\nFindings from four parallel reviewers (security/typescript/silent-failure/\ncode-reviewer). High-impact fixes:\n\n**Type errors in src/factory/indicator-factory.ts** (3 of them):\n  - StudyPlotInfo.type union widened with 'shapes' | 'chars' | 'bg_colorer'\n    so buildPlotsMetadata's return type\n[…]\ner vars named `indicator`,\n    `hline`, etc.) — needs a scope-aware rename pass.\n  - User-variable scope issues (`tt_r is not defined` family) — likely\n    multi-line string concatenation parser bugs.",
          "is_bot": false,
          "headline": "fix(review-round-1): tsc errors, tightened catches, expanded wrapper …",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T04:42:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fa6ecd465fae480a3ff28c18f51eb1de0734207f",
          "body": "…merge\n\nPhase 4. Real-world stress test: 52 v5/v6 scripts pulled from 4\nGitHub repos via `bun scripts/corpus/scrape.ts`, vendored under\ntests/corpus/community/<source>/ with attribution headers. Snapshot\ntests run only against the curated 40; community fixtures are scored\non transpile-success + run-\n[…]\netc. collide\nwith the factory's wrapper params at the JS `new Function()` boundary.\nDocumented in CORPUS-BASELINE.md; fixing it cleanly needs a scope-\naware rename pass and is deferred to a follow-up.",
          "is_bot": false,
          "headline": "test(corpus): scrape 52 real-world Pine scripts; fix for-loop emit + …",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T04:27:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0ca18e77809fd5d992b85a99ca321b24d8ee20c9",
          "body": "The full rapid-improvement pass moved the pass rate to 40/40 fixtures.\nScore history is preserved for reference; the original baseline section\nstays so future readers can see what shifted.",
          "is_bot": false,
          "headline": "docs: update corpus baseline — 80% → 100%",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T04:12:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bfaf5aefa1cbcb932253e9844bcd3fe994c40900",
          "body": "…alue\n\nPhase 3 (corpus sweep). Two bugs that combined to make multi-line Pine\narrow functions like:\n\n  demean(src, len) =>\n      src - ta.sma(src, len)\n  plot(demean(close, 20))\n\nemit broken JS — the function's body had no `return` and the binary\nexpression's `-` operator was silently swallowed by t\n[…]\nom FAIL → PASS, taking\nthe score from 98% → **100% (40/40)**. The snapshot now reads\n`return (src - Std.sma(context, src, len))` instead of the previous\nmangled `let src = Std.sma(context, src, len)`.",
          "is_bot": false,
          "headline": "fix(parser+generator): multi-line user functions now return correct v…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T04:07:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b1594118360975feeb64d62dab04cfce0a3d3656",
          "body": "…orer\n\nPhase 2.1–2.3. buildPlotsMetadata previously coerced every parsed plot\ninto 'line' or 'histogram', so plotshape/plotchar/bgcolor calls all\nshowed up as line plots on the chart — i.e. they didn't render as\nshapes, didn't background-color the chart, just produced extra invisible\nlines. Pine sou\n[…]\novement plan).\n\nCorpus score holds at 98% — drawing fixtures (16 plotshape, 17 plotchar,\n18 bgcolor, 19 fill) were already passing on count and now produce\ncorrectly-typed metainfo for the real chart.",
          "is_bot": false,
          "headline": "feat(factory): emit correct PineJS plot types for shapes/chars/bg_col…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T04:04:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fa7347371e3a2b5c616867894e345ad761037955",
          "body": "Phase 1.5. Until now barstate.islast / isnew / isrealtime / isconfirmed\nreturned hardcoded values regardless of the current bar (visible in\nruntime warnings: \"barstate.X returns hardcoded — actual bar state\ndetection not implemented\"). Indicators that branch on barstate (e.g.\n'only count crossovers \n[…]\nempty\ncontext (legacy behaviour) so existing callers don't break.\n\nCorpus score holds at 98% — none of the 40 fixtures exercise barstate\ndirectly. The change is correctness for indicators in the wild.",
          "is_bot": false,
          "headline": "feat(runtime): real barstate.* driven by per-bar context",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T04:03:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dae155179e7631b6d84554954aca7f866908f720",
          "body": "…rend aliases\n\nPhase 1.4. Today MULTI_OUTPUT_MAPPINGS covered only ta.macd and ta.dmi,\neven though several Pine functions are commonly destructured:\n\n  [basis, upper, lower] = ta.bb(close, 20, 2.0)\n  [basis, upper, lower] = ta.bbands(close, 20, 2.0)  ← alias of bb\n  [basis, upper, lower] = ta.kc(clo\n[…]\no the destructure-on-NaN failure\nmode no longer hides behind the catch fallback. Corpus score holds at\n98% but the stoch/supertrend fixtures are now real passes instead of\nNaN-array-from-catch passes.",
          "is_bot": false,
          "headline": "feat(mappings): expand multi-output registry with bb/bbands/kc/supert…",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T04:00:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5343a5c46c11d9533bdd0ed12e1d33743acece9a",
          "body": "Phase 1.2 + 1.3. The mapping registry already had ARRAY_FUNCTION_MAPPINGS\nemitting `_arrayPush(...)` / `_arraySize(...)` / etc., but the helper\nfunction definitions in ARRAY_HELPER_FUNCTIONS were never injected into\nthe factory's preamble — so the body referenced symbols that didn't\nexist, the scrip\n[…]\nand produce real values, which is what\nmatters end-to-end against the real chart.\n\nSnapshot diffs in tests/corpus/snapshots/12,13,14,15 show the helpers\ninlined into the body alongside the Pine logic.",
          "is_bot": false,
          "headline": "feat(mappings): wire array.* + Pine v6 map.* helpers into preamble",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T03:58:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a9b10bef62d768dedfa2d74bc21dbc58e9cdfe31",
          "body": "Phase 1.1 of the rapid-improvement plan. The polyfills for HMA, MACD,\nWPR, and AO cached derived series on ctx (e.g. ctx._macd_series) and\non subsequent bars called series.set(value) instead of new_var().\nPineSeries.set() OVERWRITES the latest history slot — it doesn't\nappend — so the cached series \n[…]\nACD\nhistogram / HMA / AO output values are now stable across bars\ninstead of NaN / stuck at bar 1, which is what users actually see\non a chart). End-to-end webapp verification will confirm in Phase 2.",
          "is_bot": false,
          "headline": "fix(stdlib): use ctx.new_var per-bar instead of manual ctx caches",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T03:55:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "33b39ae0ce431031b9dc03f14f38ec7a2ae3ec24",
          "body": "Pine source `plot(close, color=color.purple)` was being emitted as\n`Std.plot(close, color = color.purple)`. JavaScript reads the third\nargument as an *assignment expression* that rewrites the local\n`color` identifier (the COLOR_MAP injected by the factory wrapper)\nto a single hex string. The next ca\n[…]\nm-function) is a separate\nparser bug in multi-line arrow function bodies — surfaced by the\ncorpus, deferred to a follow-up.\n\n5 regression tests in tests/regression/named-args.test.ts pin the\ncontract.",
          "is_bot": false,
          "headline": "fix(generator): drop named arguments from runtime call emit",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T03:50:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5be5ad93891524ae6ee09f164d2bf0db94c37b1f",
          "body": "Phase 0.3 + 0.4. Drops a 40-script corpus covering the surface area\nthe rapid-improvement plan targets: trivial smoke, MA/oscillator/\nvolatility/trend indicators, multi-output destructuring, var/varip,\ncontrol flow, arrays, maps, drawing primitives (plotshape/plotchar/\nbgcolor/fill/hline), source/co\n[…]\ne 1 alongside the StdPlus persistence work.\n\nTwo new helper scripts:\n- scripts/corpus/per-fixture.ts → one-line PASS/FAIL per fixture\n- scripts/corpus/debug-fixture.ts → single-fixture deep inspection",
          "is_bot": false,
          "headline": "test(corpus): seed 40 Pine fixtures + capture 80% baseline",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T03:42:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d84a3c20f58b5949fc2774a4fc6e9e1b62da1e49",
          "body": "- scripts/corpus/report.ts: walks fixtures, runs each through the\n  pipeline, and prints a single-page markdown summary with score,\n  transpile/runtime failure groups, and the unimplemented Std-call\n  list. Reads, doesn't gate.\n- bun run corpus → the report\n- bun run corpus:snap → UPDATE_SNAPSHOTS=1\n[…]\n the\n  env var is set)\n\nWith zero fixtures, `corpus` prints a clear \"seed via Phase 0.3\"\nmessage and exits 1; `corpus:snap` is a no-op. Phase 0.3 will\nseed ~40 fixtures and produce the first baseline.",
          "is_bot": false,
          "headline": "test(corpus): add report + snapshot tooling",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T03:30:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3bd2d1610366b2f456cdc2ef268b3cf64e0a3e4d",
          "body": "Lays the foundation for corpus-driven snapshot tests against real Pine\nscripts. The walker is intentionally tolerant: a fixture that fails\nruntime is recorded in a structured CorpusResult, not surfaced as a\nsuite failure — we want the corpus to be a backlog driver, not a\ngatekeeper.\n\n- mock-runtime.\n[…]\n; Phase 0.2 will add the report script.\nWith zero fixtures the test is a no-op (1 pass + 1 skip) so this lands\nahead of the seed.\n\nAlso: gitignore bun.lock — bun resolves from the consuming workspace.",
          "is_bot": false,
          "headline": "test(corpus): scaffold corpus runner + mock PineJS runtime",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T03:28:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3fad614439b2aa76536e20ebc8b7d1722e93b916",
          "body": "Editor consumers (e.g. an \"edit Pine, see compiled JS\" diptych) need\nto render the literal transpiled body rather than the factory's\ntoString(), which only shows the wrapper closure. Attach the body\nas a non-enumerable, read-only property on the returned factory:\n\n- transpileToPineJS path → preamble\n[…]\nmance tests in tests/factory/body-exposure.test.ts pin the\ncontract: presence, non-enumerability, distinctness across sources,\nand that exposing the body is non-destructive (factory remains callable).",
          "is_bot": false,
          "headline": "feat: expose transpiled JS body via non-enumerable __pineJsBody",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T03:22:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2bc1773e786711d13d9ef26a8655323b15170b5c",
          "body": "Replace `from 'vitest'` with `from 'bun:test'` across all 21 test files.\nThe bun:test API is a near-drop-in for vitest's `describe/expect/it`,\nso no other changes were needed in test bodies. Coverage now goes\nthrough `bun test --coverage` (see scripts in the previous commit).",
          "is_bot": false,
          "headline": "chore(tests): migrate from vitest to bun:test",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T03:22:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "74ec2e2f5d343da3e0cd0d4b6bd951a0e6180908",
          "body": "- Drop prepare hook (pnpm build); not needed for vendored consumption\n- start: node ./dist/cli/index.js → bun ./dist/cli/index.js\n- test: vitest run → bun test tests/\n- test:coverage: vitest run --coverage → bun test --coverage tests/\n- Drop @vitest/coverage-v8 + vitest devDeps; add bun-types\n- Bump @biomejs/biome 2.3.8 → ^2.4.13\n- Bump @types/node ^24.10.1 → ^25.6.0\n- Bump typescript ^5.9.3 → ^6.0.3\n- Bump vite ^7.2.6 → ^8.0.10\n- Drop pnpm-lock.yaml; bun resolves from the consuming workspace",
          "is_bot": false,
          "headline": "chore: migrate from pnpm + vitest to bun",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2026-04-25T03:21:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d38481027d73208494d1e425b7caa58ae59dc0c6",
          "body": "* feat: add support for session inputs and bgcolor functionality\n\n- Introduced `input.session` type in InputExtractor to handle session inputs with default value.\n- Enhanced MetadataVisitor to track session variables, derived session variables, and computed variables.\n- Implemented bgcolor extractio\n[…]\nPlot and ParsedBgcolor interfaces to support new features.\n\n* test: add comprehensive tests for indicator factory generation\n\n* refactor: improve code formatting and organization across multiple files",
          "is_bot": false,
          "headline": "Fix/issues with transpiling (#3)",
          "author_name": "Ithihas Madala",
          "author_login": "ithihasmadala",
          "committed_at": "2025-12-01T23:59:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 21,
      "commits_last_year": 128,
      "latest_release_at": "2026-06-23T15:23:27Z",
      "latest_release_tag": "v0.4.11",
      "releases_from_tags": false,
      "days_since_last_push": 3,
      "active_weeks_last_year": 7,
      "days_since_latest_release": 29,
      "mean_days_between_releases": 3.6
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 87,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@opus-aether-ai/pine-transpiler",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "pine-script",
            "chart-host",
            "pinejs",
            "transpiler",
            "compiler",
            "technical-analysis",
            "indicators",
            "charting",
            "trading",
            "finance"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@opus-aether-ai/pine-transpiler",
          "is_deprecated": false,
          "latest_version": "0.4.11",
          "repository_url": "https://github.com/Opus-Aether-AI/pine-transpiler",
          "versions_count": 12,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 3,
          "monthly_downloads": 8916,
          "first_published_at": "2026-05-21T16:22:16.504000Z",
          "latest_published_at": "2026-06-23T15:24:48.271000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 29
        }
      ]
    },
    "popularity": {
      "forks": 11,
      "stars": 30,
      "watchers": 1,
      "fork_history": {
        "days": [
          {
            "date": "2025-12-06",
            "count": 1
          },
          {
            "date": "2026-01-11",
            "count": 1
          },
          {
            "date": "2026-02-27",
            "count": 1
          },
          {
            "date": "2026-03-02",
            "count": 1
          },
          {
            "date": "2026-03-22",
            "count": 1
          },
          {
            "date": "2026-04-02",
            "count": 1
          },
          {
            "date": "2026-05-04",
            "count": 1
          },
          {
            "date": "2026-05-12",
            "count": 1
          },
          {
            "date": "2026-05-22",
            "count": 1
          },
          {
            "date": "2026-05-26",
            "count": 1
          },
          {
            "date": "2026-07-14",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 11,
        "total_forks": 11
      },
      "star_history": null,
      "open_issues_and_prs": 4
    },
    "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": [
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 174032,
      "source_files_sampled": 233,
      "oversized_source_files": 1,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": "No resolved dependencies carried a version and a supported ecosystem",
        "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": 8,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@biomejs/biome",
            "direct": false,
            "version": "^2.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/bun",
            "direct": false,
            "version": "^1.3.14",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "^26.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript/typescript6",
            "direct": false,
            "version": "^6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "bun-types",
            "direct": false,
            "version": "^1.3.14",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "^7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "^8.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "vite-plugin-dts",
            "direct": false,
            "version": "^5.0.3",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 8,
        "direct_count": 0,
        "indirect_count": 8
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 3,
        "merged_prs": 50,
        "open_issues": 1,
        "closed_ratio": 0.5,
        "closed_issues": 1,
        "closed_unmerged_prs": 15
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "ithihasmadala",
          "commits": 80,
          "avatar_url": "https://avatars.githubusercontent.com/u/58927988?v=4"
        },
        {
          "type": "User",
          "login": "Garou11",
          "commits": 29,
          "avatar_url": "https://avatars.githubusercontent.com/u/79504411?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.734
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "release-please.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "biome.json"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "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": 5,
            "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": 8,
            "reason": "25 out of 30 merged PRs checked by a CI test -- score normalized to 8",
            "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": 1,
            "reason": "Found 2/18 approved changesets -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 6 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 6,
            "reason": "dependency not pinned by hash detected -- score normalized to 6",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "d543840c87a9ef3c62dbd82071f004754c869f72",
        "ran_at": "2026-07-23T12:02:49Z",
        "aggregate_score": 6.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-20T00:35:50Z",
      "oldest_open_prs": [
        {
          "number": 69,
          "created_at": "2026-07-20T00:35:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 70,
          "created_at": "2026-07-20T00:35:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 71,
          "created_at": "2026-07-20T00:35:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-15T10:35:26Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 40,
          "created_at": "2026-06-12T05:48:27Z",
          "last_comment_at": "2026-07-12T06:26:30Z",
          "last_comment_author": "ZilleHusnain7833"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/Opus-Aether-AI/pine-transpiler",
    "host": "github.com",
    "name": "pine-transpiler",
    "owner": "Opus-Aether-AI"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 68,
      "inputs": {
        "security": 66,
        "vitality": 81,
        "community": 62,
        "governance": 52,
        "engineering": 82
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 81,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "commits_last_year": 128,
              "human_commit_share": 0.81,
              "days_since_last_push": 3,
              "active_weeks_last_year": 7
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 3 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "7/52 weeks with commits",
                "points": 4.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "128 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 128
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 21,
              "latest_release_tag": "v0.4.11",
              "releases_from_tags": false,
              "days_since_latest_release": 29,
              "mean_days_between_releases": 3.6
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "21 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 21
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 29 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 29
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~3.6 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 3.6
                    }
                  }
                ],
                "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": 8,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 8 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 62,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 32,
            "inputs": {
              "forks": 11,
              "stars": 30,
              "watchers": 1,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "30 stars",
                "points": 23.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 30
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "11 forks",
                "points": 8.3,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "1 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 66,
            "inputs": {
              "packages": [
                "@opus-aether-ai/pine-transpiler"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 8916
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "8,916 downloads/month across npm",
                "points": 52.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 8916,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 52,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 28,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.734
            },
            "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 73% of commits",
                "points": 6,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 73
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 6 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "merged_prs": 50,
              "open_issues": 1,
              "closed_issues": 1,
              "issue_closed_ratio": 0.5,
              "closed_unmerged_prs": 15
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "50% of issues closed",
                "points": 23.4,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 50
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "50/65 decided PRs merged",
                "points": 29.4,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 50,
                      "decided": 65
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 2/18 approved changesets -- score normalized to 1",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 41,
            "inputs": {
              "followers": 3,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "Opus-Aether-AI",
              "public_repos": 3,
              "account_age_days": 390
            },
            "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": "3 followers of Opus-Aether-AI",
                "points": 4.3,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 3,
                      "login": "Opus-Aether-AI"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "3 public repos, account ~1 yr old",
                "points": 6.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 3
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 1
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@opus-aether-ai/pine-transpiler"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 29
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 29 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 29
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "12 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 82,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "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": "biome.json",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "25 out of 30 merged PRs checked by a CI test -- score normalized to 8",
                "points": 16,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "topics": [
                "pine-script",
                "technical-analysis",
                "tradingview",
                "transpiler",
                "typescript",
                "finance",
                "indicators",
                "javascript",
                "parser",
                "pinejs",
                "trading"
              ],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": "11 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 66,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 66,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 6.6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "25 out of 30 merged PRs checked by a CI test -- score normalized to 8",
                "points": 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": "Found 2/18 approved changesets -- score normalized to 1",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 6 contributing companies or organizations",
                "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": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 6",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 6
            },
            "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": "moderate",
        "name": "AI Readiness",
        "value": 60,
        "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.963,
              "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": "78 of 81 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 78,
                      "sampled": 81
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "tsconfig.json"
              ],
              "agent_commit_share": 0.01,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.12
            },
            "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": "biome.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "tsconfig.json"
                    }
                  }
                ],
                "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": "1 of the last 100 commits agent-authored or agent-credited",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 1,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "12 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 12,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 174032,
              "source_files_sampled": 233,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/233 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 233,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "No resolved dependencies carried a version and a supported ecosystem"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T12:03:08.422567Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/o/Opus-Aether-AI/pine-transpiler.svg",
  "full_name": "Opus-Aether-AI/pine-transpiler",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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