Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [
"af-xdp",
"dpdk",
"go",
"mef",
"network-testing",
"network-tools",
"performance-testing",
"rfc2544",
"tsn",
"ieee-802-1qbv",
"rfc6349",
"y1564",
"y1731"
],
"is_fork": false,
"size_kb": 4084,
"has_wiki": true,
"homepage": "https://mustardseednetworks.com/stem",
"languages": {
"C": 619071,
"Go": 2272441,
"CSS": 35589,
"HTML": 2338,
"Shell": 102225,
"Python": 21704,
"Makefile": 48928,
"JavaScript": 30551,
"TypeScript": 949311
},
"pushed_at": "2026-07-20T10:37:59Z",
"created_at": "2025-12-29T04:30:06Z",
"owner_type": "Organization",
"updated_at": "2026-07-16T05:56:35Z",
"description": "Standards-aligned network performance testing — RFC 2544, ITU-T Y.1564, Y.1731, MEF, TSN. Reflector, generator, and certifier in one Go binary.",
"is_archived": false,
"is_disabled": false,
"license_spdx": null,
"default_branch": "main",
"license_spdx_raw": "NOASSERTION",
"primary_language": "Go",
"significant_languages": [
"Go",
"TypeScript",
"C"
]
},
"owner": {
"blog": null,
"name": null,
"type": "Organization",
"login": "MustardSeedNetworks",
"company": null,
"location": null,
"followers": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/291406731?v=4",
"created_at": "2026-06-07T00:05:59Z",
"is_verified": null,
"public_repos": 6,
"account_age_days": 47
},
"license": {
"state": "custom",
"spdx_id": null,
"raw_spdx": "NOASSERTION",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.24.0",
"kind": "minor",
"published_at": "2026-07-10T09:57:30Z"
},
{
"tag": "v0.23.0",
"kind": "minor",
"published_at": "2026-05-29T22:48:51Z"
},
{
"tag": "v0.22.0",
"kind": "minor",
"published_at": "2026-05-29T22:23:47Z"
},
{
"tag": "v0.21.4",
"kind": "patch",
"published_at": "2026-05-29T18:16:47Z"
},
{
"tag": "v0.21.3",
"kind": "patch",
"published_at": "2026-05-29T16:20:06Z"
},
{
"tag": "v0.21.2",
"kind": "patch",
"published_at": "2026-05-29T00:50:02Z"
},
{
"tag": "v0.21.1",
"kind": "patch",
"published_at": "2026-05-28T22:28:25Z"
},
{
"tag": "v0.21.0",
"kind": "minor",
"published_at": "2026-05-28T20:53:01Z"
},
{
"tag": "v0.20.0",
"kind": "minor",
"published_at": "2026-05-27T18:04:12Z"
},
{
"tag": "v0.19.0",
"kind": "minor",
"published_at": "2026-05-26T15:33:05Z"
},
{
"tag": "v0.18.1",
"kind": "patch",
"published_at": "2026-05-26T02:08:37Z"
},
{
"tag": "v0.18.0",
"kind": "minor",
"published_at": "2026-05-25T21:01:25Z"
},
{
"tag": "v0.17.2",
"kind": "patch",
"published_at": "2026-05-25T03:15:54Z"
},
{
"tag": "v0.17.1",
"kind": "patch",
"published_at": "2026-05-23T03:25:49Z"
},
{
"tag": "v0.17.0",
"kind": "minor",
"published_at": "2026-05-22T23:37:05Z"
},
{
"tag": "v0.16.0",
"kind": "minor",
"published_at": "2026-05-22T05:58:06Z"
},
{
"tag": "v0.15.0",
"kind": "minor",
"published_at": "2026-05-20T23:13:28Z"
},
{
"tag": "v0.14.0",
"kind": "minor",
"published_at": "2026-05-19T04:38:35Z"
},
{
"tag": "v0.13.3",
"kind": "patch",
"published_at": "2026-05-19T04:21:39Z"
},
{
"tag": "v0.13.2",
"kind": "patch",
"published_at": "2026-05-18T23:53:12Z"
},
{
"tag": "v0.13.1",
"kind": "patch",
"published_at": "2026-05-18T22:40:11Z"
},
{
"tag": "v0.13.0",
"kind": "minor",
"published_at": "2026-05-18T22:31:04Z"
},
{
"tag": "v0.12.1",
"kind": "patch",
"published_at": "2026-05-18T21:04:59Z"
},
{
"tag": "v0.12.0",
"kind": "minor",
"published_at": "2026-05-18T20:19:16Z"
},
{
"tag": "v0.11.0",
"kind": "minor",
"published_at": "2026-05-18T19:54:20Z"
},
{
"tag": "v0.10.0",
"kind": "minor",
"published_at": "2026-05-18T18:14:19Z"
},
{
"tag": "v0.9.12",
"kind": "patch",
"published_at": "2026-05-18T01:07:48Z"
},
{
"tag": "v0.9.11",
"kind": "patch",
"published_at": "2026-05-15T01:01:35Z"
}
],
"recent_commits": [
{
"oid": "49b93e675321ed9ca20ae9fc97673e3a666532c2",
"body": "GitHub/Google/Microsoft OAuth SSO was built but never wired into any\nroute, config, or cmd. It also contradicts stem's air-gapped-license\npositioning (local-only license validation, no phone-home).\n\nRelated to #511",
"is_bot": false,
"headline": "chore: delete dead internal/oauth package (#523)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-10T17:11:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca2c12942b525576a6ed1e3fdd69f79cf0d82874",
"body": "Pin the license-check + semgrep reusable-workflow refs to\nMustardSeedNetworks/.github@v1.0.0 (762b756) instead of @main, matching\nthe fleet's action-pinning discipline and the .github README pattern.\nRenovate bumps these like any other pinned action (same model as the\nfoundation module), so the one-edit-point holds while a bad shared-workflow\npush is gated by each repo's CI rather than landing instantly fleet-wide.",
"is_bot": false,
"headline": "ci: pin fleet-shared reusable workflows to a tagged SHA (#522)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-10T16:38:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4daf06465e9d4af7139f337348eed80d048bd529",
"body": "Replace stem's byte-identical Semgrep job with a call to\nMustardSeedNetworks/.github's reusable semgrep.yml (Phase 3). ci-complete\nstill needs: [semgrep]. Verified via niac canary (#1008, CI Complete green).",
"is_bot": false,
"headline": "ci(semgrep): consume the fleet-shared reusable Semgrep workflow (#521)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-10T16:21:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19bf887ad256634ebaa793a6cbc53200fa491431",
"body": "Replace stem's drifted copy of the license-compliance gate with a thin\ncaller of MustardSeedNetworks/.github's reusable license-check.yml\n(Phase 3). Policy now lives in one place. Verified green via the niac\ncanary (#1007).",
"is_bot": false,
"headline": "ci(license-check): consume the fleet-shared reusable workflow (#520)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-10T15:29:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f4cb1d588bb1ebb79f2cd84b33d74bf3a26a27ba",
"body": "…sha256(bearer) (#519)\n\nSecond half of Stem's foundation adoption (Phase 2). Replaces the in-repo CSRF\ntoken store with the fleet-shared foundation/pkg/csrf Manager (v0.2.0), and\nconverges the session-key derivation onto the fleet-standard sha256(bearer) —\nStem previously keyed on the raw JWT payloa\n[…]\n re-fetch on next login. Pre-alpha,\nno compat shim.\n\nNet -241 lines. Verified build/vet/lint/govulncheck plus the full auth suite\nand the api CSRF/auth/login/logout/MFA/rotation tests (go test green).",
"is_bot": false,
"headline": "refactor(csrf): back CSRF with foundation module; converge keying to …",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-10T15:02:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bd1f928339d9efa69bc92fc6f2691e284a46a879",
"body": "…(#518)\n\n* refactor(license): consume shared foundation module for license core\n\nReplace Stem's in-repo Ed25519 license core with the fleet-shared\ngithub.com/MustardSeedNetworks/foundation module (v0.1.0), collapsing three\nhand-synced copies of this crypto toward a single edit-point (Phase 2 of the\n\n[…]\nt is our own first-party module, not a third-party\ncopyleft risk, so ignore it exactly as we ignore the stem module itself.\nThe gate still catches GPL/AGPL/SSPL contamination in real third-party deps.",
"is_bot": false,
"headline": "refactor(license): consume shared foundation module for license core …",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-10T14:37:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8291e210b96be7efc24a75e89b2ad6d9d23c18aa",
"body": "The bogus 2.0.0 release (deleted) polluted state. This resets:\n- manifest -> 0.24.0 (the version just tagged/built manually)\n- CHANGELOG: relabel the mislabeled [2.0.0] section to [0.24.0] (content\n is the real changes since 0.23.0; only the header/compare was wrong)\n- release-please-config: add bo\n[…]\nores the phantom 1.0.0/#497 + 2.0.0/#513 release PRs\n and computes forward from 0.24.0; remove the non-working release-as.\n\nstem stays pre-1.0. Next release-please run should compute 0.24.1, not 2.x.",
"is_bot": false,
"headline": "chore(release): reset release-please to 0.24.0, purge 2.0.0 (#515)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-10T10:22:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bdd228640dd735c63eca9a0960dd651ae229ba00",
"body": "Co-authored-by: msn-ci-bot[bot] <301394650+msn-ci-bot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(main): release 2.0.0 (#513)",
"author_name": "msn-ci-bot[bot]",
"author_login": "msn-ci-bot[bot]",
"committed_at": "2026-07-10T01:08:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c315c5f1a7e986b11ebc002df1fb657942c318a",
"body": "…(#512)\n\nCodex placed 'release-as' and 'last-release-sha' at the TOP LEVEL of\nrelease-please-config.json, where release-please ignores them (they must\nlive inside packages['.']). So its intended 'force 0.24.0' did nothing and\nrelease-please kept computing off the reverted #497 (1.0.0) release PR,\npr\n[…]\nile -> .github/.release-please-manifest.json; delete root dup\n\nAfter 0.24.0 ships, release-as should be removed (follow-up) so future\nreleases compute from 0.24.0 (which supersedes the phantom 1.0.0).",
"is_bot": false,
"headline": "fix(release): correct release-please config nesting (kill the 2.0.0) …",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-10T00:47:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7a659323518ff42512a5e8de0458c53db5da6ed7",
"body": "Extends github>MustardSeedNetworks/.github so all dependency/lockstep\npolicy lives in one place. Inert until the Renovate App is installed.",
"is_bot": false,
"headline": "chore: onboard Renovate via shared org preset (#510)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-10T00:42:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a52387dd669949e3cbe0a350c7ccaf3dae2aacc",
"body": "The 'stem version' help example printed 'Stem v1.0.0' and DISTRIBUTION.md\nused v1.0.0 in the tag/release examples — misleading, since stem is\npre-1.0 (currently v0.23.0) and there is no 1.0 release. Use 0.x examples.\n(internal/backup BackupVersion=\"1.0\" is the backup file-format version,\nnot the app version — left as-is.)",
"is_bot": false,
"headline": "fix(docs): correct stale v1.0.0 examples to 0.x (#506)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-10T00:03:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e3dfd63f89e56843ccc69f898456d50a21323592",
"body": "The goreleaser-cross container runs steps with sh (dash), which rejects\n'set -o pipefail'. The Syft install step lacked shell:bash, failing the\nrelease build with 'Illegal option -o pipefail' — this killed the first\ngoreleaser-cross release attempt (the bogus v1.0.0). Same fix already\napplied to niac. Unblocks stem releases.",
"is_bot": false,
"headline": "fix(release): force bash on container Syft step (pipefail) (#507)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-09T23:58:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "365ab5b7c542adc16821f98487744ed1ee275895",
"body": null,
"is_bot": false,
"headline": "fix(release): force next Stem release back to 0.x (#504)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-09T23:03:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f5ff941cb297ad495eced773590b66285853854",
"body": null,
"is_bot": false,
"headline": "fix(release): use root release-please manifest (#502)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-09T02:43:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "77419546ed29d6ca62e954676094ba8a74b3b46e",
"body": null,
"is_bot": false,
"headline": "fix(release): align stem release manifest with latest 0.x tag (#500)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-09T02:20:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bc2d53b356cc74d27297cd85037be1b60049bbbf",
"body": "* Revert \"chore(main): release 1.0.0 (#497)\"\n\nThis reverts commit bfe300c93ede9c385cfce366dc807edd11bb6a83.\n\n* chore(ci): refresh invalid release revert checks",
"is_bot": false,
"headline": "fix(release): revert invalid 1.0.0 changelog (#498)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-09T02:11:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bfe300c93ede9c385cfce366dc807edd11bb6a83",
"body": "Co-authored-by: msn-ci-bot[bot] <301394650+msn-ci-bot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(main): release 1.0.0 (#497)",
"author_name": "msn-ci-bot[bot]",
"author_login": "msn-ci-bot[bot]",
"committed_at": "2026-07-09T01:46:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "98ef652e25e342d2ed4123bbfbc6a2bda48912a1",
"body": null,
"is_bot": false,
"headline": "ci(release): use msn-ci-bot App token for release-please (#494)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-08T19:42:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a7aa351157e59a1dec259cdb00ee4a4bc0de06d6",
"body": null,
"is_bot": false,
"headline": "fix(security): bump Go 1.26.5 and gate Trivy SARIF (#496)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-08T16:57:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fa5fd33603d0792841cb1ad52cd00f8bdf4807c9",
"body": null,
"is_bot": false,
"headline": "chore: update stem toolchain dependencies (#492)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-07T00:53:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4222748b3f8412b963b83b10de9d76279987afac",
"body": "… (#489)",
"is_bot": false,
"headline": "ci(governance): exempt release-please PRs from human PR-body template…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-06T20:30:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef849b217f5a9c89845ba51446e11a6629bb4099",
"body": "Adds a required semgrep job (p/golang, p/typescript, p/react,\np/owasp-top-ten; blocking on ERROR severity only) wired into\nci-complete's needs, replicating seed #1737. CodeQL is advisory and\nskipped on private repos, so Semgrep becomes the required SAST signal;\ncorrects the ci-complete comments, whi\n[…]\nn current main. Annotates the one known\nWARNING-severity false positive (HIBP SHA-1 k-anonymity API contract in\ninternal/auth/hibp.go) with a nosemgrep justification ahead of a future\nWARNING ratchet.",
"is_bot": false,
"headline": "ci(security): add Semgrep SAST gate (#485)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-06T19:16:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9c18fcbc51163b1473b9b48979228a04a647e1d3",
"body": "…al Use Grant (#483)",
"is_bot": false,
"headline": "chore(license): add license-key-circumvention clause to BUSL Addition…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-06T18:42:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac7df3fee31cd25e57a3c05b5b963339091107f5",
"body": "macOS runners are the biggest CI cost multiplier (10x ubuntu-latest minutes)\nand stem's build matrix built both darwin rows on every PR despite only\ndarwin/arm64 ever shipping in release.yml. Since stem is CGO_ENABLED=0, drop\nboth darwin rows from the PR build matrix and replace them with a cheap\ncr\n[…]\n+ a scoped grant on the one job that needs SARIF\nupload, and pin release.yml's syft install to a checksummed release archive\ninstead of piping install.sh from the mutable main branch.\n\nRelated to #480",
"is_bot": false,
"headline": "ci(perf): stop macOS-on-PR, enable Go cache, least-privilege (#481)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-06T18:21:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5dbe8698525d571dfeeac1682e47a8d5ddbacc8f",
"body": "Stem is a raw-network on-prem tool; the real deploy path is .deb/.rpm +\nsystemd, not containers. Drop the container build pipeline entirely:\n\n- Delete .github/workflows/container.yml and Dockerfile\n- Drop the now-dead `docker` path filter output from ci.yml (nothing\n downstream referenced it)\n- Rem\n[…]\ns, so no\nchange needed there. Deleting container.yml orphans no required check:\nbranch protection requires only CI Complete, Lint PR Title, and Lint PR\nBody — the container job was never in that list.",
"is_bot": false,
"headline": "chore(build): remove Docker/GHCR publishing (#478)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-06T17:41:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9746bb30f217db9004437e80bcafe870548073fc",
"body": "…477)\n\nBoth open CodeQL alerts trace to code that already follows this repo's\noutput-escaping and password-handling invariants:\n\n- #100 (go/weak-sensitive-data-hashing, internal/auth/hibp.go:109): the\n SHA-1 digest is required by the HaveIBeenPwned Pwned Passwords\n k-anonymity API protocol, never \n[…]\n passthrough — no HTML rendering context exists for the tainted data.\n\nAdd inline comments at both sites recording the analysis so future\nreaders (and the CodeQL dismissal) have the rationale in-repo.",
"is_bot": false,
"headline": "docs(security): document CodeQL alerts #99/#100 as false positives (#…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-06T15:31:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0993c8d4246f07645e5e29de1e93da32154318b2",
"body": "…ake parity (#468)\n\n* fix(fmt): apply gofmt -s to dataplane orchestrator files\n\nTwo files had accumulated whitespace/alignment drift that gofmt -l\nflags; caught while adding the new make fmt-check gate (previously no\ncheck-only formatting target existed to catch this in CI).\n\n* feat(mk): add make fm\n[…]\ntays: the mk/vars.mk `ifndef GOARCH`\nguard (a real latent bug regardless of who invokes make), wrapper\nexit-code fixes, fmt-check, undici bump, golangci-lint v2.12.2, and\nthe `npm run typecheck` swap.",
"is_bot": false,
"headline": "fix(quality-gates): honest exit codes, fmt-check, npm audit fix, CI/m…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-07-06T15:15:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fb37e61ced62dce4ac2cad8326fdb39a9e952a50",
"body": "…395)\n\nBumps [github/codeql-action](https://github.com/github/codeql-action) from 4.36.0 to 4.36.2.\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/co\n[…]\nirect:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps)(deps): bump github/codeql-action from 4.36.0 to 4.36.2 (#…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-17T00:32:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a5e25180d5c6b3a6ad4836c237ab2fd00355525d",
"body": "…nal/api) (#455)\n\n* ci(gates): add filename-policy gate (no monolith naming outside internal/api)\n\nPorts seed's check-filename-policy.sh to stem for fleet enforcement parity.\nThe gate fails if any handlers_*.go / jobs_*.go file exists outside\ninternal/api (unless it's the eponymous file of a package\n[…]\nry outward. Green on the current\ntree (zero handlers_/jobs_ files outside internal/api).\n\n* test(auth): speed up argon2 test mode\n\n---------\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "ci(gates): add filename-policy gate (no monolith naming outside inter…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-17T00:25:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "da2bd38691de94d630ca5693f0d5ff47c0062f74",
"body": "…ors leaf (ADR-0011) (#454)\n\nMove the Origin-header classification used by the CORS policy out of the\nflat internal/api namespace into the internal/api/cors leaf package\n(ADR-0011, fourth slice). The leaf exposes IsLocalhostOrigin,\nIsSameOrigin, and IsRFC1918Origin — with the strict complete-IP-stru\n[…]\nd-API tests external, unexported-helper tests\ninternal).\n\nNo behaviour change: CORS allow/deny decisions and response headers are\nidentical.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(api): extract CORS origin classification into internal/api/c…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T21:30:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "51dda732b93d2ce55c1390167095501bee5ef56e",
"body": "…f (ADR-0011) (#453)\n\nMove certificate provisioning, ACME manager construction, the TLS 1.3\nconfig template, and the active-cert fingerprint cache out of the flat\ninternal/api namespace into the internal/api/tlsutil leaf package\n(ADR-0011). The leaf depends only on stdlib, golang.org/x/crypto, and\ni\n[…]\naf's exported API directly from internal/api/tlsutil.\n\nNo behaviour change: endpoints, /__version fingerprint, and cert paths\nare identical.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(api): extract TLS provisioning into internal/api/tlsutil lea…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T21:11:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "21d0d27fcb54d0b28a6f424d034e554f7ba164ec",
"body": "…R-0011) (#452)\n\n* refactor(api): extract SSE broadcaster into internal/api/sse leaf (ADR-0011)\n\n* fix(sse): use slices.Concat in Frame.Encode (resolve CodeQL alloc-overflow)\n\nCodeQL go/allocation-size-overflow flagged make([]byte,0,len(data)+const)\n(a practically-impossible overflow, but pre-existi\n[…]\n.Concat sizes\ninternally with its own overflow guard — no hand-rolled make-capacity for\nthe analyzer to flag. Behavior identical.\n\n---------\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(api): extract SSE broadcaster into internal/api/sse leaf (AD…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T20:41:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "37c9b7ec5fb5d08a4a3cb040aa69a0b8475113a7",
"body": "…(ADR-0011) (#451)\n\n* refactor(api): extract rate limiter into internal/api/ratelimit leaf (ADR-0011)\n\nMoves all per-IP rate-limiting logic out of package api into the new\ninternal/api/ratelimit leaf package, mirroring niac's proven pattern.\nThe leaf depends only on stdlib, golang.org/x/time/rate, a\n[…]\nr change; all security invariants intact (authLimiter/apiLimiter\nstill wired identically, depguard rule enforces leaf isolation).\n\n---------\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(api): extract rate limiter into internal/api/ratelimit leaf …",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T18:20:32Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5d0df158778ce2dc3032169f260877085183d9e5",
"body": "…y route) (#447)\n\nRemove three categories of pre-v1 backwards-compat dead weight:\n\n1. database.Database type alias (internal/database/database.go L74-75) — deleted;\n all 9 callsites in internal/backup/backup.go migrated to database.DB.\n\n2. Save* alias methods that wrapped canonical methods with no\n[…]\nical route. No Go or UI callers\n used the legacy path. TestHandleAuthCSRF and TestAuthRoutesRegistered\n migrated to the canonical route.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor: purge pre-v1 compat aliases (Database/Save*/auth-csrf legac…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T14:59:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "dab673d7144823006725b979d56575d484b3d9a4",
"body": "…ly (#448)\n\nPre-v1 no-grandfathering: Enterprise (tier 3 / product code 3001) is not\na SKU per LICENSE_STRATEGY (folded into Professional) and was still\ngrandfathering previously-issued tokens to Pro features. Remove it\nentirely — a token presenting tier 3 or code 3001 is now REJECTED\n(falls through\n[…]\nl.\n\nFleet: niac (Free/Pro) + seed (Free/Starter/Pro) already have no\nEnterprise tier — licenses now aligned to the locked matrix fleet-wide.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(license): retire TierEnterprise + TierTestSuite alias entire…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T14:52:32Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f7caee7660624a6b3bacb62ca3a545a3a676ccd6",
"body": "Documents the decision to strangle stem's flat internal/api into isolated\nleaf packages (ratelimit -> sse -> tls, then capability handlers), mirroring\nseed's strangle + niac ADR-0006. Each leaf is stdlib+inward-only with a\nCI-enforced api-<concern>-isolated depguard rule; snake_case filenames go\nawa\n[…]\nas a consequence; port check-filename-policy.sh once they're gone.\n\nAlso restores the missing 0009 + 0010 rows to the ADR index (doc drift).\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "docs(adr): add ADR-0011 (internal/api sub-package decomposition) (#449)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T14:43:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "45146359878d5c00d759b3aea05d2a6dca9fe4c4",
"body": "…#444)\n\nW5.5 bookend: now that every god-file is decomposed (App.tsx, main.go,\nhelp-content.ts, help/tests.go, dataplane.go all under the red-flag\nceiling), enforce the file-size gate as a hard CI failure (STRICT=1,\nfleet-wide Go >1200 / TS >800).\n\nAlso restores the JSON wire-casing gate and the fil\n[…]\nted architecture invariants and must not\nregress. Verified on main: STRICT=1 check-file-size.sh = 0 red flags;\ncheck-json-casing.sh = clean.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "ci(gates): flip file-size gate to STRICT + restore json-casing gate (…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T14:14:26Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f1e37c743fec052b99fc96a9f5d01d5855a34f0a",
"body": "* chore(release): expose release train metadata\n\n* fix(ci): remove stale dataplane import\n\n* fix(ci): wrap release train assertion",
"is_bot": false,
"headline": "chore(release): expose release train metadata (#446)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T13:39:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "021fe6538f8e274da0e357d1d50059bd6b3ec3c7",
"body": "…ze gate) (#440)\n\ndataplane.go was 2782 lines (RED flag >1200). Split by protocol/concern into\n8 files in the same package with no behavior, signature, or logic changes:\n\n- dataplane.go (1186L): C preamble, Context lifecycle, RunCustomStreamTest, internal RFC 2544 wrappers\n- dataplane_types.go (561L\n[…]\ne carries a minimal per-file C preamble (CGO requirement).\nAll validation passed: go build ./..., go vet, golangci-lint (0 issues), go test.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(dataplane): split dataplane.go into cohesive files (under si…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T05:21:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8d8fec02c091a68bbcabab38fc96b24651cbe538",
"body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6.0.2...df4cb1c069e187\n[…]\nirect:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps)(deps): bump actions/checkout from 6.0.2 to 6.0.3 (#394)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-16T05:21:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "42744b74315873aaf499e71241c767955c712d04",
"body": "* chore(github): standardize repo governance\n\n* ci: extend race detector package timeout\n\n---------\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "chore(github): standardize repo governance (#442)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T04:35:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1de39d9d87406939633ba7f27d36980af89552d7",
"body": "…) (#438)\n\n* refactor(ui): split help-content.ts into data/help/* (under size gate)\n\nDecompose the 2021-line monolith into 14 focused files:\n- data/help/types.ts — all interfaces\n- data/help/categories.ts — category record\n- data/help/glossary.ts — glossary record + searchGlossary\n- data/help/tutori\n[…]\n index.ts exemption). All imports unchanged;\nno logic or content modified.\n\n* style(ui): sort imports in help/tests/index (biome)\n\n---------\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(ui): split help-content.ts into data/help/* (under size gate…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T02:36:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ec976eaafd9f89966138994b73cbea12e07ed1ad",
"body": "…437)\n\ncmd/stem/main.go was 1532 lines, exceeding the project >1200-line red\nflag. Split along natural functional seams into six new files in the\nsame package main — zero logic changes, zero renames, verbatim moves:\n\n- cmd_reflect.go reflect subcommand + stats loop + helpers\n- cmd_testmaster.go\n[…]\nenamed to cmd_testmaster.go because Go treats\nfiles ending in _test.go as test files, which hid the package symbols\nfrom the non-test build.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(cmd): split main.go into cohesive files (under size gate) (#…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T02:33:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "dac92bd4c833b575153f6a758c5b222b21418627",
"body": "…(#439)\n\ntests.go (2960 lines, RED FLAG >1200) split by standard into 7 files:\n- tests_rfc2544.go (862 lines): RFC 2544 throughput/latency/frame-loss/b2b/recovery/reset\n- tests_y1564.go (397 lines): Y.1564 config/performance/full SAC\n- tests_rfc2889.go (408 lines): RFC 2889 forwarding/address-cache/\n[…]\nlTests() dispatcher only\n\nSame package, zero behavior change, verbatim content moves only.\nAll files below the 1200-line red flag threshold.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(help): split tests.go into cohesive files (under size gate) …",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T02:30:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b69fbb13eee87b430e6c8fb0369edeebd5d17bda",
"body": "…oup (#426)\n\nBumps the go-dependencies group with 1 update: [golang.org/x/crypto](https://github.com/golang/crypto).\n\n\nUpdates `golang.org/x/crypto` from 0.52.0 to 0.53.0\n- [Commits](https://github.com/golang/crypto/compare/v0.52.0...v0.53.0)\n\n---\nupdated-dependencies:\n- dependency-name: golang.org/\n[…]\nion-update:semver-minor\n dependency-group: go-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps)(deps): bump golang.org/x/crypto in the go-dependencies gr…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-16T01:17:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "217a2055d57e9b40ed076ce7cd595a84b0e3d294",
"body": "Strip the 1187-line god App.tsx down to a 190-line composition root.\nBehavior-preserving extraction (same testids, RQ keys, auth flows):\n\n- hooks/useTestExecution.ts — interfaces + stats RQ reads, connection\n indicator, test start/stop, the status-transition state machine, and\n the test-config hel\n[…]\nocal).\n\nValidated: biome 2.5.0 clean (whole src/), tsgo typecheck, vitest\n198/198, vite build green. App.tsx no longer a file-size red flag.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(ui): decompose App.tsx to providers + routing (W5.5) (#436)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-16T01:06:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "510fe8b968acc678db514155b7dadf42b50e88d1",
"body": "… with 16 updates (#435)\n\nBumps the npm-dependencies group with 16 updates in the /ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) | `4.3.0` | `4.3.1` |\n| [lucide-react](https://g\n[…]\non-update:semver-patch\n dependency-group: npm-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps)(deps): bump the npm-dependencies group across 1 directory…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-16T00:23:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7075ea670dd28b8b0b7fe865e13d17fb61005ae6",
"body": "* feat(ui): auth-store + hardened authFetch core (W5.3, part 1/2)\n\nSecurity-critical core of the auth extraction, built standalone + proven by\ntests before the App.tsx wiring. Cross-model (Codex) reviewed.\n\nauth-store.ts (Zustand, not persisted; isAuthenticated seeded from the\nlocalStorage flag): lo\n[…]\nryFns thread the React Query abort signal.\n\nValidated: biome 2.5.0 clean, tsgo typecheck clean, vitest 198/198,\nvite build green.\n\n---------\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "feat(ui): extract auth to auth-store + harden authFetch (W5.3) (#434)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-15T21:30:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c8518486c295fe9eef3218cdfc078088aeb3e15e",
"body": "* refactor(ui): extract test-execution config to test-store (W5.4)\n\nStage 4 of the App.tsx decomposition. Moves the 12 test-config/run-state\nfields — selectedTests, reflectorProfile, isStarting/StoppingTest,\ntestStartError, and the 7 per-protocol config objects (rfc2544/2889/6349/\ny1564/y1731/tsn/tr\n[…]\niome over all of src/; the long set(...) setter lines in\ntest-store.ts needed wrapping. (Local check had only formatted App.tsx.)\n\n---------\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(ui): extract test-execution config to test-store (W5.4) (#433)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-15T16:20:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4f17830bd0b99a95482915cf87657eb4aca8a707",
"body": "Stage 2b of the App.tsx decomposition. Replaces the manual 1s setInterval\nstats poll (statsIntervalRef + fetchStats useCallback + the connected-gated\npolling effect) with a useQuery:\n- enabled: connected, refetchInterval: 1000, refetchIntervalInBackground:\n true (matches the old setInterval running\n[…]\n2a/2b. tsc + biome clean; build green;\n183/183 unit tests pass. Live polling/test-status behavior is covered by the\nfullstack E2E on the PR.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "feat(ui): migrate the stats poll to React Query (W5.2b) (#432)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-15T15:52:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "12e073ccda2ebe9a54afb2a4a75be22f39d7e3e6",
"body": "* feat(ui): add React Query + migrate the interfaces read (W5.2a)\n\nStage 2a of the App.tsx decomposition. Introduces @tanstack/react-query\n(5.101.0, pinned) with a shared QueryClient (lib/queryClient.ts, mirroring\nseed) wired in at main.tsx, and migrates the first read — the network\ninterfaces fetch\n[…]\nd expireSession so no cached\nserver response survives an auth transition (also protects every future query\non the shared client).\n\n---------\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "feat(ui): add React Query + migrate the interfaces read (W5.2a) (#431)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-15T15:44:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5ab089133cd7aa6e110f1b47d0cc50f156e3173a",
"body": "module-certify was #16a34a green — only ~1.19:1 luminance-distinct from\nstatus-success #4caf50, so a Certify badge and a success badge co-located\nread as the same green. Move certify to violet (#7c3aed light / #a78bfa\ndark), the open slot on the module hue wheel (cyan/red/orange/yellow/blue\nalready \n[…]\nmeasure-blue. Consumers reference the\ntoken, so the change propagates with no call-site edits.\n\ntsc + biome + token gate clean; build green.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "fix(ui): give module-certify a distinct violet hue (S7) (#430)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-15T15:17:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "45f05d93994e1d8a38d4f06b7d495d7c7d6bc6ac",
"body": "…) (#429)\n\nStage 1 of the App.tsx decomposition. Move the four app-shell UI flags\n(settings/help/history drawers + the ⌘K command palette) out of local\nuseState in App.tsx into a dedicated Zustand shell-store, mirroring the\nexisting profile-store pattern. Deliberately not persisted — these are\nephem\n[…]\nuseState count 30 → 26; connection/\nauth/test state are extracted in later slices.\n\ntsc + biome clean; 183/183 unit tests pass; build green.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(ui): extract shell drawer/palette state to shell-store (W5.1…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-15T14:38:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ccde3f43b0aab756a7d21e2aa0cc8eb504761905",
"body": "Replace 12 hand-rolled inline SVG icon components with lucide-react\nequivalents (already stem's icon system in navGroups/Sidebar/pageRegistry),\nand remove the 4 @deprecated, ignored props.\n\nIcon map: Activity→Activity, Wifi→Wifi, WifiOff→WifiOff, Sun→Sun,\nMoon→Moon, Refresh→RefreshCw, Settings→Setti\n[…]\ningsOpen (no callers passed them).\n\nHeaderBar.tsx: 809 → 592 lines. 0 inline <svg>. tsc + biome clean;\n29 HeaderBar tests pass; build green.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(ui): unify HeaderBar icons to lucide-react (S4/S8) (#428)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-15T14:25:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "483b7b6f72e535a04e33cea8e01faa4468b896e0",
"body": "…e (S5) (#425)\n\nthemeComponents.ts used raw `text-zinc-900` (success button) and\n`bg-black/50` (modal backdrop) — both slipped through because the token\ngate blanket-excluded all of styles/.\n\n- Add a semantic `--color-on-success` token (dark #1a2520, ~6.2:1 AA on\n status-success #4caf50; white fail\n[…]\n\n caught.\n\nS7 (module-certify vs status-success green contrast = ~1.19:1) is left as an\nowner decision — analysis only, no hue change here.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "fix(ui): close token-gate escapes in themeComponents + narrow the gat…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-14T23:38:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "960282580d45af9692ca6ab4b665128c05f9e9f7",
"body": "Port seed's check-file-size.sh to stem. Ships in STRICT=0 (warn/exit-0)\nbecause App.tsx (1,453 lines), HeaderBar.tsx (809 lines), and several Go\nfiles exceed red-flag thresholds today. The gate inventories existing debt\nwithout blocking CI; flip STRICT=1 once the App.tsx decomposition lands.\n\nThresholds: Go src >600 warn/>1200 red-flag, Go tests >1000 warn,\nTS/TSX >400 warn/>800 red-flag.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "chore(ci): add file-size gate (warn mode) (W0c) (#424)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-14T23:21:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1c36e07792acd51d9844e3e5d5c0be4adb719548",
"body": "…parity with seed) (#421)\n\nPorts seed's json-casing guard so stem enforces the same camelCase JSON\nwire-tag invariant. stem is already fully camelCase (0 snake_case tags in\ninternal/api + internal/reflector), so the baseline allow-list is empty —\nthe gate locks that in: any NEW snake_case wire tag f\n[…]\ncase (grep exit 1 under pipefail) so the gate works for a fully\ncamelCase repo. Verified: passes clean on main; fails on a seeded snake tag.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "ci(stem): add JSON wire-casing gate — camelCase ratchet (enforcement …",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-14T21:39:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1eec09e3b28de6631c7a9ad65fa63ffef4044a10",
"body": "…#420)\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "test(ui): add nav↔route parity guard (enforcement parity with seed) (…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-14T21:39:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "49222125166f66f6404a81e8a47e31c137211429",
"body": "The 'Account' sidebar group used a bare string literal, so it never\ntranslated — every other group uses '' or a common:sections.* key. Add\ncommon.sections.account (en: Account / es: Cuenta) and reference it. The\n'Security' item label stays as-is (product/standard term).\n\ntsc + biome clean; i18n parity + navGroups tests green (29).\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "fix(ui): i18n the Account nav group label (S3) (#419)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-14T21:36:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c2dc50cfdf1465d179dd15add35caee11fea6761",
"body": "…o exceptions (#422)\n\nMirrors seed's revised ADR-0010 (2026-06-14, pure boundary-mapping) per the\nharmonized-by-convention, no-master principle. stem's API is already 100%\ncamelCase (0 snake_case wire tags in internal/api + internal/reflector); the\njson-casing gate (#421) with empty baseline locks it in.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "docs(adr): adopt fleet JSON wire-casing convention — camelCase API, n…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-14T21:34:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22d9afa7a28a08213c73a18412ecf4f796efbb73",
"body": "esbuild 0.17.0-0.28.0 has a high-severity advisory (missing binary\nintegrity verification enabling RCE via NPM_CONFIG_REGISTRY), pulled in\ntransitively through storybook's vite builder. The advisory is patched\nin 0.28.1; pin it via an npm override (the direct fix npm proposes is a\nbreaking storybook downgrade, which is the wrong tradeoff).\n\nUnblocks the Security Scanning job (npm audit --audit-level=high) on all\nopen PRs.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "chore(deps): override esbuild to 0.28.1 (GHSA-gv7w-rqvm-qjhr) (#423)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-14T21:27:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a8d629aef752d0299745a3717cf1a2c942591014",
"body": "…) (#418)\n\nA cross-repo security-invariant audit confirmed stem's core CSRF posture\n(ADR-0004) holds: all mutating routes go through the registry + global\nper-session CSRFManager, CI-gated. It surfaced two SameSite-mitigated edges\nwhere the middleware does not actively validate a token:\n\n- POST /aut\n[…]\n Document in ADR-0009\nand add pointer comments at both route registrations so a future audit lands\non the decision instead of re-opening it.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "docs(security): record accepted CSRF defense-in-depth edges (ADR-0009…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-11T10:01:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "59a7ebd23f307544822dfc5a1ac9ade5bbc402a5",
"body": "… with 19 updates (#396)\n\nBumps the npm-dependencies group with 19 updates in the /ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [i18next](https://github.com/i18next/i18next) | `26.2.0` | `26.3.1` |\n| [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-reac\n[…]\non-update:semver-patch\n dependency-group: npm-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps)(deps): bump the npm-dependencies group across 1 directory…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-09T02:03:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cd3072579de14cfbf5a35fbc2076ad8ddcb2e82b",
"body": "The app shell shipped as a single ~741 kB index chunk: every app-code\nchange busted the browser cache for React/i18next/etc. too. Add a\nmanualChunks vendor split (vendor-react, vendor-i18n, vendor-ui) plus\nresolve.dedupe so duplicate transitive copies collapse, and wire an\nANALYZE-gated rollup-plugi\n[…]\n. Treemap writes to gitignored ui/dist/.\n\nVerified: npm run build + build:analyze, make build (UI embedded), make\nclean leaves a clean tree.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "perf(ui): split vendor chunks, add bundle analyzer (#417)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-09T01:51:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1aa020e17072d28c11b4fe8d52a3c693440869cc",
"body": "…stry (#415)\n\nstem's capability registry already made HTTP methods authoritative\n(methods + methodGate); the body-size cap was the one piece of route\npolicy still living outside it — every handler relied on decodeJSONStrict\npassing maxRequestBodySize per call site, so a route that forgot to decode\ns\n[…]\nmaxRequestBodySize (1 MB),\nso the registry cap matches what was enforced inline. The existing inline\ndecode caps remain as defense-in-depth.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "feat(api): make request body-size limit declarative in the route regi…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-09T01:14:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "65421cd7697de8ebfd4a1eb7f8317e0aae6e30a2",
"body": "tsconfig.node.json compiled vite.config.ts to a tracked vite.config.js +\nvite.config.d.ts. Vite 8 resolves vite.config.js before vite.config.ts,\nso the stale emitted .js (cssCodeSplit:false, modulePreload:false, no\nes2022 target, no assetsInlineLimit:0) shadowed the canonical .ts at\nconfig-load time\n[…]\ned Vite config and the one Vite\nloads. Verified: tsc -b emits nothing, make build embeds the correct\nconfig, make clean leaves a clean tree.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "fix(ui): stop emitted vite.config.js shadowing vite.config.ts (#416)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-09T00:57:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "505f6e3cac038febcb13ce83c5230a59d274726a",
"body": "stem already had a documented isCSRFExemptPath; this adds the regression gate the\nissue asked for (no production change).\n\ncsrf_coverage_test.go (package auth_test, via a new export_test.go seam):\n- Golden-pins the exempt set — every current exemption (login, harvest/logs/client,\n the MFA finishers\n[…]\nhing token passes and an exempt path passes\n session-less.\n\nVerified: go build, go vet, golangci-lint (0 issues), go test ./internal/auth/.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "test(auth): pin the CSRF exempt-list with a coverage gate (#341) (#414)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T22:32:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2ffcaf88819ec55016133e03e76255d9aff74484",
"body": null,
"is_bot": false,
"headline": "fix(ui): suppress node dep0205 build warning",
"author_name": "Kris Armstrong",
"author_login": null,
"committed_at": "2026-06-08T21:38:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a42dc0829c2cfa67c301aebd3a5c0b9f3b0ff7a8",
"body": "Bumps [securego/gosec](https://github.com/securego/gosec) from 2.26.1 to 2.27.1.\n- [Release notes](https://github.com/securego/gosec/releases)\n- [Commits](https://github.com/securego/gosec/compare/4a3bd8af174872c778439083ded7adbf3747e770...9e6a9843d7a4a6e3e9a8539b02612c8a4aa3f889)\n\n---\nupdated-depen\n[…]\nirect:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps)(deps): bump securego/gosec from 2.26.1 to 2.27.1 (#391)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-08T21:27:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b6be3c68b5556e4b4227644f46440abfbc8cb9aa",
"body": "…with 2 updates (#392)\n\nBumps the go-dependencies group with 2 updates in the / directory: [github.com/go-playground/validator/v10](https://github.com/go-playground/validator) and [modernc.org/sqlite](https://gitlab.com/cznic/sqlite).\n\n\nUpdates `github.com/go-playground/validator/v10` from 10.30.2 t\n[…]\nion-update:semver-minor\n dependency-group: go-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps)(deps): bump the go-dependencies group across 1 directory …",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-08T21:27:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "39990a39090516b8723b3bb8337822f5440bf1fd",
"body": "…408)\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 6.0.1 to 7.0.0.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-a\n[…]\nirect:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps)(deps): bump codecov/codecov-action from 6.0.1 to 7.0.0 (#…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-08T21:27:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d0707f44eb2ccd50fe1924304283d5e21e12589e",
"body": null,
"is_bot": false,
"headline": "chore(main): release 0.23.1 (#382)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T21:26:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4b36291df9ee162313fdf399d55fde21cc1a27f4",
"body": "Officially dropping Intel macOS support fleet-wide; keep darwin/arm64 (Apple\nSilicon) only.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "ci(release): drop macOS amd64 (Intel) build target (#413)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T21:14:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "15ab94eaf6afeda3c19be712d6fda546ebfa7b3c",
"body": "Keep the cross-build image fresh (Go 1.26.3 + goreleaser v2.16.0) so its baked\nlibs don't drift from upstream. stem is pure-Go (no libpcap multiarch install)\nso it wasn't hit by the seed#1577 arm64 break, but fleet pins stay aligned.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "ci(release): bump goreleaser-cross to v1.26.3-v2.16.0 (#412)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T20:07:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "06392db9a8cfcb1c42d8e4022c7464052110bbbc",
"body": null,
"is_bot": false,
"headline": "docs: align makefile local build scope",
"author_name": "Kris Armstrong",
"author_login": null,
"committed_at": "2026-06-08T18:19:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9eb862b35738cf8087e7afc071d28829b5280da4",
"body": null,
"is_bot": false,
"headline": "chore: simplify local make system",
"author_name": "Kris Armstrong",
"author_login": null,
"committed_at": "2026-06-08T17:07:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "60678a4e9933202a1a1cd0dcff06a232a66e46ed",
"body": "…#411)\n\nMove the in-tree module path from github.com/krisarmstrong/stem to\ngithub.com/MustardSeedNetworks/stem now that the repository lives under\nthe MustardSeedNetworks org. Purely mechanical: no behavior change.\n\nSwept across all 121 Go files plus the build and release surface:\n- go.mod module di\n[…]\nild, go vet, gofumpt -l (clean), golangci-lint\n(0 issues), schema-drift gate, route-policy gate, and full go test\n(26 packages, 0 failures).\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "chore: rename Go module path to github.com/MustardSeedNetworks/stem (…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T14:50:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1a2239c7dded5978bcb449e0cfca12f76679487e",
"body": "…alidators (#410)\n\n* fix(dataplane): require full payload length in RFC2544/Y.1564 frame validators\n\nThe *_is_valid_response validators guarded on the 64-byte Ethernet minimum\n(RFC2544_MIN_FRAME / Y1564_MIN_FRAME), but the 24-byte payload they vouch for\nsits at frame offset 42 and runs to offset 66.\n[…]\nity finding in packet.c. Suppress that one check-id; the\nwarning/performance/portability bug-class gate on packet.c is unchanged.\n\n---------\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "fix(dataplane): require full payload length in RFC2544/Y.1564 frame v…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T14:32:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b78e407a5499f0398d92c32de03ef0f5ae5a44f7",
"body": "…ens (#409)\n\nThe 16-char rotor-cipher + self-checksum scheme shipped its own generator\n(GenerateLicenseKey) inside every Stem binary, so any copy could mint valid\nProfessional keys. Replace it with offline-verifiable Ed25519-signed tokens\n(signing.go), harmonized with the niac/seed format and the ke\n[…]\n./..., go vet ./..., golangci-lint (0 issues, license +\nconsumers), go test -race ./internal/license/ (ok 101s) + ./internal/api/\n(ok 512s).\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "feat(license): replace forgeable rotor cipher with Ed25519-signed tok…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T13:33:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "da573916430385cf4f6ad88ede7ae60390efc7b0",
"body": "… BackgroundComponents (#407)\n\nIntroduce internal/api/background.go (BackgroundComponents) as the single\nordered Start/Stop seam for Run-scoped long-lived goroutines, beginning with\nthe reflector-stats SSE publisher (runReflectorStatsPublisher). Shutdown now\nstops the publisher and waits for it to e\n[…]\n by construction.\n\nVerified: go build ./..., go vet ./..., golangci-lint (0 issues), full\ninternal/api -race suite (ok 320s), non-api tests.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(api): extract Run-scoped background goroutine lifecycle into…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T04:14:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a6b99ef66b6b8abc3236c0c8b3b7369d192d531d",
"body": "…try (#404)\n\nModule metadata lived in the services Registry while the executor factories\nlived in a separate hardcoded map in internal/api/executors.go — two sources of\ntruth, so adding a module meant editing both (and forgetting one was a silent\nbug). Collapse them: the registry now holds each modu\n[…]\n\nBehavior-preserving: build + vet + golangci(0) + full internal/api suite (232s)\n+ all services tests green. Phase 2 architecture coherence.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(services): collapse dual module->executor map into the regis…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T03:54:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "55ae19ab9578eaadcbd6fc9f8346a25982e48ffd",
"body": "…) (#401)\n\nRoutes are now declared as data and a single register()/registerAll() composes\ntheir per-route policy — rate limit, authentication — in one canonical order, so\na route cannot ship without its policy. This replaces the scattered imperative\nhandleAuthRateLimited/handleRateLimited/mux.Handle\n[…]\ngin=no-auth).\n\nEnforcement by construction (Phase 3). Full internal/api suite green; golangci\ngolden config 0 issues. niac registry follows.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "feat(api): capability registry for declarative route policy (register…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T03:54:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "13ee83c338f1a0465f8bef791f84a474086daee1",
"body": "…shim (#406)\n\ndocs/ARCHITECTURE.md described a phantom architecture: 'testmaster' + 'web'\nsubsystems that don't exist, internal/modules/internal/testmaster dirs (it's\ninternal/services now), Go 1.25.5, and an 8043 HTTP redirector that was removed\n(the server is HTTPS-only). Rewrite to the real layou\n[…]\ninels no caller used (every callsite uses modtypes.ErrX).\nBuild + all services tests green.\n\nPhase 2 architecture coherence (final cleanup).\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(docs): rewrite ARCHITECTURE.md to reality + drop dead error …",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T03:38:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2b431b677f32cb2d58ba49ac5d235bdfecedbe2a",
"body": "The Stem had no Architecture Decision Records (seed has 16, niac has 1). Stand\nup docs/adr/ (matching the sibling repos' format) and capture the decisions made\nduring this hardening pass so the reasoning is durable:\n\n- 0001 Capability registry for route policy (register() + /__capabilities + gate)\n-\n[…]\nnforced by depguard\n- 0004 Single-admin auth model + CORS posture (why no role system; CORS opt-in)\n\nDocs only. Phase 4 (durable decisions).\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "docs(adr): establish docs/adr and record 4 architecture decisions (#405)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T03:27:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "edfc32fda28833a18eeaf11cc3b33fd348090038",
"body": "…irectory (#403)\n\ninternal/services/ declared 'package modules' — a half-finished rename that\nforced every caller to alias the import (modules \"...internal/services\"). Rename\nthe package to 'services' so directory == package name, and drop the aliases at\nthe 4 call sites (handlers_modules, handlers_\n[…]\n' subsystem -> orchestrator).\n\nMechanical; build + vet + lint(0) + services/help/cmd/api-module tests green.\nPhase 2 architecture coherence.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "refactor(services): rename package modules -> services to match its d…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T03:03:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2862e658207cbda1f77d8bd83ff83bad9477d715",
"body": "14 occurrences across internal/help/* and internal/license/activation.go were\ncopy-paste leftovers from the sibling repo, naming the product 'Seed Test Suite'\nin CLI help content, a systemd unit Description, and a package doc comment. The\ncanonical name is 'The Stem' (1692 uses). Comments/help text only; build + help\n+ license tests green.\n\nPhase 2 architecture coherence.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "docs: fix stale 'Seed Test Suite' product name -> 'The Stem' (#402)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-08T02:57:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aa62493bd9e71eabc9a404113e633697da4c8c12",
"body": "…s (#400)\n\nAdds a depguard 'service-layer-inward-only' rule barring the module/service\nlayer (internal/services) from importing the API, auth, or license layers. The\ndirection was already clean by convention; this makes a future upward import\nfail CI instead of silently coupling the layers. Verified\n[…]\nres on a\nprobe import and passes on the current tree (0 issues).\n\nPhase 3 enforcement (architecture). govulncheck/route-policy gates follow.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "chore(lint): enforce inward dependency direction for internal/service…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-07T05:30:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "554fc763e90b0d5b546e9e60ddf85e1c5a551259",
"body": "…E) (#399)\n\nThe CORS middleware reflected ANY RFC1918 private-network origin with\nAllow-Credentials: true — a cross-origin CSRF-bypass vector on a shared or\nhostile LAN (a malicious LAN page could drive credentialed requests with the\nvictim admin's cookies). Default is now localhost + same-origin on\n[…]\nd; switched the\nRFC1918-allowed test to the opt-in path and added\nTestCorsMiddleware_RFC1918BlockedByDefault. Full internal/api suite green.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "fix(api): make RFC1918 CORS reflection opt-in (STEM_CORS_ALLOW_PRIVAT…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-07T05:26:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7d9a4e31b7f2d3c6d60b9899c067da5aa7f803c8",
"body": "POST/GET /api/v1/reflector/{config,stats} were registered with only a rate\nlimiter (no auth) — any client on the network could reconfigure or inspect the\ndataplane. Route them through handleAuthRateLimited so a valid token is\nrequired; update the reflector tests to the authenticated behavior (and in\n[…]\nn govulncheck @latest -> @v1.3.0 per CLAUDE.md (never @latest).\n\nPhase 0 of the stem security hardening. CSRF rekey + CORS allowlist follow.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "fix(api): authenticate reflector config/stats + pin govulncheck (#398)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-07T04:52:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "56117e8457c8b8293466d090bfd8d32001335e4f",
"body": "…#397)\n\n* fix(e2e): role-chip-test_master uses underscore not hyphen\n\nstem CI on the post-#387 main run (#26695591706) failed in\nreflector-platform-guard.spec.ts:46:\n\n await expect(page.getByTestId('role-chip-test-master'))\n .toBeVisible();\n\nThe actual testid emitted by RoleChip.tsx:115 is\n`role\n[…]\neated-then-deleted test user, not a real\nsecret). Inline gitleaks:allow can't suppress historical commits, so allowlist\nthe path.\n\n---------\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "chore: bump Go 1.26.4 (GO-2026-5037/5039) + gitleaks/e2e CI cleanup (…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-06-07T04:26:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "579774ebc81bb196f1da381f9ba7904831d7ccb8",
"body": "…(#389)\n\n* fix(e2e): role-chip-test_master uses underscore not hyphen\n\nstem CI on the post-#387 main run (#26695591706) failed in\nreflector-platform-guard.spec.ts:46:\n\n await expect(page.getByTestId('role-chip-test-master'))\n .toBeVisible();\n\nThe actual testid emitted by RoleChip.tsx:115 is\n`rol\n[…]\ns should\nignore it. Gitleaks honors `gitleaks:allow` in any commit it sees,\nso the historical commit is dispatched-scan-safe too.\n\n---------\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "fix(smoke): annotate STEM_AUTH_PASSWORD assignment as gitleaks:allow …",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-05-30T23:44:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8a3e6833b0c56a7dbd67f841373c061d5a85c5e9",
"body": "stem CI on the post-#387 main run (#26695591706) failed in\nreflector-platform-guard.spec.ts:46:\n\n await expect(page.getByTestId('role-chip-test-master'))\n .toBeVisible();\n\nThe actual testid emitted by RoleChip.tsx:115 is\n`role-chip-${option.id}`, and option.id for the Test Master role\nis `test_m\n[…]\nrministically\non both chromium and webkit.\n\nFix: one-character change, hyphen -> underscore. Brings the spec\nin line with the actual id key.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "fix(e2e): role-chip-test_master uses underscore not hyphen (#388)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-05-30T21:58:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "438b35df1b7a0c9402d863700e0c02ce1b54badd",
"body": "…tch (#387)\n\nBrittleness fix #18 of the i18n-fragile-selector sweep.\n\nEight stem action-button selectors used language-specific regex.\nMigrated to stable testids by adding three new testid surfaces in\nthe UI and migrating five spec files.\n\nUI changes:\n - ConfirmModal.tsx: data-testid=\"confirm-modal\n[…]\n -> reflector-start-button (ReflectorPage.tsx:295 testid)\n\nNet: -8 i18n-fragile button selector sites. stem button-regex\ncount drops by 8.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "test(e2e): action-button testids - confirm modal, help tabs, role-swi…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-05-30T21:38:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ede9f70402acf1e1e3c172ceccfbbb7634d19096",
"body": "…tle (#386)\n\nBrittleness fix #17 of the i18n-fragile-selector sweep.\n\nFive stem per-page specs each had two assertions of the H1 heading\nby language-specific text regex:\n\n await expect(page.getByRole('heading', {\n name: /^benchmark$/i, level: 1\n })).toBeVisible({ timeout: 10000 });\n\nThe heading\n[…]\nPR #791 (8 sites) which mirrored this fix.\n\nNet: -10 i18n-fragile heading-regex sites in stem. stem button-\nregex count drops from 24 to 14.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "test(e2e): migrate 10 stem heading-name regex sites to page-header-ti…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-05-30T21:35:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d4a76a7b8124ebc0cc2fe3ef68a2c4acc3a483cb",
"body": "stem CI on the post-#383 main run failed in E2E because PR #383\nmigrated auth.spec.ts:24 from getByText regex to getByRole(alert),\nbut the stem login form rendered loginError as a plain p tag with\nno role=alert attribute. The selector resolved to zero elements\nand the test failed deterministically o\n[…]\naster) the\nseed-vs-stem shape parity is convention, not enforced — we just\nported the same role=alert annotation independently to each repo.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "fix(ui): add role=alert to stem login error display (#385)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-05-30T20:32:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "dd8ba6a2f0452a9a064d535363f1cd3f5ad1f165",
"body": "…384)\n\nBrittleness fix #4 of the i18n-fragile-selector sweep.\n\nstem/ui/e2e/dashboard.spec.ts:25-28 asserted four StatsCard\nlabels by regex: /packets received/i, /packets sent/i, /current\nrate/i, /uptime/i. Every one of those labels is rendered by\nthe t() helper or hard-coded English that any i18n te\n[…]\n> four getByTestId\nassertions.\n\nNet: -4 i18n-fragile assertion sites in stem dashboard.spec.ts.\nStem's text-regex count drops from 17 to 13.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "test(e2e): stats-* testids on Reflector dashboard, migrate 4 sites (#…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-05-30T20:02:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3a8e99900a7e650ff83d8bacd3874cba99128ea1",
"body": "…383)\n\nMirror of seed PR #1301 — one fragile site in stem/ui/e2e/auth.\nspec.ts:24:\n\n await expect(page.getByText(/invalid|error|failed/i))\n .toBeVisible();\n\nThe /invalid|error|failed/i regex is brittle under es locale and\nunder copy churn. Replaced with getByRole alert. stem's login\nsurface (see PR #378 / S2) has role=alert on the error display.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "test(e2e): migrate stem auth invalid-creds assertion to role=alert (#…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-05-30T19:46:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b91ce7e9d425ab964bfcb57083c6c3ee88e69d9b",
"body": "stem CI on the post-#380 main run failed with strict-mode violations\non every E2E test that calls page.getByTestId('sidebar-help-button'),\npage.getByTestId('sidebar-history-button'), or page.getByTestId(\n'sidebar-settings-button') — each resolving to 2 elements.\n\nRoot cause: SidebarLayout mounts Sid\n[…]\need/niac sidebars have the same\ndual-mount pattern (likely yes for seed since the layout shape is\nshared); fixes there will land separately.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "fix(ui): drop sidebar-*-button testids on the mobile aside copy (#381)",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-05-30T18:47:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bb971eec77c16f376f6762b0a5a52a8f97bb5087",
"body": "…e (#380)\n\nMirror of seed's PR-AC4 cleanup; same shape adapted to stem's\ntestid inventory and the reflector shell.\n\nThe previous 3 tests in stem's smoke.spec.ts asserted next-to-nothing:\n\n - \"should load the application without errors\" filtered out\n 401/429/Failed-to-fetch/favicon noise from the\n[…]\n that break the\nversion-badge can't merge.\n\nTotal surface area down from console-error filtering + viewport\ncycling to 7 tight UI contracts.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "test(e2e): rewrite smoke.spec.ts as a golden-path required-status gat…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-05-30T18:17:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "eccc6cc4900f8193ac7ff7b3ad941da0f32f7f60",
"body": "…h + help-drawer specs (#378)\n\nReplaces the brittle role/text regex selectors in auth.spec.ts (13\nsites) and help-drawer.spec.ts (8 sites) with stable testids. The\nlogin form's getByLabel(/username|password/i) and getByRole('button',\n{ name: /sign in/i }) selectors break under es and under strict mo\n[…]\nton +\n help-drawer + help-drawer-close (the latter two already ship per\n HelpDrawer.tsx after stem PR-C #372).\n\nStem E2E plan S2 of 3.\n\nCo-authored-by: Kris Armstrong <kris.armstrong@icloud.com>",
"is_bot": false,
"headline": "test(e2e): testids on login form + Sidebar help/settings; migrate aut…",
"author_name": "Kris Armstrong",
"author_login": "krisarmstrong",
"committed_at": "2026-05-30T15:27:42Z",
"body_truncated": true,
"is_coding_agent": false
}
],
"releases_count": 28,
"commits_last_year": 507,
"latest_release_at": "2026-07-10T09:57:30Z",
"latest_release_tag": "v0.24.0",
"releases_from_tags": false,
"days_since_last_push": 4,
"active_weeks_last_year": 13,
"days_since_latest_release": 14,
"mean_days_between_releases": 5
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 87,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "github.com/MustardSeedNetworks/stem",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/MustardSeedNetworks/stem",
"is_deprecated": false,
"latest_version": "v0.24.0",
"repository_url": "https://github.com/MustardSeedNetworks/stem",
"versions_count": 104,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-10T01:08:50Z",
"latest_version_yanked": null,
"days_since_latest_publish": 14
}
]
},
"popularity": {
"forks": 0,
"stars": 0,
"watchers": 1,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": {
"days": [],
"complete": true,
"collected": 0,
"total_stars": 0,
"collected_at": null
},
"open_issues_and_prs": 35
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"ui/tsconfig.json"
],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 116715,
"source_files_sampled": 500,
"oversized_source_files": 4,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"go.mod",
"package.json",
"ui/package.json"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "brace-expansion",
"direct": false,
"version": "5.0.6",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3jxr-9vmj-r5cp"
],
"fixed_version": "5.0.7",
"advisory_count": 1,
"oldest_advisory_days": 3
},
{
"name": "fast-uri",
"direct": false,
"version": "3.1.3",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-v2hh-gcrm-f6hx"
],
"fixed_version": "4.1.1",
"advisory_count": 1,
"oldest_advisory_days": 2
},
{
"name": "js-yaml",
"direct": false,
"version": "4.2.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-52cp-r559-cp3m"
],
"fixed_version": "4.3.0",
"advisory_count": 1,
"oldest_advisory_days": 3
},
{
"name": "postcss",
"direct": false,
"version": "8.5.16",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-r28c-9q8g-f849"
],
"fixed_version": "8.5.18",
"advisory_count": 1,
"oldest_advisory_days": 0
},
{
"name": "react-router",
"direct": false,
"version": "7.18.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": null,
"advisory_ids": [
"GHSA-qwww-vcr4-c8h2"
],
"fixed_version": "8.3.0",
"advisory_count": 1,
"oldest_advisory_days": 0
},
{
"name": "golang.org/x/crypto",
"direct": true,
"version": "v0.53.0",
"severity": "unknown",
"ecosystem": "go",
"cvss_score": null,
"advisory_ids": [
"GO-2026-5932"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 16
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"high": 5,
"unknown": 1
},
"advisory_count": 6,
"affected_count": 6,
"assessed_count": 610,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 1
},
"ecosystems": [
"go",
"npm"
],
"dependencies": [
{
"name": "github.com/MustardSeedNetworks/foundation",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.2.0"
},
{
"name": "github.com/gdamore/tcell/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.13.10"
},
{
"name": "github.com/go-playground/validator/v10",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v10.30.3"
},
{
"name": "github.com/go-webauthn/webauthn",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.17.4"
},
{
"name": "github.com/golang-jwt/jwt/v5",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v5.3.1"
},
{
"name": "github.com/google/uuid",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.6.0"
},
{
"name": "github.com/invopop/jsonschema",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.14.0"
},
{
"name": "github.com/pquerna/otp",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.5.0"
},
{
"name": "github.com/prometheus/client_golang",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.23.2"
},
{
"name": "github.com/prometheus/client_model",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.6.2"
},
{
"name": "github.com/rivo/tview",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.42.0"
},
{
"name": "github.com/trustelem/zxcvbn",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.1"
},
{
"name": "golang.org/x/crypto",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.53.0"
},
{
"name": "golang.org/x/oauth2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.36.0"
},
{
"name": "golang.org/x/time",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.15.0"
},
{
"name": "gopkg.in/natefinch/lumberjack.v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.2.1"
},
{
"name": "gopkg.in/yaml.v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.0.1"
},
{
"name": "modernc.org/sqlite",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.53.0"
},
{
"name": "@fontsource-variable/inter",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "5.2.8"
},
{
"name": "@fontsource-variable/jetbrains-mono",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "5.2.8"
},
{
"name": "@hookform/resolvers",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "5.4.0"
},
{
"name": "@tailwindcss/postcss",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "4.3.2"
},
{
"name": "@tanstack/react-query",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "5.101.2"
},
{
"name": "cmdk",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "1.1.1"
},
{
"name": "i18next",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "26.3.4"
},
{
"name": "i18next-browser-languagedetector",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "8.2.1"
},
{
"name": "immer",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "11.1.11"
},
{
"name": "lucide-react",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "1.23.0"
},
{
"name": "react",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "19.2.7"
},
{
"name": "react-dom",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "19.2.7"
},
{
"name": "react-hook-form",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "7.81.0"
},
{
"name": "react-i18next",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "17.0.8"
},
{
"name": "react-router-dom",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "7.18.1"
},
{
"name": "tailwind-merge",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "3.6.0"
},
{
"name": "tailwindcss",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "4.3.2"
},
{
"name": "valibot",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "1.4.2"
},
{
"name": "zustand",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "5.0.14"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "github.com/gdamore/tcell/v2",
"direct": true,
"version": "v2.13.10",
"ecosystem": "go"
},
{
"name": "github.com/go-playground/validator/v10",
"direct": true,
"version": "v10.30.3",
"ecosystem": "go"
},
{
"name": "github.com/go-webauthn/webauthn",
"direct": true,
"version": "v0.17.4",
"ecosystem": "go"
},
{
"name": "github.com/golang-jwt/jwt/v5",
"direct": true,
"version": "v5.3.1",
"ecosystem": "go"
},
{
"name": "github.com/google/uuid",
"direct": true,
"version": "v1.6.0",
"ecosystem": "go"
},
{
"name": "github.com/invopop/jsonschema",
"direct": true,
"version": "v0.14.0",
"ecosystem": "go"
},
{
"name": "github.com/mustardseednetworks/foundation",
"direct": true,
"version": "v0.2.0",
"ecosystem": "go"
},
{
"name": "github.com/pquerna/otp",
"direct": true,
"version": "v1.5.0",
"ecosystem": "go"
},
{
"name": "github.com/prometheus/client_golang",
"direct": true,
"version": "v1.23.2",
"ecosystem": "go"
},
{
"name": "github.com/prometheus/client_model",
"direct": true,
"version": "v0.6.2",
"ecosystem": "go"
},
{
"name": "github.com/rivo/tview",
"direct": true,
"version": "v0.42.0",
"ecosystem": "go"
},
{
"name": "github.com/trustelem/zxcvbn",
"direct": true,
"version": "v1.0.1",
"ecosystem": "go"
},
{
"name": "golang.org/x/crypto",
"direct": true,
"version": "v0.53.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/oauth2",
"direct": true,
"version": "v0.36.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/time",
"direct": true,
"version": "v0.15.0",
"ecosystem": "go"
},
{
"name": "gopkg.in/natefinch/lumberjack.v2",
"direct": true,
"version": "v2.2.1",
"ecosystem": "go"
},
{
"name": "gopkg.in/yaml.v3",
"direct": true,
"version": "v3.0.1",
"ecosystem": "go"
},
{
"name": "modernc.org/sqlite",
"direct": true,
"version": "v1.53.0",
"ecosystem": "go"
},
{
"name": "@fontsource-variable/inter",
"direct": true,
"version": "5.2.8",
"ecosystem": "npm"
},
{
"name": "@fontsource-variable/jetbrains-mono",
"direct": true,
"version": "5.2.8",
"ecosystem": "npm"
},
{
"name": "@hookform/resolvers",
"direct": true,
"version": "5.4.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/postcss",
"direct": true,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tanstack/react-query",
"direct": true,
"version": "5.101.2",
"ecosystem": "npm"
},
{
"name": "cmdk",
"direct": true,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "i18next",
"direct": true,
"version": "26.3.4",
"ecosystem": "npm"
},
{
"name": "i18next-browser-languagedetector",
"direct": true,
"version": "8.2.1",
"ecosystem": "npm"
},
{
"name": "immer",
"direct": true,
"version": "11.1.11",
"ecosystem": "npm"
},
{
"name": "lucide-react",
"direct": true,
"version": "1.23.0",
"ecosystem": "npm"
},
{
"name": "react",
"direct": true,
"version": "19.2.7",
"ecosystem": "npm"
},
{
"name": "react-dom",
"direct": true,
"version": "19.2.7",
"ecosystem": "npm"
},
{
"name": "react-hook-form",
"direct": true,
"version": "7.81.0",
"ecosystem": "npm"
},
{
"name": "react-i18next",
"direct": true,
"version": "17.0.8",
"ecosystem": "npm"
},
{
"name": "react-router-dom",
"direct": true,
"version": "7.18.1",
"ecosystem": "npm"
},
{
"name": "tailwind-merge",
"direct": true,
"version": "3.6.0",
"ecosystem": "npm"
},
{
"name": "tailwindcss",
"direct": true,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "valibot",
"direct": true,
"version": "1.4.2",
"ecosystem": "npm"
},
{
"name": "zustand",
"direct": true,
"version": "5.0.14",
"ecosystem": "npm"
},
{
"name": "cloud.google.com/go/compute/metadata",
"direct": false,
"version": "v0.9.0",
"ecosystem": "go"
},
{
"name": "github.com/bahlo/generic-list-go",
"direct": false,
"version": "v0.2.0",
"ecosystem": "go"
},
{
"name": "github.com/beorn7/perks",
"direct": false,
"version": "v1.0.1",
"ecosystem": "go"
},
{
"name": "github.com/boombuler/barcode",
"direct": false,
"version": "v1.1.0",
"ecosystem": "go"
},
{
"name": "github.com/buger/jsonparser",
"direct": false,
"version": "v1.2.0",
"ecosystem": "go"
},
{
"name": "github.com/cespare/xxhash/v2",
"direct": false,
"version": "v2.3.0",
"ecosystem": "go"
},
{
"name": "github.com/dlclark/regexp2",
"direct": false,
"version": "v1.12.0",
"ecosystem": "go"
},
{
"name": "github.com/dustin/go-humanize",
"direct": false,
"version": "v1.0.1",
"ecosystem": "go"
},
{
"name": "github.com/fxamacker/cbor/v2",
"direct": false,
"version": "v2.9.2",
"ecosystem": "go"
},
{
"name": "github.com/gabriel-vasile/mimetype",
"direct": false,
"version": "v1.4.13",
"ecosystem": "go"
},
{
"name": "github.com/gdamore/encoding",
"direct": false,
"version": "v1.0.1",
"ecosystem": "go"
},
{
"name": "github.com/go-playground/locales",
"direct": false,
"version": "v0.14.1",
"ecosystem": "go"
},
{
"name": "github.com/go-playground/universal-translator",
"direct": false,
"version": "v0.18.1",
"ecosystem": "go"
},
{
"name": "github.com/go-viper/mapstructure/v2",
"direct": false,
"version": "v2.5.0",
"ecosystem": "go"
},
{
"name": "github.com/go-webauthn/x",
"direct": false,
"version": "v0.2.6",
"ecosystem": "go"
},
{
"name": "github.com/google/go-tpm",
"direct": false,
"version": "v0.9.8",
"ecosystem": "go"
},
{
"name": "github.com/google/go-tpm-tools",
"direct": false,
"version": "v0.4.9",
"ecosystem": "go"
},
{
"name": "github.com/google/pprof",
"direct": false,
"version": "v0.0.0-20260604005048-7023385849c0",
"ecosystem": "go"
},
{
"name": "github.com/kr/text",
"direct": false,
"version": "v0.2.0",
"ecosystem": "go"
},
{
"name": "github.com/leodido/go-urn",
"direct": false,
"version": "v1.4.0",
"ecosystem": "go"
},
{
"name": "github.com/lucasb-eyer/go-colorful",
"direct": false,
"version": "v1.4.0",
"ecosystem": "go"
},
{
"name": "github.com/mattn/go-isatty",
"direct": false,
"version": "v0.0.22",
"ecosystem": "go"
},
{
"name": "github.com/munnerz/goautoneg",
"direct": false,
"version": "v0.0.0-20191010083416-a7dc8b61c822",
"ecosystem": "go"
},
{
"name": "github.com/ncruces/go-strftime",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/pb33f/ordered-map/v2",
"direct": false,
"version": "v2.3.1",
"ecosystem": "go"
},
{
"name": "github.com/philhofer/fwd",
"direct": false,
"version": "v1.2.0",
"ecosystem": "go"
},
{
"name": "github.com/prometheus/common",
"direct": false,
"version": "v0.69.0",
"ecosystem": "go"
},
{
"name": "github.com/prometheus/procfs",
"direct": false,
"version": "v0.21.1",
"ecosystem": "go"
},
{
"name": "github.com/remyoudompheng/bigfft",
"direct": false,
"version": "v0.0.0-20230129092748-24d4a6f8daec",
"ecosystem": "go"
},
{
"name": "github.com/rivo/uniseg",
"direct": false,
"version": "v0.4.7",
"ecosystem": "go"
},
{
"name": "github.com/rogpeppe/go-internal",
"direct": false,
"version": "v1.15.0",
"ecosystem": "go"
},
{
"name": "github.com/test-go/testify",
"direct": false,
"version": "v1.1.4",
"ecosystem": "go"
},
{
"name": "github.com/tinylib/msgp",
"direct": false,
"version": "v1.6.4",
"ecosystem": "go"
},
{
"name": "github.com/x448/float16",
"direct": false,
"version": "v0.8.4",
"ecosystem": "go"
},
{
"name": "go.yaml.in/yaml/v4",
"direct": false,
"version": "v4.0.0-rc.6",
"ecosystem": "go"
},
{
"name": "golang.org/x/net",
"direct": false,
"version": "v0.56.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/sys",
"direct": false,
"version": "v0.46.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/term",
"direct": false,
"version": "v0.44.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/text",
"direct": false,
"version": "v0.39.0",
"ecosystem": "go"
},
{
"name": "google.golang.org/protobuf",
"direct": false,
"version": "v1.36.11",
"ecosystem": "go"
},
{
"name": "modernc.org/ccgo/v4",
"direct": false,
"version": "v4.34.6",
"ecosystem": "go"
},
{
"name": "modernc.org/gc/v3",
"direct": false,
"version": "v3.1.5",
"ecosystem": "go"
},
{
"name": "modernc.org/libc",
"direct": false,
"version": "v1.73.5",
"ecosystem": "go"
},
{
"name": "modernc.org/mathutil",
"direct": false,
"version": "v1.7.1",
"ecosystem": "go"
},
{
"name": "modernc.org/memory",
"direct": false,
"version": "v1.11.0",
"ecosystem": "go"
},
{
"name": "@adobe/css-tools",
"direct": false,
"version": "4.4.4",
"ecosystem": "npm"
},
{
"name": "@alloc/quick-lru",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "@apidevtools/json-schema-ref-parser",
"direct": false,
"version": "11.9.3",
"ecosystem": "npm"
},
{
"name": "@asamuzakjp/css-color",
"direct": false,
"version": "5.1.11",
"ecosystem": "npm"
},
{
"name": "@asamuzakjp/dom-selector",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "@asamuzakjp/generational-cache",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@asamuzakjp/nwsapi",
"direct": false,
"version": "2.3.9",
"ecosystem": "npm"
},
{
"name": "@babel/code-frame",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/compat-data",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/core",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/generator",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-compilation-targets",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-globals",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-imports",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-transforms",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-string-parser",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-option",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helpers",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/parser",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/runtime",
"direct": false,
"version": "7.29.2",
"ecosystem": "npm"
},
{
"name": "@babel/template",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/traverse",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/types",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@bcoe/v8-coverage",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "@biomejs/biome",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "@biomejs/cli-darwin-arm64",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "@biomejs/cli-darwin-x64",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "@biomejs/cli-linux-arm64",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "@biomejs/cli-linux-arm64-musl",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "@biomejs/cli-linux-x64",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "@biomejs/cli-linux-x64-musl",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "@biomejs/cli-win32-arm64",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "@biomejs/cli-win32-x64",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "@bramus/specificity",
"direct": false,
"version": "2.4.2",
"ecosystem": "npm"
},
{
"name": "@chromatic-com/storybook",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "@commitlint/cli",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/config-conventional",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/config-validator",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/ensure",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/execute-rule",
"direct": false,
"version": "21.0.1",
"ecosystem": "npm"
},
{
"name": "@commitlint/format",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/is-ignored",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/lint",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/load",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/message",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/parse",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/read",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/resolve-extends",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/rules",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/to-lines",
"direct": false,
"version": "21.0.1",
"ecosystem": "npm"
},
{
"name": "@commitlint/top-level",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/types",
"direct": false,
"version": "21.2.0",
"ecosystem": "npm"
},
{
"name": "@conventional-changelog/git-client",
"direct": false,
"version": "2.7.0",
"ecosystem": "npm"
},
{
"name": "@conventional-changelog/template",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "@csstools/color-helpers",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "@csstools/css-calc",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "@csstools/css-color-parser",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "@csstools/css-parser-algorithms",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "@csstools/css-syntax-patches-for-csstree",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@csstools/css-tokenizer",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "@emnapi/core",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "@emnapi/core",
"direct": false,
"version": "1.9.2",
"ecosystem": "npm"
},
{
"name": "@emnapi/runtime",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "@emnapi/runtime",
"direct": false,
"version": "1.9.2",
"ecosystem": "npm"
},
{
"name": "@emnapi/wasi-threads",
"direct": false,
"version": "1.2.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": "@exodus/bytes",
"direct": false,
"version": "1.15.0",
"ecosystem": "npm"
},
{
"name": "@joshwooding/vite-plugin-react-docgen-typescript",
"direct": false,
"version": "0.7.0",
"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": "@jsdevtools/ono",
"direct": false,
"version": "7.1.3",
"ecosystem": "npm"
},
{
"name": "@mdx-js/react",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "@napi-rs/wasm-runtime",
"direct": false,
"version": "1.1.6",
"ecosystem": "npm"
},
{
"name": "@neoconfetti/react",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-android-arm-eabi",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-android-arm64",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-darwin-arm64",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-darwin-x64",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-freebsd-x64",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-linux-arm-gnueabihf",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-linux-arm-musleabihf",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-linux-arm64-gnu",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-linux-arm64-musl",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-linux-ppc64-gnu",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-linux-riscv64-gnu",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-linux-riscv64-musl",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-linux-s390x-gnu",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-linux-x64-gnu",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-linux-x64-musl",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-openharmony-arm64",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-wasm32-wasi",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-win32-arm64-msvc",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-win32-ia32-msvc",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-parser/binding-win32-x64-msvc",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-project/types",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "@oxc-project/types",
"direct": false,
"version": "0.138.0",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-android-arm-eabi",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-android-arm64",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-darwin-arm64",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-darwin-x64",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-freebsd-x64",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-linux-arm-gnueabihf",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-linux-arm-musleabihf",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-linux-arm64-gnu",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-linux-arm64-musl",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-linux-ppc64-gnu",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-linux-riscv64-gnu",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-linux-riscv64-musl",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-linux-s390x-gnu",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-linux-x64-gnu",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-linux-x64-musl",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-openharmony-arm64",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-wasm32-wasi",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-win32-arm64-msvc",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-win32-ia32-msvc",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@oxc-resolver/binding-win32-x64-msvc",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "@playwright/test",
"direct": false,
"version": "1.61.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/primitive",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-compose-refs",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-context",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-dialog",
"direct": false,
"version": "1.1.15",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-dismissable-layer",
"direct": false,
"version": "1.1.11",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-focus-guards",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-focus-scope",
"direct": false,
"version": "1.1.7",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-id",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-portal",
"direct": false,
"version": "1.1.9",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-presence",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-primitive",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-primitive",
"direct": false,
"version": "2.1.4",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-slot",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-slot",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-callback-ref",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-controllable-state",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-effect-event",
"direct": false,
"version": "0.0.2",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-escape-keydown",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-layout-effect",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-android-arm64",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-arm64",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-x64",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-freebsd-x64",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm-gnueabihf",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-gnu",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-musl",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-ppc64-gnu",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-s390x-gnu",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-gnu",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-musl",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-openharmony-arm64",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-wasm32-wasi",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-arm64-msvc",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-x64-msvc",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@rolldown/pluginutils",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@rollup/pluginutils",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "@simple-libs/child-process-utils",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "@simple-libs/stream-utils",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "@simple-libs/stream-utils",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "@standard-schema/spec",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@standard-schema/utils",
"direct": false,
"version": "0.3.0",
"ecosystem": "npm"
},
{
"name": "@storybook/addon-a11y",
"direct": false,
"version": "10.4.6",
"ecosystem": "npm"
},
{
"name": "@storybook/addon-docs",
"direct": false,
"version": "10.4.6",
"ecosystem": "npm"
},
{
"name": "@storybook/addon-onboarding",
"direct": false,
"version": "10.4.6",
"ecosystem": "npm"
},
{
"name": "@storybook/addon-vitest",
"direct": false,
"version": "10.4.6",
"ecosystem": "npm"
},
{
"name": "@storybook/builder-vite",
"direct": false,
"version": "10.4.6",
"ecosystem": "npm"
},
{
"name": "@storybook/csf-plugin",
"direct": false,
"version": "10.4.6",
"ecosystem": "npm"
},
{
"name": "@storybook/global",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "@storybook/icons",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "@storybook/react",
"direct": false,
"version": "10.4.6",
"ecosystem": "npm"
},
{
"name": "@storybook/react-dom-shim",
"direct": false,
"version": "10.4.6",
"ecosystem": "npm"
},
{
"name": "@storybook/react-vite",
"direct": false,
"version": "10.4.6",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/node",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-android-arm64",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-darwin-arm64",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-darwin-x64",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-freebsd-x64",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm-gnueabihf",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm64-gnu",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm64-musl",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-x64-gnu",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-x64-musl",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-wasm32-wasi",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-win32-arm64-msvc",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-win32-x64-msvc",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tanstack/query-core",
"direct": false,
"version": "5.101.2",
"ecosystem": "npm"
},
{
"name": "@testing-library/dom",
"direct": false,
"version": "10.4.1",
"ecosystem": "npm"
},
{
"name": "@testing-library/jest-dom",
"direct": false,
"version": "6.9.1",
"ecosystem": "npm"
},
{
"name": "@testing-library/react",
"direct": false,
"version": "16.3.2",
"ecosystem": "npm"
},
{
"name": "@testing-library/user-event",
"direct": false,
"version": "14.6.1",
"ecosystem": "npm"
},
{
"name": "@tybys/wasm-util",
"direct": false,
"version": "0.10.3",
"ecosystem": "npm"
},
{
"name": "@types/aria-query",
"direct": false,
"version": "5.0.4",
"ecosystem": "npm"
},
{
"name": "@types/babel__core",
"direct": false,
"version": "7.20.5",
"ecosystem": "npm"
},
{
"name": "@types/babel__generator",
"direct": false,
"version": "7.27.0",
"ecosystem": "npm"
},
{
"name": "@types/babel__template",
"direct": false,
"version": "7.4.4",
"ecosystem": "npm"
},
{
"name": "@types/babel__traverse",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "@types/chai",
"direct": false,
"version": "5.2.3",
"ecosystem": "npm"
},
{
"name": "@types/deep-eql",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "@types/doctrine",
"direct": false,
"version": "0.0.9",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "@types/json-schema",
"direct": false,
"version": "7.0.15",
"ecosystem": "npm"
},
{
"name": "@types/lodash",
"direct": false,
"version": "4.17.24",
"ecosystem": "npm"
},
{
"name": "@types/mdx",
"direct": false,
"version": "2.0.13",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "26.1.0",
"ecosystem": "npm"
},
{
"name": "@types/react",
"direct": false,
"version": "19.2.17",
"ecosystem": "npm"
},
{
"name": "@types/react-dom",
"direct": false,
"version": "19.2.3",
"ecosystem": "npm"
},
{
"name": "@types/resolve",
"direct": false,
"version": "1.20.6",
"ecosystem": "npm"
},
{
"name": "@typescript/native-preview",
"direct": false,
"version": "7.0.0-dev.20260706.1",
"ecosystem": "npm"
},
{
"name": "@typescript/native-preview-darwin-arm64",
"direct": false,
"version": "7.0.0-dev.20260706.1",
"ecosystem": "npm"
},
{
"name": "@typescript/native-preview-darwin-x64",
"direct": false,
"version": "7.0.0-dev.20260706.1",
"ecosystem": "npm"
},
{
"name": "@typescript/native-preview-linux-arm",
"direct": false,
"version": "7.0.0-dev.20260706.1",
"ecosystem": "npm"
},
{
"name": "@typescript/native-preview-linux-arm64",
"direct": false,
"version": "7.0.0-dev.20260706.1",
"ecosystem": "npm"
},
{
"name": "@typescript/native-preview-linux-x64",
"direct": false,
"version": "7.0.0-dev.20260706.1",
"ecosystem": "npm"
},
{
"name": "@typescript/native-preview-win32-arm64",
"direct": false,
"version": "7.0.0-dev.20260706.1",
"ecosystem": "npm"
},
{
"name": "@typescript/native-preview-win32-x64",
"direct": false,
"version": "7.0.0-dev.20260706.1",
"ecosystem": "npm"
},
{
"name": "@vitejs/plugin-react",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "@vitest/coverage-v8",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/expect",
"direct": false,
"version": "3.2.4",
"ecosystem": "npm"
},
{
"name": "@vitest/expect",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/mocker",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/pretty-format",
"direct": false,
"version": "3.2.4",
"ecosystem": "npm"
},
{
"name": "@vitest/pretty-format",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/runner",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/snapshot",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/spy",
"direct": false,
"version": "3.2.4",
"ecosystem": "npm"
},
{
"name": "@vitest/spy",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/utils",
"direct": false,
"version": "3.2.4",
"ecosystem": "npm"
},
{
"name": "@vitest/utils",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@webcontainer/env",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.17.0",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "8.20.0",
"ecosystem": "npm"
},
{
"name": "ansi-escapes",
"direct": false,
"version": "7.3.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": "5.2.0",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "6.2.3",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "aria-hidden",
"direct": false,
"version": "1.2.6",
"ecosystem": "npm"
},
{
"name": "aria-query",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "assertion-error",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "ast-types",
"direct": false,
"version": "0.16.1",
"ecosystem": "npm"
},
{
"name": "ast-v8-to-istanbul",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "axe-core",
"direct": false,
"version": "4.12.1",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "baseline-browser-mapping",
"direct": false,
"version": "2.10.42",
"ecosystem": "npm"
},
{
"name": "bidi-js",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "5.0.6",
"ecosystem": "npm"
},
{
"name": "browserslist",
"direct": false,
"version": "4.28.5",
"ecosystem": "npm"
},
{
"name": "bundle-name",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "callsites",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "caniuse-lite",
"direct": false,
"version": "1.0.30001802",
"ecosystem": "npm"
},
{
"name": "chai",
"direct": false,
"version": "5.3.3",
"ecosystem": "npm"
},
{
"name": "chai",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "check-error",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "chromatic",
"direct": false,
"version": "16.10.0",
"ecosystem": "npm"
},
{
"name": "cli-cursor",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "cli-truncate",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "cliui",
"direct": false,
"version": "9.0.1",
"ecosystem": "npm"
},
{
"name": "conventional-changelog-angular",
"direct": false,
"version": "9.2.1",
"ecosystem": "npm"
},
{
"name": "conventional-changelog-conventionalcommits",
"direct": false,
"version": "10.2.1",
"ecosystem": "npm"
},
{
"name": "conventional-commits-parser",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "convert-source-map",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "cookie",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "cosmiconfig",
"direct": false,
"version": "9.0.2",
"ecosystem": "npm"
},
{
"name": "cosmiconfig-typescript-loader",
"direct": false,
"version": "6.3.0",
"ecosystem": "npm"
},
{
"name": "css-tree",
"direct": false,
"version": "3.2.1",
"ecosystem": "npm"
},
{
"name": "css.escape",
"direct": false,
"version": "1.5.1",
"ecosystem": "npm"
},
{
"name": "csstype",
"direct": false,
"version": "3.2.3",
"ecosystem": "npm"
},
{
"name": "data-urls",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "decimal.js",
"direct": false,
"version": "10.6.0",
"ecosystem": "npm"
},
{
"name": "deep-eql",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "default-browser",
"direct": false,
"version": "5.4.0",
"ecosystem": "npm"
},
{
"name": "default-browser-id",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "define-lazy-prop",
"direct": false,
"version": "3.0.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": "detect-node-es",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "doctrine",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "dom-accessibility-api",
"direct": false,
"version": "0.5.16",
"ecosystem": "npm"
},
{
"name": "dom-accessibility-api",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "electron-to-chromium",
"direct": false,
"version": "1.5.387",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "10.6.0",
"ecosystem": "npm"
},
{
"name": "empathic",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "enhanced-resolve",
"direct": false,
"version": "5.21.6",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "env-paths",
"direct": false,
"version": "2.2.1",
"ecosystem": "npm"
},
{
"name": "environment",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "error-ex",
"direct": false,
"version": "1.3.4",
"ecosystem": "npm"
},
{
"name": "es-errors",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "es-module-lexer",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "es-toolkit",
"direct": false,
"version": "1.49.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": "estree-walker",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "esutils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "eventemitter3",
"direct": false,
"version": "5.0.4",
"ecosystem": "npm"
},
{
"name": "expect-type",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "fast-deep-equal",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "fast-uri",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "fdir",
"direct": false,
"version": "6.5.0",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.2",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "function-bind",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "gensync",
"direct": false,
"version": "1.0.0-beta.2",
"ecosystem": "npm"
},
{
"name": "get-caller-file",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "get-east-asian-width",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "get-east-asian-width",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "get-nonce",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "git-raw-commits",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "13.0.6",
"ecosystem": "npm"
},
{
"name": "global-directory",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "hasown",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "html-encoding-sniffer",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "html-escaper",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "html-parse-stringify",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "husky",
"direct": false,
"version": "9.1.7",
"ecosystem": "npm"
},
{
"name": "import-fresh",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "indent-string",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "ini",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "is-arrayish",
"direct": false,
"version": "0.2.1",
"ecosystem": "npm"
},
{
"name": "is-core-module",
"direct": false,
"version": "2.16.2",
"ecosystem": "npm"
},
{
"name": "is-docker",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-extglob",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "is-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-in-ssh",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-inside-container",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-plain-obj",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "is-potential-custom-element-name",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "is-wsl",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-coverage",
"direct": false,
"version": "3.2.2",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-report",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "istanbul-reports",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "jiti",
"direct": false,
"version": "2.6.1",
"ecosystem": "npm"
},
{
"name": "jiti",
"direct": false,
"version": "2.7.0",
"ecosystem": "npm"
},
{
"name": "js-tokens",
"direct": false,
"version": "10.0.0",
"ecosystem": "npm"
},
{
"name": "js-tokens",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "jsdom",
"direct": false,
"version": "29.1.1",
"ecosystem": "npm"
},
{
"name": "jsesc",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "json-parse-even-better-errors",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "json-schema-to-typescript",
"direct": false,
"version": "15.0.4",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "2.2.3",
"ecosystem": "npm"
},
{
"name": "jsonfile",
"direct": false,
"version": "6.2.0",
"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": "lines-and-columns",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "lint-staged",
"direct": false,
"version": "17.0.8",
"ecosystem": "npm"
},
{
"name": "listr2",
"direct": false,
"version": "10.2.1",
"ecosystem": "npm"
},
{
"name": "lodash",
"direct": false,
"version": "4.18.1",
"ecosystem": "npm"
},
{
"name": "log-update",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "loupe",
"direct": false,
"version": "3.2.1",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "11.3.6",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "lz-string",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "magic-string",
"direct": false,
"version": "0.30.21",
"ecosystem": "npm"
},
{
"name": "magicast",
"direct": false,
"version": "0.5.2",
"ecosystem": "npm"
},
{
"name": "make-dir",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "mdn-data",
"direct": false,
"version": "2.27.1",
"ecosystem": "npm"
},
{
"name": "meow",
"direct": false,
"version": "13.2.0",
"ecosystem": "npm"
},
{
"name": "meow",
"direct": false,
"version": "14.1.0",
"ecosystem": "npm"
},
{
"name": "mimic-function",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "min-indent",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "10.2.5",
"ecosystem": "npm"
},
{
"name": "minimist",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "minipass",
"direct": false,
"version": "7.1.3",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "3.3.12",
"ecosystem": "npm"
},
{
"name": "node-releases",
"direct": false,
"version": "2.0.50",
"ecosystem": "npm"
},
{
"name": "obug",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "onetime",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "open",
"direct": false,
"version": "10.2.0",
"ecosystem": "npm"
},
{
"name": "open",
"direct": false,
"version": "11.0.0",
"ecosystem": "npm"
},
{
"name": "oxc-parser",
"direct": false,
"version": "0.127.0",
"ecosystem": "npm"
},
{
"name": "oxc-resolver",
"direct": false,
"version": "11.19.1",
"ecosystem": "npm"
},
{
"name": "parent-module",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "parse-json",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "parse5",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "path-parse",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "path-scurry",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "pathe",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "pathval",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "playwright",
"direct": false,
"version": "1.61.1",
"ecosystem": "npm"
},
{
"name": "playwright-core",
"direct": false,
"version": "1.61.1",
"ecosystem": "npm"
},
{
"name": "postcss",
"direct": false,
"version": "8.5.16",
"ecosystem": "npm"
},
{
"name": "powershell-utils",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "prettier",
"direct": false,
"version": "3.8.3",
"ecosystem": "npm"
},
{
"name": "pretty-format",
"direct": false,
"version": "27.5.1",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "react-docgen",
"direct": false,
"version": "8.0.3",
"ecosystem": "npm"
},
{
"name": "react-docgen-typescript",
"direct": false,
"version": "2.4.0",
"ecosystem": "npm"
},
{
"name": "react-is",
"direct": false,
"version": "17.0.2",
"ecosystem": "npm"
},
{
"name": "react-remove-scroll",
"direct": false,
"version": "2.7.2",
"ecosystem": "npm"
},
{
"name": "react-remove-scroll-bar",
"direct": false,
"version": "2.3.8",
"ecosystem": "npm"
},
{
"name": "react-router",
"direct": false,
"version": "7.18.1",
"ecosystem": "npm"
},
{
"name": "react-style-singleton",
"direct": false,
"version": "2.2.3",
"ecosystem": "npm"
},
{
"name": "recast",
"direct": false,
"version": "0.23.11",
"ecosystem": "npm"
},
{
"name": "redent",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "require-from-string",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "resolve",
"direct": false,
"version": "1.22.12",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "restore-cursor",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "rfdc",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "rolldown",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "rollup-plugin-visualizer",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "run-applescript",
"direct": false,
"version": "7.1.0",
"ecosystem": "npm"
},
{
"name": "saxes",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "scheduler",
"direct": false,
"version": "0.27.0",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "6.3.1",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.7.3",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.8.0",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.8.5",
"ecosystem": "npm"
},
{
"name": "set-cookie-parser",
"direct": false,
"version": "2.7.2",
"ecosystem": "npm"
},
{
"name": "siginfo",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "signal-exit",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "slice-ansi",
"direct": false,
"version": "7.1.2",
"ecosystem": "npm"
},
{
"name": "slice-ansi",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.7.6",
"ecosystem": "npm"
},
{
"name": "source-map-js",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "stackback",
"direct": false,
"version": "0.0.2",
"ecosystem": "npm"
},
{
"name": "std-env",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "storybook",
"direct": false,
"version": "10.4.6",
"ecosystem": "npm"
},
{
"name": "string-argv",
"direct": false,
"version": "0.3.2",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "8.2.1",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "7.1.2",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "strip-bom",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "strip-indent",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "strip-indent",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "supports-preserve-symlinks-flag",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "symbol-tree",
"direct": false,
"version": "3.2.4",
"ecosystem": "npm"
},
{
"name": "tapable",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "tiny-invariant",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "tinybench",
"direct": false,
"version": "2.9.0",
"ecosystem": "npm"
},
{
"name": "tinyexec",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "tinyexec",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "tinyglobby",
"direct": false,
"version": "0.2.17",
"ecosystem": "npm"
},
{
"name": "tinyrainbow",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "tinyrainbow",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "tinyspy",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "tldts",
"direct": false,
"version": "7.0.30",
"ecosystem": "npm"
},
{
"name": "tldts-core",
"direct": false,
"version": "7.0.30",
"ecosystem": "npm"
},
{
"name": "tough-cookie",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "tr46",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "ts-dedent",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "tsconfig-paths",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "undici",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "8.3.0",
"ecosystem": "npm"
},
{
"name": "universalify",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "unplugin",
"direct": false,
"version": "2.3.11",
"ecosystem": "npm"
},
{
"name": "update-browserslist-db",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "use-callback-ref",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "use-sidecar",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "use-sync-external-store",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "vite",
"direct": false,
"version": "8.1.3",
"ecosystem": "npm"
},
{
"name": "vitest",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "void-elements",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "w3c-xmlserializer",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "webidl-conversions",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "webpack-virtual-modules",
"direct": false,
"version": "0.6.2",
"ecosystem": "npm"
},
{
"name": "whatwg-mimetype",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "whatwg-url",
"direct": false,
"version": "16.0.1",
"ecosystem": "npm"
},
{
"name": "why-is-node-running",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "10.0.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "9.0.2",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": false,
"version": "8.21.0",
"ecosystem": "npm"
},
{
"name": "wsl-utils",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "wsl-utils",
"direct": false,
"version": "0.3.1",
"ecosystem": "npm"
},
{
"name": "xml-name-validator",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "xmlchars",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "y18n",
"direct": false,
"version": "5.0.8",
"ecosystem": "npm"
},
{
"name": "yallist",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "yaml",
"direct": false,
"version": "2.9.0",
"ecosystem": "npm"
},
{
"name": "yargs",
"direct": false,
"version": "18.0.0",
"ecosystem": "npm"
},
{
"name": "yargs-parser",
"direct": false,
"version": "22.0.0",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 610,
"direct_count": 37,
"indirect_count": 573
}
},
"maintainership": {
"issues": {
"open_prs": 15,
"merged_prs": 263,
"open_issues": 20,
"closed_ratio": 0.894,
"closed_issues": 168,
"closed_unmerged_prs": 65
},
"bus_factor": 1,
"bot_contributors": 3,
"top_contributors": [
{
"type": "User",
"login": "krisarmstrong",
"commits": 252,
"avatar_url": "https://avatars.githubusercontent.com/u/712168?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"codeql.yml",
"dead-code.yml",
"label-sync.yml",
"labeler.yml",
"license-check.yml",
"pr-body-lint.yml",
"release-please.yml",
"release.yml",
"scorecard.yml",
"title-lint.yml",
"todo-tracker.yml"
],
"has_docs_dir": true,
"linter_configs": [
".golangci.yml",
"biome.json"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": true
},
"security_signals": {
"lockfiles": [
"go.sum",
"package-lock.json"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"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 0/27 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 3,
"reason": "project has 1 contributing companies or organizations -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 10,
"reason": "project is fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 9,
"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 30 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": 8,
"reason": "dependency not pinned by hash detected -- score normalized to 8",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 10,
"reason": "SAST tool is run on all commits",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 10,
"reason": "5 out of the last 5 releases have a total of 5 signed artifacts.",
"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": 4,
"reason": "6 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "49b93e675321ed9ca20ae9fc97673e3a666532c2",
"ran_at": "2026-07-24T18:37:05Z",
"aggregate_score": 7.3,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": true,
"has_security_policy": true,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-21T11:03:17Z",
"oldest_open_prs": [
{
"number": 458,
"created_at": "2026-06-22T10:34:20Z",
"last_comment_at": "2026-07-10T14:41:53Z",
"last_comment_author": "github-actions"
},
{
"number": 459,
"created_at": "2026-06-22T10:34:30Z",
"last_comment_at": "2026-07-10T14:41:59Z",
"last_comment_author": "github-actions"
},
{
"number": 464,
"created_at": "2026-06-29T10:34:14Z",
"last_comment_at": "2026-07-10T14:41:52Z",
"last_comment_author": "github-actions"
},
{
"number": 465,
"created_at": "2026-06-29T10:34:30Z",
"last_comment_at": "2026-07-10T14:46:23Z",
"last_comment_author": "github-actions"
},
{
"number": 467,
"created_at": "2026-06-29T19:20:05Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 471,
"created_at": "2026-07-06T10:34:25Z",
"last_comment_at": "2026-07-10T14:43:49Z",
"last_comment_author": "github-actions"
},
{
"number": 475,
"created_at": "2026-07-06T10:34:57Z",
"last_comment_at": "2026-07-10T14:46:59Z",
"last_comment_author": "github-actions"
},
{
"number": 487,
"created_at": "2026-07-06T19:35:06Z",
"last_comment_at": "2026-07-06T19:38:54Z",
"last_comment_author": "github-actions"
},
{
"number": 524,
"created_at": "2026-07-13T10:34:27Z",
"last_comment_at": "2026-07-13T10:34:27Z",
"last_comment_author": "dependabot"
},
{
"number": 526,
"created_at": "2026-07-13T10:35:00Z",
"last_comment_at": "2026-07-13T10:35:01Z",
"last_comment_author": "dependabot"
},
{
"number": 527,
"created_at": "2026-07-13T10:35:22Z",
"last_comment_at": "2026-07-13T10:35:23Z",
"last_comment_author": "dependabot"
},
{
"number": 528,
"created_at": "2026-07-13T10:35:30Z",
"last_comment_at": "2026-07-13T10:35:31Z",
"last_comment_author": "dependabot"
},
{
"number": 530,
"created_at": "2026-07-13T10:37:12Z",
"last_comment_at": "2026-07-13T10:37:13Z",
"last_comment_author": "dependabot"
},
{
"number": 531,
"created_at": "2026-07-20T10:34:52Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 532,
"created_at": "2026-07-20T10:38:00Z",
"last_comment_at": "2026-07-20T10:38:01Z",
"last_comment_author": "dependabot"
}
],
"last_merged_pr_at": "2026-07-10T17:11:58Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 245,
"created_at": "2026-05-22T04:52:24Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 253,
"created_at": "2026-05-22T23:33:49Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 267,
"created_at": "2026-05-24T06:24:32Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 268,
"created_at": "2026-05-24T06:31:09Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 320,
"created_at": "2026-05-27T03:44:22Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 325,
"created_at": "2026-05-27T14:03:05Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 341,
"created_at": "2026-05-27T19:40:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 344,
"created_at": "2026-05-27T19:42:35Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 365,
"created_at": "2026-05-29T17:49:58Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 450,
"created_at": "2026-06-16T14:12:03Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 479,
"created_at": "2026-07-06T17:37:20Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 480,
"created_at": "2026-07-06T18:15:08Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 482,
"created_at": "2026-07-06T18:38:13Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 484,
"created_at": "2026-07-06T19:11:15Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 486,
"created_at": "2026-07-06T19:35:03Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 488,
"created_at": "2026-07-06T19:50:51Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 490,
"created_at": "2026-07-06T20:41:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 493,
"created_at": "2026-07-07T00:44:54Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 495,
"created_at": "2026-07-08T16:47:32Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 511,
"created_at": "2026-07-10T00:41:31Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/MustardSeedNetworks/stem",
"host": "github.com",
"name": "stem",
"owner": "MustardSeedNetworks"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": null,
"notes": [],
"value": 70,
"inputs": {
"security": 76,
"vitality": 84,
"community": 41,
"governance": 52,
"engineering": 100
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 84,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 73,
"inputs": {
"commits_last_year": 507,
"human_commit_share": 0.9,
"days_since_last_push": 4,
"active_weeks_last_year": 13
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 4 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 4
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "13/52 weeks with commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 13
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "507 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 507
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"releases_count": 28,
"latest_release_tag": "v0.24.0",
"releases_from_tags": false,
"days_since_latest_release": 14,
"mean_days_between_releases": 5
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "28 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 28
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 14 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 14
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~5 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 5
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "5 out of the last 5 releases have a total of 5 signed artifacts.",
"points": 10,
"status": "met",
"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": 14,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 14 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 14
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "at_risk",
"name": "Community & Adoption",
"value": 41,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 0,
"watchers": 1,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "0 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 0
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "1 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 1
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 86,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "license file present, not a recognized license",
"points": 16.9,
"status": "partial",
"details": [
{
"code": "license_custom",
"params": {}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 52,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 13,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"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 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"merged_prs": 263,
"open_issues": 20,
"closed_issues": 168,
"issue_closed_ratio": 0.894,
"closed_unmerged_prs": 65
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "89% of issues closed",
"points": 41.8,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 89
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "263/328 decided PRs merged",
"points": 30.7,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 263,
"decided": 328
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/27 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 39,
"inputs": {
"followers": 1,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "MustardSeedNetworks",
"public_repos": 6,
"account_age_days": 47
},
"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": "1 followers of MustardSeedNetworks",
"points": 2.2,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 1,
"login": "MustardSeedNetworks"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "6 public repos, account ~0 yr old",
"points": 6.4,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 6
}
},
{
"code": "account_age_years",
"params": {
"years": 0
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/MustardSeedNetworks/stem"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 14
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 14 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 14
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "104 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 104
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "excellent",
"name": "Engineering Quality",
"value": 100,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": true
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "12 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 12
}
}
],
"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": ".golangci.yml, biome.json",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml, biome.json"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 9.6,
"status": "met",
"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": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"af-xdp",
"dpdk",
"go",
"mef",
"network-testing",
"network-tools",
"performance-testing",
"rfc2544",
"tsn",
"ieee-802-1qbv",
"rfc6349",
"y1564",
"y1731"
],
"has_wiki": true,
"homepage": "https://mustardseednetworks.com/stem",
"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://mustardseednetworks.com/stem",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "13 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 13
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "good",
"name": "Security",
"value": 76,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "good",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"packaging"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 73,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 7.3
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"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 0/27 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is fuzzed",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 30 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 8",
"points": 4,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is run on all commits",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "5 out of the last 5 releases have a total of 5 signed artifacts.",
"points": 7.5,
"status": "met",
"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": "6 existing vulnerabilities detected",
"points": 3,
"status": "partial",
"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. Remaining weights renormalized. Matched 610 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 610
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 89,
"inputs": {
"source": "osv",
"advisories": 6,
"affected_packages": 6,
"assessed_packages": 610,
"unassessed_packages": 0,
"affected_by_severity": "high 5, unknown 1",
"direct_affected_packages": 1
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "1 affected: golang.org/x/crypto v0.53.0 (unknown)",
"points": 26.6,
"status": "partial",
"details": [
{
"code": "advisories_affected",
"params": {
"count": 1,
"packages": "golang.org/x/crypto v0.53.0 (unknown)"
}
}
],
"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 has been public longer than 90 days",
"points": 40,
"status": "met",
"details": [
{
"code": "advisories_none_stale",
"params": {
"days": 90
}
}
],
"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": 610,
"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": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 1
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 73,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "90 of 90 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 90,
"sampled": 90
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "excellent",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 88,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum",
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"ui/tsconfig.json"
],
"agent_commit_share": 0,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0.08
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".golangci.yml, biome.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml, biome.json"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "ui/tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "ui/tsconfig.json"
}
}
],
"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": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "8 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 8,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 8",
"points": 8,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 116715,
"source_files_sampled": 500,
"oversized_source_files": 4
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "4/500 source files over 60KB",
"points": 54.6,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 500,
"oversized": 4
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [],
"report_type": "repository",
"generated_at": "2026-07-24T18:37:23.487989Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/m/MustardSeedNetworks/stem.svg",
"full_name": "MustardSeedNetworks/stem",
"license_state": "custom",
"license_spdx": null
}