Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"automation",
"bash-scripts",
"bootstrap",
"cli",
"dev-environment",
"developer-tools",
"dotfiles-macos",
"homebrew",
"macos",
"multi-repo",
"project-orchestration",
"shell",
"workspace",
"workspace-management",
"zsh",
"bash",
"dotfiles"
],
"is_fork": false,
"size_kb": 4958,
"has_wiki": true,
"homepage": null,
"languages": {
"Shell": 1687823,
"Python": 1904064
},
"pushed_at": "2026-07-27T00:42:07Z",
"created_at": "2019-03-09T23:26:24Z",
"owner_type": "Organization",
"updated_at": "2026-07-27T00:42:09Z",
"description": "A local, GitHub-centric operating contract that makes a collection of independent repositories behave like one understandable, verifiably ready workspace for humans and coding agents.",
"is_archived": false,
"is_disabled": false,
"license_spdx": null,
"default_branch": "main",
"license_spdx_raw": "NOASSERTION",
"primary_language": "Python",
"significant_languages": [
"Python",
"Shell"
]
},
"owner": {
"blog": null,
"name": "Base Foundry",
"type": "Organization",
"login": "basefoundry",
"company": null,
"location": "United States of America",
"followers": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/295026282?v=4",
"created_at": "2026-06-19T05:48:40Z",
"is_verified": null,
"public_repos": 7,
"account_age_days": 38
},
"license": {
"state": "custom",
"spdx_id": null,
"raw_spdx": "NOASSERTION",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v1.7.0",
"kind": "minor",
"published_at": "2026-07-17T06:48:23Z"
},
{
"tag": "v1.6.1",
"kind": "patch",
"published_at": "2026-07-05T04:43:59Z"
},
{
"tag": "v1.6.0",
"kind": "minor",
"published_at": "2026-07-04T04:05:19Z"
},
{
"tag": "v1.5.0",
"kind": "minor",
"published_at": "2026-07-02T04:03:51Z"
},
{
"tag": "v1.4.0",
"kind": "minor",
"published_at": "2026-07-01T05:53:20Z"
},
{
"tag": "v1.3.0",
"kind": "minor",
"published_at": "2026-06-28T04:12:14Z"
},
{
"tag": "v1.2.0",
"kind": "minor",
"published_at": "2026-06-24T19:23:57Z"
},
{
"tag": "v1.1.0",
"kind": "minor",
"published_at": "2026-06-21T21:18:26Z"
},
{
"tag": "v1.0.5",
"kind": "patch",
"published_at": "2026-06-18T10:29:34Z"
},
{
"tag": "v1.0.4",
"kind": "patch",
"published_at": "2026-06-18T01:32:49Z"
},
{
"tag": "v1.0.3",
"kind": "patch",
"published_at": "2026-06-17T17:57:15Z"
},
{
"tag": "v1.0.2",
"kind": "patch",
"published_at": "2026-06-16T06:56:44Z"
},
{
"tag": "v1.0.1",
"kind": "patch",
"published_at": "2026-06-15T14:44:23Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2026-06-14T14:49:20Z"
},
{
"tag": "v0.4.4",
"kind": "patch",
"published_at": "2026-06-12T14:06:27Z"
},
{
"tag": "v0.4.3",
"kind": "patch",
"published_at": "2026-06-11T16:33:57Z"
},
{
"tag": "v0.4.2",
"kind": "patch",
"published_at": "2026-06-11T05:25:57Z"
},
{
"tag": "v0.4.1",
"kind": "patch",
"published_at": "2026-06-11T04:01:33Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-06-11T01:24:55Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-06-07T01:34:26Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2026-05-30T23:41:45Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2026-05-29T19:13:30Z"
},
{
"tag": "classic-shell-framework",
"kind": "other",
"published_at": "2026-05-21T04:47:45Z"
}
],
"recent_commits": [
{
"oid": "061828e87c2b58234ee22a061de6d2ec24afa1db",
"body": "## Summary\n\n- Make the helper-backed Bash defaults and activated-runtime prompts\nshell-local by atomically assigning `PS1` without its export attribute.\n- Preserve both prompt literals and keep their helper functions private\nto the\n owning shell.\n- Add real interactive-child regressions, including \n[…]\nns\nwhy it is not applicable.\n- [x] PR includes `Fixes #<issue>` or `Closes #<issue>` when it should\nclose the issue.\n- [x] `Demo Impact` is meaningful for `needs-demo` work, or explicitly\nsays `None.`",
"is_bot": false,
"headline": "Keep Base Bash prompts shell-local (#1769)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-27T00:42:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0cb2b29d3d7228700ee806220c601596fe1b5639",
"body": "## Summary\n\n- Correct readonly `BASE_HOME` detection by inspecting only the\ndeclaration\n attribute token, not the variable value.\n- Keep the specific stale-runtime recovery message without appending\n contradictory generic `update-profile` guidance.\n- Add regressions for writable Intel and Apple Si\n[…]\nns\nwhy it is not applicable.\n- [x] PR includes `Fixes #<issue>` or `Closes #<issue>` when it should\nclose the issue.\n- [x] `Demo Impact` is meaningful for `needs-demo` work, or explicitly\nsays `None.`",
"is_bot": false,
"headline": "Fix false readonly BASE_HOME detection (#1768)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-27T00:32:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "511483388192a94772c073b9ea4cf8cfba678173",
"body": "…1765)\n\n## Summary\n\n- Add a canonical positioning contract row to `docs/contracts.md`.\n- Guard ten newcomer, contributor, agent, and library-facing surfaces\nagainst reintroducing the retired `workspace control plane` product\nphrase.\n- Require the accepted `local operating contract` thesis and outcom\n[…]\nng train branch. Retarget it to `main` after #1757 and #1760\nare merged. Internal implementation terminology, license text, and\nhistorical assessment references remain intentionally outside the guard.",
"is_bot": false,
"headline": "Guard canonical docs against retired positioning terminology drift (#…",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-26T22:42:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e8d70d6aa36a9204f4d850b4f3a595804dc585e9",
"body": "…s (#1764)\n\n## Summary\n\n- Apply `Status:` and `Last reviewed:` metadata to the eight undated\nCore Documents.\n- Refresh the Tool Boundaries evidence date.\n- Add `output-formats.md` to the complete Core Documents index.\n- Keep this PR stacked on the positioning migration so the shared docs\nindex remai\n[…]\n documentation metadata and indexing only.\n\n## Notes\n\nThis draft targets `documentation/1757-20260725-positioning-migration`\nas the preceding train branch. Retarget it to `main` after #1757 is\nmerged.",
"is_bot": false,
"headline": "Standardize Core Document maintenance headers and index output format…",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-26T22:41:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f3fede726faffa8fef62b726aa8f8072565f46e4",
"body": "## Summary\n\n- Re-review the product requirements and product assessment against Base\n1.7.0 and current Unreleased evidence.\n- Update both maintenance headers to 2026-07-25 and `1.7.0 +\nUnreleased`.\n- Record the shipped readiness, handoff, inspection, trust, and\nissue-readiness improvements without c\n[…]\nt review only.\n\n## Notes\n\nThe review separates shipped `workspace agent-brief` evidence from the\nstill-planned issue-oriented handoff bundle and keeps broader\nplatform/adoption claims evidence-backed.",
"is_bot": false,
"headline": "Review product requirements and assessment for 1.7.0 (#1763)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-26T22:39:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f39c3412a6bd23bea87cda0a7e931c197d5335ee",
"body": "…e (#1762)\n\n## Summary\n\n- Replace stale product-introduction language across the ten\nreview-identified documentation and guidance surfaces.\n- Align newcomer, contributor, agent, Copilot, and standalone-library\nexplanations with Base's local operating contract for deterministic\nreadiness and handoff.\n[…]\nion is intentionally semantic rather than a global\nreplacement. Internal implementation ownership language, license text,\ntests, and historical assessment references remain outside this issue's\nscope.",
"is_bot": false,
"headline": "Complete local operating contract positioning across docs and guidanc…",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-26T22:36:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1260cd1a7e8d80add03d201b22c11854947972a9",
"body": "Fixes #1756",
"is_bot": false,
"headline": "Remove legacy basectl ci command (#1758)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-26T02:47:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8c74fb75a8698abcd3f90828bc94b0b0dac9eb24",
"body": "## Summary\n\n- Remove `--verbose-wrapper` from the public `basectl` wrapper surface\nnow that `--debug-wrapper` is the single reusable-layer DEBUG control.\n- Reject the removed option before runtime initialization with status 2\nand a migration hint to `--debug-wrapper`.\n- Honor `--` as the wrapper-opt\n[…]\nns\nwhy it is not applicable.\n- [x] PR includes `Fixes #<issue>` or `Closes #<issue>` when it should\nclose the issue.\n- [x] `Demo Impact` is meaningful for `needs-demo` work, or explicitly\nsays `None.`",
"is_bot": false,
"headline": "Remove basectl --verbose-wrapper option (#1755)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-26T01:10:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3240de510f51b1d338da144b1da57f8377f02fca",
"body": "## Summary\n\n- pin all five Base CI checkouts to the peeled base-bash-libs v1.4.0\nrelease commit\n- update the workflow contract, sibling fixture, documentation, and\nchangelog\n- preserve the runtime compatibility floor at v1.3.0\n\n## Validation\n\n- focused workflow and documentation tests: 44 passed\n- `\n[…]\npin update.\n\n`.ai-context` is unchanged because this dependency pin does not alter\nrepository\ntopology or contributor process.\n\nRelease commit:\n`2c5ef2c3a9edfbe2cf68d0645be65b920255abff`\n\nCloses #1752",
"is_bot": false,
"headline": "Pin CI to base-bash-libs v1.4.0 (#1753)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-25T23:40:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b231b38f84532db90ac1dce39a8ffdb6af212f4e",
"body": "## Summary\n\n- Return the issue numbers added during repository Project backfill.\n- Report deterministic issue-number output from `basectl repo\nconfigure`.\n- Make the no-op case explicit when the Project is already up to date.\n- Add focused coverage for populated and empty backfills.\n\n## Why\n\nThe pre\n[…]\nonment-dependent `basectl check` failures.\n\n## AI context\n\nNo `.ai-context/` update is needed; this changes command observability\nwithout changing the product shape or workflow contract.\n\nCloses #1750",
"is_bot": false,
"headline": "Report issue numbers during Project backfill (#1751)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-25T22:38:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fd1768898e288ed307422314ecbfef58531e5876",
"body": "## Summary\n- replace basectl-specific missing-dependency guidance with standalone\npip installation instructions\n- preserve caller-provided raw command names in primary history records\nand pass basectl explicitly from the Base call site\n- restrict Base command display normalization to an explicit com\n[…]\nable\nlogging\n\n## Validation\n- PYTHONPATH=lib/python:cli/python\n/Users/rameshhp/.base.d/base/.venv/bin/python -m pytest -q\n- 1050 passed, 1 skipped, 251 subtests passed\n- git diff --check\n\nCloses #1746",
"is_bot": false,
"headline": "Remove Base-specific assumptions from base_cli standalone behavior",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-23T23:29:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6d8f19afa402a6be0218e410c913032c22a8ea56",
"body": "## Summary\n\n- Re-export command filters, command protocol helpers, and user\nconfiguration types from `base_cli`.\n- Add explicit `__all__` declarations for the public\ncommand/filter/protocol/history surfaces.\n- Add entry-point docstrings for `App`, `Context`, and `run_app`.\n- Document the supported f\n[…]\ndation\n\n- Focused public API/protocol tests: 63 passed, 4 subtests passed.\n- Full Python suite: 1050 passed, 1 skipped, 251 subtests passed.\n- Focused Pylint: clean.\n- `git diff --check`.\n\nFixes #1745",
"is_bot": false,
"headline": "Define and stabilize base_cli public API exports and docs",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-23T23:20:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9099354f878a7240d3a2d93faeeffde410de3bce",
"body": "…tions\n\n## Summary\n\n- Move monorepo-only Python standards, public-command lifecycle, and\nexit-code adoption checks to the top-level `tests/` suite.\n- Move Bash completion and runtime protocol integration checks out of\nthe installable `base_cli` test package.\n- Remove checkout-derived `BASE_HOME` val\n[…]\norepo.\n\n## Validation\n\n- Focused package and checkout-contract tests: 21 passed, 4 subtests\npassed.\n- Full Python suite: 1047 passed, 1 skipped, 251 subtests passed.\n- `git diff --check`.\n\nFixes #1743",
"is_bot": false,
"headline": "Make base_cli tests valid for source checkouts and installed distribu…",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-23T23:20:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "375e9a5aff35d2c9b9c3fcbb1f831cb613c17536",
"body": "## Summary\n\n- Read the installed Homebrew Base version from structured `brew info\n--json=v2 --installed` output before and after `brew upgrade\nbasefoundry/base/base`.\n- Run `basectl setup` only when the installed Base version changes.\n- Skip setup with an explicit log when Homebrew leaves Base at th\n[…]\nytest\ntests/test_base_cli_docs.py tests/test_docs_version.py`\n- `git diff --check`\n- live read-only probe: `base_update_homebrew_installed_version\nbasefoundry/base/base` returned `1.7.0`\n\nCloses #1739",
"is_bot": false,
"headline": "Skip setup on unchanged Homebrew Base version (#1740)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-23T22:15:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d07a6f268df63f9808f8401de6643cf0f27140f2",
"body": "## Summary\n\n- Skip basectl setup <project> when the Git/source update path leaves\nthe checkout at the same revision.\n- Keep setup execution for changed Git revisions and leave the\nHomebrew-managed update path unchanged.\n- Update help, dry-run messaging, README docs, and focused update tests\nto descr\n[…]\nmands/basectl/tests/update.bats\n- bash -n cli/bash/commands/basectl/subcommands/update.sh\n- shellcheck --severity=error\ncli/bash/commands/basectl/subcommands/update.sh\n- git diff --check\n\nCloses #1736",
"is_bot": false,
"headline": "Skip setup on no-op Git updates (#1738)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-23T21:57:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c934ef485b06e127f84c3342f2f048c08f1c39fd",
"body": "## Summary\n\n- Clear inherited BASE_CACHE_DIR and BASE_CLI runtime, history, project,\nand display context before Base test processes start.\n- Prevent basectl test base from making pytest fixtures resolve the\nparent Base invocation or its run bundle.\n- Add regression coverage proving the scrub applies\n[…]\nectly requires explicit\napproval for that worktree; no trust state was changed.\n\n## AI context\n\n- No .ai-context update needed; this is an internal test-runner\nenvironment isolation fix.\n\nCloses #1734",
"is_bot": false,
"headline": "Clear inherited context in Base test runner (#1735)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-22T23:47:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "08d324ab017de974320ac9ceb24435714f0d7c0c",
"body": "## Summary\n\n- Add an opt-in process runner mode that captures and logs command\noutput without echoing it directly to the terminal.\n- Use that mode for setup-time mise install so the success line is not\nprinted twice.\n- Preserve captured stdout and stderr for failure diagnostics and leave\nother comma\n[…]\n gate requires an explicit trust approval for the new worktree; no\ntrust state was changed.\n\n## AI context\n\n- No .ai-context update needed; this is an internal setup output\nbehavior fix.\n\nCloses #1732",
"is_bot": false,
"headline": "Suppress duplicate mise setup output (#1733)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-22T23:29:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9ff93a884444fb710787c0ea4e35d165a0413410",
"body": "Fixes inconsistent color handling between Bash and Python basectl logs.",
"is_bot": false,
"headline": "Color all basectl log output with --color",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-22T23:11:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b795a26feea95c92d36436de423f040cc25baf0",
"body": "## Summary\n\n- scope `BASE_PROJECT_VENV_DIR` overrides to an unbound shell or the\ncurrently active project\n- fall back to resolved route metadata when an inherited override\nbelongs to another project\n- use the same ownership predicate for missing-venv recovery guidance\n- add helper and public `basect\n[…]\nass.\n- [x] Bug fixes include regression proof.\n- [x] Documentation impact was evaluated.\n- [x] AI context impact was evaluated.\n- [x] PR includes `Fixes #1728`.\n- [x] Demo Impact is explicitly stated.",
"is_bot": false,
"headline": "Scope project venv overrides to the active project (#1729)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-21T18:50:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7ee0d653c12ceb2454a2d43d80b023671475aaa3",
"body": "## Summary\n\n- add failed-run coverage for default temp cleanup and explicit\nretention\n- document the per-run temporary-data contract in the observability\nguide\n- keep run metadata, history, and the primary log available in both\nmodes\n\n## Why\n\nThe retention implementation is already on `main`; this P\n[…]\n should move it\nto `Done`.\n- `.ai-context/` unchanged: this is completion coverage and\ndocumentation for an\nalready-shipped runtime contract, with no new product or architecture\ndecision.\n\nFixes #1685",
"is_bot": false,
"headline": "Complete temporary run retention coverage (#1727)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-21T13:52:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "410164698c9cd51b07004a9b72fa321e588f241d",
"body": "## Summary\n\n- derive `Fix:` indentation from the rendered doctor status prefix in\nboth Bash and Python paths\n- align colored and plain project findings under the finding ID column\n- add regression coverage for colored and plain `BASE-H001` output\n\nFixes #1725\n\n## Validation\n\n- `python -m pytest -q c\n[…]\ni/bash/commands/basectl/tests/ci.bats` (41 passed)\n- `bats -t tests/integration/base_workflows.bats` (7 passed)\n- `shellcheck` and `bash -n` checks passed\n\nOutput-only polish; AI context is unchanged.",
"is_bot": false,
"headline": "Align doctor Fix continuations with finding IDs (#1726)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-21T13:30:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "28b331207230b5c235cc5b89c98039509ec9bf87",
"body": "Tighten doctor text spacing, fix indentation, and INFO summary logging.",
"is_bot": false,
"headline": "Tighten basectl doctor text formatting",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-21T13:07:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "11fad02251dfbaa41e0968511d06d275d488a092",
"body": "Fixes #1719",
"is_bot": false,
"headline": "Unify basectl doctor text output",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-21T06:04:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "05831a52ae1a5e743a58cb30803791911fdbde88",
"body": "Make basectl history command filters match the logs command-filter contract.",
"is_bot": false,
"headline": "Support comma-separated history command filters",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-21T05:28:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "935b3b22a82d00c47af96b6ff590974909d10fcf",
"body": "Clarify basectl logs action conflicts and make --latest guidance actionable.",
"is_bot": false,
"headline": "Clarify basectl logs action conflicts",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-21T04:54:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18c6201da565225d201118f72e30804c55884516",
"body": "Fixes #1714",
"is_bot": false,
"headline": "Clarify basectl check remediation guidance",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-20T23:13:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c457f77bfebf5de3586e44d4035cfd1afbf20a16",
"body": "## Summary\n- accept comma-separated OR command filters for `basectl logs --command`\n- replace `--path` with `--latest` and rename `logs last` to `logs\nlast-failed`\n- update Bash/Zsh completions, help, docs, changelog, and focused\nregression coverage\n\nCloses #1713\n\n## Validation\n- `PYTHONPATH=cli/pyt\n[…]\nhhp/work/base-bash-libs/lib/bash bats -t\nlib/shell/completions/tests/completions.bats` (31 passed)\n- documentation/contract pytest selection (89 passed)\n- `bash -n`, ShellCheck, and `git diff --check`",
"is_bot": false,
"headline": "Refine basectl logs filtering and latest-failure UX",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-20T22:33:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e3ca30c9b7847d3a1475627f97ab9974c0e18485",
"body": "Fixes #1709",
"is_bot": false,
"headline": "Align history and logs terminal tables (#1710)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-20T21:44:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fa0368fb8d2ff1a4195ff185602844b0d3719e5d",
"body": "Fixes #1708",
"is_bot": false,
"headline": "Render check errors at error severity (#1711)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-20T21:20:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3ba0bef66a3cfa0039c7bf96108e5eddbb8416a",
"body": "Fixes #1707",
"is_bot": false,
"headline": "Finalize activate run history (#1712)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-20T08:06:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c9f4be7f3e28aeae1f98fb15a7998d7632a897e",
"body": "## Summary\n- make superseded-PR close/cleanup an explicit tool-independent rule for\nagents and contributors\n- align AGENTS.md, skills.md, AI context, Copilot guidance, and detailed\nGitHub workflow docs\n- add contract and workflow validation for required safety and cleanup\nlanguage\n\nCloses #1704\n\n## Validation\n- /Users/rameshhp/.base.d/base/.venv/bin/python -m pytest\ntests/test_contract_hardening.py tests/test_github_workflows.py\ntests/test_bootstrap_docs.py -q\n- git diff --check",
"is_bot": false,
"headline": "Document superseded PR cleanup for AI workflows",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-20T06:36:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9cb5d3716ec6550a93242f6ef83032cb2f409a40",
"body": "## Summary\n\n- print each ordinary unmerged local branch with the reason it was\nretained\n- print each ordinary unmerged GitHub branch with its exact branch name\nand retention reason\n- preserve the existing summary counters and fail-closed distinction\nbetween an unmerged result and a GitHub verificati\n[…]\n] Bug/UX behavior has regression coverage.\n- [x] AI context does not need updating because the command boundary is\nunchanged.\n- [x] PR includes `Fixes #1703`.\n- [x] `Demo Impact` is explicitly `None.`",
"is_bot": false,
"headline": "Show branch names when prune skips unmerged refs (#1705)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-20T06:23:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f8f2f7b676a9b995dd845966abefbf2646d36594",
"body": "## Summary\n\n- preserve the merged-PR lookup's three states so a successful zero\nresult remains distinct from an unavailable or failed GitHub query\n- route failed lookups through the shared GitHub wrapper, retain every\nunverified branch or worktree, count the incomplete scan as failed, and\nreturn a n\n[…]\nns\nwhy it is not applicable.\n- [x] PR includes `Fixes #<issue>` or `Closes #<issue>` when it should\nclose the issue.\n- [x] `Demo Impact` is meaningful for `needs-demo` work, or explicitly\nsays `None.`",
"is_bot": false,
"headline": "Report prune verification failures (#1702)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-20T04:45:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ab58124cc8043133d8fa5d5f814f8c9430008b34",
"body": "## Summary\n- document the TTY-aware text default, stable row ordering,\nstructured-output guarantees, and format exceptions\n- complete Bash and Zsh `--format` value completion for migrated reports\n- add completion regression coverage for public and command-specific\nformats\n\nCloses #1695\n\nDepends on #\n[…]\nats\ncli/bash/commands/basectl/tests/history.bats\ncli/bash/commands/basectl/tests/logs.bats\ncli/bash/commands/basectl/tests/trust.bats\ncli/bash/commands/basectl/tests/release.bats`\n- `git diff --check`",
"is_bot": false,
"headline": "Document and complete public output formats (#1701)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-20T04:19:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "74d55b8b4d96f4127abce75f50af9df3125513ff",
"body": "Closes #1694\n\n## Summary\n- migrate workspace reports, history, logs, trust, and release checks to\nthe shared output contract\n- add YAML/CSV/TSV/JSON output while preserving existing JSON envelopes\n- make text output TTY-aware and update build/run listing adapters and\nhelp\n\n## Validation\n- 207 focused Python tests passed (27 subtests)\n- 7 shared renderer tests passed\n- 54 focused BATS tests passed\n- pylint and git diff --check passed",
"is_bot": false,
"headline": "Migrate read-only reports to shared output formats (#1700)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-20T03:55:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d8625226f9ad6fb6d956e4ea00fc7664989406bb",
"body": "## Summary\n- route projects list through the shared output renderer\n- show a table with a summary on terminals and headerless TSV when\nredirected\n- add explicit CSV, TSV, YAML, and JSON support while preserving the\nexisting JSON shape\n- update help, tests, and output-format documentation\n\n## Validation\n- focused projects-list pytest\n- focused projects-list BATS suite\n- shared renderer plus projects-list pytest\n- git diff --check\n\nCloses #1693",
"is_bot": false,
"headline": "Make projects list format-complete and TTY-aware (#1697)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-20T02:33:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "733b657af31a459e2e635b3a37975a26cbb83064",
"body": "## Summary\n- add shared TTY-aware text, CSV, TSV, YAML, and JSON rendering helpers\n- keep delimited output headerless and diagnostics separate from stdout\n- document the shared contract and cover resolution, quoting, empty\noutput, and structured serialization\n\n## Validation\n- focused output pytest\n- base_cli unittest suite\n- git diff --check\n\nCloses #1692",
"is_bot": false,
"headline": "Add shared basectl output-format renderer (#1696)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-20T02:11:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d89ada81a99de1d80e591b7361b3be20c599a73",
"body": "Fixes #1690",
"is_bot": false,
"headline": "Prevent persisted run history for unknown commands",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-19T21:38:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f297bc8f0b4f0272fee51489b3c1ed6c3ee0ba59",
"body": "## Summary\n- add command/project labels to run-bundle directory names while\npreserving canonical run IDs\n- make log discovery and metadata updates read canonical IDs from\n`run.json`\n- document and test the readable layout\n\n## Validation\n- focused Python tests: 38 passed\n- focused runtime-dispatch Bats tests: 22 passed\n- touched-file Pylint\n\n## Issue\nCloses #1684",
"is_bot": false,
"headline": "Make run bundle directories human-readable (#1686)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-19T21:07:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "14da8ac957cdd449ae065d212d0b80b1bc65ed27",
"body": "## Summary\n- add basectl gh auth status for safe credential diagnostics\n- add basectl gh auth refresh with repeatable scope selection and\nclipboard support\n- detect GH_TOKEN/GITHUB_TOKEN precedence without reading or persisting\ntoken values\n- distinguish network failures from unavailable login and a\n[…]\n passing\n- zsh -n completion validation passing\n- ShellCheck warning-level validation passing\n- git diff --check passing\n- authenticated CLI smoke test for basectl gh auth status passing\n\nCloses #1688",
"is_bot": false,
"headline": "Add basectl GitHub auth status and refresh workflow (#1689)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-19T21:01:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0a05b1af20531f92a408fcd1efb62400d3940d0d",
"body": "## Summary: one run ID, one run.json, one logs/primary.log, and one\npublic history row per Base invocation. ## Validation: full Base Python\nand Bats suites; isolated check smoke test. ## Issue: Closes #1682; Refs\nbasefoundry/base-bash-libs#185.",
"is_bot": false,
"headline": "Use one run ID and one primary diagnostic log per invocation (#1683)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-18T23:25:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "95304bc147f0393505c4bb3e694c2853ac44fa63",
"body": "## Summary\\n\\n- retain project, manifest, command, and parent metadata\nin finalized run.json\\n- make run metadata and shell-created primary\nlogs private (0600)\\n- emit UTC-marked Python CLI log timestamps and\nUTC-based run IDs\\n- document the metadata, timestamp, and permission\ncontract\\n- add regre\n[…]\ntimestamps\\n\\n## Validation\\n\\n- 1,016 Python tests\npassed, 1 skipped\\n- 798 BATS tests passed\\n- focused setup smoke\npassed\\n- pylint, ShellCheck, bash -n, and git diff --check\npassed\\n\\nCloses #1680",
"is_bot": false,
"headline": "Harden runtime bundle metadata and logs (#1681)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-18T19:56:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "79d31aff26366e171230c39805641cd95d4d6adf",
"body": "## Summary\n\n- implement the clean-slate owner-aware cache layout for Base and\nBase-compliant projects\n- add run-oriented bundles with `run.json`, primary logs, internal child\nlogs, and checkout-isolated project roots\n- move history and project discovery caches under the Base namespace\n- update logs,\n[…]\nd documentation\n\nCloses #1678\n\n## Validation\n\n- `./bin/base-test` Python suite: 1014 passed, 1 skipped\n- full shell/Bats suite: 797 passed\n- `git diff --check`\n- `shellcheck` on changed Bash launchers",
"is_bot": false,
"headline": "Implement owner-aware runtime bundles (#1679)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-18T19:19:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9a5255523d1a06db0707b1cca2850d8f75dbd91b",
"body": "Add chronological ordering and bounded time filters to history. Fixes #1676.",
"is_bot": false,
"headline": "Add history ordering and time filters (#1677)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-18T17:54:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9adf09ab9307d4fc3b8a65520f41ca61fece503e",
"body": "Keep delegated history internal, preserve onboarding project context, and add explicit local-time rendering. Fixes #1673.",
"is_bot": false,
"headline": "Fix recursive history scope and local time display (#1675)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-18T03:34:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "808108aeea3f2fa4766ead0fe30a0cf3086c4518",
"body": "Fixes #1671",
"is_bot": false,
"headline": "Make command history user-facing while retaining internal trace",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-18T02:41:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "68fd6e0e836dc2f4a41158e686fac9fc9b5230e9",
"body": "Fixes #1669\n\n## Summary\n\n- add a shared `Context.bind_project()` API for invocation history\nattribution\n- bind explicit targets in release, PR policy, trust, and export-context\nhandlers\n- preserve the existing setup and projects fixes while recording the\nselected project name\n- add regressions that \n[…]\n Validation\n\n- focused Python tests: 239 passed, 42 subtests passed\n- full Python suite: 1,002 passed, 1 skipped\n- full shell/Bats suite: 796 passed\n- focused pylint: clean\n- `git diff --check`: clean",
"is_bot": false,
"headline": "Bind project context across all project-targeting handlers (#1670)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-18T02:06:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7c1b161e513ee8ca42d30519baa69fd0be4847bf",
"body": "Fixes #1667",
"is_bot": false,
"headline": "Populate project metadata in history entries (#1668)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-18T01:37:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2cef40edea8b2acf440ad94247f86b2d7faede21",
"body": "Fixes #1664",
"is_bot": false,
"headline": "Show valid --format choices in workspace command help (#1666)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-17T18:16:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d39e1f63b8fc74b13784ae1b8394bcd2c0d6d549",
"body": "Fixes #1663",
"is_bot": false,
"headline": "Align workspace status text columns for shell-only projects (#1665)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-17T17:44:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4df0baf100185a7d5f60bc902d413ca5c34655b",
"body": "## Summary\n\n- prepare the repository metadata and documentation for Base v1.7.0\n- bind the release to the merged runtime compatibility floor for\n`base-bash-libs` 1.3.0 or a compatible later 1.x release\n- keep the existing CI exact SHA pin for the published `base-bash-libs`\nv1.3.0 commit\n\n## Release \n[…]\nheck`\n- `tests/test_docs_version.py`\n\n## Follow-up\n\nAfter merge, run the release readiness check and dry-run, publish the\nGitHub\nrelease, then update and bottle the Homebrew tap formula.\n\nCloses #1600",
"is_bot": false,
"headline": "Prepare Base v1.7.0 release (#1662)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-17T06:46:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "87da86f2cebf76b6f5f08e2ae08fcb4255acdd0f",
"body": "Closes #1659",
"is_bot": false,
"headline": "Require compatible base-bash-libs runtime",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-17T06:34:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8a56866c02213016884220a603cb01f7e96a0cc7",
"body": "## Summary\n\n- normalize project selection for `run`, `build`, `test`, and `demo`:\nexplicit `--project`, compatible positional project, nearest manifest,\nthen a controlled error\n- let current-project commands omit repetitive project names while\npreserving registered-project collision precedence\n- add\n[…]\nassed\n- full 794-test BATS suite passed\n- Bash/Zsh syntax, ShellCheck, Pylint, and `git diff --check` passed\n- real list JSON smoke test and independent completion/security review\npassed\n\nCloses #1647",
"is_bot": false,
"headline": "Normalize current-project resolution and completion (#1658)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-16T21:58:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7677c32765e79f1ab3fae53f510df0dab296bc15",
"body": "## Summary\n\n- treat project Python as an explicit manifest contract (`python:` or\n`python-package`)\n- run shell-only setup, check, and doctor work through Base's own Python\nruntime without creating a project `.venv`\n- report shell-only workspace environments as `not_applicable` while\npreserving expl\n[…]\nt\n- full 785-test BATS suite passed\n- Pylint passed for touched Python modules\n- Bash syntax passed; `git diff --check` passed\n- independent compatibility review found no material issues\n\nCloses #1649",
"is_bot": false,
"headline": "Keep shell-only projects healthy without a project venv (#1657)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-16T21:45:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "22e769146fd2229bb5e73650a12ca581d90122c6",
"body": "## Summary\n\n- add the stable v1 inspection envelope to `repo check`, `release\ncheck`, `gh issue readiness`, and `gh branch stale`\n- preserve text defaults and exit policy while returning controlled JSON\nfor usage, environment, and upstream failures\n- keep JSON stdout machine-clean with valid UTF-8 h\n[…]\ns passed, 1 skipped\n - 780 BATS tests passed\n- focused inspection/help/completion gate\n- inspection contract runner\n- Pylint, ShellCheck warning+, Bash/Zsh syntax, and `git diff --check`\n\nFixes #1646",
"is_bot": false,
"headline": "Standardize JSON for basectl inspection commands (#1656)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-16T21:32:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "594e15a1bd53f6c09e7c031ee9344f4d4bd4345f",
"body": "## Summary\n\n- give documented public leaves focused help and make nested `basectl\nhelp` equivalent\n- reject trailing arguments for exact commands and keep private Python\nruntime flags out of public help\n- align Bash and Zsh command, positional, and option completion with the\nselected leaf\n- regroup \n[…]\n - 969 Python tests passed, 1 skipped\n - 768 BATS tests passed\n- focused help/completion matrix: 122 BATS tests passed\n- `bash -n`, `zsh -n`, ShellCheck warning+, and `git diff --check`\n\nFixes #1645",
"is_bot": false,
"headline": "Close basectl help and completion parity gaps (#1655)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-16T21:16:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ded2117bef67f3baadae117d3fdf11c76117c9e5",
"body": "## Summary\n\n- replace the independent `basectl ci` parser with a thin dispatch that\nprepends `--ci` and forwards every remaining argument to canonical\nsetup, check, or doctor handling\n- preserve optional-project behavior, canonical help and validation,\ncommand-specific options, and delegated exit st\n[…]\nns\nwhy it is not applicable.\n- [x] PR includes `Fixes #<issue>` or `Closes #<issue>` when it should\nclose the issue.\n- [x] `Demo Impact` is meaningful for `needs-demo` work, or explicitly\nsays `None.`",
"is_bot": false,
"headline": "Restore basectl ci compatibility alias parity (#1654)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-16T20:42:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c410f19ef7d503504e3c8b282f5ce904164ab492",
"body": "## Summary\n\n- forward `basectl onboard --yes` to setup so Ubuntu/Debian package\nconsent is genuinely unattended\n- add a read-only workspace trust-status step that never grants approval\nand filters manifests without executable command surfaces\n- make fresh and changed trust states show surface-specif\n[…]\nns\nwhy it is not applicable.\n- [x] PR includes `Fixes #<issue>` or `Closes #<issue>` when it should\nclose the issue.\n- [x] `Demo Impact` is meaningful for `needs-demo` work, or explicitly\nsays `None.`",
"is_bot": false,
"headline": "Fix trust-aware onboarding and unattended setup handoff (#1653)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-16T20:22:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "047848a9fb4996b7d402a502435c3691c0c7ea75",
"body": "## Summary\n\n- require an explicit relative or absolute path before `basectl` enters\nscript mode\n- dispatch built-in control commands before considering same-named local\nfiles\n- return a focused explicit-path hint for unknown bare script names\n- document the invocation boundary and add collision/path\n[…]\nsed runtime/help BATS: 34 passed\n- Bash syntax and ShellCheck: passed\n- contract suite: passed\n- full `./bin/base-test`: 962 Python passed, 1 skipped; 736 BATS passed\n- `git diff --check`\n\nFixes #1643",
"is_bot": false,
"headline": "Prevent local files from shadowing basectl commands (#1652)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-16T19:38:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "586015a8d7ca777df22637cdb64e2248c6b5d0ef",
"body": "Closes #1650",
"is_bot": false,
"headline": "Pin CI to base-bash-libs v1.3.0 (#1651)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-16T18:20:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b09bb0b3f8ccadfedb169049681f946f5d0f76ec",
"body": "## Summary\n\n- Add opt-in `--release` support to `basectl repo init`, `repo\nconfigure`, and `repo check`.\n- Generate a generic `release:` contract and agent-facing\n`docs/release-process.md` for repositories that publish versioned\nartifacts.\n- Preserve existing release declarations and process guides,\n[…]\nly.\n- `.ai-context/WORKFLOWS.md` documents the new command path.\n- Existing release metadata is left unchanged; `basectl release` remains\nthe guarded publishing surface.\n\nCloses #1639\nRelates to #1620",
"is_bot": false,
"headline": "Standardize repository release contracts (#1642)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-16T17:49:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3f2617fb3b15522053d4f277577440f48569ad64",
"body": "## Summary\n- Clarify when Base should keep using Bash `source`.\n- Document that stdlib `import` is for standalone stdlib consumers,\nwhile Base command code uses `import_base_lib` for reusable\n`base-bash-libs` modules.\n\n## Issue\nCloses #1640\n\n## Validation\n- `git diff --check`\n\n## Demo Impact\nNone. Documentation-only change.",
"is_bot": false,
"headline": "Clarify Bash library import conventions (#1641)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-16T17:14:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "57f1d7fdfcc5393a8b705e8cdd94b5b1fcf97e0f",
"body": "## Summary\n\n- import `lib/bash/git/lib_git.sh` alongside the GitHub helpers in Base\nGH and repo consumers\n- migrate generic default-branch, worktree, upstream, merge, and remote\ncalls to canonical `git_*` APIs\n- keep Base's `base_gh_*` command-facing wrappers and behavior unchanged\n- update focused \n[…]\nch-worktree.bats\ncli/bash/commands/basectl/tests/gh.bats\ncli/bash/commands/basectl/tests/repo.bats`\n- `./bin/base-test` (962 Python tests passed, 1 skipped; 731 BATS tests\npassed)\n- `git diff --check`",
"is_bot": false,
"headline": "Migrate Base to canonical Git helpers (#1638)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-16T05:25:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ba92dcbb253692807d4071d94cb4d20e30fb8f55",
"body": "## Summary\n\n- add `basectl workspace agent-brief` with concise text and stable JSON\nv1 output\n- report expected, optional, unmanaged, and local-only repositories with\nstatic baseline, guidance, AI-context, environment, and validation\nevidence\n- preserve the trust boundary by never executing reposito\n[…]\nns\nwhy it is not applicable.\n- [x] PR includes `Fixes #<issue>` or `Closes #<issue>` when it should\nclose the issue.\n- [x] `Demo Impact` is meaningful for `needs-demo` work, or explicitly\nsays `None.`",
"is_bot": false,
"headline": "Add workspace agent brief from workspace manifests (#1635)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-15T17:59:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c712184e26604eadb8fd530b41ce65bd1d17a6f6",
"body": "## Summary\n- replace hand-rolled whitespace trimming in\n`base_repo_strip_config_value` with `str_trim`\n- add a repo clone config regression that covers whitespace plus\ntrailing comments\n\n## Validation\n- `env BASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nbats --filter 'trims user co\n[…]\nameshhp/work/base-bash-libs/lib/bash bats\ncli/bash/commands/basectl/tests/repo.bats`\\n- `shellcheck\n--severity=error cli/bash/commands/basectl/subcommands/repo.sh`\\n- `git\ndiff --check`\\n\\nFixes #1633",
"is_bot": false,
"headline": "Use str_trim for repo config parsing (#1634)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-15T17:27:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "079bc08e3b09bbe1e894d0fb39cb396ef73ce38a",
"body": "## Summary\n- list the current `base-bash-libs` reusable module surface in Base docs\n- update companion import examples to include current helpers\n- refresh short helper references that still implied only the older\n`file`/`git` pair\n\n## Validation\n- `git diff --check`\n\nFixes #1631",
"is_bot": false,
"headline": "Refresh Base Bash library docs (#1632)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-15T17:20:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e42d11662848c448817445ed1c7d2dcf2d497624",
"body": "## Summary\n\n- validate branch categories against the referenced issue label in Base\nCLI paths\n- install a trusted PR workflow that enforces the same semantic policy\nfor raw Git, forks, and other AI tools\n- propagate the policy through generated repository guidance and make\nthe trusted status require\n[…]\nquest_target without checking out or\nexecuting pull-request code; it reads GitHub API metadata and writes\ncommit statuses only.\n\n## Demo\n\nNot applicable; this is repository policy and CLI enforcement.",
"is_bot": false,
"headline": "Enforce branch category against referenced issues (#1630)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-15T07:05:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b6803aee520ecf9bad248b71af5e034c4d6e3089",
"body": "…ed protocol (#1628)\n\n## Summary\n\n- Add a versioned, named, typed protocol shared by Python producers and\nBash/Zsh consumers.\n- Encode UTF-8 safely across tabs, newlines, and control characters,\nwith explicit nulls, canonical bounded record counts, and strict\nmalformed-input rejection.\n- Migrate eve\n[…]\nchitecture boundary change.)\n- [x] PR includes `Fixes #<issue>` or `Closes #<issue>` when it should\nclose the issue.\n- [x] `Demo Impact` is meaningful for `needs-demo` work, or explicitly\nsays `None.`",
"is_bot": false,
"headline": "Replace tab-delimited Python-to-Bash command metadata with a structur…",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-15T05:42:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ff82e3478d68bfa770d3d55c0d4ac81c84f8056a",
"body": "…o managers (#1629)\n\n## Summary\n\n- Replace the stale adjacent-tool model with explicit own, delegate,\nintegrate, overlap, and do-not-expand decisions.\n- Ground the boundary guidance in current official capabilities for mise\nbootstrap, mani, gita, vcs2l, Android Repo, and west.\n- Clarify that Base di\n[…]\nns\nwhy it is not applicable.\n- [x] PR includes `Fixes #<issue>` or `Closes #<issue>` when it should\nclose the issue.\n- [x] `Demo Impact` is meaningful for `needs-demo` work, or explicitly\nsays `None.`",
"is_bot": false,
"headline": "Refresh Base tool boundaries for current mise bootstrap and multi-rep…",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-15T05:39:21Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c12dc8022554c9f6e027c09a20cf615d605dda90",
"body": "## Summary\n\n- narrow the public Base position to a local operating contract for\ndeterministic readiness and handoff across independent Git repositories\n- establish the core loop: inventory, prepare, verify, trust, onboard,\nand hand off\n- classify the manifest and CLI as the enabling execution contra\n[…]\nision.\n- [x] Documentation is updated across all maintained product surfaces.\n- [x] AI context is updated in `.ai-context/`.\n- [x] PR includes `Closes #1617`.\n- [x] `Demo Impact` is explicitly `None.`",
"is_bot": false,
"headline": "Clarify Base readiness and handoff positioning (#1625)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-15T05:30:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2294376c177cf44c54ace5ae5416ed0749609617",
"body": "## Summary\n\n- Enforce the canonical category/issue/date/slug branch shape at local\nPR creation and the GitHub remote boundary.\n- Make Base-owned repo helpers and the Skills workflow create\nissue-backed branches and verify issue categories.\n- Make the policy explicit and tool-independent across stand\n[…]\nsts passed, 1 skipped; 698 Bash tests\npassed.\n- Affected Bats suites: 161 passed.\n- Workflow tests: 21 passed.\n- Bash and Zsh syntax, warning-level ShellCheck, and git diff checks\npassed.\n\nFixes #1623",
"is_bot": false,
"headline": "Enforce issue-backed branch naming (#1626)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-15T05:14:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1ba5ffdf9246e57edb91a1ff01f8d05a75ee29a1",
"body": "## Summary\n\n- centralize Base-owned Python remote installer definitions in one\nimmutable registry\n- bring Debian-family uv and mise bootstrap paths under the documented\nallowlist and consent policy\n- add paired managed URL and SHA-256 overrides that fetch once, verify\nexact bytes, execute by argv, a\n[…]\n\n- [x] Documentation is updated when behavior or user-facing commands\nchange.\n- [x] AI context is updated in `.ai-context/`.\n- [x] PR includes `Closes #1608`.\n- [x] `Demo Impact` is explicitly `None.`",
"is_bot": false,
"headline": "Harden uv and mise remote installer policy (#1624)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-15T04:52:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c751a30fa1cd9f34de3d459a59ded76b35b08d72",
"body": "## Summary\n\n- Add direct command-boundary coverage for GitHub Project issue field\nmutations.\n- Exercise the existing typed ProjectOperations seam with deterministic\nnetwork-free fakes.\n- Prove dry-run safety, add-before-update ordering, deterministic\nmulti-field updates, controlled lookup and mutati\n[…]\n from the issue worktree.\n- [x] Tests are independent of GitHub credentials and network access.\n- [x] AI context applicability is explained.\n- [x] PR includes Fixes #1604.\n- [x] Demo impact is stated.",
"is_bot": false,
"headline": "Add Project issue mutation command tests (#1622)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-15T04:42:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5073b783c1fe76742090e9c8b4c40c218f83451d",
"body": "## Summary\n\n- Preserve every non-IDE BaseManifest field when applying user-local IDE\npreferences.\n- Replace brittle whole-object reconstruction with an immutable\ndataclasses.replace update.\n- Add regression coverage for parsed project.languages and a\nfuture-field preservation invariant.\n\n## Issue\n\nF\n[…]\n Regression proof and the full Python suite pass.\n- [x] Documentation changes are not required.\n- [x] AI context applicability is explained.\n- [x] PR includes Fixes #1607.\n- [x] Demo impact is stated.",
"is_bot": false,
"headline": "Preserve manifest fields during user config merging (#1621)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-15T04:39:14Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "591e34a8fed6ce9cbe27f483f852bec81153f3eb",
"body": "Closes #1599",
"is_bot": false,
"headline": "Add explicit language profiles to repo init",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-14T19:54:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d09f2dc273b87587178a3a834eda09440c1a00dd",
"body": "Fixes #1569",
"is_bot": false,
"headline": "Make project-local .venv the Python default",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-14T19:51:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "686d5ad62fdd412b19dbaadeeed7e80872634ba3",
"body": "## Summary\n- move `basectl repo` GitHub-side repository settings, labels, ruleset\nhandling, repo creation, and Project metadata delegation into\n`repo_github_settings.sh`\n- keep shared path, formatting, `gh` readiness, PR, and local baseline\nprimitives in `repo.sh`\n- update the repo ownership map and\n[…]\nests/test_contract_hardening.py -q`\n- `git diff --check`\n- `env -u BASE_HOME\nBASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nBASE_CACHE_DIR=/private/tmp/base-1563-full ./bin/base-test`",
"is_bot": false,
"headline": "Extract repo GitHub settings helper (#1598)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-14T03:49:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bc9896e5f2cc3e5732f12761a68e5db509900253",
"body": "## Summary\n- move Nix/devenv compatibility report implementation into\n`base_devenv.report`\n- keep `base_setup.devenv_report` as a compatibility facade for\nhistorical imports\n- update setup engine imports, ownership docs, and facade/package tests\n\nRefs #1576\n\n## Validation\n- `/Users/rameshhp/.base.d/\n[…]\nst_compatibility_facades.py`\n- `git diff --check`\n- `env -u BASE_HOME\nBASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nBASE_CACHE_DIR=/private/tmp/base-1576-devenv-full ./bin/base-test`",
"is_bot": false,
"headline": "Extract devenv report package (#1597)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-14T02:10:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "21ead9e8265008dcd5f4e03578674f02fbebbdc4",
"body": "## Summary\n- Move Dev Containers export ownership from base_setup into a focused\nbase_devcontainer package.\n- Keep base_setup.devcontainer_export as an explicit compatibility\nfacade for historical imports.\n- Update base_setup command dispatch to use the focused package\ndirectly.\n- Add package-bounda\n[…]\nt_compatibility_facades.py\n- git diff --check\n- env -u BASE_HOME\nBASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nBASE_CACHE_DIR=/private/tmp/base-1576-devcontainer-full ./bin/base-test",
"is_bot": false,
"headline": "Extract devcontainer export package (#1596)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-14T01:40:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "803a947472775b2a357f61f3f47099c697e2c133",
"body": "## Summary\n- Update the setup-common ownership map after the #1591 implementation\nslices.\n- Clarify that Python owns structured diagnostics JSON schema\nconstruction and shell keeps routing, fallback, and human text\nrendering.\n- Refresh the docs guard test to assert the implemented close-out\nwording.\n\nRefs #1591\n\n## Validation\n- /Users/rameshhp/.base.d/base/.venv/bin/python -m pytest\ntests/test_setup_common_ownership_docs.py -q\n- git diff --check",
"is_bot": false,
"headline": "Document Python diagnostics JSON ownership (#1595)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-13T06:02:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "342b53ed15be02d2f18780a5a68130e163ffb465",
"body": "## Summary\n- Move check and doctor JSON item assembly from shell argument tuples to\nPython diagnostics.\n- Have shell write its existing raw check-result records and pass them\nto Python with result-file arguments.\n- Preserve existing embedded project/profile payloads, JSON escaping,\nstatus aggregatio\n[…]\nmon_ownership_docs.py\n- git diff --check\n- env -u BASE_HOME\nBASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nBASE_CACHE_DIR=/private/tmp/base-1591-check-record-json-full\n./bin/base-test",
"is_bot": false,
"headline": "Move check JSON assembly to result records (#1594)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-13T05:57:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fd0c4929c73ba051e52725a8a52574cb0f5a3073",
"body": "## Summary\n\n- move Base check finding metadata and display names into the Python\ndiagnostics renderer\n- add an internal base-check-metadata diagnostics command for shell\nconsumers\n- update doctor text rendering to consume Python metadata in one batch\nwhile retaining a shell fallback for pre-runtime \n[…]\nbcommands/doctor.sh\n- git diff --check\n- env -u BASE_HOME\nBASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nBASE_CACHE_DIR=/private/tmp/base-1591-diagnostic-metadata-full\n./bin/base-test",
"is_bot": false,
"headline": "Move Base check metadata into diagnostics renderer (#1593)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-13T05:39:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "24f098428622ce4fea772a6d82ec55ad3cd04e34",
"body": "## Summary\n\n- documents the #1570 close-out decision that setup_common decomposition\nis driven by cohesive functional ownership, not line count\n- records that notification extraction is intentionally deferred until\nnotification policy becomes a real cross-platform domain\n- tracks Python-owned check/\n[…]\ndiff --check\n- env BASE_CACHE_DIR=/private/tmp/base-1591-readiness\n/Users/rameshhp/work/base/bin/basectl gh issue readiness 1591 --repo\nbasefoundry/base --project-owner basefoundry --project-number 10",
"is_bot": false,
"headline": "Document setup_common close-out decisions (#1592)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-12T22:06:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d166fca75f169b68dfe664d6c5cf87387948b7c4",
"body": "## Summary\n- add `setup_profiles.sh` for setup/check profile parsing and dispatch\nhelpers\n- keep existing public `setup_*` names while `setup_common.sh` sources\nthe profile helper and keeps shared orchestration\n- update setup-common ownership docs and source-guard coverage for the\nnew helper\n\nRefs #\n[…]\n-profiles-helper bin/basectl check\n--ci`\n- `env -u BASE_HOME\nBASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nBASE_CACHE_DIR=/private/tmp/base-1570-profiles-helper-full\n./bin/base-test`",
"is_bot": false,
"headline": "Extract setup profiles helper (#1590)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-12T18:22:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "40b2df7ae20618f72deb148766ba965eff4a0998",
"body": "## Summary\n- add `setup_venv.sh` for Base runtime virtualenv and Python bootstrap\nhelpers\n- keep existing public `setup_*` names while `setup_common.sh` retains\nshared setup/check dispatch\n- move CI-runtime setup/check bodies and venv/package probe writers into\nthe runtime helper\n- refresh setup-com\n[…]\nase-1570-venv-helper bin/basectl check\n--ci`\n- `env -u BASE_HOME\nBASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nBASE_CACHE_DIR=/private/tmp/base-1570-venv-helper-full ./bin/base-test`",
"is_bot": false,
"headline": "Extract Base runtime venv setup helper (#1589)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-12T01:26:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9d5045f4296914736cbb9c448606a945d268e8b9",
"body": "## Summary\n- add `setup_macos_homebrew.sh` for macOS/Homebrew-specific setup and\ncheck helpers\n- keep existing public `setup_*` function names while `setup_common.sh`\nsources the helper and retains shared dispatch\n- update setup-common ownership docs and source-guard coverage for the\nsecond platform\n[…]\nt_setup_common_ownership_docs.py`\n- `git diff --check`\n- `env BASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nBASE_CACHE_DIR=/private/tmp/base-1570-macos-helper bin/basectl check\n--ci`",
"is_bot": false,
"headline": "Extract macOS/Homebrew setup helper (#1588)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-11T23:32:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "17bf2980d28868b0cc5f7a0ff02fc768f0a72267",
"body": "## Summary\n\n- extract the Ubuntu/Debian setup/check surface from `setup_common.sh`\ninto `setup_linux_debian.sh`\n- preserve existing `setup_*` function names, platform dispatch, output\ntext, dry-run behavior, and `--yes` consent behavior\n- refresh `docs/setup-common-ownership.md` so the current owner\n[…]\nt_setup_common_ownership_docs.py`\n- `git diff --check`\n- `env BASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nBASE_CACHE_DIR=/private/tmp/base-1570-linux-helper bin/basectl check\n--ci`",
"is_bot": false,
"headline": "Extract Linux/Debian setup helper (#1587)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-11T19:56:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b28051c37eab3ffd3ac667728f6e1575e2874827",
"body": "## Summary\n\n- refresh `docs/setup-common-ownership.md` against the current\n2,906-line `setup_common.sh`\n- replace the stale #1009-oriented note with a staged #1570\ndecomposition strategy\n- add a pytest guard that keeps the ownership doc linked and verifies\ndocumented `setup_*` anchors exist in the s\n[…]\nmon_ownership_docs.py\ntests/test_contract_hardening.py -q`\n- `/Users/rameshhp/.base.d/base/.venv/bin/python -m pylint\n--rcfile=.pylintrc tests/test_setup_common_ownership_docs.py`\n- `git diff --check`",
"is_bot": false,
"headline": "Document setup_common decomposition strategy (#1586)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-11T19:17:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1385549353d9d0f8ed23cbadb29bd8afd59d9219",
"body": "## Summary\n- add `.github/workflows/base-check.yml` as a reusable `workflow_call`\nwrapper for `basectl check --ci`\n- support source-checkout and preinstalled setup modes with minimal\npermissions and pinned actions\n- document caller usage, supported inputs, and when to keep a repo-local\nworkflow\n\nClo\n[…]\nb_workflows.py -q`\n- `python -m pylint --rcfile=.pylintrc tests/test_github_workflows.py`\n- `python -m pytest tests/test_contract_hardening.py\ntests/test_linux_support_docs.py -q`\n- `git diff --check`",
"is_bot": false,
"headline": "Add reusable Base check workflow (#1585)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-11T17:10:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "464f1eba97ca1fe910e047f28132f6d1198b535b",
"body": "## Summary\n- add a schema-versioned local explanation catalog for selected\nhigh-frequency doctor/check finding IDs\n- expose `basectl doctor explain <finding-id>` with text and JSON output\n- document the provider-neutral boundary and update shell\ncompletions/tests\n\nCloses #1577\n\n## Tests\n- `python -m\n[…]\n/work/base-bash-libs/lib/bash\nbin/basectl doctor explain BASE-D001 --format json`\n- `BASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nbin/basectl doctor explain BASE-X999 --format json`",
"is_bot": false,
"headline": "Add local finding explanations (#1584)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-11T17:00:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2ec2e2fed1502a4b6e099961950d8b9594b3146a",
"body": "## Summary\n- add `basectl logs last` for latest failed command metadata and bounded\nredacted log tails\n- support `--format json`, command filtering, missing-log handling, and\ncompletions\n- document the new observability surface and command reference entry\n\nCloses #1571\n\n## Tests\n- `python -m pytest \n[…]\ns/basectl_completion.zsh`\n- `git diff --check`\n- `BASE_CACHE_DIR=/private/tmp/base-1571-smoke bin/basectl logs last`\n- `BASE_CACHE_DIR=/private/tmp/base-1571-smoke bin/basectl logs last\n--format json`",
"is_bot": false,
"headline": "Add logs last failure tail (#1583)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-11T16:51:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "13019d126e27b47c46752edff268388f2f4ddacf",
"body": "## Summary\n- add `BASE_HOST_ENV` as readonly runtime metadata with `native` and\n`wsl2` values\n- detect WSL2 from Linux kernel metadata while preserving\n`BASE_PLATFORM=linux-debian` for Ubuntu/Debian\n- surface host environment context in setup/check/doctor runtime and\nunsupported-platform messaging\n-\n[…]\n -q`\n- `bash -n base_init.sh\ncli/bash/commands/basectl/subcommands/setup_common.sh bin/base-test\nlib/shell/baserc_guard.sh`\n- `zsh -n lib/shell/zsh_baserc_guard.zsh`\n- `git diff --check`\n\nCloses #1573",
"is_bot": false,
"headline": "Detect WSL2 host environment (#1582)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-11T16:37:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7e950b65fa6eb2d06407b43effccac8e04dfc55f",
"body": "## Summary\n- add `docs/stability-tiers.md` for stable, experimental, and internal\nBase surfaces\n- link stability tiers from the command reference and docs map\n- register the stability-tier contract with focused docs tests\n\n## Validation\n- `/Users/rameshhp/.base.d/base/.venv/bin/python -m pytest\ntest\n[…]\n.py -q`\n- `/Users/rameshhp/.base.d/base/.venv/bin/python -m pytest\ntests/test_stability_tiers_docs.py tests/test_contract_hardening.py\ntests/test_base_cli_docs.py -q`\n- `git diff --check`\n\nFixes #1579",
"is_bot": false,
"headline": "Define Base stability tiers (#1581)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-11T14:40:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c27628843eca740cfa348d0afd27d0fd6770138f",
"body": "## Summary\n- add a focused docs-version test for guarded current-release references\n- refresh `docs/technical-overview.md` from stale 1.3.0 status to 1.6.1\n- update the platform status text to match current macOS and\nUbuntu/Debian support\n\n## Validation\n- `/Users/rameshhp/.base.d/base/.venv/bin/pyth\n[…]\n_version.py -q`\n- `/Users/rameshhp/.base.d/base/.venv/bin/python -m pytest\ntests/test_docs_version.py tests/test_base_cli_docs.py\ntests/test_contract_hardening.py -q`\n- `git diff --check`\n\nFixes #1572",
"is_bot": false,
"headline": "Guard docs current-version references (#1580)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-11T14:13:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7ae1538207a839fa7da82b548303b5a0485987c0",
"body": "…#1556)\n\n## Summary\n\n- Print a compact runtime chain summary at the start of text-mode\n`basectl setup`, `basectl check`, and `basectl doctor` output.\n- Treat stale x86_64 Base virtualenvs under Apple Silicon Homebrew\n(`/opt/homebrew`) as unhealthy before profile setup reaches later `brew\ninstall` ca\n[…]\n\nBASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nBASE_CACHE_DIR=/private/tmp/base-1555-full-rebased ./bin/base-test`\n - Python: 839 passed, 1 skipped\n - BATS: 662 passed\n\nFixes #1555",
"is_bot": false,
"headline": "Detect mixed-architecture Base runtime chains before Homebrew setup (…",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-10T22:19:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e4c18c2f95b36d8aa22b2216a169642d0aa31732",
"body": "## Summary\n- add `basectl gh issue readiness <number>` for read-only implementation\nissue readiness checks\n- validate required issue body sections and optional Base Project fields\nvia explicit Project owner/number flags\n- update Bash/Zsh completions and GitHub workflow docs for the\nagent-assignment \n[…]\n`zsh -n lib/shell/completions/basectl_completion.zsh`\n- `git diff --check`\n- live smoke: `./bin/basectl gh issue readiness 1560 --repo\nbasefoundry/base --project-owner basefoundry --project-number 10`",
"is_bot": false,
"headline": "Add GitHub issue readiness check (#1568)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-09T19:22:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "31ebdbec7c80afce6d9592cd87b5c2ee8ce1650a",
"body": "## Summary\n\n- Add `basectl repo check --agent-ready` to verify the\nbaseline-integrated agent guidance contract.\n- Keep `repo check --agent-guidance` backward compatible while giving\n`--agent-ready` a `repo init ... --agent-ready` repair hint.\n- Update help, completions, docs, changelog, and AI comma\n[…]\n/base-agent-ready-check-smoke-home\n/Users/rameshhp/work/base-worktrees/1559-add-agent-ready-repo-check/bin/basectl\nrepo check /private/tmp/base-agent-ready-check-smoke/repo --agent-ready`\n\nFixes #1559",
"is_bot": false,
"headline": "Add agent-ready repo check (#1567)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-09T17:40:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "38974b640546f1bd300ef2eee4f24f3d79b03a21",
"body": "## Summary\n\n- Add `basectl repo init --agent-ready` to seed `AGENTS.md` and\n`skills.md` alongside the standard baseline.\n- Include agent-ready files in `repo init --pr` staging and in the\ngenerated rerun command/PR body.\n- Update completions, docs, changelog, and fix singular grammar in the\nshared a\n[…]\n/1558-add-agent-ready-mode-to-basectl-repo-ini/bin/basectl\nrepo init smoke-agent-ready --path\n/private/tmp/base-agent-ready-smoke/smoke-agent-ready --agent-ready\n--no-configure --dry-run`\n\nFixes #1558",
"is_bot": false,
"headline": "Add agent-ready repo init mode (#1566)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-09T17:30:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8a83d9b3f5f769250e4ba2d6b34308d6f5b315e8",
"body": "## Summary\n- Add `Agentic Coding Platform` to Base Project config and the\nimplementation issue template.\n- Document when agentic-platform issues should use that Initiative.\n- Update AI workflow context and repo-baseline Project metadata docs.\n\n## Issue\nFixes #1557\n\n## Validation\n- `PYTHONPATH=lib/py\n[…]\nive Project metadata was configured with `basectl gh project configure\n--initiative-option \"Agentic Coding Platform\"`. Open agentic-platform\nissues #1558-#1562 were also moved onto the new Initiative.",
"is_bot": false,
"headline": "Add Agentic Coding Platform initiative (#1565)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-09T17:10:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ea7c63d58ba17c2d085b79322907aee26874c20d",
"body": "## Summary\n\n- Add `--ci` mode to `basectl setup`, `basectl check`, and `basectl\ndoctor` using a shared CI-safe environment helper.\n- Keep `basectl ci setup|check|doctor` as a compatibility alias that\ndelegates to the corresponding `--ci` command path.\n- Update docs, GitHub workflow examples, complet\n[…]\nterface.\n\nFixes #1553\n\n## Testing\n\n- `env -u BASE_HOME\nBASE_BASH_LIBS_DIR=/Users/rameshhp/work/base-bash-libs/lib/bash\nBASE_CACHE_DIR=/private/tmp/base-1553-cache ./bin/base-test`\n- `git diff --check`",
"is_bot": false,
"headline": "Add CI mode flag to lifecycle commands (#1554)",
"author_name": "Ramesh Padmanabhaiah",
"author_login": "codeforester",
"committed_at": "2026-07-08T23:24:03Z",
"body_truncated": true,
"is_coding_agent": false
}
],
"releases_count": 23,
"commits_last_year": 1024,
"latest_release_at": "2026-07-17T06:48:23Z",
"latest_release_tag": "v1.7.0",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 13,
"days_since_latest_release": 10,
"mean_days_between_releases": 3.2
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": []
},
"popularity": {
"forks": 14,
"stars": 118,
"watchers": 6,
"fork_history": {
"days": [
{
"date": "2019-03-27",
"count": 1
},
{
"date": "2020-02-19",
"count": 1
},
{
"date": "2020-09-11",
"count": 1
},
{
"date": "2020-11-06",
"count": 1
},
{
"date": "2020-11-07",
"count": 1
},
{
"date": "2021-01-15",
"count": 1
},
{
"date": "2022-08-08",
"count": 1
},
{
"date": "2022-10-27",
"count": 1
},
{
"date": "2023-04-26",
"count": 1
},
{
"date": "2023-06-02",
"count": 1
},
{
"date": "2024-02-05",
"count": 1
},
{
"date": "2026-06-07",
"count": 1
},
{
"date": "2026-06-13",
"count": 1
},
{
"date": "2026-07-26",
"count": 1
}
],
"complete": true,
"collected": 14,
"total_forks": 14
},
"star_history": null,
"open_issues_and_prs": 23
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 76773,
"source_files_sampled": 261,
"oversized_source_files": 1,
"agent_instruction_files": [
".github/copilot-instructions.md",
"AGENTS.md"
],
"agent_instruction_max_bytes": 8831
},
"dependencies": {
"manifests": [
"requirements-dev.txt"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 7,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"pypi"
],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "bandit",
"direct": false,
"version": "1.9.4",
"ecosystem": "pypi"
},
{
"name": "click",
"direct": false,
"version": "8.4.1",
"ecosystem": "pypi"
},
{
"name": "pip-audit",
"direct": false,
"version": "2.10.1",
"ecosystem": "pypi"
},
{
"name": "pylint",
"direct": false,
"version": "3.3.9",
"ecosystem": "pypi"
},
{
"name": "pytest",
"direct": false,
"version": "9.0.3",
"ecosystem": "pypi"
},
{
"name": "pyyaml",
"direct": false,
"version": "6.0.3",
"ecosystem": "pypi"
},
{
"name": "tomli",
"direct": false,
"version": "2.4.1",
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 7,
"direct_count": 0,
"indirect_count": 7
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 876,
"open_issues": 23,
"closed_ratio": 0.974,
"closed_issues": 852,
"closed_unmerged_prs": 10
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "codeforester",
"commits": 1153,
"avatar_url": "https://avatars.githubusercontent.com/u/22363102?v=4"
},
{
"type": "User",
"login": "tiamilani",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/22966293?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.999
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"base-check.yml",
"copilot-setup-steps.yml",
"issue-branch-policy.yml",
"project-intake.yml",
"pylint.yml",
"skills.yml",
"tests.yml"
],
"has_docs_dir": true,
"linter_configs": [
".pylintrc"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 3,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 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/30 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": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 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": 7,
"reason": "dependency not pinned by hash detected -- score normalized to 7",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "061828e87c2b58234ee22a061de6d2ec24afa1db",
"ran_at": "2026-07-27T21:51:57Z",
"aggregate_score": 4.7,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-27T00:49:19Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-27T00:42:04Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 124,
"created_at": "2026-05-28T18:39:49Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 570,
"created_at": "2026-06-10T22:53:22Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 747,
"created_at": "2026-06-15T21:48:23Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 875,
"created_at": "2026-06-19T05:35:21Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 947,
"created_at": "2026-06-22T05:27:38Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1562,
"created_at": "2026-07-09T01:30:44Z",
"last_comment_at": "2026-07-22T18:36:00Z",
"last_comment_author": "ofekron"
},
{
"number": 1574,
"created_at": "2026-07-10T23:46:21Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1578,
"created_at": "2026-07-10T23:48:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1603,
"created_at": "2026-07-15T03:01:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1606,
"created_at": "2026-07-15T03:01:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1610,
"created_at": "2026-07-15T03:03:34Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1612,
"created_at": "2026-07-15T03:03:34Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1613,
"created_at": "2026-07-15T03:03:34Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1611,
"created_at": "2026-07-15T03:03:34Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1616,
"created_at": "2026-07-15T03:06:04Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1619,
"created_at": "2026-07-15T03:06:07Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1620,
"created_at": "2026-07-15T03:06:09Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1741,
"created_at": "2026-07-23T22:36:25Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1742,
"created_at": "2026-07-23T22:36:32Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1744,
"created_at": "2026-07-23T22:36:51Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/basefoundry/base",
"host": "github.com",
"name": "base",
"owner": "basefoundry"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 66,
"inputs": {
"security": 58,
"vitality": 84,
"community": 58,
"governance": 44,
"engineering": 84
},
"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": 1024,
"human_commit_share": 1,
"days_since_last_push": 0,
"active_weeks_last_year": 13
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "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": "1024 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 1024
}
}
],
"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": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 23,
"latest_release_tag": "v1.7.0",
"releases_from_tags": false,
"days_since_latest_release": 10,
"mean_days_between_releases": 3.2
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "23 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 23
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 10 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 10
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~3.2 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 3.2
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 0,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 0 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 0
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 58,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "at_risk",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 47,
"inputs": {
"forks": 14,
"stars": 118,
"watchers": 6,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "118 stars",
"points": 33.5,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 118
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "14 forks",
"points": 9.3,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 14
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "6 watchers",
"points": 3.9,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 6
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 71,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "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": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "at_risk",
"name": "Sustainability & Governance",
"value": 44,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 15,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.999
},
"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": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 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": 83,
"inputs": {
"merged_prs": 876,
"open_issues": 23,
"closed_issues": 852,
"issue_closed_ratio": 0.974,
"closed_unmerged_prs": 10
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "97% of issues closed",
"points": 45.5,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 97
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "876/886 decided PRs merged",
"points": 37.8,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 876,
"decided": 886
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 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": 40,
"inputs": {
"followers": 2,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "basefoundry",
"public_repos": 7,
"account_age_days": 38
},
"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": "2 followers of basefoundry",
"points": 3.4,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 2,
"login": "basefoundry"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "7 public repos, account ~0 yr old",
"points": 6.8,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 7
}
},
{
"code": "account_age_years",
"params": {
"years": 0
}
}
],
"max_points": 25
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 84,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "7 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 7
}
}
],
"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": ".pylintrc",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".pylintrc"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "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": 85,
"inputs": {
"topics": [
"automation",
"bash-scripts",
"bootstrap",
"cli",
"dev-environment",
"developer-tools",
"dotfiles-macos",
"homebrew",
"macos",
"multi-repo",
"project-orchestration",
"shell",
"workspace",
"workspace-management",
"zsh",
"bash",
"dotfiles"
],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "17 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 17
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 58,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 47,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 4.7
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 2.2,
"status": "partial",
"details": [],
"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/30 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": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.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 7",
"points": 3.5,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 7 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",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 7
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 7,
"unassessed_packages": 0,
"affected_by_severity": "none",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 7,
"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": 2
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 59,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.89,
"agent_instruction_files": [
".github/copilot-instructions.md",
"AGENTS.md"
],
"agent_instruction_max_bytes": 8831
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": ".github/copilot-instructions.md, AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".github/copilot-instructions.md, AGENTS.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "89 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 89,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".pylintrc",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".pylintrc"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 7",
"points": 7,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 76773,
"source_files_sampled": 261,
"oversized_source_files": 1
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Python without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "Python"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "1/261 source files over 60KB",
"points": 54.8,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 261,
"oversized": 1
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-27T21:52:14.028398Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/b/basefoundry/base.svg",
"full_name": "basefoundry/base",
"license_state": "custom",
"license_spdx": null
}