Skip to content

Releases: Laaaaksh/writ

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 22 Aug 03:55
cd371ba

Changelog

  • cd371ba Merge pull request #23 from Laaaaksh/gnhf/get-writ-ready-for-p-e732ec
  • 9d4dafc gnhf 59: Discovered and fixed a security-readiness defect missed by all 58 prior iterations: released writ binaries were compiled by EOL Go 1.22 because both workflows resolve their toolchain from go.mod's go directive, so the directive was bumped to supported Go 1.26 with full validation.
  • 0bb5504 Merge pull request #22 from Laaaaksh/gnhf/get-writ-ready-for-p-e732ec
  • 6ca76d0 gnhf 57: Audited the never-checked live Homebrew formula with Homebrew's own tooling, found brew style/brew audit --strict offenses, and fixed the two configurable ones in .goreleaser.yml (article-leading description, non-idiomatic test block), proving the corrected formula style-clean and its test block executable end to end.
  • e66c598 Merge pull request #21 from Laaaaksh/gnhf/get-writ-ready-for-p-e732ec
  • ff623d0 gnhf 54: Audited whether iterations 52–53's durable discoveries had propagated into project memory, found AGENTS.md silent on both master's new branch-protection regime and the CodeQL workflow, and recorded both concisely in AGENTS.md after re-verifying full public-release closure at HEAD (build/vet/gofmt/tests green, all CI+CodeQL runs successful, v0.2.3 still latest release, 0 open PRs/issues/code-scanning alerts, local == origin/master == 6e7537c).
  • 6e7537c Merge pull request #20 from Laaaaksh/gnhf/get-writ-ready-for-p-e732ec
  • 0e2ae6b gnhf 52: Closed the last unaudited security-posture surface — GitHub code scanning was never configured despite iterations 43–46 enabling every other security feature — by adding a validated advanced-setup .github/workflows/codeql.yml (least-privilege, codeql-action@v4, go+actions languages) after the default-setup API rejected the repo's OAuth token.
  • b52a8df Merge pull request #19 from Laaaaksh/docs/contributing-fork-pr-flow
  • 2ed1c67 docs: document fork-and-PR contribution flow under branch protection
  • 6a5ecab Merge pull request #18 from Laaaaksh/gnhf/get-writ-ready-for-p-e732ec
  • e15e104 gnhf 49: Closed iteration 46's flagged at-tag @v7 proof by acting on the sole warning annotation from the v0.2.3 GoReleaser run — pinning goreleaser-action's deprecated version: latest to "~> v2" in release.yml — and completed the never-checked pkg.go.dev verification for v0.2.3 plus fresh closure sweeps.

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 22 Aug 02:26
83b726b

