Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-27 10:40 UTC

TA-Lib / ta-lib

TA-Lib (Core C Library)

Java · C · RustBSD-3-Clause★ 1,638 stars⑂ 291 forkssince Aug 2016View on GitHub ↗

TA-Lib/ta-lib holds a health index of 31 out of 100, placing it in the At risk band. It scores highest on Vitality (77/100) and lowest on Security (34/100). It was last updated today. A single contributor accounts for most of its recent work.

31
overall / 100
At risk

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

31
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

High-Risk Jurisdiction Policy applies a 50% multiplier to weighted overall health and gives it an At risk ceiling of 49.

Ownership

TA-LibOrganization
332 followers12 public repossince Aug 2016

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

77Good · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
13.2/36Commit cadence — 19/52 weeks with commits
18/18Commit volume — 966 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year966
human_commit_share0.78
days_since_last_push0
active_weeks_last_year19
How it's scored
27/27Ships releases — 6 releases published
36/36Release recency — latest release 23 days ago
12.6/27Release cadence — a release every ~174.2 days
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Inputs used
releases_count6
latest_release_tagv0.7.1
releases_from_tagsno
days_since_latest_release23
mean_days_between_releases174.2

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

67Moderate · 18% of overall
How it's scored
52.1/60Stars — 1,638 stars
20.5/25Forks — 291 forks
8.1/15Watchers — 30 watchers
Inputs used
forks291
stars1,638
watchers30
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (BSD-3-Clause)
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

60Moderate · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
9.2/22.5Commit distribution — top contributor authored 59% of commits
13.5/13.5Contributor breadth — 20 contributors
10/10OpenSSF Scorecard: Contributors — project has 7 contributing companies or organizations
Inputs used
bus_factor1
contributors_sampled20
top_contributor_share0.592
How it's scored
43.6/46.8Issue resolution — 93% of issues closed
28.4/38.3PR acceptance — 23/31 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 1/29 approved changesets -- score normalized to 0
Inputs used
merged_prs23
open_issues7
closed_issues98
issue_closed_ratio0.933
closed_unmerged_prs8
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
18.1/25Owner reach — 332 followers of TA-Lib
20.1/25Track record — 12 public repos, account ~9 yr old
Inputs used
followers332
owner_typeOrganization
is_verified
owner_loginTA-Lib
public_repos12
account_age_days3,628

Engineering Quality

Are baseline engineering and documentation practices in place?

68Moderate · 20% of overall
How it's scored
24/24CI workflows — 6 workflow(s)
24/24Tests present
0/16Linter config
0/9.6Pre-commit hooks
6.4/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 1 merged PRs checked by a CI test -- score normalized to 0
Inputs used
has_ciyes
has_testsyes
has_editorconfigyes
has_linter_configno
has_precommit_configno

Documentation

90Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://ta-lib.org/
10/10Repository description
10/10Topics — 4 topics
0/10Wiki
Inputs used
topicsta-lib, financial, series-analysis, technical-analysis
has_wikino
homepagehttps://ta-lib.org/
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

34At risk · 16% of overall
How it's scored
3/7.5Binary-Artifacts — binaries present in source code
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
0/2.5CI-Tests — 0 out of 1 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 1/29 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 7 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — license file detected
7.5/7.5Maintained — 30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — no data
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3.5
high_risk_jurisdiction_cap49
high_risk_jurisdiction_multiplier50
security_posture_after_multiplier18
security_posture_before_jurisdiction35
Excluded from scoring (no data or not applicable): packaging. Remaining weights renormalized. High-Risk Jurisdiction Policy applies a 50% multiplier and gives Security posture an At risk ceiling of 49.
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories0
affected_packages0
assessed_packages498
unassessed_packages1
affected_by_severitynone
direct_affected_packages0
Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 498 resolved dependencies against OSV. 1 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.

AI Readiness

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.

71Good · 0% of overall
How it's scored
45/45Agent instructions — CLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 78 of 78 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share1
agent_instruction_filesCLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md
agent_instruction_max_bytes27,322
How it's scored
12.6/18One-command bootstrap — ta_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml (toolchain convention, no task runner)
22/22Automated tests
0/11Lint / format config
11/11Static type checking — Java (statically typed)
10/10Reproducible environment — lockfile
10/10Demonstrated agent practice — 9 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfilesCargo.lock, pnpm-lock.yaml
has_dockerfileno
typed_languageyes
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0.09
toolchain_manifeststa_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml, ta_codegen/output/rust/library/Cargo.toml, ta_codegen/output/rust/tools/Cargo.toml
dependency_bot_commit_share0
How it's scored
45/45Type-checkable code — Java (statically typed)
43.3/55Manageable file sizes — 196/922 source files over 60KB
Inputs used
primary_languageJava
largest_source_bytes12,329,300
source_files_sampled922
oversized_source_files196
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
0/20MCP server
40/40Runnable examples — examples
Inputs used
example_dirsexamples
has_mcp_signalno
api_schema_files

Key facts

1,638GitHub stars
20contributors
966commits, last 12 months
0days since last push
6releases
1bus factor
7open issues
npmpackage ecosystems

Data collection warnings

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'ta-lib.org' from its registry
  • Could not fetch crates package 'ta-codegen' from its registry

More detail

Star and fork history 0 ★ / 291 ⇿
0Stars
291Forks
6Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

05010015020025030029172016-122021-102026-07
Major 0Minor 1Patch 5

Each point covers 9 days.

OpenSSF Scorecard 3.5 / 10
3.5aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-27 10:40 UTC

4Binary-Artifactsbinaries present in source code
3Branch-Protectionbranch protection is not maximal on development and all release branches
0CI-Tests0 out of 1 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 1/29 approved changesets -- score normalized to 0
10Contributorsproject has 7 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
n/aPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Direct dependencies 5
RegistryPackageVersion constraintManifest
npmkatex^0.16.47website/package.json
crates.ioserde1ta_codegen/generator/Cargo.toml
crates.ioserde_yaml0.9ta_codegen/generator/Cargo.toml
crates.ioserde_json1ta_codegen/generator/Cargo.toml
crates.ioregex1ta_codegen/generator/Cargo.toml
All dependencies 499

Full resolved dependency set from the GitHub dependency graph: 6 direct and 493 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

