• v0.21.0 9da9c520e5

    v0.21.0
    Some checks failed
    ci / gate (pull_request) Has been cancelled
    drift / govulncheck (pull_request) Has been cancelled
    drift / surface-diff (pull_request) Has been cancelled
    drift / forgejo-smoke (pull_request) Has been cancelled
    ci / gate (push) Has been cancelled
    drift / govulncheck (push) Has been cancelled
    drift / surface-diff (push) Has been cancelled
    drift / forgejo-smoke (push) Has been cancelled
    Stable

    hexajon released this 2026-10-23 23:50:52 +00:00 | 19 commits to main since this release

    Changelog

    Features

    • e6c2355 feat!: a forge content write into an empty repo refuses and names madtea init
    • 2a800a8 feat!: a revert opens its own issue and its merge closes it
    • 32766ca feat!: every PR merge through madtea closes its branch issue, checked at the merge send seam
    • d1f2d7f feat!: every first push asks a person, with MCP answers bound to single-use request states, and finish creates a missing forge repo
    • f0fd1f4 feat!: finish makes a first push into an empty repo only after a person answers yes
    • 5c49073 feat!: finish takes no close inputs and refuses before the forge when its issue cannot close
    • cdd45dd feat!: repo topics are append-only
    • b7d810c feat: a repo create that seeds content asks the new-repo question, and an init suggestion shows only in the question text
    • d809cf8 feat: a revert retry reuses its open revert issue, and a later failure names that issue
    • 6e144cd feat: an unreadable forge needs a tracking ref before a push, and a revert retry reuses only safe leftovers
    • e21da27 feat: finish refuses an origin on another forge host and a dir= target with an empty forge repo
    • 977636c feat: read the dependency setting on a 404, and refuse an unknown state or a hidden dependency
    • c157c07 feat: run staticcheck and modernize before the heavy gate block, and stop on a finding
    • be46d0f feat: run the internal/docs tests in the docs-only gate, in parallel

    Bug Fixes

    • 6d788d5 fix!: clone reports the checked-out branch or tag, not a default branch (#684)
    • bd1bbd2 fix: clear the two staticcheck findings in the adr service
    • 37bd03d fix: decide the first push into an empty repo from the forge
    • eaf7733 fix: keep git push output off the process stdout and quiet under MCP
    • b190c6b fix: keep rendered-help records per command and check Short too
    • 069d6b5 fix: list only the called action's arguments on an unknown argument
    • 50002ae fix: name finish title and summary, and the search query concept on q
    • 05822ab fix: read call-string action sets from the served tool schemas
    • 67af3a1 fix: read every page of an issue's dependency list so an open dependency past page 1 refuses
    • c8598c0 fix: refuse a push refspec that begins with '+', so no push can force an update
    • 7d83504 fix: refuse a push with no local default and ask on an unparsable create body
    • 6aecd97 fix: resolve status identity through one resolver for every path
    • 07839d3 fix: resolve the repo edit suggestion command token (#813)
    • 87631fe fix: return a schema-valid empty result from madt_api_call
    • e814305 fix: route five git pushes through the guarded writer
    • ba9240c fix: run the dependency cycle check before blocks_add writes an edge
    • 9d75b87 fix: say finish summary fills the PR summary section, and make it optional in the prompt
    • 4607be5 fix: take the status host from the API forge resolution
    • 683fffe fix: update hono to 4.13.13 in the conformance harness lockfile for GHSA-5r4p-p66f-jhc7

    Documentation

    • 8f45074 docs: ADR 0036 names adr check --skip-forge-checks, and ADR 0044 drops the removed npm lockfile
    • 9954db6 docs: MCP init shows the agent's values as suggestions that a person confirms
    • aa2a181 docs: a person picks owner, name, and visibility when finish creates the forge repo
    • 611206e docs: accept ADR 0045 and ADR 0057
    • 31d5baf docs: accept ADR 0056, one git-run chokepoint owns output disposition (#806)
    • 357ee88 docs: accept ADR 0058, only madtea writes close and reopen words
    • f33cb11 docs: accept the docs-only gate record
    • 3274743 docs: accept the finish close-inputs record, with its record issue as the decision issue
    • 804b4cb docs: add ADR 0056, one git-run chokepoint owns output disposition (#806)
    • 1c8a122 docs: add ADR 0057, repo topics are append-only (#815)
    • ec96b58 docs: add ADR 0058, only madtea writes close and reopen words
    • 8296464 docs: add a glossary of the abbreviations the docs use
    • 8c4e2c7 docs: bind each MCP first-push answer to a question that madtea asked
    • 9308399 docs: cover every doc abbreviation in the glossary and lock it with a test
    • 66416f9 docs: describe the close rule for every merge and drop the stale close-input advice
    • b026523 docs: describe the person's yes for every first push, the init questions, and the empty-repo forge write refusal
    • 2321ea1 docs: document the gate's docs-only mode
    • 1ea9ee4 docs: drop line numbers from the repo setting record
    • c1e2be0 docs: drop the legacy numbering sentence from the adr help
    • cb96671 docs: every first push into an empty repo needs a person's yes
    • 56155b7 docs: extend the close rule to every merge path as one guard limit
    • 2dd82c7 docs: follow the MCP protocol standard for the person question, and name forks as seeded creates
    • b4eaeb7 docs: index ADR 0057, repo topics are append-only (#815)
    • fca4ae1 docs: link the repo-targeting map from the docs index
    • c81853b docs: map how each surface picks its repo, forge, and credential (#685)
    • 7708bfa docs: point the finish close record at its decision issue
    • 2877308 docs: point the multi-repo and close-word records at the finish close rule
    • f1a7cb7 docs: propose one repo setting that names a forge repo, with one meaning
    • 5f7b4f9 docs: propose that finish takes no close inputs and refuses before the forge
    • 432fa7f docs: remove the glossary and its tests
    • a82970e docs: require tests for new or changed behavior in CONTRIBUTING.md
    • 469fe91 docs: rule origin, request-state use, CLI proof, API first writes, revert retries, and dependencies off
    • 7ba7e43 docs: rule the five open points of the finish close-inputs record
    • cac2ad7 docs: rule the resumed-PR close line and the empty-repo first push for finish
    • bbb5df0 docs: rule the round-three open points of the first-push and revert rules
    • cc77380 docs: state the one-issue branch rule in the contributor notes
    • a8bb29e docs: state the real output disposition in the RunGitAuthDirWithStderr comment
    • 0069d11 docs: sync the ADR index row for 0056 to accepted
    • 690c227 docs: use a plain hyphen in the gate command line
    Downloads
  • v0.20.0 31693766e2

    v0.20.0
    Some checks failed
    drift / govulncheck (pull_request) Has been skipped
    drift / surface-diff (pull_request) Successful in 30s
    drift / forgejo-smoke (pull_request) Has been skipped
    ci / mcp-conformance (pull_request) Successful in 1m33s
    ci / mcp-conformance (push) Successful in -31s
    drift / govulncheck (push) Has been skipped
    drift / surface-diff (push) Successful in -39s
    drift / forgejo-smoke (push) Has been skipped
    ci / gate (push) Failing after 2m21s
    ci / gate (pull_request) Failing after 9m20s
    Stable

    hexajon released this 2026-10-18 05:28:05 +00:00 | 121 commits to main since this release

    Changelog

    Features

    • 33173cc feat(adr)!: #530 resolve cross-repo record links and rename the skip flag
    • f6fc229 feat(adr)!: adr check reads only the Decision issues list
    • fcff867 feat(adr): #492 group adr check problems by file with plain messages and JSON
    • f4a7763 feat(adr): #508 add adr rebuild and report index status/title drift
    • 8f514e4 feat(adr): #508 flag an index date drift in adr check
    • bc222e8 feat(adr): read a cross-forge decision-issue link on its own forge
    • 75f9c1a feat(adr): remove the legacy docs/adr layout
    • f5a8416 feat(adr): verify every file reference in a record
    • 5929085 feat(forge-test): #796 cache pinned binaries in a host store and copy them into the VM
    • 1c9eea6 feat(gate): scan every lockfile with osv-scanner
    • 975e6d1 feat(git): require git 2.38, run git in the C locale, and pin the porcelain format
    • 9dedee7 feat(guard): #653 add the guard package with its three write effects
    • 4e97354 feat(guard): #654 declare effects for every operation and spec endpoint
    • a702760 feat(guard): #659 route git pushes through a guarded writer
    • 999b838 feat(guard): #660 enforce the ADR 0046 forge write guard on the first-class CLI and MCP surfaces
    • b948530 feat(guard): #665 remove the default-branch commit override
    • 04f2520 feat(guard): #666 require forge proof before a removal destroys a ref
    • cb566d0 feat(guard): #784 #785 route the raw api passthrough through the write guard
    • 9f9ad88 feat(httpx): add the hardened HTTP client builder
    • 675f981 feat(install): one verifying install command
    • bccf0c2 feat(mcp): refuse owner_repo= forge writes to a populated repo outside the session's scope
    • 3667635 feat(serve): add pi (Oh My Pi) as a first-class MCP harness
    • 08a73e2 feat(testforge): #677 forge-test harness scaffolding (work in progress, not yet compiling)
    • 4c28163 feat(testforge): #677 test each forge at a baseline and latest version
    • b0606ed feat(testforge): #692 bring the forge-test VM standup into the repo

    Bug Fixes

    • 10f6646 fix(auth): strip userinfo from the URLs that whoami prints
    • 5d17aa8 fix(config)!: remove the legacy OAuth client-id fallback
    • fd7e0d6 fix(config): #715 run RequireSecureScheme in the env credential resolver
    • d870ef9 fix(config): key credentials by the forge host alone, per ADR 0025
    • 0dab4ac fix(config): refuse a token over non-loopback http on every config request
    • 7d33b59 fix(config): refuse a token over non-loopback http on every config request
    • de0de75 fix(config): require consent for the plaintext git helper, and URL-parse credential host keys
    • 571d05f fix(config): route the bootstrap HTTP client through internal/httpx
    • 871c75c fix(conformance): bump mcp SDK and proxy-addr past known CVEs
    • c18b0e6 fix(forge): provision removes stray VM devices and asserts the device set
    • d87ec34 fix(forge): reset via snapshot revert, drop the manual stop dance
    • 7de976a fix(forge): surface incus start and stop errors, stop swallowing them
    • 3981659 fix(gate): check only git-visible Go files for formatting
    • e06ed72 fix(gate): run the osv-scanner step on a copy of the files that git lists
    • c665828 fix(git): #710 guard tag create name and ref against a leading dash
    • 2460e6b fix(git): write a per-repo plaintext token only with recorded consent
    • 67998ab fix(gitea): #711 escape repo-flags path segments
    • ec55514 fix(gitea): escape every value joined into an API path or query
    • c3d5a96 fix(gosec): enforce G104, drop dead G704, record kept exclusions
    • 8890a34 fix(guard): #666 give the forge-reachable test worktree its own branch
    • 6a4bd2b fix(guard): #786 classify the diffpatch endpoint as a content write
    • 9494fce fix(http): strip the Authorization header on a non-same-origin redirect hop
    • f5c1cf0 fix(install.sh): read only primary fingerprints, and never run an unverified binary
    • aed5df0 fix(licenses): declare the vendored MADR templates, and fail on undeclared vendored licenses
    • 4a101f8 fix(mcp): bound the run_watch summary and stop the watch on cancel
    • 78b4336 fix(mcp): bump go-sdk to v1.8.0 so tool results carry resultType
    • f762fd5 fix(mcp): cap the inline artifact download at 10 MiB
    • 93edff6 fix(mcp): carry resultType on unknown-argument rejections
    • 9b15ef3 fix(mcp): lower the inline artifact download cap to 1 MiB
    • 597729a fix(mcp): remove serve KeepAlive that the current client drops
    • 5912825 fix(remote-add): route the credential write through the posture-aware helper
    • a752300 fix(scripts): cite the reason, not a tracker number, in shipped strings
    • 5e144e8 fix(test): stop a config test writing into the source tree
    • 7310b3d fix: reject leading-dash values passed to git in option position

    Refactors

    • 655929b refactor(forge): push the committed tree into the VM instead of mounting it
    • 69c965f refactor(gitea): build HTTP clients through internal/httpx
    • 4109bc7 refactor(guard): #654 use slices.Contains in effect membership checks
    • 4de3b7c refactor(setup): route the connectivity probe through internal/httpx

    Documentation

    • 2a93f4b docs(adr): 0052 keeps forge-test caches on VM-local disk
    • 9d22505 docs(adr): accept 0053, the gosec gate exclusions record
    • 647291f docs(adr): accept ADR 0049
    • 08d3f35 docs(adr): add ADR 0046 and 0047, accept 0039, and edit 0031, 0037, and 0043 in place
    • f1169f7 docs(adr): add proposed 0050 and 0051 for release-notes and attribution gates
    • 9029a95 docs(adr): add proposed ADR 0049 for the HTTP transport chokepoint
    • 1941c93 docs(adr): align ADR 0039 and WirePi output with official omp docs
    • 7065973 docs(adr): consolidate the decision records into their end-state form
    • 6a98932 docs(adr): forge tests run against throwaway Forgejo and Gitea servers
    • 25c5602 docs(adr): propose that the MCP surface reads no local files
    • cb2ae89 docs(adr): record that adr check enforces a stricter version of MADR 4.0.0 (0037)
    • 1c5a465 docs(adr): record the forge-test rules as 0052 and point 0014/0017/0022 at it
    • 2d42584 docs(adr): track the ADR 0039 phase-2 follow-ups as issues
    • bdbf046 docs(adr): write ADR 0039 with plain hyphens
    • 01f3e6f docs(ci): state that the CI checks on main are advisory
    • d11ad0e docs(mcp): use a plain hyphen in the madt_branches_remote description
    • 69c2eab docs(security): report vulnerabilities by email only
    • f4f7d02 docs: finish a green branch at once, never hold or batch
    • 0c07f78 docs: replace undefined acronyms and invented jargon with plain language

    Other

    • efbc3bb build(gate): time-box staticcheck while it lacks Go 1.27.2 support
    • b1f9ad6 revert(gate): restore ADR 0039 to proposed — acceptance is the decision-maker's call
    • 2fdf502 style: apply gopls quick fixes
    • 9651258 style: apply the gopls quick fixes and fix their stale comments
    • c33a0a7 style: restore the whoami dash and fix the failResult comment
    Downloads
  • v0.19.0 05eb2ac9a9

    v0.19.0
    Some checks failed
    drift / govulncheck (pull_request) Has been skipped
    drift / surface-diff (pull_request) Successful in 1m10s
    drift / forgejo-smoke (pull_request) Has been skipped
    ci / mcp-conformance (pull_request) Successful in 2m6s
    ci / mcp-conformance (push) Successful in 13s
    drift / govulncheck (push) Has been skipped
    drift / surface-diff (push) Successful in 4s
    drift / forgejo-smoke (push) Has been skipped
    ci / gate (push) Failing after 3m22s
    ci / gate (pull_request) Successful in 15m22s
    Stable

    hexajon released this 2026-09-15 21:54:58 +00:00 | 233 commits to main since this release

    Signed by hexajon
    GPG key ID: 6E62A0A72715C1F6

    Changelog

    Features

    • 6bb5726 feat(adr): MADR 4.0.0 tooling for adr new/check, plus a new adr init
    • 9bce364 feat(git): pre-push signature guard gated on the target repo's require_signed_commits protection (#425 item 2)
    • 8f3fce5 feat(prs)!: remove force_merge/--admin, madtea never overrides required CI checks
    • 0435be6 feat(repos): show a mirror's upstream source and last sync in repos get

    Bug Fixes

    • 05eb2ac fix(adr): rename check --offline to --skip-remote-issues; CI checks only the record files
    • 3b88964 fix(finish): attach the reconcile steer to the out-of-date-with-base merge failure, still non-retryable (#456)
    • b924051 fix(git): let the forge judge commit signatures, refuse only unsigned commits locally
    • 96971c3 fix(prune): give squash-merged remote twins their own result class and heading, drop the dead skipRemotes guard (#449)

    Documentation

    • 7d9ac46 docs(adr): amend 0033, the forge edge is open to the Go proxy and the GOPRIVATE note is retired (#440)
    • bba01b3 docs(adr): migrate the decision records to MADR 4.0.0 under docs/decisions
    • 5a89e5f docs(adr): record the fork-PR CI trust model (0035)
    • 4c6f88c docs(readme): add the OpenSSF Best Practices badge

    Other

    • 147ae9c wip(adr): #483 MADR 4.0.0 tooling build output (pre-fix-round checkpoint)
    Downloads
  • v0.18.5 adc32d8c18

    v0.18.5
    All checks were successful
    drift / govulncheck (push) Has been skipped
    drift / surface-diff (push) Successful in -2s
    ci / gate (push) Successful in 22m39s
    drift / govulncheck (pull_request) Has been skipped
    drift / surface-diff (pull_request) Successful in 1m8s
    drift / forgejo-smoke (pull_request) Has been skipped
    ci / mcp-conformance (pull_request) Successful in 1m53s
    ci / mcp-conformance (push) Successful in 7s
    drift / forgejo-smoke (push) Has been skipped
    ci / gate (pull_request) Successful in 24m1s
    Stable

    hexajon released this 2026-09-09 21:45:10 +00:00 | 247 commits to main since this release

    Signed by hexajon
    GPG key ID: 6E62A0A72715C1F6

    Changelog

    Features

    • 3962268 feat(finish): schedule auto-merge-on-green when a merge is gated on required CI checks (#438)

    Bug Fixes

    • 301ef4e fix(commit): count files for a root commit with diff-tree --root (#454)
    • f09a263 fix(finish): surface real merge errors verbatim, classify non-retryable, re-check landed state after a 5xx (#456)
    • c7b23f7 fix(prune): classify a does-not-exist 500 on remote branch-delete as already-gone, not an error (#449)
    • 680d199 fix(status): report the repo's own origin host in status --json, not the auth target (#429)

    Documentation

    • adc32d8 docs(adr): record isolation and signing posture decisions (amend 0013, 0019, 0027)
    • 9357db9 docs: group the madtea init CLI command under Setup, matching the madt_init MCP tool (#399)
    Downloads
  • v0.18.4 abcea1257d

    v0.18.4
    All checks were successful
    drift / govulncheck (pull_request) Has been skipped
    drift / surface-diff (pull_request) Successful in 54s
    drift / forgejo-smoke (pull_request) Has been skipped
    ci / mcp-conformance (pull_request) Successful in 2m9s
    ci / mcp-conformance (push) Successful in 2s
    drift / govulncheck (push) Has been skipped
    drift / surface-diff (push) Successful in -6s
    drift / forgejo-smoke (push) Has been skipped
    ci / gate (push) Successful in 12m42s
    ci / gate (pull_request) Successful in 17m51s
    Stable

    hexajon released this 2026-08-27 02:51:26 +00:00 | 255 commits to main since this release

    Signed by hexajon
    GPG key ID: 6E62A0A72715C1F6

    Changelog

    Features

    • 0e6f827 feat(git): resolve commit author/committer from the target repo's local config and add a pre-push identity guard (#425 item 1)
    • 5736e90 feat(help): add init help topic and route madt_init to cli-setup
    • 0fc7f6c feat(mcp): adopt the 2026-07-28 protocol (go-sdk v1.6.1 -> v1.7.0)
    • f3d81ee feat(prune): dry run previews the full set, incl. remote-only orphans
    • 90c68c2 feat(release): narrow plugin vendor to hooks+skills, idempotent, marketplace-owned manifest
    • 9881998 feat(repo): add branch-protection set (create-or-update upsert)
    • 077e467 feat(repos): add fast-forward-only and rebase-explicit merge flags; fix allow_rebase_update description; cross-reference branch protection (#431, #432)
    • 4e6fb7b feat: home distribution and the self-updater to cheshirecube

    Bug Fixes

    • 7224170 fix(config): resolve the forge from the working context, not a stale global default
    • 87f9c08 fix(conformance): mark the ambiguous-forge probe's expected server ERROR log
    • abcea12 fix(install): use Forgejo's releases/download/latest URL, not GitHub's latest/download (404s on the forge)
    • d5f4d80 fix(pull): allow the first fast-forward into an unborn branch
    • b3b11bf fix(release): pin the plugin-vendor commit to the public author identity
    • b8a0382 fix(repos): rename --allow-ff-only to --allow-rebase-update, matching the live forge field allow_rebase_update it sets

    Refactors

    • ef0e688 refactor: migrate module path to madtea.lol and repoint distribution to the GitHub edge

    Documentation

    • 7b32350 docs: document the release PAT storage and rotation via systemd-creds (#380)
    • 7b1f4a1 docs: record public-home + GitHub-edge decision (ADR 0032, #380)
    • 53f9486 docs: remove pre-launch hedging now the forge and madtea.lol are live
    • b95d434 docs: scope the release PAT credential name to madtea-release-pat (#380)
    • 4b410d0 docs: store the release PAT via read+printf to avoid a stray newline (#380)
    Downloads
  • v0.18.3 8318d0d39f

    v0.18.3 Stable

    hexajon released this 2026-07-28 17:42:56 +00:00 | 284 commits to main since this release

    Signed by hexajon
    GPG key ID: 6E62A0A72715C1F6

    Changelog

    Features

    • 7089fb4 feat(clone): diagnose directory-already-exists with origin comparison (#350)
    • 11d52a4 feat(git): loud what/why/action messaging on the local git and finish surfaces
    • 5c0fe35 feat(issues): add owner_repo= to madt_issues action=import (#351)

    Bug Fixes

    • c8817cf fix(clone): correctly diagnose same-repo when using shorthand; mask URL credentials in requested-display
    • 6854adf fix(clone): dir-exists diagnosis requires the dir to be its own repo root (#350)
    • 91ff288 fix(hooks): steer git pull and stop compound chains slipping the branch-d guard (#352)
    • 0b3d43b fix(import): add path-traversal and injection guards to CLI --repo path, shared via util.ValidateOwnerRepoSegments, and add routing coverage test

    Documentation

    • ef90eeb docs(mcp): clarify ; vs , in expr param description for deps_add (#353)
    • d8c03e4 docs(security): drop the pre-release reporting note now the repo is public

    Other

    • 6baf3b1 style(opspec): plain hyphen in the expr separator one-liner
    Downloads
  • v0.18.2 15ad1cd756

    v0.18.2 Stable

    hexajon released this 2026-07-22 18:54:19 +00:00 | 297 commits to main since this release

    Signed by hexajon
    GPG key ID: 6E62A0A72715C1F6

    Changelog

    Features

    • 65c35d1 feat(ssh): clone over SSH natively in ssh modes - no HTTPS URL construction, no credential resolution
    • b68707f feat(ssh): create pull requests over AGit in ssh-only mode
    • 61ee200 feat(ssh): finish and push legs over SSH in ssh modes; API legs gate on the token

    Bug Fixes

    • fa3c00d fix(auth): ssh-only login names a leftover stored token instead of stranding it silently
    • 645baef fix(orchestrate): enforce the batch-merge pre-flight; bisect errors record a Failure

    Documentation

    • 07d5886 docs(claims): update orchestrate rows for the landed #331/#332 fixes
    • ced7a0a docs(setup): ssh-only ignores a passed --token rather than rejecting it
    • c5cb020 docs(ssh): SSH-first setup path as a peer of the token path (#299)
    • d7fbeb1 docs: CLAIMS.md behavioral-promise register with a staleness guard
    Downloads
  • v0.18.1 5298e6d6c0

    v0.18.1 Stable

    hexajon released this 2026-07-22 17:51:20 +00:00 | 311 commits to main since this release

    Signed by hexajon
    GPG key ID: 6E62A0A72715C1F6

    Changelog

    Features

    • fab96f4 feat(docs): every generated reference page opens with a plain-English summary
    • 7967f8a feat(finish): rerun promise pinned end to end; stale index.lock self-heals or teaches
    • 9476f0a feat(releases): asset download lists every downloaded file with sizes
    • 155bd0f feat(ssh): auth-side SSH preflight - key presence, known_hosts steer, identity probe
    • f5a5797 feat(ssh): protocol mode - persisted git-protocol choice at auth login
    • 5298e6d feat(ssh): typed degradation errors for API-dependent commands in ssh-only mode

    Bug Fixes

    • 7a771c2 fix(actions): unshadow the per-run artifact listing as run-artifacts; guard sibling name collisions
    • f3d886b fix(ci): drop the workflow permissions field - Forgejo ignores it with a warning
    • 09d8653 fix(finish): leftover trailer names files and tree path (#309)
    • f5230ad fix(git): stale-lock recovery covers commit and worktree-add legs; re-stat before removal
    • 02df6e1 fix(guides): remove fabricated flags from tour pages
    • 9480d73 fix(mcp): worktrees rebase summary back under the anti-bloat ceiling
    • 50f1056 fix(prune): deletion output names every deleted branch; preview-first hint for the widened --remote set
    • 0b7b9ff fix(security): bind host-agnostic tokens to a recorded forge host
    • 4ae93bc fix(security): foreign-guard use-ssh dir=, 0600 analytics log, no exec of user-writable stale candidates, redact 403 hint
    • b1a79dd fix(ssh): strip control chars from the probe greeting; success line names the trust boundary
    • b9179ca fix(users): emails delete confirmation names the deleted addresses

    Documentation

    • 947154f docs(#315): backtick-quote angle-bracket placeholders in prose
    • 68a8287 docs(guides): add install.md as canonical install home; slim README to headline one-liner
    • 9b0e1fd docs(guides): move README workflow tours into docs/guides (#316)
    • aba7ae1 docs(install): adopt the voiced Take a Seat install guide as the canonical text
    • 6e3ac7b docs(install): restore the update --verify drift-repair pointer
    • 3cb9148 docs(mcp): restore the two trimmed description fragments; hyphen frees the byte budget
    • ba1b31f docs(public): neutralize private forge hostname in fixtures; retire Gemini from all live client listings
    • c9dc42b docs(public): reword decision attributions to neutral voice; neutralize private example paths
    • ee75221 docs(security): updater trust model + sudoers caveat in SECURITY.md; honest ADR 0027 residual-risk boundary
    • 13aceba docs: canonical install guide at docs/guides/install.md; README leans on madtea.lol
    • abdb2aa docs: mark legacy pre-migration tracker refs as non-autolinking (legacy tracker NNNN)
    • 3c42976 docs: short ADR titles, dead-tracker purge, and render fixes from the docs-site review

    Other

    • 1125c31 harden(mcp): structurally repo-scope the dir= report client
    • 55f5c2e sec(auth): OAuth-minted PATs default to least privilege - Standard tier + read:organization
    • 75dfab1 ux(branch): success lines state the delete was safe - merged, and where the commits live
    Downloads
  • v0.18.0 f65580a560

    v0.18.0 Stable

    hexajon released this 2026-07-19 00:23:35 +00:00 | 359 commits to main since this release

    Signed by hexajon
    GPG key ID: 6E62A0A72715C1F6

    Changelog

    Features

    • 273c57b feat(auth): add forge-URL resolution chain to whoami output (#201)
    • 20f87df feat(auth): madt_auth_whoami dir= local-resolution identity report (#155)
    • ca53f60 feat(clients)!: retire gemini client to a deprecation stub, verify antigravity wiring (#226)
    • 027c144 feat(commit)!: refuse committing on the default branch by default
    • 507b9e6 feat(mcp): add release and reconcile workflow prompts (#242)
    • d79e0c9 feat(release): patch tier for 0.x feats + 24h daily-cap gate (#244)
    • f86f867 feat(release): shipped-prunable report + --prune opt-in (#221)
    • 62c0ee3 feat(status/finish): warn when default branch is ahead of origin (#224)

    Bug Fixes

    • 569298b fix(docs): index rows for toolless Intro-bearing domains - destructive.md rejoins the generated reference index

    Documentation

    • 66641ff docs(arch): add prompts-vs-skills boundary note and drift guard (#241)
    • 3d162d3 docs(architecture): sweep six drift candidates against current code (#246)
    • 50fecb1 docs(release): correct stale breaking-weight comments to 15 in the reporter headers
    • e85f199 docs(release): fix stale 0.x tier descriptions - remove feat-bumps-minor from releasing.md:189, release.sh header, and ADR index (#244)
    • f65580a docs: public-release accuracy sweep - every prose doc reconciled with current code
    • a0f263b docs: repo-wide cross-link sweep (#245)

    Other

    • 9a93e99 merge main: COMPARISON rows union - whoami dir= clause plus gemini retirement
    • 211733d merge main: union of the boundary drift guard (#241) with the release/reconcile prompts - guard covers the new prompts
    Downloads
  • v0.17.0 aebfa7250a

    v0.17.0 Stable

    hexajon released this 2026-07-17 18:49:04 +00:00 | 377 commits to main since this release

    Signed by hexajon
    GPG key ID: 6E62A0A72715C1F6

    Changelog

    Features

    • f00d40b feat(auth): whoami split-brain cross-check + full resolution chain (#200 #201)
    • b3938d4 feat(cli): add worktree status and rebase subcommands (#170)
    • 0a8573b feat(delete)!: omit all irreversible forge-data deletes from every surface (#209)
    • 7ab4037 feat(install)!: mcp-config prints only; all client wiring moves to madtea install
    • 343a046 feat(install): consolidate setup under install for #172
    • 0ce0669 feat(install): replace --yes with --yes-sudo and --yes-delete-stale (#204)
    • db218e6 feat(release): add windows/arm64 to build matrix (#161)
    • 2109b17 feat(release): tier-weighted score + train-grace gate (#217, #218)
    • 84a5e8c feat(worktree)!: align CLI add with git's signature (-b creates, positional checks out) (#171)
    • 5af4dcc feat(worktree)!: remove force-discard from both surfaces (#208)

    Bug Fixes

    • 354947e fix(actions): bridge run_number/id mismatch, limit passthrough, strip event_payload (#157)
    • 08b7116 fix(clone): treat full-URL clone host as the forge (#197)
    • 74ca99f fix(errors): context-rich repo-scoped 404s + live Forgejo marker (#199, #185)
    • b3fbd57 fix(mcp-config): --install for the Claude Code target refuses with a pointer, never exits 0 having installed nothing
    • 0bf65c6 fix(release): breaking weighs 15 - one pending breaking change crosses the soft line alone; add release-due banner tests
    • 23d3350 fix(release): herestring the tier greps - pipefail + grep -q SIGPIPE silently dropped feat/breaking detection
    • ea394d2 fix(worktree): sweep force from CLI revert conflict rail (#208)

    Refactors

    • 0754ebd refactor(cmd): unify service construction - drop gitea.NewClient in cmd layer (#192)
    • 182a96d refactor(install): drop dead confirm() - consentOrDecline owns consent; test promptYesNo directly

    Documentation

    • 1a83a97 docs(adr): ADR 0031 - recoverable-guard tier: refuse wrong-workflow acts, per-call allow override
    • 0da9ed0 docs(adr): restore ADR navigability stripped by cc3fa200 + 8e3a5d5d sweeps
    • ce59f32 docs(install): fix README no-TTY description for #204 flag split
    • 214f2a4 docs(release): update cadence docs for score-based gate and train-grace (#217, #218)

    Other

    • aebfa72 merge main: ADR index carries both 0030 and 0031
    • 2cfd4ba merge main: keep whoami enrichment, take post-#172 mcp-config row
    • 9f0483e merge main: reconcile worktree force-removal (#208) with git-signature add (#171) and hook-flow removal (#172)
    • f244254 merge main: retire the elicitation seam (both consumers gone via #208+#209), reconcile README to strict-omission
    Downloads