Changelog

  • 83b726b Merge pull request #17 from Laaaaksh/gnhf/get-writ-ready-for-p-e732ec
  • 7753cb8 gnhf 47: Fixed a critical-path bug where writ merge from a linked git worktree (the primary agent workflow) printed an "Auto-mergeable" verdict and then died on git's raw "'main' is already used by worktree" fatal, replacing it with a pre-flight guard that refuses with actionable detach-or-remove instructions, plus CI tests and README documentation.
  • a51ef6a Merge pull request #16 from Laaaaksh/dependabot/github_actions/goreleaser/goreleaser-action-7
  • 88ab9c0 Bump goreleaser/goreleaser-action from 6 to 7
  • 0459f49 Merge pull request #15 from Laaaaksh/gnhf/get-writ-ready-for-p-e732ec
  • 9e358da gnhf 45: Closed the last unaudited maintenance axis by adding .github/dependabot.yml (weekly gomod + github-actions version updates — the one Dependabot capability requiring a config file, never configured despite iteration 43's settings-side toggles), validating it against the official schemastore JSON Schema, documenting it in AGENTS.md, and re-verifying full release closure at HEAD.
  • 0e561fb Merge pull request #14 from Laaaaksh/gnhf/get-writ-ready-for-p-e732ec
  • f2ffeea gnhf 43: Closed the previously unaudited security-posture axis of the public release: enabled Dependabot vulnerability alerts, automated security fixes, and private vulnerability reporting on Laaaaksh/writ via the API (secret scanning and push protection were already on), and added the repo's first SECURITY.md with an accurate private-disclosure channel and writ-specific scope notes, after re-verifying fresh-state closure with a green -race suite and a clean fresh govulncheck.
  • b2ef73d Merge pull request #13 from Laaaaksh/gnhf/get-writ-ready-for-p-e732ec
  • 562cb65 gnhf 39: Fixed two public-release first-run defects — writ claiming "not inside a git repository" when git itself is missing from PATH, and the README's false "no runtime dependencies" claim (writ requires git + POSIX sh, ships for macOS/Linux only) — plus proved the last never-verified README claim (fish completion loading) natively on macOS and audited that no local-only files ever leaked into the public repo history.

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 22 Aug 01:32

Changelog

  • 562cb65 gnhf 39: Fixed two public-release first-run defects — writ claiming "not inside a git repository" when git itself is missing from PATH, and the README's false "no runtime dependencies" claim (writ requires git + POSIX sh, ships for macOS/Linux only) — plus proved the last never-verified README claim (fish completion loading) natively on macOS and audited that no local-only files ever leaked into the public repo history.
  • beeee02 gnhf 36: Hardened the last unscoped release surface by adding least-privilege permissions: contents: read to ci.yml (release.yml already self-scoped), then re-verified full closure: suite green under -race -count=3, build/vet/gofmt clean, v0.2.0 still latest live release with 0 open issues/PRs and an accurate README.
  • fded824 gnhf 32: Landed the public release end to end: pushed the final branch commit, verified PR #10 green with v7 action pins, merged it to master, cut v0.2.0 (goreleaser published brew formula + 4 platform binaries), proved both README install paths and the full documented lifecycle against the released binary, and fixed a discovered README bug where current Homebrew refuses untapped third-party formulas without an explicit trust step.
  • 39a0bf0 gnhf 31: Pushed the run's 27 local-only fix commits to origin and opened PR #10 to master (CI green, mergeable), closing the "land on master" prerequisite every prior iteration flagged as the sole remaining release step, plus bumped both workflows off Node-20-deprecated action pins and added the missing README CI badge.
  • 1e94659 gnhf 30: Documented writ's two remaining user-facing surfaces for public release — shell completions and script-friendly color behavior — after verifying them end to end, catching that the conventional bash source <() idiom silently fails on macOS's stock bash 3.2 and using a verified-working idiom instead.
  • a1ea7f3 gnhf 29: Fixed a real bug where writ's exclude-seeding defense silently did nothing inside linked git worktrees (agents' primary workflow): the rule was written to the per-worktree gitdir that git never reads, so blanket git add -A would track .writ/current.toml and trip the tracked-state breakage decide() guards against.
  • 2e8dfa7 gnhf 28: Added the missing conventional --version/-v root flag (previously "unknown flag") printing byte-identical output to writ version, locked it into CI, documented it in the README, and completed the run's first govulncheck scan (clean).
  • 509db89 gnhf 27: Audited the last unaudited release surfaces — goreleaser packaging prerequisites (go mod tidy hook cleanliness, full darwin/linux × amd64/arm64 cross-compile matrix, ldflags version stamping), GitHub repo metadata (set 8 discoverability topics on the public repo), and the now-stale AGENTS.md gh-profile claim — finding no code defects requiring changes.
  • 15b8107 gnhf 26: Re-proved the complete README-documented lifecycle end-to-end at HEAD after all 25 prior fix iterations and fixed a misleading-doc gap exposed by following the README literally: step 3 never said to create a feature branch off base or commit the work, so a literal reading hits writ's own refusals instead of the documented flow.
  • daee5a7 gnhf 25: Closed the tracked-writ-state release gap flagged by iteration 24: committing .writ/current.toml (e.g. blanket git add -A during implement) previously made status render a false "Auto-mergeable" verdict before merge died on raw git checkout errors, or silently left base dirty with a stale tracked copy after merging; writ now prevents tracking at propose time and refuses it with untrack guidance at decision time.
  • ea6db44 gnhf 24: Closed iteration 23's flagged polish item by adding strict unknown-key rejection to both author-controlled TOML paths — propose draft intake and approve's $EDITOR round-trip via a new exported writ.Parse — so typo'd keys like "titel" or a renamed [verrify] table are named outright instead of being silently dropped and resurfacing as misleading empty-field validation errors, while writ.Load deliberately stays lenient for Save-written state so version skew cannot strand an open writ.
  • 3166b22 gnhf 23: Closed an intake trust hole on the critical path where propose/approve accepted criteria arriving pre-assessed (met/attestation already set), letting an agent self-bless its own acceptance claims through approve --yes in violation of the README's attest-after-approval rule, via a new writ.Writ.ValidateProposal intake validator with tests, docs, and e2e proof.
  • f0a6c14 gnhf 22: Fixed the fourth vacuous-drift axis: driving a writ from its own base branch reported "Auto-mergeable" exit 0 (drift blind to commits on base) before merge — even --approve — died on a raw already-on-base refusal; decide() now refuses both commands up front with actionable guidance, with tests, e2e proof, and README documentation.
  • 945bee9 gnhf 21: Closed the base axis of writ's vacuous-drift defenses: drift.Compute now refuses a writ whose declared base doesn't resolve to a commit before diffing, turning the raw git plumbing dump users saw for a typo'd base into an actionable message and closing the hole where a blanked base made every committed change silently vanish from drift reports.
  • 66d9a03 gnhf 20: Closed the last untested documented workflow state - the proposed-but-unapproved writ between README loop steps 1 and 2 - by proving status/merge behavior end to end with a real binary and locking both the needs-human refusal and the merge --approve override into CI.
  • a8f98e7 gnhf 19: Closed the scope-axis vacuous-drift hole: status and merge now refuse an approved-but-tampered writ whose declared scope covers the whole repo, instead of reporting zero drift and rendering "Auto-mergeable" for arbitrary unreviewed changes.
  • a5b2a15 gnhf 18: Closed a validation gap on the propose critical path where criteria with empty or whitespace-only ids/text passed Validate — producing writs addressable only via attest "" with anonymous status rows — by requiring every criterion to have a non-empty id and text, with tests and end-to-end proof.
  • 6e91ac2 gnhf 17: Fixed a vacuous-truth auto-merge bug where a writ whose acceptance criteria were deleted (reachable via approve's documented invalid-edit path that leaves the broken file on disk) passed status as "all criteria met" exit 0 and could merge unchecked; gate.Decide now requires at least one criterion, so such a writ needs-human with an explicit reason.
  • 9b48675 gnhf 16: Fixed a config-sensitivity bug where writ's dirty-tree merge guard silently weakened for users with git's status.showUntrackedFiles=no set, and hardened the test suite against contributor machines with global signing configs.
  • 8540ce5 gnhf 15: Locked the last user-visible rendering surfaces into CI — the singular drift line, mixed/pure-deletion change summaries, and the previously untestable ANSI color verdict paths — via a small injectable-color seam in render.Status, then proved all of them end to end against real git data and a real pty terminal.
  • d85108d gnhf 14: Closed the corrupt-state escape-hatch gap across all six writ-reading commands and locked the last documented-but-untested merge refusal paths into CI, then validated the whole repo under -race for the first time since iteration 7.
  • cad8ff4 gnhf 13: Closed the last undocumented user-facing surface: the WRIT_VERIFY_TIMEOUT knob (10-min default) that governs verification on the critical auto-merge path is now documented in the README, named in the timeout message users actually see in status output, and hardened against the WRIT_VERIFY_TIMEOUT=0s footgun that would previously have killed every verification instantly.
  • 5c032be gnhf 12: Closed the last untested surface - the cobra command tree itself - by adding cmd/writ/root_test.go integration tests that drive the real dispatch path (SetArgs -> Execute), locking registration of all 8 documented subcommands, all 5 documented flags' wiring, bare-invocation help, unknown-command failure, exit-code-2 propagation, and the full documented propose --file -> approve --yes -> attest --note -> status -> merge lifecycle into CI.
  • 1175b66 gnhf 11: Fixed a real documentation bug in the freshly added Exit codes section - the README claimed exit code 2 ("no writ is open") comes only from status/merge/discard, but approve, attest, and unattest also return 2 on that exact condition - corrected it to name all six commands, and locked the two never-tested attest/unattest exit-2 paths into the Go test suite.
  • b057c78 gnhf 10: Fixed the last first-run UX trap - bare writ propose in an interactive terminal no longer hangs silently forever but refuses up front with an actionable message naming both remedies - and documented writ's designed 0/1/2 exit-code contract in the README so agents can script it.
  • 86ed36c gnhf 8: Closed the last critical-path UX gap — propose over a corrupt .writ/current.toml now points at writ discard instead of a raw TOML error — and locked four previously untested documented behaviors into the Go test suite: gitMerge's already-on-base and detached-HEAD refusals, runMerge's full happy...
Read more

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 22 Aug 01:10
24d66fb

Changelog

  • 24d66fb Merge pull request #12 from Laaaaksh/gnhf/get-writ-ready-for-p-e732ec
  • beeee02 gnhf 36: Hardened the last unscoped release surface by adding least-privilege permissions: contents: read to ci.yml (release.yml already self-scoped), then re-verified full closure: suite green under -race -count=3, build/vet/gofmt clean, v0.2.0 still latest live release with 0 open issues/PRs and an accurate README.
  • 716c87f Merge pull request #11 from Laaaaksh/gnhf/get-writ-ready-for-p-e732ec
  • fded824 gnhf 32: Landed the public release end to end: pushed the final branch commit, verified PR #10 green with v7 action pins, merged it to master, cut v0.2.0 (goreleaser published brew formula + 4 platform binaries), proved both README install paths and the full documented lifecycle against the released binary, and fixed a discovered README bug where current Homebrew refuses untapped third-party formulas without an explicit trust step.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 22 Aug 00:32
30baf48

Changelog

  • 30baf48 Merge pull request #10 from Laaaaksh/gnhf/get-writ-ready-for-p-e732ec
  • 39a0bf0 gnhf 31: Pushed the run's 27 local-only fix commits to origin and opened PR #10 to master (CI green, mergeable), closing the "land on master" prerequisite every prior iteration flagged as the sole remaining release step, plus bumped both workflows off Node-20-deprecated action pins and added the missing README CI badge.
  • 1e94659 gnhf 30: Documented writ's two remaining user-facing surfaces for public release — shell completions and script-friendly color behavior — after verifying them end to end, catching that the conventional bash source <() idiom silently fails on macOS's stock bash 3.2 and using a verified-working idiom instead.
  • a1ea7f3 gnhf 29: Fixed a real bug where writ's exclude-seeding defense silently did nothing inside linked git worktrees (agents' primary workflow): the rule was written to the per-worktree gitdir that git never reads, so blanket git add -A would track .writ/current.toml and trip the tracked-state breakage decide() guards against.
  • 2e8dfa7 gnhf 28: Added the missing conventional --version/-v root flag (previously "unknown flag") printing byte-identical output to writ version, locked it into CI, documented it in the README, and completed the run's first govulncheck scan (clean).
  • 509db89 gnhf 27: Audited the last unaudited release surfaces — goreleaser packaging prerequisites (go mod tidy hook cleanliness, full darwin/linux × amd64/arm64 cross-compile matrix, ldflags version stamping), GitHub repo metadata (set 8 discoverability topics on the public repo), and the now-stale AGENTS.md gh-profile claim — finding no code defects requiring changes.
  • 15b8107 gnhf 26: Re-proved the complete README-documented lifecycle end-to-end at HEAD after all 25 prior fix iterations and fixed a misleading-doc gap exposed by following the README literally: step 3 never said to create a feature branch off base or commit the work, so a literal reading hits writ's own refusals instead of the documented flow.
  • daee5a7 gnhf 25: Closed the tracked-writ-state release gap flagged by iteration 24: committing .writ/current.toml (e.g. blanket git add -A during implement) previously made status render a false "Auto-mergeable" verdict before merge died on raw git checkout errors, or silently left base dirty with a stale tracked copy after merging; writ now prevents tracking at propose time and refuses it with untrack guidance at decision time.
  • ea6db44 gnhf 24: Closed iteration 23's flagged polish item by adding strict unknown-key rejection to both author-controlled TOML paths — propose draft intake and approve's $EDITOR round-trip via a new exported writ.Parse — so typo'd keys like "titel" or a renamed [verrify] table are named outright instead of being silently dropped and resurfacing as misleading empty-field validation errors, while writ.Load deliberately stays lenient for Save-written state so version skew cannot strand an open writ.
  • 3166b22 gnhf 23: Closed an intake trust hole on the critical path where propose/approve accepted criteria arriving pre-assessed (met/attestation already set), letting an agent self-bless its own acceptance claims through approve --yes in violation of the README's attest-after-approval rule, via a new writ.Writ.ValidateProposal intake validator with tests, docs, and e2e proof.
  • f0a6c14 gnhf 22: Fixed the fourth vacuous-drift axis: driving a writ from its own base branch reported "Auto-mergeable" exit 0 (drift blind to commits on base) before merge — even --approve — died on a raw already-on-base refusal; decide() now refuses both commands up front with actionable guidance, with tests, e2e proof, and README documentation.
  • 945bee9 gnhf 21: Closed the base axis of writ's vacuous-drift defenses: drift.Compute now refuses a writ whose declared base doesn't resolve to a commit before diffing, turning the raw git plumbing dump users saw for a typo'd base into an actionable message and closing the hole where a blanked base made every committed change silently vanish from drift reports.
  • 66d9a03 gnhf 20: Closed the last untested documented workflow state - the proposed-but-unapproved writ between README loop steps 1 and 2 - by proving status/merge behavior end to end with a real binary and locking both the needs-human refusal and the merge --approve override into CI.
  • a8f98e7 gnhf 19: Closed the scope-axis vacuous-drift hole: status and merge now refuse an approved-but-tampered writ whose declared scope covers the whole repo, instead of reporting zero drift and rendering "Auto-mergeable" for arbitrary unreviewed changes.
  • a5b2a15 gnhf 18: Closed a validation gap on the propose critical path where criteria with empty or whitespace-only ids/text passed Validate — producing writs addressable only via attest "" with anonymous status rows — by requiring every criterion to have a non-empty id and text, with tests and end-to-end proof.
  • 6e91ac2 gnhf 17: Fixed a vacuous-truth auto-merge bug where a writ whose acceptance criteria were deleted (reachable via approve's documented invalid-edit path that leaves the broken file on disk) passed status as "all criteria met" exit 0 and could merge unchecked; gate.Decide now requires at least one criterion, so such a writ needs-human with an explicit reason.
  • 9b48675 gnhf 16: Fixed a config-sensitivity bug where writ's dirty-tree merge guard silently weakened for users with git's status.showUntrackedFiles=no set, and hardened the test suite against contributor machines with global signing configs.
  • 8540ce5 gnhf 15: Locked the last user-visible rendering surfaces into CI — the singular drift line, mixed/pure-deletion change summaries, and the previously untestable ANSI color verdict paths — via a small injectable-color seam in render.Status, then proved all of them end to end against real git data and a real pty terminal.
  • d85108d gnhf 14: Closed the corrupt-state escape-hatch gap across all six writ-reading commands and locked the last documented-but-untested merge refusal paths into CI, then validated the whole repo under -race for the first time since iteration 7.
  • cad8ff4 gnhf 13: Closed the last undocumented user-facing surface: the WRIT_VERIFY_TIMEOUT knob (10-min default) that governs verification on the critical auto-merge path is now documented in the README, named in the timeout message users actually see in status output, and hardened against the WRIT_VERIFY_TIMEOUT=0s footgun that would previously have killed every verification instantly.
  • 5c032be gnhf 12: Closed the last untested surface - the cobra command tree itself - by adding cmd/writ/root_test.go integration tests that drive the real dispatch path (SetArgs -> Execute), locking registration of all 8 documented subcommands, all 5 documented flags' wiring, bare-invocation help, unknown-command failure, exit-code-2 propagation, and the full documented propose --file -> approve --yes -> attest --note -> status -> merge lifecycle into CI.
  • 1175b66 gnhf 11: Fixed a real documentation bug in the freshly added Exit codes section - the README claimed exit code 2 ("no writ is open") comes only from status/merge/discard, but approve, attest, and unattest also return 2 on that exact condition - corrected it to name all six commands, and locked the two never-tested attest/unattest exit-2 paths into the Go test suite.
  • b057c78 gnhf 10: Fixed the last first-run UX trap - bare writ propose in an interactive terminal no longer hangs silently forever but refuses up front with an actionable message naming both remedies - and documented writ's designed 0/1/2 exit-code contract in the README so agents can script it.
  • 86ed36c gnhf 8: Closed the last critical-path UX gap — propose over a corrupt .writ/current.toml now points at writ discard instead of a raw TOML error — and locked four previously untested documented behaviors into the Go test suite: gitMerge's already-on-base and detached-HEAD refusals, runMerge's full happy path through RunE (merge + state-file clear), and runStatus's exit-0/exit-1 codes through the real drift+evidence+gate pipeline.
  • a122ab3 gnhf 5: Fixed a user-facing bug on the documented human-approval path where editors configured with arguments (EDITOR="code -w") died with a confusing fork/exec error, and added the first-ever test coverage of the README-documented $EDITOR approve flow, proving it end to end with a real binary.
  • 7ff9671 gnhf 4: Fixed the last flagged first-run UX bug: repoRoot() no longer silently falls back to the current directory when not inside a git repository - every command except version now fails loudly with an actionable message instead of scattering .writ/ state into ordinary directories or reporting a misleading "no writ is open".
  • 4fadb48 gnhf 3: Added the previously missing writ discard command so a rejected, abandoned, or corrupt open writ can be thrown away without hand-deleting internal state, closing the last user-facing workflow deadlock flagged by prior iterations and documenting it in README and AGENTS.md.
  • 724f81c...
Read more

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 21 Aug 15:04
344233b

Changelog

  • 344233b Merge pull request #9 from Laaaaksh/fm/writ-tap-dir
  • 63624db Fix Homebrew formula being shadowed by a future Formula/ directory

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 21 Aug 13:33
93d91b0

Changelog

  • 93d91b0 Merge pull request #7 from Laaaaksh/fm/writ-release
  • 1a748d2 Merge pull request #8 from Laaaaksh/fm/writ-version-var
  • b6f141f Merge pull request #6 from Laaaaksh/fm/writ-lifecycle
  • 8f93d50 Merge pull request #5 from Laaaaksh/fm/writ-selfdrift
  • 633acbd Merge pull request #4 from Laaaaksh/fm/writ-drift
  • e801823 Merge pull request #3 from Laaaaksh/fm/writ-gate
  • 497ebdc Merge pull request #2 from Laaaaksh/fm/writ-evidence
  • fd4c025 Merge pull request #1 from Laaaaksh/fm/writ-foundation
  • c1b72c0 chore: initial commit
  • b4b0296 Merge remote-tracking branch 'origin/master' into HEAD
  • e84b91f Fix version/commit/date to be linker-settable vars
  • e7ba441 Add CI, cross-platform releases, and Homebrew packaging
  • 091051d Add propose/approve/attest lifecycle; wire criteria attestation into gate and render
  • e8f01f7 fix(drift): exclude .writ/ bookkeeping from drift and scope
  • adb2c3c Implement internal/drift: compute scope drift from git diff
  • 0a7c953 Implement internal/gate, internal/render, and wire writ status/merge
  • b4da4a4 Implement internal/evidence: run verification and report the result
  • 013c285 Add AGENTS.md project memory
  • 790efbd Scaffold writ CLI: internal/writ package, writ open, stub packages