RegistryPackageVersionRelation
crates.ioregex1.12.3direct
crates.ioserde1.0.228direct
crates.ioserde_jsondirect
crates.ioserde_json1.0.149direct
crates.ioserde_yaml0.9.34+deprecateddirect
npmkatex0.16.47direct
crates.ioaho-corasick1.1.4indirect
crates.ioequivalent1.0.2indirect
crates.iohashbrown0.16.1indirect
crates.ioindexmap2.13.0indirect
crates.ioitoa1.0.17indirect
crates.iomemchr2.8.0indirect
crates.ioproc-macro21.0.106indirect
crates.ioquote1.0.45indirect
crates.ioregex-automata0.4.14indirect
crates.ioregex-syntax0.8.10indirect
crates.ioryu1.0.23indirect
crates.ioserde_core1.0.228indirect
crates.ioserde_derive1.0.228indirect
crates.iosyn2.0.117indirect
crates.iounicode-ident1.0.24indirect
crates.iounsafe-libyaml0.2.11indirect
crates.iozmij1.0.21indirect
npm@babel/generator8.0.0indirect
npm@babel/helper-string-parser7.29.7indirect
npm@babel/helper-string-parser8.0.0indirect
npm@babel/helper-validator-identifier7.29.7indirect
npm@babel/helper-validator-identifier8.0.4indirect
npm@babel/parser7.29.7indirect
npm@babel/parser8.0.4indirect
npm@babel/types7.29.7indirect
npm@babel/types8.0.4indirect
npm@bufbuild/protobuf2.12.1indirect
npm@emnapi/core1.11.1indirect
npm@emnapi/runtime1.11.1indirect
npm@emnapi/wasi-threads1.2.2indirect
npm@esbuild/aix-ppc640.28.1indirect
npm@esbuild/android-arm0.28.1indirect
npm@esbuild/android-arm640.28.1indirect
npm@esbuild/android-x640.28.1indirect
npm@esbuild/darwin-arm640.28.1indirect
npm@esbuild/darwin-x640.28.1indirect
npm@esbuild/freebsd-arm640.28.1indirect
npm@esbuild/freebsd-x640.28.1indirect
npm@esbuild/linux-arm0.28.1indirect
npm@esbuild/linux-arm640.28.1indirect
npm@esbuild/linux-ia320.28.1indirect
npm@esbuild/linux-loong640.28.1indirect
npm@esbuild/linux-mips64el0.28.1indirect
npm@esbuild/linux-ppc640.28.1indirect
npm@esbuild/linux-riscv640.28.1indirect
npm@esbuild/linux-s390x0.28.1indirect
npm@esbuild/linux-x640.28.1indirect
npm@esbuild/netbsd-arm640.28.1indirect
npm@esbuild/netbsd-x640.28.1indirect
npm@esbuild/openbsd-arm640.28.1indirect
npm@esbuild/openbsd-x640.28.1indirect
npm@esbuild/openharmony-arm640.28.1indirect
npm@esbuild/sunos-x640.28.1indirect
npm@esbuild/win32-arm640.28.1indirect
npm@esbuild/win32-ia320.28.1indirect
npm@esbuild/win32-x640.28.1indirect
npm@jridgewell/gen-mapping0.3.13indirect
npm@jridgewell/remapping2.3.5indirect
npm@jridgewell/resolve-uri3.1.2indirect
npm@jridgewell/sourcemap-codec1.5.5indirect
npm@jridgewell/trace-mapping0.3.31indirect
npm@lit-labs/ssr-dom-shim1.6.0indirect
npm@lit/reactive-element2.1.2indirect
npm@mdit-vue/plugin-component3.0.2indirect
npm@mdit-vue/plugin-frontmatter3.0.2indirect
npm@mdit-vue/plugin-headers3.0.2indirect
npm@mdit-vue/plugin-sfc3.0.2indirect
npm@mdit-vue/plugin-title3.0.2indirect
npm@mdit-vue/plugin-toc3.0.2indirect
npm@mdit-vue/shared3.0.2indirect
npm@mdit-vue/types3.0.2indirect
npm@mdit/helper0.23.2indirect
npm@mdit/plugin-alert0.23.2indirect
npm@mdit/plugin-align0.24.2indirect
npm@mdit/plugin-attrs0.25.2indirect
npm@mdit/plugin-container0.23.2indirect
npm@mdit/plugin-demo0.23.2indirect
npm@mdit/plugin-figure0.23.2indirect
npm@mdit/plugin-footnote0.23.2indirect
npm@mdit/plugin-icon0.24.2indirect
npm@mdit/plugin-img-lazyload0.23.2indirect
npm@mdit/plugin-img-mark0.23.2indirect
npm@mdit/plugin-img-size0.23.2indirect
npm@mdit/plugin-include0.23.2indirect
npm@mdit/plugin-inline-rule0.23.2indirect
npm@mdit/plugin-katex-slim0.26.2indirect
npm@mdit/plugin-layout0.2.2indirect
npm@mdit/plugin-mark0.23.2indirect
npm@mdit/plugin-mathjax-slim0.26.2indirect
npm@mdit/plugin-plantuml0.24.2indirect
npm@mdit/plugin-spoiler0.23.2indirect
npm@mdit/plugin-stylize0.23.2indirect
npm@mdit/plugin-sub0.24.2indirect
npm@mdit/plugin-sup0.24.2indirect
npm@mdit/plugin-tab0.24.2indirect
npm@mdit/plugin-tasklist0.23.2indirect
npm@mdit/plugin-tex0.24.2indirect
npm@mdit/plugin-uml0.24.2indirect
npm@napi-rs/wasm-runtime1.1.6indirect
npm@oxc-project/types0.139.0indirect
npm@parcel/watcher2.5.6indirect
npm@parcel/watcher-android-arm642.5.6indirect
npm@parcel/watcher-darwin-arm642.5.6indirect
npm@parcel/watcher-darwin-x642.5.6indirect
npm@parcel/watcher-freebsd-x642.5.6indirect
npm@parcel/watcher-linux-arm-glibc2.5.6indirect
npm@parcel/watcher-linux-arm-musl2.5.6indirect
npm@parcel/watcher-linux-arm64-glibc2.5.6indirect
npm@parcel/watcher-linux-arm64-musl2.5.6indirect
npm@parcel/watcher-linux-x64-glibc2.5.6indirect
npm@parcel/watcher-linux-x64-musl2.5.6indirect
npm@parcel/watcher-win32-arm642.5.6indirect
npm@parcel/watcher-win32-ia322.5.6indirect
npm@parcel/watcher-win32-x642.5.6indirect
npm@pkgr/core0.3.6indirect
npm@rolldown/binding-android-arm641.1.5indirect
npm@rolldown/binding-darwin-arm641.1.5indirect
npm@rolldown/binding-darwin-x641.1.5indirect
npm@rolldown/binding-freebsd-x641.1.5indirect
npm@rolldown/binding-linux-arm-gnueabihf1.1.5indirect
npm@rolldown/binding-linux-arm64-gnu1.1.5indirect
npm@rolldown/binding-linux-arm64-musl1.1.5indirect
npm@rolldown/binding-linux-ppc64-gnu1.1.5indirect
npm@rolldown/binding-linux-s390x-gnu1.1.5indirect
npm@rolldown/binding-linux-x64-gnu1.1.5indirect
npm@rolldown/binding-linux-x64-musl1.1.5indirect
npm@rolldown/binding-openharmony-arm641.1.5indirect
npm@rolldown/binding-wasm32-wasi1.1.5indirect
npm@rolldown/binding-win32-arm64-msvc1.1.5indirect
npm@rolldown/binding-win32-x64-msvc1.1.5indirect
npm@rolldown/pluginutils1.0.1indirect
npm@shikijs/core4.3.1indirect
npm@shikijs/engine-javascript4.3.1indirect
npm@shikijs/engine-oniguruma4.3.1indirect
npm@shikijs/langs4.3.1indirect
npm@shikijs/primitive4.3.1indirect
npm@shikijs/themes4.3.1indirect
npm@shikijs/transformers4.3.1indirect
npm@shikijs/types4.3.1indirect
npm@shikijs/vscode-textmate10.0.2indirect
npm@stackblitz/sdk1.11.1indirect
npm@tybys/wasm-util0.10.3indirect
npm@types/debug4.1.13indirect
npm@types/fs-extra11.0.4indirect
npm@types/hash-sum1.0.2indirect
npm@types/hast3.0.5indirect
npm@types/jsesc2.5.1indirect
npm@types/jsonfile6.1.4indirect
npm@types/linkify-it5.0.0indirect
npm@types/markdown-it14.1.2indirect
npm@types/markdown-it-emoji3.0.1indirect
npm@types/mdast4.0.4indirect
npm@types/mdurl2.0.0indirect
npm@types/ms2.1.0indirect
npm@types/node24.13.3indirect
npm@types/node26.1.1indirect
npm@types/picomatch4.0.3indirect
npm@types/sax1.2.7indirect
npm@types/trusted-types2.0.7indirect
npm@types/unist3.0.3indirect
npm@types/web-bluetooth0.0.21indirect
npm@ungap/structured-clone1.3.3indirect
npm@vitejs/plugin-vue6.0.7indirect
npm@vue-macros/common3.1.2indirect
npm@vue/compiler-core3.5.39indirect
npm@vue/compiler-dom3.5.39indirect
npm@vue/compiler-sfc3.5.39indirect
npm@vue/compiler-ssr3.5.39indirect
npm@vue/devtools-api8.1.5indirect
npm@vue/devtools-kit8.1.5indirect
npm@vue/devtools-shared8.1.5indirect
npm@vue/reactivity3.5.39indirect
npm@vue/runtime-core3.5.39indirect
npm@vue/runtime-dom3.5.39indirect
npm@vue/server-renderer3.5.39indirect
npm@vue/shared3.5.39indirect
npm@vuepress/bundler-vite2.0.0-rc.30indirect
npm@vuepress/bundlerutils2.0.0-rc.30indirect
npm@vuepress/cli2.0.0-rc.30indirect
npm@vuepress/client2.0.0-rc.30indirect
npm@vuepress/core2.0.0-rc.30indirect
npm@vuepress/helper2.0.0-rc.130indirect
npm@vuepress/highlighter-helper2.0.0-rc.130indirect
npm@vuepress/markdown2.0.0-rc.30indirect
npm@vuepress/plugin-active-header-links2.0.0-rc.130indirect
npm@vuepress/plugin-back-to-top2.0.0-rc.130indirect
npm@vuepress/plugin-blog2.0.0-rc.130indirect
npm@vuepress/plugin-catalog2.0.0-rc.130indirect
npm@vuepress/plugin-comment2.0.0-rc.130indirect
npm@vuepress/plugin-copy-code2.0.0-rc.130indirect
npm@vuepress/plugin-copyright2.0.0-rc.130indirect
npm@vuepress/plugin-git2.0.0-rc.130indirect
npm@vuepress/plugin-icon2.0.0-rc.130indirect
npm@vuepress/plugin-links-check2.0.0-rc.130indirect
npm@vuepress/plugin-markdown-chart2.0.0-rc.130indirect
npm@vuepress/plugin-markdown-ext2.0.0-rc.130indirect
npm@vuepress/plugin-markdown-hint2.0.0-rc.130indirect
npm@vuepress/plugin-markdown-image2.0.0-rc.130indirect
npm@vuepress/plugin-markdown-include2.0.0-rc.130indirect
npm@vuepress/plugin-markdown-math2.0.0-rc.130indirect
npm@vuepress/plugin-markdown-preview2.0.0-rc.130indirect
npm@vuepress/plugin-markdown-stylize2.0.0-rc.130indirect
npm@vuepress/plugin-markdown-tab2.0.0-rc.130indirect
npm@vuepress/plugin-notice2.0.0-rc.130indirect
npm@vuepress/plugin-nprogress2.0.0-rc.130indirect
npm@vuepress/plugin-photo-swipe2.0.0-rc.130indirect
npm@vuepress/plugin-reading-time2.0.0-rc.130indirect
npm@vuepress/plugin-redirect2.0.0-rc.130indirect
npm@vuepress/plugin-rtl2.0.0-rc.130indirect
npm@vuepress/plugin-sass-palette2.0.0-rc.130indirect
npm@vuepress/plugin-seo2.0.0-rc.130indirect
npm@vuepress/plugin-shiki2.0.0-rc.130indirect
npm@vuepress/plugin-sitemap2.0.0-rc.130indirect
npm@vuepress/plugin-slimsearch2.0.0-rc.130indirect
npm@vuepress/plugin-theme-data2.0.0-rc.130indirect
npm@vuepress/shared2.0.0-rc.30indirect
npm@vuepress/utils2.0.0-rc.30indirect
npm@vueuse/core14.3.0indirect
npm@vueuse/metadata14.3.0indirect
npm@vueuse/shared14.3.0indirect
npmacorn8.17.0indirect
npmansi-regex5.0.1indirect
npmansi-regex6.2.2indirect
npmansi-styles4.3.0indirect
npmarg5.0.2indirect
npmargparse1.0.10indirect
npmargparse2.0.1indirect
npmast-kit2.2.0indirect
npmast-walker-scope0.9.0indirect
npmautoprefixer10.5.2indirect
npmbail2.0.2indirect
npmballoon-css1.2.0indirect
npmbaseline-browser-mapping2.10.43indirect
npmbcrypt-ts8.0.1indirect
npmbirpc2.9.0indirect
npmboolbase1.0.0indirect
npmbrowserslist4.28.6indirect
npmcac7.0.0indirect
npmcamelcase5.3.1indirect
npmcaniuse-lite1.0.30001805indirect
npmccount2.0.1indirect
npmchalk5.6.2indirect
npmcharacter-entities-html42.1.0indirect
npmcharacter-entities-legacy3.0.0indirect
npmcheerio1.2.0indirect
npmcheerio-select2.1.0indirect
npmchokidar5.0.0indirect
npmcli-cursor5.0.0indirect
npmcli-spinners3.4.0indirect
npmcliui6.0.0indirect
npmcolor-convert2.0.1indirect
npmcolor-name1.1.4indirect
npmcolorjs.io0.5.2indirect
npmcomma-separated-tokens2.0.3indirect
npmcommander14.0.3indirect
npmcommander8.3.0indirect
npmconfbox0.1.8indirect
npmconfbox0.2.4indirect
npmconnect-history-api-fallback2.0.0indirect
npmcreate-codepen2.0.3indirect
npmcss-select5.2.2indirect
npmcss-what6.2.2indirect
npmcsstype3.2.3indirect
npmdebug4.4.3indirect
npmdecamelize1.2.0indirect
npmdequal2.0.3indirect
npmdetect-libc2.1.2indirect
npmdevlop1.1.0indirect
npmdijkstrajs1.0.3indirect
npmdom-serializer2.0.0indirect
npmdomelementtype2.3.0indirect
npmdomhandler5.0.3indirect
npmdomutils3.2.2indirect
npmelectron-to-chromium1.5.389indirect
npmemoji-regex8.0.0indirect
npmencoding-sniffer0.2.1indirect
npmentities4.5.0indirect
npmentities6.0.1indirect
npmentities7.0.1indirect
npmenvinfo7.21.0indirect
npmesbuild0.28.1indirect
npmescalade3.2.0indirect
npmesprima4.0.1indirect
npmestree-walker2.0.2indirect
npmexsolve1.1.0indirect
npmextend3.0.2indirect
npmextend-shallow2.0.1indirect
npmfdir6.5.0indirect
npmfflate0.8.3indirect
npmfind-up4.1.0indirect
npmfraction.js5.3.4indirect
npmfs-extra11.3.6indirect
npmfsevents2.3.3indirect
npmget-caller-file2.0.5indirect
npmget-east-asian-width1.6.0indirect
npmgiscus1.6.0indirect
npmgraceful-fs4.2.11indirect
npmgray-matter4.0.3indirect
npmhas-flag4.0.0indirect
npmhash-sum2.0.0indirect
npmhast-util-from-html2.0.3indirect
npmhast-util-from-parse58.0.3indirect
npmhast-util-parse-selector4.0.0indirect
npmhast-util-sanitize5.0.2indirect
npmhast-util-to-html9.0.5indirect
npmhast-util-whitespace3.0.0indirect
npmhastscript9.0.1indirect
npmhookable5.5.3indirect
npmhtml-void-elements3.0.0indirect
npmhtmlparser210.1.0indirect
npmiconv-lite0.6.3indirect
npmimmutable5.1.9indirect
npmis-extendable0.1.1indirect
npmis-extglob2.1.1indirect
npmis-fullwidth-code-point3.0.0indirect
npmis-glob4.0.3indirect
npmis-interactive2.0.0indirect
npmis-plain-obj4.1.0indirect
npmis-unicode-supported2.1.0indirect
npmjs-yaml3.15.0indirect
npmjs-yaml4.3.0indirect
npmjsesc3.1.0indirect
npmjson52.2.3indirect
npmjsonfile6.2.1indirect
npmkind-of6.0.3indirect
npmlightningcss1.32.0indirect
npmlightningcss-android-arm641.32.0indirect
npmlightningcss-darwin-arm641.32.0indirect
npmlightningcss-darwin-x641.32.0indirect
npmlightningcss-freebsd-x641.32.0indirect
npmlightningcss-linux-arm-gnueabihf1.32.0indirect
npmlightningcss-linux-arm64-gnu1.32.0indirect
npmlightningcss-linux-arm64-musl1.32.0indirect
npmlightningcss-linux-x64-gnu1.32.0indirect
npmlightningcss-linux-x64-musl1.32.0indirect
npmlightningcss-win32-arm64-msvc1.32.0indirect
npmlightningcss-win32-x64-msvc1.32.0indirect
npmlilconfig3.1.3indirect
npmlinkify-it5.0.2indirect
npmlit3.3.3indirect
npmlit-element4.2.2indirect
npmlit-html3.3.3indirect
npmlocal-pkg1.2.1indirect
npmlocate-path5.0.0indirect
npmlog-symbols7.0.1indirect
npmmagic-string0.30.21indirect
npmmagic-string-ast1.0.3indirect
npmmarkdown-it14.3.0indirect
npmmarkdown-it-anchor9.2.1indirect
npmmarkdown-it-cjk-friendly2.0.2indirect
npmmarkdown-it-emoji3.0.0indirect
npmmdast-util-to-hast13.2.1indirect
npmmdurl2.0.0indirect
npmmicromark-util-character2.1.1indirect
npmmicromark-util-encode2.0.1indirect
npmmicromark-util-sanitize-uri2.0.1indirect
npmmicromark-util-symbol2.0.1indirect
npmmicromark-util-types2.0.2indirect
npmmimic-function5.0.1indirect
npmmlly1.8.2indirect
npmms2.1.3indirect
npmmuggle-string0.4.1indirect
npmnanoid3.3.16indirect
npmnanoid5.1.16indirect
npmnode-addon-api7.1.1indirect
npmnode-releases2.0.51indirect
npmnth-check2.1.1indirect
npmonetime7.0.0indirect
npmoniguruma-parser0.12.2indirect
npmoniguruma-to-es4.3.6indirect
npmora9.4.1indirect
npmp-limit2.3.0indirect
npmp-locate4.1.0indirect
npmp-try2.2.0indirect
npmparse57.3.0indirect
npmparse5-htmlparser2-tree-adapter7.1.0indirect
npmparse5-parser-stream7.1.2indirect
npmpath-exists4.0.0indirect
npmpathe2.0.3indirect
npmperfect-debounce2.1.0indirect
npmphotoswipe5.4.4indirect
npmpicocolors1.1.1indirect
npmpicomatch4.0.5indirect
npmpkg-types1.3.1indirect
npmpkg-types2.3.1indirect
npmpngjs5.0.0indirect
npmpostcss8.5.22indirect
npmpostcss-load-config6.0.1indirect
npmpostcss-value-parser4.2.0indirect
npmproperty-information7.2.0indirect
npmpunycode.js2.3.1indirect
npmqrcode1.5.4indirect
npmquansync0.2.11indirect
npmreaddirp5.0.0indirect
npmregex6.1.0indirect
npmregex-recursion6.0.2indirect
npmregex-utilities2.3.0indirect
npmrehype-parse9.0.1indirect
npmrehype-sanitize6.0.0indirect
npmrehype-stringify10.0.1indirect
npmrequire-directory2.1.1indirect
npmrequire-main-filename2.0.0indirect
npmrestore-cursor5.1.0indirect
npmrolldown1.1.5indirect
npmrxjs7.8.2indirect
npmsafer-buffer2.1.2indirect
npmsass1.100.0indirect
npmsass-embedded1.100.0indirect
npmsass-embedded-all-unknown1.100.0indirect
npmsass-embedded-android-arm1.100.0indirect
npmsass-embedded-android-arm641.100.0indirect
npmsass-embedded-android-riscv641.100.0indirect
npmsass-embedded-android-x641.100.0indirect
npmsass-embedded-darwin-arm641.100.0indirect
npmsass-embedded-darwin-x641.100.0indirect
npmsass-embedded-linux-arm1.100.0indirect
npmsass-embedded-linux-arm641.100.0indirect
npmsass-embedded-linux-musl-arm1.100.0indirect
npmsass-embedded-linux-musl-arm641.100.0indirect
npmsass-embedded-linux-musl-riscv641.100.0indirect
npmsass-embedded-linux-musl-x641.100.0indirect
npmsass-embedded-linux-riscv641.100.0indirect
npmsass-embedded-linux-x641.100.0indirect
npmsass-embedded-unknown-all1.100.0indirect
npmsass-embedded-win32-arm641.100.0indirect
npmsass-embedded-win32-x641.100.0indirect
npmsax1.6.0indirect
npmscule1.3.0indirect
npmsection-matter1.0.0indirect
npmset-blocking2.0.0indirect
npmshiki4.3.1indirect
npmsignal-exit4.1.0indirect
npmsitemap9.0.1indirect
npmslimsearch2.3.0indirect
npmsource-map-js1.2.1indirect
npmspace-separated-tokens2.0.2indirect
npmsprintf-js1.0.3indirect
npmstdin-discarder0.3.2indirect
npmstring-width4.2.3indirect
npmstring-width8.2.2indirect
npmstringify-entities4.0.4indirect
npmstrip-ansi6.0.1indirect
npmstrip-ansi7.2.0indirect
npmstrip-bom-string1.0.0indirect
npmsupports-color8.1.1indirect
npmsync-child-process1.0.2indirect
npmsync-message-port1.2.0indirect
npmsynckit0.11.13indirect
npmtinyglobby0.2.17indirect
npmtrim-lines3.0.1indirect
npmtrough2.2.0indirect
npmtslib2.8.1indirect
npmuc.micro2.1.0indirect
npmufo1.6.4indirect
npmundici7.28.0indirect
npmundici-types7.18.2indirect
npmundici-types8.3.0indirect
npmunified11.0.5indirect
npmunist-util-is6.0.1indirect
npmunist-util-position5.0.0indirect
npmunist-util-stringify-position4.0.0indirect
npmunist-util-visit5.1.0indirect
npmunist-util-visit-parents6.0.2indirect
npmuniversalify2.0.1indirect
npmunplugin3.3.0indirect
npmunplugin-utils0.3.2indirect
npmupath2.0.1indirect
npmupath3.0.8indirect
npmupdate-browserslist-db1.2.3indirect
npmvarint6.0.0indirect
npmvfile6.0.3indirect
npmvfile-location5.0.3indirect
npmvfile-message4.0.3indirect
npmvite8.1.4indirect
npmvue3.5.39indirect
npmvue-router5.1.0indirect
npmvuepress2.0.0-rc.30indirect
npmvuepress-plugin-components2.0.0-rc.107indirect
npmvuepress-plugin-md-enhance2.0.0-rc.107indirect
npmvuepress-shared2.0.0-rc.107indirect
npmvuepress-theme-hope2.0.0-rc.107indirect
npmweb-namespaces2.0.1indirect
npmwebpack-virtual-modules0.6.2indirect
npmwhatwg-encoding3.1.1indirect
npmwhatwg-mimetype4.0.0indirect
npmwhich-module2.0.1indirect
npmwrap-ansi6.2.0indirect
npmy18n4.0.3indirect
npmyaml2.9.0indirect
npmyargs15.4.1indirect
npmyargs-parser18.1.3indirect
npmyoctocolors2.1.2indirect
npmzwitch2.0.4indirect
Dependency advisories 0

This repository publishes no package the index resolves, so its own dependency graph was assessed — 498 packages, which also include development and test pins that never ship: 0 carry known advisories, of which 0 are direct. 1 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list.

No known advisories affect the assessed dependencies.

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [
        "ta-lib",
        "financial",
        "series-analysis",
        "technical-analysis"
      ],
      "is_fork": false,
      "size_kb": 1008183,
      "has_wiki": false,
      "homepage": "https://ta-lib.org/",
      "languages": {
        "C": 14039671,
        "C#": 606931,
        "M4": 2173,
        "Java": 32229391,
        "Rust": 12494524,
        "SCSS": 5456,
        "CMake": 42533,
        "Shell": 15521,
        "Python": 295013,
        "Makefile": 7066,
        "TypeScript": 3352
      },
      "pushed_at": "2026-07-27T08:35:28Z",
      "created_at": "2016-08-20T06:28:16Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-27T02:56:58Z",
      "description": "TA-Lib (Core C Library)",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "BSD-3-Clause",
      "default_branch": "main",
      "license_spdx_raw": "BSD-3-Clause",
      "primary_language": "Java",
      "significant_languages": [
        "Java",
        "C",
        "Rust"
      ]
    },
    "owner": {
      "blog": "https://sourceforge.net/p/ta-lib/bugs/102/",
      "name": "TA-Lib",
      "type": "Organization",
      "login": "TA-Lib",
      "company": null,
      "location": null,
      "followers": 332,
      "avatar_url": "https://avatars.githubusercontent.com/u/21127168?v=4",
      "created_at": "2016-08-19T14:54:08Z",
      "is_verified": null,
      "public_repos": 12,
      "account_age_days": 3628
    },
    "license": {
      "state": "standard",
      "spdx_id": "BSD-3-Clause",
      "raw_spdx": "BSD-3-Clause",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.7.1",
          "kind": "patch",
          "published_at": "2026-07-03T17:36:45Z"
        },
        {
          "tag": "v0.6.4",
          "kind": "patch",
          "published_at": "2025-01-11T05:00:37Z"
        },
        {
          "tag": "v0.6.3",
          "kind": "patch",
          "published_at": "2025-01-06T00:16:36Z"
        },
        {
          "tag": "v0.6.2",
          "kind": "patch",
          "published_at": "2024-12-26T04:12:47Z"
        },
        {
          "tag": "v0.6.1",
          "kind": "patch",
          "published_at": "2024-12-23T21:37:11Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2024-02-13T17:47:56Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "144c635bb429759235696d9f95e1734169205f3a",
          "body": "…one (replaced by the generated metadata registry)",
          "is_bot": false,
          "headline": "docs: CLAUDE.md project tree — the hand-written Java meta/ layer is g…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-27T02:50:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4d46dbdc905712bdda7e27a978056ae3b5258b5",
          "body": "… emitters\n\nFour lints under -D warnings (unnecessary_to_owned, unnecessary_map_or,\nredundant_closure_for_method_calls, too_many_lines on the ParamHolder\nemitter — allowed per the c_stream.rs precedent). Emission-neutral: a full\ngenerate produces zero file changes.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(codegen): clear the clippy pedantic gate in the Java doc/metadata…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-27T02:41:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "acad5800617507d77364cd9839d06382605294d1",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-27T02:36:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bcbecf469891abc98c26fde3c8525780c3e97f7a",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-27T02:28:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dab2d5c9295d5bbc82cfd63d40766643614b1ce0",
          "body": "Merged for contribution credit. dev already carries the reworked\nimplementation (e9848f1e) built on this PR's end-bounding idea; all\nconflicts resolved to the dev version, so this merge changes no content.",
          "is_bot": false,
          "headline": "Merge PR #143: bound each MAVP ma() pass at its period's last use",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-27T02:01:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6160bc12d0de60ec4678dc37b12ed6b00d6de6a",
          "body": "…ith doclint\n\njava_doc.rs renders each function's ta_codegen/input/<name>/<name>.md onto the\npublic batch API -- the Java counterpart of rust_doc.rs. Until now Core.java's\nonly /** blocks were the templated streaming blurbs: 168 batch methods with no\ndocumentation and no IDE hover. Prose comes from \n[…]\nges, exit 0; xlang-hash Rust 200961 / Java\n200907 cases, 0 mismatches; cargo test all 10 suites 0 failed; 5 Java suites +\ndoclint; regen idempotent; C/Rust/.NET generated output byte-identical.\n\nMF,CC",
          "is_bot": false,
          "headline": "feat(java): generate batch Javadoc from the canonical .md + gate it w…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-27T00:27:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1bd1fcec96be1ddd94c4fee6a522cb37434dc069",
          "body": "Java gets the introspection layer C and Rust already ship, replacing the frozen\n2007 meta/ island that A2 had to delete. Package io.github.talib.metadata:\nFunctions.all()/byName(), rows as immutable records, plus a ParamHolder and a\nGENERATED STATIC SWITCH for call-by-name -- C's TA_ParamHolderAlloc\n[…]\n961 / Java\n200907 cases, 0 mismatches; cargo test all 10 suites 0 failed; 5 junit-free Java\nsuites (MetadataTest auto-discovered); regen idempotent; C/Rust/.NET generated\noutput byte-identical.\n\nMF,CC",
          "is_bot": false,
          "headline": "feat(java): ship the generated metadata registry + call-by-name",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T21:51:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e9848f1ec15b629fb2192e6038bcdfc25b28494f",
          "body": "…ast use (#143)\n\nBuilds on PR #143 by @dexhunter: each per-period ma() pass now ends at the\nlast output using that period — bit-safe because every dispatched MA fills\nforward (truncating the end cannot change earlier outputs). The\nflag-and-rescan selection is replaced by a counting sort sized by the\n[…]\nlock-copy and wrong-fast-path-buffer defects pass\nevery pre-existing gate and are caught only by this group.\n\nAlso adds the missing #128 CHANGELOG entry.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(mavp): group outputs by period and bound each ma() pass at its l…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T21:12:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6ceb94e83c1e0ad4aeeb8b56edc8148f8e1dafb5",
          "body": "…overy\n\nThe A2 checkpoint review found what the gates structurally cannot see.\n\nThe published ta-lib.org Java pages documented an API that no longer exists. A2\nrewrote only the import FQNs there, so the pages LOOKED reviewed while every\nsample stayed on the pre-A1 surface: MInteger/RetCode imports (\n[…]\nd; 4 Java suites pass; regen\nidempotent. Note the gate run happened on a tree that also carried another\nsession's in-flight #143 MAVP work, so it green-lit both; the commit itself is\nJava-only.\n\nMF,CC",
          "is_bot": false,
          "headline": "fix(java): A2 checkpoint review — website API docs, casing, test disc…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T20:42:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e2b15dde33c82f705d425bc6caab365ca1fc71de",
          "body": "The public batch surface returns `record OutRange(begIdx, count)` and throws on\nmisuse. A range shorter than the lookback stays a SUCCESS with count 0 -- C's\ncontract -- and is never an exception.\n\nFragments keep the C shape as package-private cores (`xxxInternal`,\n`xxxUnguardedInternal`); `java.rs`\n[…]\nJava\n200907 cases, 0 mismatches; cargo test ALL 10 suites 0 failed; 4 junit-free Java\nsuites pass (38+30+4 checks + stream smoke); regen idempotent; C/Rust/.NET\ngenerated output byte-identical.\n\nMF,CC",
          "is_bot": false,
          "headline": "refactor(java)!: OutRange + throwing wrappers; rename to io.github.talib",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T05:15:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "74ba14d4eae4ef89ba1dde8327433eeb510cc38f",
          "body": "Core is immutable (final fields, deep-immutable CandleSetting, defensive\ncopies, no accessor hands an array back), so sharing one across threads is\nsafe under JLS 17.5 without synchronization. Settings move to a hand-written\nCoreBuilder; Core.DEFAULT is the shared zero-config instance.\n\nCompatibilit\n[…]\n --codegen 161/0/7 x4 languages, exit 0; xlang-hash Rust 200961 /\nJava 200907 cases, 0 mismatches; cargo test 306+226+2, 0 failed; regen\nidempotent; C/Rust/.NET generated output byte-identical.\n\nMF,CC",
          "is_bot": false,
          "headline": "refactor(java): immutable Core + CoreBuilder; drop compatibility",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T03:27:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0e48c4eb35f8e842040a6a2f6a0363f15d58e8da",
          "body": "…riod prose\n\nPath-Dependent was the one category described only in the abstract. Add AD (a\nrunning accumulation whose level is an artifact of the start date) and SAR (a\nstate machine that can pick the opposite initial trend direction) as a two-item\nlist, so the reader sees both shapes the opening se\n[…]\nction page already names the setting it\nresponds to.\n\nLink \"Function Documentation\" in the intro to /functions/ rather than leaving\n\"the documentation\" for the reader to locate.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): give Path-Dependent two examples; trim the unstable-pe…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T01:00:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ba2269e3b6f294a72f8a7dfb6b4e62a2d74c36d7",
          "body": "TA_MAVP normalized every requested period into localPeriodArray, then, for\neach distinct period still flagged, called ma() over the whole remaining\nrange and scanned the rest of localPeriodArray to find and copy every\noutput sharing that period. Every ma() pass therefore ran to endIdx even\nwhen its \n[…]\ninside the\n1e-12 bar).\n\nThe added allocation is 2*(optInMaxPeriod+1) ints, sized by the period\nrange rather than the data, and is null-checked with full cleanup.\n\nCo-Authored-By: Aiden <aiden@weco.ai>",
          "is_bot": false,
          "headline": "perf(mavp): bound each ma() pass at its period's last use",
          "author_name": "Dex Hunter",
          "author_login": "dexhunter",
          "committed_at": "2026-07-25T12:12:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "68757ff34d2ce5ed5bf3379aa936605fa515565f",
          "body": "Transitive dev dependency of the VuePress/vite build. Path traversal in\nprevious-source-map auto-loading; not reachable here (build-time only,\nno untrusted CSS). Lockfile-only.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "build(website): bump postcss 8.5.17 -> 8.5.22 (GHSA-r28c-9q8g-f849)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T03:59:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e203f7c436a9c21fd08246661971cfcb7ee37517",
          "body": "\"If Initial Unstable Period, then...\" rather than a bare category name, so a\nreader landing mid-page sees that a section covers one case out of four, not a\nproperty every function has, and that the answer is the body below.\n\nAnchors are pinned with {#id} (markdown-it-attrs, already enabled by the th\n[…]\nnction pages deep-link\nthese sections, and letting the slugifier follow the wording would both lengthen\nthe ids and break every inbound link the next time a heading is reworded.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): phrase the stability headings as conditionals",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T02:58:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "25c5157dd47c01a1a73800d477b2e5bd3c8eb515",
          "body": "…I section\n\nReference page: trim the Start-Independent and Initial Unstable Period sections\nto what the reader needs, drop the two \"comparing across different-length\nwindows\" restatements, and link /api/unstable-period/ for what to do about an\nunstable period. Call the four things \"categories\" rathe\n[…]\nasted in issues and forum answers, so a bare rename would silently land\nthose readers at the top of a long page. The four in-repo pages that used it are\nmoved to the new anchor.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): tighten the numerical-stability wording; rename the AP…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T02:49:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ba8c75f08d225a4abc33072f3b5e0c8505463101",
          "body": "…lity line\n\nA state's definition is written once, on /functions/stability, and linked. The\nper-function line adds a clause only when there is something the link cannot\nsay: which inner function the unstable period is inherited from (DEMA -> EMA),\nwhat this function's own MAType default implies (BBAN\n[…]\nso inherits a period that still\nmoves its lookback (ADOSC -> EMA). Start-Independent, an intrinsic unstable\nperiod and plain path-dependence now render as the bare linked state.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): say only what is specific to the function in the stabi…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T01:59:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d9108cd2758e769912626825f8825398ab06b9e0",
          "body": "…ckboxes\n\nThe Properties table claimed \"Start-Independent\" for 17 functions that are not.\nThe YAML `unstable_period` flag answers the ABI question -- does this function own\na tunable TA_FUNC_UNST_* id -- which is what TA_FUNC_FLG_UNST_PER has always\nmeant, and the documentation was rendering it as a\n[…]\non) but\nunchecked cells no longer carry their tooltip. Verified: the phrases \"never\nconverges\" and \"candlestick-pattern signal\" now appear only on the pages where\nthey are true.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): derive numerical stability; state it in prose, not che…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T01:41:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7b842bb10de1a133f9f5fa0042ca82b274c57761",
          "body": "Present the RSI and BBANDS formulas as KaTeX display blocks (already enabled\nsite-wide via vuepress-theme-hope markdown.math + katex) instead of prose with\ninline math, followed by a short \"where ...\" legend line.\n\nRSI now states Wilder's published form (RS, then 100 - 100/(1+RS)) rather than\nour fu\n[…]\neriod shortcuts stay out of the docs.\n\ndocs_site: drop any \"##\" section whose body is blank, so an empty \"## Notes\"\nplaceholder in an input page never renders as a bare heading.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(rsi,bbands): typeset formulas as display math; drop empty sections",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T01:08:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1ce79015cc02f9ef42f77db0c72beffb28772c33",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-24T20:19:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80a11563bfea3957bf1b7b4530e5508892ba30af",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-24T20:11:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71105c62c7a5d43c950f05ce981785c42cc78ba8",
          "body": "… comments\n\nThe fuzz/xlang param-vector builder collected MAType candidates into a fixed\ncand[10] with an `nc < 10` guard that dropped extra values SILENTLY — it never\nreached the FUZZ_MAX_VEC overflow counter, so a MAType list longer than 10\nnon-default would quietly stop being swept. #93 (DISABLED\n[…]\n\" comment fixed.\n\nBehavior-neutral at M=11 (no coverage change); the next MAType add now fails\nthe gate instead of silently dropping arms. All gates green (--codegen,\n--xlang-hash, --fuzz-064, plain).",
          "is_bot": false,
          "headline": "test(regtest): make MAType vector-cap truncation fail loudly, refresh…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T19:56:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d7519d6c7a73403466d28630c29619d07666d198",
          "body": "MACDEXT carries 3 MAType params, so its stream-vector count is 6*M+1 in the\nMAType-list length M. #93 added TA_MAType_DISABLED (M 10->11), taking it from\n61 to 67 vectors and tripping the STREAM_MAX_VEC=64 overflow guard — a hard\nfailure of the unfiltered `ta_regtest --codegen` stream_verify gate th\n[…]\ned since #93 landed. Raise the cap to 128 (runway for ~10 more\nMATypes); the dropped MACDEXT DISABLED arms are now actually stream-verified\n(15596 legs, up from 10684). Coverage restored, not reduced.",
          "is_bot": false,
          "headline": "test(regtest): raise STREAM_MAX_VEC 64->128 for MACDEXT after #93 (#93)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T18:18:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4ebb02a3fcbac58d2640e585d2ceef0b84b21a85",
          "body": "…ers (#142)\n\nRoute the abstract sweep's empty-output cases (period consumes the whole\nrange -> TA_SUCCESS + zero-length) through server_verify, so the contract is\nverified against the Rust/Java/.NET servers, not just in-process C. The\ngeneric --codegen/--xlang-hash sweeps clamp every lookback below nbBars, so\nperiod>data was the one boundary never cross-checked. Non-vacuity guard +\n84 cases x 4 langs; sabotage-proven both ways.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "test(regtest): cross-check period>input empty-output vs language serv…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T18:01:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7bf49d271bf3ba1165dd8de360216f0d20f3fa21",
          "body": "…s (#93)\n\nThe MA page also notes that DISABLED bypasses smoothing for any period.",
          "is_bot": false,
          "headline": "docs(functions): list TA_MAType_DISABLED in per-function MAType table…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T16:57:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7566c9f4fed9bc97435fe09fa2f5a860f1085dc3",
          "body": "New TA_MAType value that makes the moving average a plain input->output copy\nwith a lookback of 0, regardless of the period parameter. Every function that\ntakes an MAType parameter (MA, MAVP, BBANDS, MACDEXT, STOCH/STOCHF/STOCHRSI,\nAPO/PPO/PVO) accepts it: they all route the copy through the single \n[…]\nISABLED swept everywhere: four-variant parity\n(guarded/unguarded/TA_S_), batch==stream (stream_verify), and bit-identical\nC/Rust/Java (--xlang-hash); the frozen-oracle differential sweep is unchanged.",
          "is_bot": false,
          "headline": "feat(ma): TA_MAType_DISABLED — period-independent no-smoothing (#93)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T16:57:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "39aac3bd8822a9b5fa77f2d91468472fe13ced7c",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-24T07:40:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6cf93e43b1a5dc7c0516eb54455ef27f940322f",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-24T07:31:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b8b7c4596b7909fcce573ba31ef97a61c240823",
          "body": "Several period-scaled integer expressions were evaluated in int32 before\nbeing stored to a double, overflowing (signed UB) well inside the advertised\n[.,100000] period range:\n\n- WMA/HMA  divider = (n*(n+1))>>1  -- the int product overflows at n>=46341\n  (the issue's 65536 is only where the post-shif\n[…]\ne build folds the overflow to the correct value (the optimizer is\n  entitled to assume no signed overflow), so the value check there is\n  coherence-only.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(wma,hma,linearreg): compute period-scaled dividers in double (#142)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T04:28:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "81d9d54b879c38ab955194b40db181f00f6591a1",
          "body": "Adding TA_MAType_HMA (#139) surfaced four places the MAType enum was still\nhand-maintained even though enums.yaml is the source of truth. All four now\nderive from enums.yaml:\n\n- include/ta_defs.h: moved the TA_MAType enum inside GENCODE SECTION 1 (a\n  one-time marker edit) and emit it from enums.yam\n[…]\nd; no\nindicator-source drift). Gates: 303 generator tests + clippy; C reference\nregtest (four-variant bitwise parity); all 4 servers built; cross-language\n--codegen-only 161/161 x 4 languages, 0 fail.",
          "is_bot": false,
          "headline": "refactor(codegen): ta_codegen owns every MAType enum surface (#140)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T03:29:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "22924cdb7856fe68bb811984f4d3eb3b959a7618",
          "body": "The flag never meant the \"start-dependent\" umbrella its name implied. An\nunstable-period function is *also* start-dependent (its warm-up depends on\nwhere the data begins) yet is deliberately NOT flagged, because it converges;\nthe flag marks only the set that never converges -- running accumulations\n\n[…]\nkeys;\nfull generator suite (611); C build + reference regtest (path-dependent set\nstill skipped correctly); all 4 language servers built; cross-language\n--codegen-only (161/161 x 4 languages, 0 fail).",
          "is_bot": false,
          "headline": "refactor(abstract): rename TA_FUNC_FLG_START_DEP -> TA_FUNC_FLG_PATH_DEP",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T02:35:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "180ec2fd99987441763044bff0b762bd505a9ac1",
          "body": "Add a generated `## Properties` table to every function page\n(backends/docs_site.rs, injected before `## Implementation`), surfacing the\nabstract-layer flags that were previously invisible in the docs:\n\n- Numerical Stability column: a single-select of three mutually-exclusive\n  states folded from tw\n[…]\nstability logic reads both `path_dependent` and the current\n`start_dependent` YAML word, so the generated pages are byte-stable across\nthe pending TA_FUNC_FLG_START_DEP -> TA_FUNC_FLG_PATH_DEP rename.",
          "is_bot": false,
          "headline": "docs(website): per-function Properties table (stability + display flags)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T02:15:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "32f69a58dd2564596629bb3f3a9977ee5ae519c8",
          "body": "Flip hma.yaml to [overlap, stream]. Recognition was already unlocked by\n#139's param-pure dual-mode split (optInTimePeriod == 2 || == 3): the\nanalyzer derives a full dual-mode plan -- mode A (degenerate, T3 input-ring\nonly) and mode B (general: two input rings + the sqrt(n)-1 dRing CIRCBUF).\nThe sol\n[…]\nC dualmode modeA=T3/state=5 modeB=T3/state=19. The abstract\nsurface carries TA_FUNC_FLG_STREAM; servers and the stream bench\nregenerated (ta_bench_stream: HMA update ~8ns, ~4x faster than batch@last).",
          "is_bot": false,
          "headline": "feat(hma): stream support via dual-mode per-arm buffer union (#141)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-23T23:07:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "728f8130c65edb21dfbadbd831b1feeaa9b085b6",
          "body": "HMA(n) = WMA(2*WMA(price,n/2) - WMA(price,n), sqrt(n)), both derived\nperiods TRUNCATED per Alan Hull's own Integer() (Tulip and pandas-ta agree;\nStockCharts rounds -- a visibly different line, documented in hma.md and\npinned by n=7/8 convention tests). Default 20 is the author's, and a period\nwhere \n[…]\n, #141\n(streaming: recognition unlocked, per-arm buffer union in the stream\nemitters remains), #142 (pre-existing WMA divider int overflow at\np >= 65536, inherited deliberately for bit-compatibility).",
          "is_bot": false,
          "headline": "feat(hma): Hull Moving Average + TA_MAType_HMA, fused single-pass (#139)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-23T16:34:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fed29d3e4d2b24cc123be14d652d16121e86a1c7",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-23T07:40:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f551684f8ee46e1f4afb6be4854300ae27a95a9",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-23T07:33:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80b70d156ce55b4044f0137007308242826628d0",
          "body": "…' term\n\nIntro paragraphs described the batch API first; now purpose -> mechanism ->\nguarantee, with batch as the closing contrast. Replace 'handle' with\n'stream' throughout (matches the actual type, e.g. TA_SMA_Stream) on the\nC, Rust and Java pages; fix a stale '*s is NULL' comment in the C example.",
          "is_bot": false,
          "headline": "docs(website): streaming intros lead with streaming; unify on 'stream…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-23T00:41:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7eb5bca6e81747f4f3968cde2cae2e5402491a1e",
          "body": "…129)\n\nBoth ids were accepted by TA_SetUnstablePeriod() but never read by any\ncomputation (0 reads at v0.6.4 and reference-pre-cutover): ADXR and\nSTOCHRSI follow the unstable period of their internal ADX and RSI. Renamed\nto TA_FUNC_UNST_UNUSED_1 / _UNUSED_22 with values preserved (the MFI/IMI\npreced\n[…]\ne two ids everywhere; the website\nunstable-period list falls to 20 entries automatically.\n\nOutput is bit-identical by construction (fuzz-064 green); full --codegen\nsweep 161 funcs x 4 languages green.",
          "is_bot": false,
          "headline": "fix(api): retire inert TA_FUNC_UNST_ADXR and TA_FUNC_UNST_STOCHRSI (#…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-22T19:39:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0586205b88ef9639e97e20e88b82d66fd23a3867",
          "body": "The FuncUnstId emitter (ta_defs.rs) drops the gen_code-era /* NNN */\ncomment format and writes TA_MAType-style explicit initializers, asserting\nvalues are contiguous from 0 (Java/Rust backends index by declaration\norder). Same treatment hand-applied to TA_RetCode, TA_Compatibility,\nTA_RangeType and TA_CandleSettingType. Values unchanged; no ABI change.\nAlso documents TA_Compatibility as deprecated.",
          "is_bot": false,
          "headline": "refactor(include): explicit = N values for every ta_defs.h enum",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-22T19:39:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df28ca3750ad90776c841a968c98fbae271fd840",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-22T07:44:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a70c72c0df9e8feaaac7d465aa20abfc9ae7e10",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-22T07:35:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d784e9f2a1a39dc4a30a38307548ffcc58ffcac8",
          "body": "The 0.8.1 entry scoped NATR to startIdx > lookback; the zero-close\noutReal[0] gap also hits ordinary full-range calls (ta-lib-python#653).\nSplit the IMI unstable-period note onto its own line.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(changelog): #98 NATR zero-close gap affects full-range calls too",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-22T01:43:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9bf176fc25a0fabbfe034488bf4c0fc99a62a6b7",
          "body": "TA_REALBODY/TA_UPPERSHADOW/TA_LOWERSHADOW/TA_HIGHLOWRANGE in ta_utility.h read\ntheir input arrays with no cast. In a TA_S_CDL* body those arrays are const\nfloat[], so TA_CANDLERANGE/TA_CANDLEAVERAGE compute the range in float and round\nbefore it widens into the double accumulator -- breaking PR #33'\n[…]\nregtest so the autotools dist nightly covers it.\n\nVerified: bare ./ta_regtest (VARIANT gate 167 funcs x 31104 vectors bit-identical\n+ new test green); fuzz-064 PASS, 0 failures.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "fix(ta_func): compute candle range in double inside TA_S_ bodies (#138)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-22T00:07:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "99826e3ac839576712de5ddd936220d5af0842f0",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T23:33:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10672914575e89c43d1b2b5c19ad30cd9bdc2439",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T23:26:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf376135e2dbc784de722ad00e154e1d4d191564",
          "body": "…tops reading garbage\n\nThe new VARIANT gate's build_regime() is the first code to read\nTA_History.openInterest and trusts the struct's \"unused arrays are NULL\"\ncontract, but testTAFunction_ALL and test_codegen_with_simulator never set the\nfield (the fuzz histories already do). On Linux the stack slo\n[…]\n see\nuninitialized reads): the poison build SIGSEGVs at test_variants.c:368 and passes\nclean with the initializer. Harness only; no library code changes.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ta_regtest): NULL-init history.openInterest so the variant gate s…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T23:18:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "190aaf1e420821bbf4a9e113a11ab5ac064c532c",
          "body": "…every slot (#137)\n\nvariant_frame::flat_inputs classified inputs by matching ParamType::Price -- an\narm that never fires, because parser::yaml expands a price bundle into Real\ninputs long before any backend sees it. Every price component therefore fell\nthrough to the Real arm and was emitted as TA_V\n[…]\nippy --all-targets clean, ta_regtest --codegen green across\nall four languages, and the full variant sweep (167 functions x 31104 vectors)\nbit-identical on the corrected inputs.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "fix(ta_regtest): feed the variant gate real OHLC bars, not volume in …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T21:41:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0fac748036faa096ea38df696ad1a33e74836f99",
          "body": "…the price bundle (#135)\n\nA price bar is declared once and used two ways. `ta_abstract` describes it as a\nsingle TA_Input_Price parameter named `inPriceHLC` whose flags word names the\ncomponents; the functions themselves take one array per component --\nTA_STOCH(startIdx, endIdx, inHigh, inLow, inClo\n[…]\n--codegen green across all four languages\n(including test_abstract's paramName comparison), 338 doctests, cargo doc\nwarning-free, and a fresh generate leaves the tree unchanged.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(ta_codegen): document the arrays a function is called with, not …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T21:21:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "08e4e5172ea2f20ad01378bd3a198ead5eca40ae",
          "body": "The clippy gate is a hard CI step and variant_frame.rs landed in 7359f7ad\nwithout ever being run through it -- I built and tested the generator but not\n`cargo clippy --all-targets -- -D warnings`, so 7 pedantic errors reached dev.\n\nReal fixes:\n- map(...).unwrap_or(...) -> map_or(...)\n- `n - 1` as a \n[…]\nentical, so no downstream artifact\nmoves. Verified: both clippy steps clean, generator tests, the generated\ncrate's 338 doctests, and a fresh generate leaves the tree unchanged.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "fix(ta_codegen): satisfy clippy pedantic in variant_frame (#137)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T20:42:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7359f7ad95676d28ed24b917a6ee4883791243e6",
          "body": "…period 1 (#137)\n\nEvery function ships four times over -- TA_<N>, TA_<N>_Unguarded, TA_S_<N> and\nTA_S_<N>_Unguarded -- and nothing gated three of them generically. #137 reported\nthis for the six post-cutover functions the frozen-reference sweep skips; the\nhole is wider than that, and was demonstrate\n[…]\n; --codegen all four languages; --xlang-hash\n(192942 cases, 0 mismatches); ASan+UBSan clean; -Wall -Wextra clean;\ncheck-source-lists; a fresh generate leaves the tree unchanged.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "test(regtest): bitwise four-variant parity gate, and fix TA_S_WMA at …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T20:17:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ab484ccbd3fd7d18eeb35bafafa9426bbc1d46cd",
          "body": "CMF landed as the 167th streamable function without updating the ratchet,\nso the dev nightly's generator-test job has been failing since 48e0170d.\nThe paired `emitted == total` assertion was already green — every\nstreamable function does emit its Java stream section.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(java): bump the stream emit ratchet to 167 for CMF (#134)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T18:57:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "519311abc6d170b5e9f9f6a8a50ed42f5d141dc6",
          "body": "The example bars put close at the exact midpoint of high/low, so the\nmoney-flow multiplier was identically zero and the AD/ADOSC/CMF doctests\ncould not fail. Measured over all 167 doctests: 62 produced an output that\nno implementation error could change (52 CDL all-zero, AD/ADOSC/CMF\nall-zero, ACOS/\n[…]\necuted them.\n\nThe generated diff is rustdoc comments only -- no library code changes.\n338 doctests pass; sabotaging CMF's divisor makes its doctest fail.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(rust): make the generated doctests able to fail (#136)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T18:44:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d661b9ae084709184c5b3ad76d776e6961a4b442",
          "body": "…en/input\n\nReworks the previous commit's hint into the generator's own idiom and extends\nit past MIN/MAX, then narrows it to the targets where it was measured to pay.\n\n- New Statement::UnrollHint IR node. `TA_UNROLL(n)` is written once per loop in\n  ta_codegen/input/<f>/<f>.c, so the source of truth\n[…]\n frozen-reference codegen\nverification passes for all 4 languages / 161 functions, and the generated\nRust/Java/.NET sources are byte-identical to before.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(minmax): express the rescan unroll as TA_UNROLL(n) from ta_codeg…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T17:19:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0365a69a37f5faaf2e3190881774c9ff7670c29e",
          "body": "Brings in dexhunter's original work so the contribution stays in the history.\nThe follow-up commit reworks the hint into the generator's TA_UNROLL(n) idiom,\nextends it to the other rescan functions, and restricts it to the compilers\nwhere it was measured to pay.",
          "is_bot": false,
          "headline": "Merge PR #128: unroll the expired-extreme rescans in MIN/MAX",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T17:11:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "48e0170d4c41ff8abd916b3826667d2a4b2b31de",
          "body": "The n-bar sum of Chaikin's money flow volume over the n-bar sum of volume.\nGroup Volume Indicators, default period 20, lookback n-1, streamable.\n\nThe per-bar multiplier is written exactly as ta_AD.c's, deliberately. Tulip's\norder, (v*num)/den, would instead make our output bit-identical to that orac\n[…]\nMF examples are all-zero and cannot fail) and #137\n(post-cutover functions reach no *_Unguarded or TA_S_* variant -- three\nsabotages of TA_S_CMF passed the entire suite before test_cmf.c was widened).",
          "is_bot": false,
          "headline": "feat(cmf): Chaikin Money Flow (#134)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T16:52:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "65e49d72ab77aa830e14e0c6d48e51296be09edd",
          "body": "The earlier approach fast-pathed monotonic windows, which are atypical in normal TA-Lib input. This targets the common random-walk case instead without changing the algorithm or adding work to the per-sample tight loop.\n\nMIN and MAX already cache the current extreme and rescan only when it expires. \n[…]\n ASan plus UBSan, generator tests, clippy, and idempotent regeneration. Wall-clock samples were inconclusive and are not claimed.\n\nFixes TA-Lib/ta-lib-python#715\n\nCo-Authored-By: Aiden <aiden@weco.ai>",
          "is_bot": false,
          "headline": "perf(minmax): unroll expired-extreme rescans",
          "author_name": "Dex Hunter",
          "author_login": "dexhunter",
          "committed_at": "2026-07-21T11:29:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cae231d8f0764c92d8ba7712d0c46a017cf1a117",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T07:40:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba3f8a516e8350a6cd35f9e538ec83ce86f39f9e",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T07:34:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb8bf53aec1796833d749fe0ca2691a50737b41b",
          "body": "escape_prose escaped every `[` outside a code span, which is right for prose\nlike inReal[i] but also mangled real markdown links, stranding the URL as plain\ntext. The shipped crate rendered a literal\n\n  \\[TradingView](https://www.tradingview.com/...)\n\nand the dangling URL tripped rustdoc's bare_urls\n[…]\neral text into a live broken link. Site-absolute destinations are\nrebased onto https://ta-lib.org/.\n\nVerified in the rendered HTML rather than by warning count — a silenced lint is\nnot a working link.",
          "is_bot": false,
          "headline": "fix(rustdoc): keep genuine inline links intact in the generated docs",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T05:31:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "09888183369784ab9f32d8a96a9fba4609589529",
          "body": "A generated page described what each parameter meant but never what values it\naccepted: 0 of 166 showed a default or a range, and the reader had to open the\nYAML. docs/ta_codegen_input_doc.md has always specified the split — numbers live\nin <name>.yaml and are injected at render — but only the prohi\n[…]\ndles\ninto inHigh/inLow/inClose, so the authored `inPriceHLC` has nothing to join\nagainst; carrying the bundle on FuncDef is the prerequisite and is left for the\nfollow-on, recorded in the status note.",
          "is_bot": false,
          "headline": "feat(docs): inject the YAML parameter metadata at render time (#132)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T05:31:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "df6f59ec1676e044f92c9c2b192aa50e14f9aa8e",
          "body": "VWMA (#131) added the 166th stream-flagged function without touching the\npin, so the suite has been red since 5e50d7f4. The count is deliberately\nhand-maintained, and this is the deliberate update.",
          "is_bot": false,
          "headline": "test(java): move the stream emit ratchet to 166",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T05:30:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eaf3a1f64515f5b7555ce6deb07e56d3358413ed",
          "body": "…d oracle\n\nThey were skipped at FUNCTION level for #118, so all three had zero differential\ncoverage vs 0.6.4 -- and the summary reported that as '3 case(s)', understating a\n~3000-comparison gap by three orders of magnitude.\n\nThe exclusion is only justified where 0.6.4's cancelling E[x^2]-mean^2 for\n[…]\nannot:\nit restores agreement with 0.6.4. That direction stays pinned by test_stddev.c\nand the BBANDS stable-variance test.\n\nAlso corrects the stochrsi-skipped label, which counts functions, not cases.",
          "is_bot": false,
          "headline": "test(fuzz-064): compare VAR/STDDEV/BBANDS where 0.6.4 is still a vali…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T03:36:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cec94326f32b0dc02d17dd206f704abeafed59d6",
          "body": "Bollinger specifies 20 periods / 2 standard deviations. The 5 came from\nTA_DEF_UI_TimePeriod_5_MINIMUM2, a generic descriptor shared with STDDEV/VAR/\nBETA/T3, never a decision about Bollinger Bands -- the deviation defaults (2.0)\nand MA type (SMA) were set correctly from the same recommendation, and\n[…]\nr changes only for callers relying on the abstract-layer\ndefault. Gates green: ta_regtest, --codegen 161/161 x3, --xlang-hash 0\nmismatches, fuzz-064 0 failures (BBANDS already excluded there by #118).",
          "is_bot": false,
          "headline": "fix(bbands): default optInTimePeriod 5 -> 20 (#133)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T02:55:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fae2c79c4467b82ce2be32b382d97bc3782e215c",
          "body": null,
          "is_bot": false,
          "headline": "docs(vwma): drop the cross-implementation default note",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T02:31:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4be71d3aa8ac755c3a028c384b445805e30c2e4e",
          "body": "… inReal\n\nThe unconditional staging buffer from 3f2f804e cost ~21% at 100k bars (the\nonly real MAVP slowdown in history — a fixed-flag bisect across ten commits\nfrom reference-pre-cutover shows everything else flat and bit-identical; the\nta_bench \"+11% vs cref\" that prompted the audit was mean-of-50\n[…]\n BBANDS' tempBuffer guard.\n\nInterleaved bench: conditional == pre-#130 baseline. In-place path stays\nbitwise-correct (193-pair gate, ASan); MAVP green on all four languages\nincl. stream + OpenAndFill.",
          "is_bot": false,
          "headline": "perf(mavp): stage the #130 in-place defence only when outReal aliases…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T02:25:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d72e41571d8ef090ef739f194fbc50da8e3e9ed6",
          "body": "It also fed the page description and the rustdoc.",
          "is_bot": false,
          "headline": "docs(vwma): drop the VWAP contrast from the summary",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T02:14:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cad531db586b08296c8645dab06e4032e27e8d2e",
          "body": "Sabotage-proven: reintroducing a guard that returns 0.0 fails this leg and\nnothing else. Also trims the flat-price comment -- agreement there is to a few\nULP in every implementation (pandas-ta 9.1e-12, Tulip 6.5e-11, ours 8.0e-11),\nso it needed a measurement, not an essay.",
          "is_bot": false,
          "headline": "test(vwma): pin the documented NaN on an all-zero-volume window (#131)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T01:46:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "582db41e05d52a1e82556b42d5c3769a015a3b61",
          "body": "Closes the gap between what #131's verification plan claimed and what was\nactually implemented.\n\n- Tulip Indicators 0.9.2 checked-in vectors as deterministic small cases:\n  tests/extra.txt:320 (vwma 4) and tests/untest.txt:466 (vwma 5). Only extra.txt\n  is independently derived -- its header says th\n[…]\n were re-verified live against pandas-ta-classic 0.6.52\n(max rel 4.739e-16) and cross-checked against the Tulip server (max rel\n4.739e-16) -- they are genuinely externally derived, not self-generated.",
          "is_bot": false,
          "headline": "test(vwma): add the second oracle and the flat-price case (#131)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T01:46:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5e50d7f4b428b01e6fd4a026489c905ff87d5431",
          "body": "Sum(P*V)/Sum(V) over a trailing window. Overlap Studies, inReal + volume\n(the OBV input shape, so a source other than close is expressible), lookback\nperiod-1, streaming from day one.\n\nKeeps the redundant /n on both sums and mirrors TA_SMA's add-new / snapshot /\nsubtract-old order, which makes it BI\n[…]\nr. abstract_volume_view() keys off the existing\nTA_IN_PRICE_VOLUME flag and is applied to both the in-process call and the JSON\nrequest so the two sides cannot diverge. Benefits every volume function.",
          "is_bot": false,
          "headline": "feat(vwma): Volume Weighted Moving Average (#131)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T01:46:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3f2f804e21348022a0b1105fed16280deb3c93b5",
          "body": "…functions (#130)\n\nReusing an input buffer as one of the outputs is a documented guarantee\n(\"All TA functions support this\") but returned TA_SUCCESS with wrong values:\n\n- LINEARREG/_ANGLE/_SLOPE/_INTERCEPT/TSF: the O(1) sliding recurrence read\n  the departing value after the priming write clobbered \n[…]\n path. Red on exactly the 8 functions before the fix.\n\nASan/UBSan green, --codegen 161/161 x4 languages, stream 14840 legs\nbit-exact, OpenAndFill bitwise, fuzz-064 0 failures, xlang-hash 0 mismatches.",
          "is_bot": false,
          "headline": "fix(func): in-place (input==output) calls returned wrong values in 8 …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T01:20:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2af1dca199ef0e7b29892349f47596480cf710e3",
          "body": "…ance trap\n\nGroundwork for the new-indicator wave (board proposals #21-#48). Each of these\nwould have let a future function ship with a gate that looked green while\ntesting nothing.\n\n- checkOracleValue(): shared |got-want| <= absTol + relTol*|want| comparison for\n  external-oracle golden values, rep\n[…]\nual 165; count them with TA_ForEachFunc instead.\n\nAll three sabotage-proven: the perturbed golden, the flipped cap and the\nmutated count each turn the run red, and the run is green with them restored.",
          "is_bot": false,
          "headline": "test(regtest): close three gate-vacuity holes + a zero-crossing toler…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T21:19:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b0c8ff23809a5fa6830b634cee498136e7e09216",
          "body": "Updates the four generator-side header sources (c.rs, rust_lang.rs,\nta_abstract_c.rs, ta_retcode.c.template) plus the hand-written headers;\nalso brings the 43 legacy Java files forward from 1999-2006/2007.",
          "is_bot": false,
          "headline": "chore: bump BSD license copyright year to 2026",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T19:18:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38148302ad5d89e3e9b6cb4260e37f83bb406274",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T18:20:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f3404024ad0deec520feb58983b41b35258880e",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T18:13:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46a1bce48ef6c0961c2e3b0493a240ac0167abc6",
          "body": "Rust and Java never ship a way to select a compatibility variant: the enum is\ncrate-internal/package-private, the setter and getter are gone, and the private\nfield stays pinned to Default. The variant branches in the generated indicators\nare dead code pending their removal. C keeps the deprecated TA\n[…]\nsabotage-proven: perturbing the Metastock seeding in CMO fails\nthe compat=1 leg.\n\nMetastock notes dropped from the EMA/RSI/MACD/CMO pages, the crate docs/README\nand the rust/java/stream website pages.",
          "is_bot": false,
          "headline": "refactor(rust,java): drop the public compatibility (Metastock) API",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T17:54:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "75318b7e0e7f0f790825c9ca33a756690e54a2b9",
          "body": "Audited every open/deferred item in docs/canonical-cutover-runbook.md\nagainst dev, main and v0.7.1: all complete. Stage 6-B (the one stage\nwithout a DONE marker) was delivered by PR #92 + 97e9f89a; the XML\nNUL-termination and large-period gaps are fixed; the server_verify and\ntag-portability deferra\n[…]\ncation-runbook.md section 4\n\nAlso drops the two pointers into the deleted file and a now-false\nNVI/PVI comment in backends/mod.rs.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: delete the canonical-cutover runbook (cutover shipped in 0.7.1)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T17:21:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "80411e03301ce609aea5d4e48ce20b532d8f9c6d",
          "body": null,
          "is_bot": false,
          "headline": "docs(changelog): 0.8.1 entry updates + deprecate TA_SetCompatibility",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T15:00:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7a528a00ada4629481c26e8563ddc23146d8be2",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T08:05:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7842d1cd3699d1b53a094f268652a6207a0ac75",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T07:58:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c99845aec0e53c6fdd3a503fea7300ea0cdb9d23",
          "body": "… on the C API page\n\n4.3: TA_S_ is a prefix, not a suffix; fix plurals and \"allows to digest\";\nstate the guarantee precisely (same output, bit-for-bit — verified by the\nregression gates); align the two signature blocks.\n\n4.4: fix grammar throughout (linked against, thread-safe, single-threaded,\n\"prior to exit\"); mirror 3.1's TA_Shutdown wording.\n\n3.0: \"declared in headers in include/*.h\" -> \"in the include/*.h headers\".",
          "is_bot": false,
          "headline": "docs(website): copyedit float-vs-double (4.3) + multi-threading (4.4)…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T01:56:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9d5e75faf510b8b5b2d5a2242be29a7a5a24511",
          "body": "…le period intro (4.2)\n\n4.1: drop the duplicated \"at runtime\"; replace \"without knowing it a\npriori\" with the concrete claim (call a function whose signature was\nunknown at compile time).\n\n4.2: reword around the actual phenomenon — recursive functions' first\noutputs depend on the starting point, an effect that decays until the\noutput is stable — instead of the \"function having memories\" framing.\nFixes the grammar errors and links the two API calls to the #api anchor.",
          "is_bot": false,
          "headline": "docs(website): copyedit abstraction-layer tail (4.1) + rewrite unstab…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T01:32:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4822d6c33a90ce2beac170c6146aab000e99f638",
          "body": "…n the C API page\n\n3.3: fix grammar in the intro and lookback paragraphs, scope the Range\nMatching waste example to startIdx=0, and state the Exact Allocation pro\nas its result.\n\n4.1: the opener implied by-name calling is what direct calls do — it is\nwhat ta_abstract enables; reword to hard-coded vs runtime lookup. Lead the\nuse-case list with wrapper generation, make the charting-app bullet\nconcrete, and point the closing off-ramp at both batch and streaming.",
          "is_bot": false,
          "headline": "docs(website): copyedit Output Size (3.3) + abstraction layer (4.1) o…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T01:10:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0e2aeaead7c0bece1606e56d1c0f4e45059fc6a",
          "body": "…PI page\n\nFix grammar and simplify wording throughout: the calling-pattern intro and\nits four parameter-group bullets, both TA_MA examples and their result\nexplanations, the single-bar EMA example, and the in-place buffer notes.\n\nAlso fix a wrong value in the range example: with startIdx=125 and\nendIdx=225, outNbElement is 101, not 100 — endIdx is inclusive (now stated\nexplicitly). Verified against the compiled library.",
          "is_bot": false,
          "headline": "docs(website): copyedit the batch-processing section (3.2) of the C A…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T00:49:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f38e132f6531f8e1bbf8135cacb6c0910e2ca8f6",
          "body": "…sources\n\nThe pre-cutover generators re-preprocessed the C source with _MANAGED /\n_JAVA / _RUST defined; all bindings are now generated natively by\nta_codegen, so only the plain-C branch was ever compiled. Remove the dead\narms and the macro scaffolding:\n\n- ta_defs.h: plain `typedef enum` for all six\n[…]\n for the frozen\n  reference-pre-cutover tag.\n\nPreprocessed output is token-identical (gcc -E diff), regtest passes\n161 functions x 4 languages against the frozen reference, and generate\nis idempotent.",
          "is_bot": false,
          "headline": "refactor: drop the dead multi-language preprocessor layer from the C …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T21:02:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a7892a23601b14673f32548c134c122ad158bc38",
          "body": "Intro: drop the \"Part of the C/C++ Core API\" breadcrumb so the page can later\ncover the Rust/Java bindings too, and say plainly that \"unstable period\" names\na setting rather than the problem it addresses.\n\nAPI section: \"family of functions\" was wrong -- each TA_FuncUnstId value maps\nto exactly one f\n[…]\n, ...) as a\ncaller would write them, instead of bare suffixes with the prefix explained in\nthe lead-in.\n\nAlso drop \"in principle\" and the last use of \"transient\", a term used nowhere\nelse on the page.",
          "is_bot": false,
          "headline": "docs(website): unstable period — clarify the API section, list the C ids",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T17:41:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c3fc0a5acb4d84a2ac625f5ef5d9e8014bfc7041",
          "body": "…te pages\n\nThe unstable-period page listed the 22 TA_FuncUnstId functions by hand, so it\ncould silently drift from the enum it documents. Generate that list instead.\n\nNew backend docs_patch.rs, a sibling to docs_site.rs. The split is deliberate:\ndocs_site OWNS whole files under website/src/functions\n[…]\n3) and reverts cleanly; deleting a\nmarker panics with the marker name; a full generate on a clean tree produces no\nother churn; a production VuePress build renders the region with no visible\nartifact.",
          "is_bot": false,
          "headline": "feat(generator): maintain generated regions inside hand-written websi…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T16:28:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dc129b3f1512044527a3112942d795122be84720",
          "body": "Explain in \"Why it exists\" that the warm-up distortion is inherent to the\nalgorithms rather than specific to TA-Lib: every implementation has to seed\nthe recursion somewhere. What TA-Lib adds is the ability to scrub those\nearly values on every function call.\n\nAdd \"What to do\" enumerating the three d\n[…]\nFUNC_UNST_ADX`, `ADXR`, ...) and so read as a typo. State the\nprefix once in the lead-in and list every name bare. The 22 names were\nverified to match the FuncUnstId enum in include/ta_defs.h exactly.",
          "is_bot": false,
          "headline": "docs(website): unstable period — add a \"What to do\" section",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T15:43:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cecaaf303b7762c8d4426d1fbe6edbab7381a8d9",
          "body": "vuepress-theme-hope renders a single `.vp-toc-placeholder` and repositions\nit by breakpoint: at >= $pc (1440px) `#toc` is absolutely placed as the\nright-hand rail, below that it collapses into a box above the content. The\ntheme leaves the placeholder `position: sticky` at every width, so on\nnarrower\n[…]\noutrank the theme: its toc.scss is imported by the TOC\ncomponent, so its injection order relative to this file differs between dev\nand build; equal specificity would make the override order-dependent.",
          "is_bot": false,
          "headline": "fix(website): stop \"On this page\" floating over the content",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T15:43:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "39c583f1777a52a3a3d4a45af4d715f2f5317cab",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T04:46:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2582d647d3c856e9ce6c689dfc1e730af08fe8c7",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T04:38:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3dc5c125fda3be250a95ae06116d55a484fe3a8",
          "body": "Core page: rename 3.0 to 'Calling into TA-Lib'; add a 3.1 'Initialize and\nShutdown' section (TA_Initialize/TA_Shutdown) before batch processing; move\nthe 'all public functions in ta_func.h' pointer under the 3.0 title; rename\n'direct call' to 'batch processing' consistently (the direct-vs-abstractio\n[…]\n Core\npage as a section instead of a separate page).\n\nDeprecate TA_SetCompatibility: undocumented on the site and marked deprecated\nin include/ta_func.h (via the generator source in ta_abstract_c.rs).",
          "is_bot": false,
          "headline": "docs(website): C API restructure + deprecate TA_SetCompatibility",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T04:32:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d2807ae256a5a63cea9ff5d294b7edc6b426f8d",
          "body": "Split the language docs into independent pages — Rust Core API, Rust\nStreaming API, Java Core API, Java Streaming API — each headed by a\n'Not yet released — estimated Q1 2027' banner. The C/C++ Streaming page\nis now C-only (the Rust and Java sections that had accreted onto it are\nremoved). Sidebar regrouped into collapsible C/C++, Rust, and Java API\ngroups. Every code example was fact-checked against the generated\nRust/Java source.",
          "is_bot": false,
          "headline": "docs(website): per-language API pages (Rust/Java Core + Streaming)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T23:08:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "239dcb7782bb3af43ca1b8c12994288f52fddb41",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-18T21:42:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d9f24356ac27d2c6841dec016e8c330b49e4af7",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-18T21:38:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "352b6ff75ef961bbfd9ea8a8cecdff3601d2f506",
          "body": "…ool_assert_comparison\n\nThe dev-nightly clippy gate runs `--all-targets -D warnings`, which promotes\nthis warning to an error; use a plain assert! so the gate stays green.",
          "is_bot": false,
          "headline": "test(java-stream): assert! over assert_eq!(_, true) — clears clippy b…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T21:31:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a060db6f81d651032d68bb112242824b6c381245",
          "body": "# Conflicts:\n#\tta_codegen/generator/src/backends/ta_abstract_c.rs\n#\tta_codegen/generator/src/server_gen.rs",
          "is_bot": false,
          "headline": "Merge branch 'java-stream' into dev",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T21:22:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62e5e1e858e1d0934d89096ade417355b4c3290a",
          "body": "…elf-check live\n\ncargo clippy --lib: 0 errors, 0 warnings (dev's 4052b053 cherry-picked for the\nparallel pre-existing fixes; the rest were this branch's). Final gates: 580\ngenerator tests green; all-language ta_regtest --codegen green with the Java\nstream pass at 165 functions / 14840 bit-exact legs\n[…]\ne new stream-pass fuzz-port self-check reporting 9/9 shapes bit-identical\nfor both porting servers (Rust, Java). PrefixProbe confirms TA_MA/TA_MAVP\nrejects now carry their own stable message prefixes.",
          "is_bot": false,
          "headline": "fix(java-stream): clippy-clean generator, verified prefix fix, fuzz s…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T18:57:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c0b5a13b2fe57401a05c494e895a700dab6f568c",
          "body": "…er_gen.rs / c_stream.rs\n\nPre-existing clippy::pedantic failures surfaced by the dev nightly's clippy gate\n(introduced by the Rust streaming API commits 9706dc61/fa85c6f6, never clippy-checked\nbefore landing on dev). Fixes: single_match/single_match_else -> if/if-let, unused\nout_args, into_iter() ->\n[…]\nrgo test (267+224+... all green) and a full `generate --backend=rust`\nconfirm the generated output is byte-identical before/after.\n\n(cherry picked from commit 4052b0534ad761a8545f7c011f7cbd3e2fe5f7eb)",
          "is_bot": false,
          "headline": "fix(generator): clear clippy pedantic errors in rust_stream.rs / serv…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T18:52:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d216a3d2706d4614ab87f4eed65484daa1eeec8",
          "body": "…ning\n\nDispatch/period-bank opens precheck their OWN lookback before delegating, so\ninsufficient-history rejects always carry the caller's stable \"TA_<NAME>\nopen:\" prefix (previously a TA_MA short-history reject surfaced as\n\"TA_SMA open:\"). flag_sync: pre-add start_dependent (dev #127), panic on\nunp\n[…]\ncompiles fuzz_data.h directly). Dedup sv input-array maps and the\nper-tier base field lists; InsufficientHistoryException server copy moves to\na template file; build.xml gains the stream-smoke target.",
          "is_bot": false,
          "headline": "fix(java-stream): review findings — prefix-stable rejects, gate harde…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T18:51:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4052b0534ad761a8545f7c011f7cbd3e2fe5f7eb",
          "body": "…er_gen.rs / c_stream.rs\n\nPre-existing clippy::pedantic failures surfaced by the dev nightly's clippy gate\n(introduced by the Rust streaming API commits 9706dc61/fa85c6f6, never clippy-checked\nbefore landing on dev). Fixes: single_match/single_match_else -> if/if-let, unused\nout_args, into_iter() ->\n[…]\nems_after_test_module) to the end of the file.\n\nNo behavior change: cargo test (267+224+... all green) and a full `generate --backend=rust`\nconfirm the generated output is byte-identical before/after.",
          "is_bot": false,
          "headline": "fix(generator): clear clippy pedantic errors in rust_stream.rs / serv…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T15:48:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 6,
      "commits_last_year": 966,
      "latest_release_at": "2026-07-03T17:36:45Z",
      "latest_release_tag": "v0.7.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 19,
      "days_since_latest_release": 23,
      "mean_days_between_releases": 174.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 37,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 291,
      "stars": 1638,
      "watchers": 30,
      "fork_history": {
        "days": [
          {
            "date": "2016-12-22",
            "count": 1
          },
          {
            "date": "2017-01-06",
            "count": 1
          },
          {
            "date": "2017-08-22",
            "count": 1
          },
          {
            "date": "2018-01-27",
            "count": 1
          },
          {
            "date": "2018-03-11",
            "count": 1
          },
          {
            "date": "2018-03-12",
            "count": 1
          },
          {
            "date": "2018-08-28",
            "count": 1
          },
          {
            "date": "2018-09-18",
            "count": 1
          },
          {
            "date": "2018-10-04",
            "count": 1
          },
          {
            "date": "2019-01-04",
            "count": 1
          },
          {
            "date": "2019-02-24",
            "count": 1
          },
          {
            "date": "2019-12-04",
            "count": 1
          },
          {
            "date": "2020-06-15",
            "count": 1
          },
          {
            "date": "2020-11-17",
            "count": 1
          },
          {
            "date": "2020-11-19",
            "count": 1
          },
          {
            "date": "2021-01-10",
            "count": 1
          },
          {
            "date": "2021-02-03",
            "count": 1
          },
          {
            "date": "2021-02-15",
            "count": 1
          },
          {
            "date": "2021-04-25",
            "count": 1
          },
          {
            "date": "2021-05-08",
            "count": 1
          },
          {
            "date": "2021-10-13",
            "count": 1
          },
          {
            "date": "2022-01-25",
            "count": 1
          },
          {
            "date": "2022-04-29",
            "count": 1
          },
          {
            "date": "2022-06-28",
            "count": 1
          },
          {
            "date": "2022-07-09",
            "count": 1
          },
          {
            "date": "2023-01-16",
            "count": 1
          },
          {
            "date": "2023-02-03",
            "count": 1
          },
          {
            "date": "2023-02-13",
            "count": 1
          },
          {
            "date": "2023-02-17",
            "count": 1
          },
          {
            "date": "2023-02-28",
            "count": 1
          },
          {
            "date": "2023-03-06",
            "count": 1
          },
          {
            "date": "2023-03-08",
            "count": 1
          },
          {
            "date": "2023-03-29",
            "count": 1
          },
          {
            "date": "2023-04-09",
            "count": 1
          },
          {
            "date": "2023-04-10",
            "count": 1
          },
          {
            "date": "2023-04-17",
            "count": 1
          },
          {
            "date": "2023-05-06",
            "count": 1
          },
          {
            "date": "2023-05-27",
            "count": 1
          },
          {
            "date": "2023-05-28",
            "count": 1
          },
          {
            "date": "2023-06-07",
            "count": 1
          },
          {
            "date": "2023-06-23",
            "count": 1
          },
          {
            "date": "2023-07-01",
            "count": 1
          },
          {
            "date": "2023-07-09",
            "count": 1
          },
          {
            "date": "2023-07-16",
            "count": 1
          },
          {
            "date": "2023-08-09",
            "count": 1
          },
          {
            "date": "2023-08-16",
            "count": 1
          },
          {
            "date": "2023-08-20",
            "count": 1
          },
          {
            "date": "2023-08-25",
            "count": 1
          },
          {
            "date": "2023-09-22",
            "count": 1
          },
          {
            "date": "2023-09-28",
            "count": 1
          },
          {
            "date": "2023-10-07",
            "count": 1
          },
          {
            "date": "2023-10-18",
            "count": 2
          },
          {
            "date": "2023-10-22",
            "count": 1
          },
          {
            "date": "2023-10-30",
            "count": 1
          },
          {
            "date": "2023-11-18",
            "count": 1
          },
          {
            "date": "2023-11-20",
            "count": 1
          },
          {
            "date": "2023-11-26",
            "count": 1
          },
          {
            "date": "2023-11-27",
            "count": 1
          },
          {
            "date": "2023-11-29",
            "count": 2
          },
          {
            "date": "2023-12-14",
            "count": 1
          },
          {
            "date": "2023-12-17",
            "count": 1
          },
          {
            "date": "2023-12-22",
            "count": 1
          },
          {
            "date": "2023-12-25",
            "count": 2
          },
          {
            "date": "2023-12-26",
            "count": 1
          },
          {
            "date": "2024-01-02",
            "count": 1
          },
          {
            "date": "2024-01-10",
            "count": 1
          },
          {
            "date": "2024-01-14",
            "count": 1
          },
          {
            "date": "2024-01-15",
            "count": 1
          },
          {
            "date": "2024-01-22",
            "count": 1
          },
          {
            "date": "2024-02-02",
            "count": 2
          },
          {
            "date": "2024-02-10",
            "count": 1
          },
          {
            "date": "2024-02-12",
            "count": 2
          },
          {
            "date": "2024-02-18",
            "count": 1
          },
          {
            "date": "2024-03-01",
            "count": 1
          },
          {
            "date": "2024-03-11",
            "count": 1
          },
          {
            "date": "2024-03-16",
            "count": 1
          },
          {
            "date": "2024-03-23",
            "count": 1
          },
          {
            "date": "2024-03-24",
            "count": 1
          },
          {
            "date": "2024-03-25",
            "count": 1
          },
          {
            "date": "2024-03-28",
            "count": 2
          },
          {
            "date": "2024-03-29",
            "count": 1
          },
          {
            "date": "2024-03-30",
            "count": 1
          },
          {
            "date": "2024-04-16",
            "count": 1
          },
          {
            "date": "2024-04-21",
            "count": 2
          },
          {
            "date": "2024-04-27",
            "count": 1
          },
          {
            "date": "2024-04-28",
            "count": 1
          },
          {
            "date": "2024-05-01",
            "count": 2
          },
          {
            "date": "2024-05-02",
            "count": 1
          },
          {
            "date": "2024-05-05",
            "count": 1
          },
          {
            "date": "2024-05-14",
            "count": 1
          },
          {
            "date": "2024-05-20",
            "count": 1
          },
          {
            "date": "2024-05-22",
            "count": 1
          },
          {
            "date": "2024-05-23",
            "count": 1
          },
          {
            "date": "2024-05-24",
            "count": 1
          },
          {
            "date": "2024-05-27",
            "count": 2
          },
          {
            "date": "2024-05-29",
            "count": 1
          },
          {
            "date": "2024-05-30",
            "count": 1
          },
          {
            "date": "2024-06-07",
            "count": 1
          },
          {
            "date": "2024-06-08",
            "count": 1
          },
          {
            "date": "2024-06-15",
            "count": 1
          },
          {
            "date": "2024-06-20",
            "count": 1
          },
          {
            "date": "2024-06-28",
            "count": 2
          },
          {
            "date": "2024-07-05",
            "count": 1
          },
          {
            "date": "2024-07-21",
            "count": 1
          },
          {
            "date": "2024-08-02",
            "count": 1
          },
          {
            "date": "2024-08-10",
            "count": 1
          },
          {
            "date": "2024-08-14",
            "count": 1
          },
          {
            "date": "2024-08-15",
            "count": 1
          },
          {
            "date": "2024-08-17",
            "count": 1
          },
          {
            "date": "2024-08-18",
            "count": 1
          },
          {
            "date": "2024-08-19",
            "count": 1
          },
          {
            "date": "2024-08-22",
            "count": 1
          },
          {
            "date": "2024-08-23",
            "count": 1
          },
          {
            "date": "2024-08-25",
            "count": 1
          },
          {
            "date": "2024-09-10",
            "count": 1
          },
          {
            "date": "2024-09-15",
            "count": 1
          },
          {
            "date": "2024-09-23",
            "count": 1
          },
          {
            "date": "2024-09-26",
            "count": 1
          },
          {
            "date": "2024-09-27",
            "count": 1
          },
          {
            "date": "2024-09-30",
            "count": 1
          },
          {
            "date": "2024-10-08",
            "count": 1
          },
          {
            "date": "2024-10-09",
            "count": 1
          },
          {
            "date": "2024-10-12",
            "count": 1
          },
          {
            "date": "2024-10-18",
            "count": 1
          },
          {
            "date": "2024-10-22",
            "count": 1
          },
          {
            "date": "2024-10-25",
            "count": 1
          },
          {
            "date": "2024-10-28",
            "count": 1
          },
          {
            "date": "2024-11-13",
            "count": 1
          },
          {
            "date": "2024-11-14",
            "count": 1
          },
          {
            "date": "2024-11-17",
            "count": 1
          },
          {
            "date": "2024-11-20",
            "count": 2
          },
          {
            "date": "2024-11-29",
            "count": 1
          },
          {
            "date": "2024-12-02",
            "count": 1
          },
          {
            "date": "2024-12-07",
            "count": 1
          },
          {
            "date": "2024-12-19",
            "count": 1
          },
          {
            "date": "2024-12-23",
            "count": 1
          },
          {
            "date": "2024-12-26",
            "count": 1
          },
          {
            "date": "2024-12-28",
            "count": 2
          },
          {
            "date": "2024-12-29",
            "count": 1
          },
          {
            "date": "2025-01-03",
            "count": 1
          },
          {
            "date": "2025-01-06",
            "count": 1
          },
          {
            "date": "2025-01-08",
            "count": 1
          },
          {
            "date": "2025-01-12",
            "count": 1
          },
          {
            "date": "2025-01-17",
            "count": 2
          },
          {
            "date": "2025-01-18",
            "count": 1
          },
          {
            "date": "2025-01-23",
            "count": 1
          },
          {
            "date": "2025-01-25",
            "count": 1
          },
          {
            "date": "2025-02-01",
            "count": 1
          },
          {
            "date": "2025-02-05",
            "count": 2
          },
          {
            "date": "2025-02-08",
            "count": 2
          },
          {
            "date": "2025-02-15",
            "count": 1
          },
          {
            "date": "2025-02-22",
            "count": 1
          },
          {
            "date": "2025-03-03",
            "count": 1
          },
          {
            "date": "2025-03-09",
            "count": 1
          },
          {
            "date": "2025-03-13",
            "count": 1
          },
          {
            "date": "2025-03-14",
            "count": 1
          },
          {
            "date": "2025-03-19",
            "count": 1
          },
          {
            "date": "2025-03-20",
            "count": 1
          },
          {
            "date": "2025-03-21",
            "count": 1
          },
          {
            "date": "2025-03-23",
            "count": 1
          },
          {
            "date": "2025-03-26",
            "count": 1
          },
          {
            "date": "2025-03-28",
            "count": 1
          },
          {
            "date": "2025-03-29",
            "count": 1
          },
          {
            "date": "2025-04-01",
            "count": 1
          },
          {
            "date": "2025-04-02",
            "count": 1
          },
          {
            "date": "2025-04-03",
            "count": 1
          },
          {
            "date": "2025-04-05",
            "count": 1
          },
          {
            "date": "2025-04-09",
            "count": 1
          },
          {
            "date": "2025-04-13",
            "count": 1
          },
          {
            "date": "2025-04-14",
            "count": 1
          },
          {
            "date": "2025-04-20",
            "count": 1
          },
          {
            "date": "2025-04-22",
            "count": 1
          },
          {
            "date": "2025-04-24",
            "count": 1
          },
          {
            "date": "2025-04-27",
            "count": 1
          },
          {
            "date": "2025-05-02",
            "count": 1
          },
          {
            "date": "2025-05-04",
            "count": 1
          },
          {
            "date": "2025-05-15",
            "count": 1
          },
          {
            "date": "2025-05-19",
            "count": 3
          },
          {
            "date": "2025-05-28",
            "count": 1
          },
          {
            "date": "2025-05-30",
            "count": 1
          },
          {
            "date": "2025-06-03",
            "count": 1
          },
          {
            "date": "2025-06-09",
            "count": 1
          },
          {
            "date": "2025-06-10",
            "count": 1
          },
          {
            "date": "2025-06-14",
            "count": 1
          },
          {
            "date": "2025-06-16",
            "count": 1
          },
          {
            "date": "2025-06-17",
            "count": 1
          },
          {
            "date": "2025-06-20",
            "count": 1
          },
          {
            "date": "2025-06-21",
            "count": 2
          },
          {
            "date": "2025-06-22",
            "count": 1
          },
          {
            "date": "2025-06-29",
            "count": 1
          },
          {
            "date": "2025-07-02",
            "count": 1
          },
          {
            "date": "2025-07-04",
            "count": 1
          },
          {
            "date": "2025-07-06",
            "count": 1
          },
          {
            "date": "2025-07-09",
            "count": 1
          },
          {
            "date": "2025-07-14",
            "count": 1
          },
          {
            "date": "2025-07-18",
            "count": 1
          },
          {
            "date": "2025-07-20",
            "count": 1
          },
          {
            "date": "2025-07-23",
            "count": 1
          },
          {
            "date": "2025-07-28",
            "count": 1
          },
          {
            "date": "2025-07-30",
            "count": 1
          },
          {
            "date": "2025-08-03",
            "count": 1
          },
          {
            "date": "2025-08-12",
            "count": 1
          },
          {
            "date": "2025-08-13",
            "count": 1
          },
          {
            "date": "2025-08-14",
            "count": 1
          },
          {
            "date": "2025-08-15",
            "count": 2
          },
          {
            "date": "2025-08-18",
            "count": 1
          },
          {
            "date": "2025-08-20",
            "count": 1
          },
          {
            "date": "2025-08-23",
            "count": 1
          },
          {
            "date": "2025-08-27",
            "count": 1
          },
          {
            "date": "2025-08-31",
            "count": 1
          },
          {
            "date": "2025-09-18",
            "count": 1
          },
          {
            "date": "2025-09-26",
            "count": 1
          },
          {
            "date": "2025-09-28",
            "count": 1
          },
          {
            "date": "2025-10-02",
            "count": 1
          },
          {
            "date": "2025-10-04",
            "count": 1
          },
          {
            "date": "2025-10-11",
            "count": 1
          },
          {
            "date": "2025-10-14",
            "count": 1
          },
          {
            "date": "2025-10-19",
            "count": 2
          },
          {
            "date": "2025-10-21",
            "count": 2
          },
          {
            "date": "2025-10-24",
            "count": 1
          },
          {
            "date": "2025-10-25",
            "count": 1
          },
          {
            "date": "2025-10-30",
            "count": 1
          },
          {
            "date": "2025-11-08",
            "count": 1
          },
          {
            "date": "2025-11-11",
            "count": 2
          },
          {
            "date": "2025-11-14",
            "count": 1
          },
          {
            "date": "2025-11-17",
            "count": 1
          },
          {
            "date": "2025-11-24",
            "count": 2
          },
          {
            "date": "2025-11-27",
            "count": 1
          },
          {
            "date": "2025-12-03",
            "count": 1
          },
          {
            "date": "2025-12-05",
            "count": 2
          },
          {
            "date": "2025-12-09",
            "count": 2
          },
          {
            "date": "2025-12-16",
            "count": 1
          },
          {
            "date": "2025-12-24",
            "count": 1
          },
          {
            "date": "2025-12-25",
            "count": 1
          },
          {
            "date": "2025-12-27",
            "count": 1
          },
          {
            "date": "2026-01-03",
            "count": 1
          },
          {
            "date": "2026-01-13",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-01-25",
            "count": 1
          },
          {
            "date": "2026-02-10",
            "count": 1
          },
          {
            "date": "2026-02-12",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 1
          },
          {
            "date": "2026-03-14",
            "count": 1
          },
          {
            "date": "2026-04-10",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 1
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-04-29",
            "count": 1
          },
          {
            "date": "2026-05-08",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 1
          },
          {
            "date": "2026-06-01",
            "count": 1
          },
          {
            "date": "2026-06-02",
            "count": 2
          },
          {
            "date": "2026-06-05",
            "count": 1
          },
          {
            "date": "2026-06-10",
            "count": 1
          },
          {
            "date": "2026-06-19",
            "count": 1
          },
          {
            "date": "2026-06-21",
            "count": 1
          },
          {
            "date": "2026-06-26",
            "count": 1
          },
          {
            "date": "2026-06-30",
            "count": 1
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-09",
            "count": 2
          },
          {
            "date": "2026-07-10",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 1
          },
          {
            "date": "2026-07-18",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 291,
        "total_forks": 291
      },
      "star_history": null,
      "open_issues_and_prs": 8
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "ta_codegen/generator/Cargo.toml",
        "ta_codegen/output/dotnet/tools/TaCodegenServe.csproj",
        "ta_codegen/output/rust/Cargo.toml",
        "ta_codegen/output/rust/library/Cargo.toml",
        "ta_codegen/output/rust/tools/Cargo.toml"
      ],
      "largest_source_bytes": 12329300,
      "source_files_sampled": 922,
      "oversized_source_files": 196,
      "agent_instruction_files": [
        "CLAUDE.md",
        "src/tools/ta_regtest/CLAUDE.md",
        "ta_codegen/generator/CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 27322
    },
    "dependencies": {
      "manifests": [
        "website/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 498,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 1,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "katex",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.16.47"
        },
        {
          "name": "serde",
          "manifest": "ta_codegen/generator/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_yaml",
          "manifest": "ta_codegen/generator/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.9"
        },
        {
          "name": "serde_json",
          "manifest": "ta_codegen/generator/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "regex",
          "manifest": "ta_codegen/generator/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "regex",
            "direct": true,
            "version": "1.12.3",
            "ecosystem": "crates"
          },
          {
            "name": "serde",
            "direct": true,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_json",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "serde_json",
            "direct": true,
            "version": "1.0.149",
            "ecosystem": "crates"
          },
          {
            "name": "serde_yaml",
            "direct": true,
            "version": "0.9.34+deprecated",
            "ecosystem": "crates"
          },
          {
            "name": "katex",
            "direct": true,
            "version": "0.16.47",
            "ecosystem": "npm"
          },
          {
            "name": "aho-corasick",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "equivalent",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.16.1",
            "ecosystem": "crates"
          },
          {
            "name": "indexmap",
            "direct": false,
            "version": "2.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "itoa",
            "direct": false,
            "version": "1.0.17",
            "ecosystem": "crates"
          },
          {
            "name": "memchr",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": false,
            "version": "1.0.106",
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": false,
            "version": "1.0.45",
            "ecosystem": "crates"
          },
          {
            "name": "regex-automata",
            "direct": false,
            "version": "0.4.14",
            "ecosystem": "crates"
          },
          {
            "name": "regex-syntax",
            "direct": false,
            "version": "0.8.10",
            "ecosystem": "crates"
          },
          {
            "name": "ryu",
            "direct": false,
            "version": "1.0.23",
            "ecosystem": "crates"
          },
          {
            "name": "serde_core",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_derive",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "2.0.117",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-ident",
            "direct": false,
            "version": "1.0.24",
            "ecosystem": "crates"
          },
          {
            "name": "unsafe-libyaml",
            "direct": false,
            "version": "0.2.11",
            "ecosystem": "crates"
          },
          {
            "name": "zmij",
            "direct": false,
            "version": "1.0.21",
            "ecosystem": "crates"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@bufbuild/protobuf",
            "direct": false,
            "version": "2.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/core",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@lit-labs/ssr-dom-shim",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@lit/reactive-element",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-component",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-frontmatter",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-headers",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-sfc",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-title",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-toc",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/shared",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/types",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/helper",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-alert",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-align",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-attrs",
            "direct": false,
            "version": "0.25.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-container",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-demo",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-figure",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-footnote",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-icon",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-img-lazyload",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-img-mark",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-img-size",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-include",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-inline-rule",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-katex-slim",
            "direct": false,
            "version": "0.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-layout",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-mark",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-mathjax-slim",
            "direct": false,
            "version": "0.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-plantuml",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-spoiler",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-stylize",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-sub",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-sup",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-tab",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-tasklist",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-tex",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-uml",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/types",
            "direct": false,
            "version": "0.139.0",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-android-arm64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-darwin-arm64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-darwin-x64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-freebsd-x64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm-glibc",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm-musl",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm64-glibc",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm64-musl",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-x64-glibc",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-x64-musl",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-arm64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-ia32",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-x64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@pkgr/core",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-android-arm64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-arm64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-x64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-freebsd-x64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-musl",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-gnu",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-musl",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-openharmony-arm64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-wasm32-wasi",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-x64-msvc",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/pluginutils",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/core",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-javascript",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-oniguruma",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/langs",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/primitive",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/themes",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/transformers",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/types",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/vscode-textmate",
            "direct": false,
            "version": "10.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@stackblitz/sdk",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/debug",
            "direct": false,
            "version": "4.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/fs-extra",
            "direct": false,
            "version": "11.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hash-sum",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hast",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jsesc",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jsonfile",
            "direct": false,
            "version": "6.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/linkify-it",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/markdown-it",
            "direct": false,
            "version": "14.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/markdown-it-emoji",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ms",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "24.13.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "26.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/picomatch",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/sax",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/trusted-types",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/web-bluetooth",
            "direct": false,
            "version": "0.0.21",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@vitejs/plugin-vue",
            "direct": false,
            "version": "6.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@vue-macros/common",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-core",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-dom",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-sfc",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-ssr",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/devtools-api",
            "direct": false,
            "version": "8.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/devtools-kit",
            "direct": false,
            "version": "8.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/devtools-shared",
            "direct": false,
            "version": "8.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/reactivity",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/runtime-core",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/runtime-dom",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/server-renderer",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/shared",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/bundler-vite",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/bundlerutils",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/cli",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/client",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/core",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/helper",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/highlighter-helper",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/markdown",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-active-header-links",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-back-to-top",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-blog",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-catalog",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-comment",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-copy-code",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-copyright",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-git",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-icon",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-links-check",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-chart",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-ext",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-hint",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-image",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-include",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-math",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-preview",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-stylize",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-tab",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-notice",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-nprogress",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-photo-swipe",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-reading-time",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-redirect",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-rtl",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-sass-palette",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-seo",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-shiki",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-sitemap",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-slimsearch",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-theme-data",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/shared",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/utils",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vueuse/core",
            "direct": false,
            "version": "14.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vueuse/metadata",
            "direct": false,
            "version": "14.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vueuse/shared",
            "direct": false,
            "version": "14.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "arg",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ast-kit",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ast-walker-scope",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "autoprefixer",
            "direct": false,
            "version": "10.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balloon-css",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.43",
            "ecosystem": "npm"
          },
          {
            "name": "bcrypt-ts",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "birpc",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "cac",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001805",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-html4",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio-select",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-cursor",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-spinners",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "colorjs.io",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "comma-separated-tokens",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "14.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "confbox",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "confbox",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "connect-history-api-fallback",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "create-codepen",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "css-select",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "css-what",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dijkstrajs",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.389",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encoding-sniffer",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "envinfo",
            "direct": false,
            "version": "7.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "exsolve",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "extend-shallow",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fflate",
            "direct": false,
            "version": "0.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fraction.js",
            "direct": false,
            "version": "5.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "11.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-east-asian-width",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "giscus",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "gray-matter",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hash-sum",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-html",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-parse5",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-parse-selector",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-sanitize",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-html",
            "direct": false,
            "version": "9.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-whitespace",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hastscript",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hookable",
            "direct": false,
            "version": "5.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "html-void-elements",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "5.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "is-extendable",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-interactive",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-android-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-freebsd-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-arm64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-x64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lilconfig",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "linkify-it",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "lit",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "lit-element",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "lit-html",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "local-pkg",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string-ast",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it",
            "direct": false,
            "version": "14.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it-anchor",
            "direct": false,
            "version": "9.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it-cjk-friendly",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it-emoji",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-hast",
            "direct": false,
            "version": "13.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-character",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-encode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-sanitize-uri",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-function",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mlly",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "muggle-string",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.16",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "5.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "node-addon-api",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.51",
            "ecosystem": "npm"
          },
          {
            "name": "nth-check",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-parser",
            "direct": false,
            "version": "0.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-to-es",
            "direct": false,
            "version": "4.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "ora",
            "direct": false,
            "version": "9.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5-htmlparser2-tree-adapter",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5-parser-stream",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "perfect-debounce",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "photoswipe",
            "direct": false,
            "version": "5.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-types",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-types",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pngjs",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.22",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-load-config",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-value-parser",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "property-information",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode.js",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "qrcode",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "quansync",
            "direct": false,
            "version": "0.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "regex-recursion",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "regex-utilities",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-parse",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-sanitize",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-stringify",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-main-filename",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "restore-cursor",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rolldown",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "rxjs",
            "direct": false,
            "version": "7.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sass",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-all-unknown",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-arm",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-riscv64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-darwin-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-darwin-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-arm",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-arm",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-riscv64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-riscv64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-unknown-all",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-win32-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-win32-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sax",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "scule",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "section-matter",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shiki",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "sitemap",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "slimsearch",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "space-separated-tokens",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "stdin-discarder",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "8.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "stringify-entities",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom-string",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "sync-child-process",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "sync-message-port",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "synckit",
            "direct": false,
            "version": "0.11.13",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "trim-lines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "uc.micro",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ufo",
            "direct": false,
            "version": "1.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "11.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-position",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unplugin",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "unplugin-utils",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "upath",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "upath",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "varint",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-location",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "8.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "vue",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "vue-router",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress-plugin-components",
            "direct": false,
            "version": "2.0.0-rc.107",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress-plugin-md-enhance",
            "direct": false,
            "version": "2.0.0-rc.107",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress-shared",
            "direct": false,
            "version": "2.0.0-rc.107",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress-theme-hope",
            "direct": false,
            "version": "2.0.0-rc.107",
            "ecosystem": "npm"
          },
          {
            "name": "web-namespaces",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-virtual-modules",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-encoding",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "which-module",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "15.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "18.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "yoctocolors",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 499,
        "direct_count": 6,
        "indirect_count": 493
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 23,
        "open_issues": 7,
        "closed_ratio": 0.933,
        "closed_issues": 98,
        "closed_unmerged_prs": 8
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "mario4tier",
          "commits": 601,
          "avatar_url": "https://avatars.githubusercontent.com/u/4542410?v=4"
        },
        {
          "type": "User",
          "login": "chadfurman",
          "commits": 384,
          "avatar_url": "https://avatars.githubusercontent.com/u/635170?v=4"
        },
        {
          "type": "User",
          "login": "vbmithr",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/797581?v=4"
        },
        {
          "type": "User",
          "login": "chad-fossa",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/161645047?v=4"
        },
        {
          "type": "User",
          "login": "cpp4ever",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/1954426?v=4"
        },
        {
          "type": "User",
          "login": "dexhunter",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/6930518?v=4"
        },
        {
          "type": "User",
          "login": "nehemiah888",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/141201269?v=4"
        },
        {
          "type": "User",
          "login": "greenTableWork",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/252103756?v=4"
        },
        {
          "type": "User",
          "login": "vikasnkumar",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/12120?v=4"
        },
        {
          "type": "User",
          "login": "trufanov-nok",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/5746456?v=4"
        }
      ],
      "contributors_sampled": 20,
      "top_contributor_share": 0.592
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "dev-nightly-tests.yml",
        "main-nightly-tests.yml",
        "post-release-vcpkg.yml",
        "release-step-1.yml",
        "release-step-2.yml",
        "website.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock",
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 4,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 3,
            "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": 0,
            "reason": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 1/29 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 7 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": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "144c635bb429759235696d9f95e1734169205f3a",
        "ran_at": "2026-07-27T10:40:16Z",
        "aggregate_score": 3.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-27T08:46:31Z",
      "oldest_open_prs": [
        {
          "number": 85,
          "created_at": "2026-04-05T15:05:16Z",
          "last_comment_at": "2026-07-14T19:19:38Z",
          "last_comment_author": "mario4tier"
        }
      ],
      "last_merged_pr_at": "2026-07-27T02:09:46Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 30,
          "created_at": "2024-02-13T18:07:52Z",
          "last_comment_at": "2024-11-12T04:07:23Z",
          "last_comment_author": "mario4tier"
        },
        {
          "number": 60,
          "created_at": "2025-03-17T06:48:14Z",
          "last_comment_at": "2025-03-17T14:55:40Z",
          "last_comment_author": "mario4tier"
        },
        {
          "number": 81,
          "created_at": "2026-02-19T20:06:41Z",
          "last_comment_at": "2026-07-04T11:37:17Z",
          "last_comment_author": "mario4tier"
        },
        {
          "number": 84,
          "created_at": "2026-03-16T22:33:26Z",
          "last_comment_at": "2026-07-03T23:19:16Z",
          "last_comment_author": "mario4tier"
        },
        {
          "number": 116,
          "created_at": "2026-07-15T19:03:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 144,
          "created_at": "2026-07-26T04:26:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 145,
          "created_at": "2026-07-27T04:20:55Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/TA-Lib/ta-lib",
    "host": "github.com",
    "name": "ta-lib",
    "owner": "TA-Lib"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": "High-Risk Jurisdiction Policy applies a 50% multiplier to weighted overall health and gives it an At risk ceiling of 49.",
      "notes": [
        {
          "code": "jurisdiction_overall_adjustment",
          "params": {
            "cap": 49,
            "pct": 50
          }
        }
      ],
      "value": 31,
      "inputs": {
        "security": 34,
        "vitality": 77,
        "community": 67,
        "governance": 60,
        "engineering": 68,
        "high_risk_jurisdiction_cap": 49,
        "high_risk_jurisdiction_multiplier": 50,
        "weighted_overall_before_jurisdiction": 62,
        "overall_after_jurisdiction_multiplier": 31
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 77,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "commits_last_year": 966,
              "human_commit_share": 0.78,
              "days_since_last_push": 0,
              "active_weeks_last_year": 19
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "19/52 weeks with commits",
                "points": 13.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 19
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "966 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 966
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "releases_count": 6,
              "latest_release_tag": "v0.7.1",
              "releases_from_tags": false,
              "days_since_latest_release": 23,
              "mean_days_between_releases": 174.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "6 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 23 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 23
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~174.2 days",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 174.2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "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": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 67,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "forks": 291,
              "stars": 1638,
              "watchers": 30,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1,638 stars",
                "points": 52.1,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1638
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "291 forks",
                "points": 20.5,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 291
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "30 watchers",
                "points": 8.1,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 30
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (BSD-3-Clause)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "BSD-3-Clause"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 60,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 42,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 20,
              "top_contributor_share": 0.592
            },
            "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 59% of commits",
                "points": 9.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 59
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "20 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "merged_prs": 23,
              "open_issues": 7,
              "closed_issues": 98,
              "issue_closed_ratio": 0.933,
              "closed_unmerged_prs": 8
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "93% of issues closed",
                "points": 43.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 93
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "23/31 decided PRs merged",
                "points": 28.4,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 23,
                      "decided": 31
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 1/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "followers": 332,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "TA-Lib",
              "public_repos": 12,
              "account_age_days": 3628
            },
            "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": "332 followers of TA-Lib",
                "points": 18.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 332,
                      "login": "TA-Lib"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "12 public repos, account ~9 yr old",
                "points": 20.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 12
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 9
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 68,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "6 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "ta-lib",
                "financial",
                "series-analysis",
                "technical-analysis"
              ],
              "has_wiki": false,
              "homepage": "https://ta-lib.org/",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://ta-lib.org/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "4 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 34,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized. High-Risk Jurisdiction Policy applies a 50% multiplier to Security posture and gives it an At risk ceiling of 49.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "jurisdiction_posture_adjustment",
                "params": {
                  "cap": 49,
                  "pct": 50
                }
              }
            ],
            "value": 18,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3.5,
              "high_risk_jurisdiction_cap": 49,
              "high_risk_jurisdiction_multiplier": 50,
              "security_posture_after_multiplier": 18,
              "security_posture_before_jurisdiction": 35
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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 1/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 7 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": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 498 resolved dependencies against OSV; 1 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 498
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 1
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 498,
              "unassessed_packages": 1,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 498,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "moderate",
            "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": 50,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": true,
              "exposures": [
                {
                  "role": "top_contributor",
                  "count": 1,
                  "country": "Russia"
                }
              ],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 14
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "Russia: top_contributor (1)",
                "points": 50,
                "status": "partial",
                "details": [
                  {
                    "code": "jurisdiction_exposure",
                    "params": {
                      "role": "top_contributor",
                      "count": 1,
                      "country": "Russia"
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 71,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "CLAUDE.md",
                "src/tools/ta_regtest/CLAUDE.md",
                "ta_codegen/generator/CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 27322
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "78 of 78 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 78,
                      "sampled": 78
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock",
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.09,
              "toolchain_manifests": [
                "ta_codegen/generator/Cargo.toml",
                "ta_codegen/output/dotnet/tools/TaCodegenServe.csproj",
                "ta_codegen/output/rust/Cargo.toml",
                "ta_codegen/output/rust/library/Cargo.toml",
                "ta_codegen/output/rust/tools/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "ta_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "ta_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Java (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "9 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 9,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "primary_language": "Java",
              "largest_source_bytes": 12329300,
              "source_files_sampled": 922,
              "oversized_source_files": 196
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Java (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "196/922 source files over 60KB",
                "points": 43.3,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 922,
                      "oversized": 196
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? 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",
    "Could not fetch npm package 'ta-lib.org' from its registry",
    "Could not fetch crates package 'ta-codegen' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T10:40:35.789371Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/t/TA-Lib/ta-lib.svg",
  "full_name": "TA-Lib/ta-lib",
  "license_state": "standard",
  "license_spdx": "BSD-3-Clause"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statistics.