Compare commits
13 Commits
bd62f360a7
...
v3.1.1
| Author | SHA1 | Date | |
|---|---|---|---|
| cbcb1b3778 | |||
| 39052bf47e | |||
| 7cd5edd650 | |||
| 2d41748006 | |||
| 1d4be9988e | |||
| ed65aa6474 | |||
| 4c5536ab78 | |||
| b01180ea83 | |||
| 07fab5586b | |||
| 6debe7e641 | |||
| 11c349d9ae | |||
| 36823c91fb | |||
| 17421bc5f3 |
@@ -1,7 +1,6 @@
|
||||
matrix:
|
||||
include:
|
||||
- GO_IMAGE: golang:1.25.5
|
||||
RELEASEKIT_VERSION: v0.1.0
|
||||
- GO_IMAGE: golang:1.26.8-bookworm
|
||||
|
||||
when:
|
||||
- event: tag
|
||||
@@ -15,7 +14,37 @@ steps:
|
||||
from_secret: GITEA_RELEASE_TOKEN
|
||||
commands:
|
||||
- |
|
||||
go run gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit@${RELEASEKIT_VERSION} ci-deliver \
|
||||
set -eu
|
||||
test -n "$${CI_COMMIT_TAG}"
|
||||
test -n "$${CI_COMMIT_SHA}"
|
||||
git check-ref-format "refs/tags/$${CI_COMMIT_TAG}"
|
||||
git fetch origin "refs/tags/$${CI_COMMIT_TAG}:refs/tags/$${CI_COMMIT_TAG}"
|
||||
tag_commit=$(git rev-parse "refs/tags/$${CI_COMMIT_TAG}^{commit}")
|
||||
expected_commit=$(git rev-parse --verify "$${CI_COMMIT_SHA}^{commit}")
|
||||
test "$(printf '%s' "$${tag_commit}" | tr '[:upper:]' '[:lower:]')" = "$${expected_commit}"
|
||||
git checkout --detach "$${tag_commit}"
|
||||
test "$(git rev-parse HEAD | tr '[:upper:]' '[:lower:]')" = "$${expected_commit}"
|
||||
test -z "$(git status --porcelain --untracked-files=all)"
|
||||
|
||||
bootstrap_dir=$(mktemp -d "$${CI_WORKSPACE%/*}/.releasekit-bootstrap.XXXXXX")
|
||||
trap 'rm -rf "$${bootstrap_dir}"' EXIT
|
||||
cp go.mod "$${bootstrap_dir}/go.mod"
|
||||
if [ -f go.sum ]; then
|
||||
cp go.sum "$${bootstrap_dir}/go.sum"
|
||||
else
|
||||
: > "$${bootstrap_dir}/go.sum"
|
||||
fi
|
||||
cp "$${bootstrap_dir}/go.mod" "$${bootstrap_dir}/releasekit.mod"
|
||||
cp "$${bootstrap_dir}/go.sum" "$${bootstrap_dir}/releasekit.sum"
|
||||
|
||||
export GOWORK=off
|
||||
export GOTOOLCHAIN=local
|
||||
releasekit_module=gitea.maximumdirect.net/eric/ReleaseKit
|
||||
go list -mod=mod -modfile="$${bootstrap_dir}/releasekit.mod" -m "$${releasekit_module}"
|
||||
go build -mod=mod -modfile="$${bootstrap_dir}/releasekit.mod" \
|
||||
-o "$${bootstrap_dir}/releasekit" "$${releasekit_module}/cmd/releasekit"
|
||||
"$${bootstrap_dir}/releasekit" ci-deliver \
|
||||
--repo "$${CI_WORKSPACE}" \
|
||||
--commit "$${CI_COMMIT_SHA}" \
|
||||
--prepared \
|
||||
--commit "$${expected_commit}" \
|
||||
"$${CI_COMMIT_TAG}"
|
||||
|
||||
@@ -6,7 +6,7 @@ reports for review and subprocess integration.
|
||||
|
||||
## Quickstart
|
||||
|
||||
From a checkout, build with Go 1.25.5 or newer:
|
||||
From a checkout, build with Go 1.26.0 or newer:
|
||||
|
||||
```sh
|
||||
go build -o ./bin/audita ./cmd/audita
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/cli"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/cli"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
@@ -19,9 +19,9 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/cli"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/reporting"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/cli"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/reporting"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
|
||||
@@ -29,8 +29,8 @@ native sibling inheritance before typed decoding. Any input mapping may use
|
||||
`extends: <sibling-name>`; the child keeps its key, inherits parent settings, and
|
||||
overrides them with its own settings. Selected overlay and CLI values therefore
|
||||
participate in inheritance at their normal precedence. The generic syntax and
|
||||
resolution rules are defined by ConfigKit v0.5.0's
|
||||
[sibling inheritance contract](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/v0.5.0/docs/config.md#sibling-inheritance).
|
||||
resolution rules are defined by ConfigKit v0.7.1's
|
||||
[sibling inheritance contract](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/v0.7.1/docs/config.md#sibling-inheritance).
|
||||
|
||||
`extends` is reserved structural input in base files, imports, overlays, and
|
||||
other application input mappings, including mapping values supplied by explicit
|
||||
@@ -107,7 +107,7 @@ Presence matters. Explicit `temperature: 0` is sent as zero; omission leaves it
|
||||
unspecified; null suppresses an inherited temperature. Other fields have their
|
||||
own native null and omission rules. Provider `extra_params` maps merge
|
||||
recursively, and a null provider value is sent as JSON null. See the pinned
|
||||
[PromptKit format reference](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.12.0/docs/formats.md)
|
||||
[PromptKit format reference](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.14.0/docs/formats.md)
|
||||
for the complete field semantics.
|
||||
|
||||
Operator documents can also override an embedded prompt/version, including its
|
||||
@@ -128,7 +128,7 @@ the native presence rules before deploying. Select a root whose final
|
||||
definitions have valid backend references; eager validation applies even to
|
||||
unselected definitions. See the complete maintained [local](../examples/minimal-config.yml)
|
||||
and [service](../examples/production-config.yml) examples and the pinned
|
||||
[consumer migration guide](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.12.0/docs/consumers/pkg-promptkit.md#migrate-from-the-previous-configuration-api).
|
||||
[consumer migration guide](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.14.0/docs/consumers/pkg-promptkit.md#migrate-from-the-previous-configuration-api).
|
||||
This incompatible profile-format migration is intended for an Audita major
|
||||
release; no automatic file conversion is provided.
|
||||
|
||||
|
||||
@@ -41,7 +41,9 @@ ownership. Commit discipline and agent Git restrictions are in the
|
||||
|
||||
## Baseline Validation
|
||||
|
||||
Use Go 1.25.5 or newer. From the repository root:
|
||||
Use Go 1.26.0 or newer for source builds. The selected release toolchain is
|
||||
documented in the [release procedure](release.md#prerequisites). From the
|
||||
repository root:
|
||||
|
||||
```sh
|
||||
go build -o ./bin/audita ./cmd/audita
|
||||
|
||||
@@ -19,7 +19,7 @@ failures; explicit zero makes one attempt. `llm.repair_attempts` counts
|
||||
additional generations for schema-invalid model output. The operation timeout
|
||||
covers preparation, capacity waiting, retries, generation, and repair. Caller
|
||||
cancellation or an earlier deadline also applies. See [configuration](../config.md#settings)
|
||||
for defaults and [PromptKit v0.12.0's consumer contract](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.12.0/docs/consumers/pkg-promptkit.md)
|
||||
for defaults and [PromptKit v0.14.0's consumer contract](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.14.0/docs/consumers/pkg-promptkit.md)
|
||||
for the pinned protocol and retry details.
|
||||
|
||||
A model operation that exhausts structural repair, a live-parent local operation
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
|
||||
## Standard Repository Policies
|
||||
|
||||
Material: All documents under `docs/policy/`, root `AGENTS.md`, and the Policy Reading Guide in `docs/development.md`, adapted for this repository.
|
||||
Material: All documents under `docs/policy/`, root `AGENTS.md`, and the Policy
|
||||
Reading Guide in `docs/development.md`, adapted for this repository.
|
||||
`docs/policy/release.md` incorporates revision
|
||||
`e833faddf120c789a9b45348edaf75720de16348`; the remaining listed material
|
||||
incorporates revision `d84a38ebab26f048cafbe59a2246700c35d29843`.
|
||||
|
||||
Copyright (C) 2026 Eric Rakestraw
|
||||
|
||||
@@ -10,13 +14,17 @@ SPDX-License-Identifier: CC-BY-SA-4.0
|
||||
|
||||
License and notices: [CC BY-SA 4.0](licenses/CC-BY-SA-4.0.txt) |
|
||||
[COPYRIGHT](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/COPYRIGHT) |
|
||||
[LICENSE](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/LICENSE).
|
||||
[LICENSE](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/LICENSE) |
|
||||
[COPYRIGHT](https://gitea.maximumdirect.net/eric/policy/src/commit/e833faddf120c789a9b45348edaf75720de16348/COPYRIGHT) |
|
||||
[LICENSE](https://gitea.maximumdirect.net/eric/policy/src/commit/e833faddf120c789a9b45348edaf75720de16348/LICENSE).
|
||||
|
||||
[Source](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843).
|
||||
|
||||
[Source](https://gitea.maximumdirect.net/eric/policy/src/commit/e833faddf120c789a9b45348edaf75720de16348).
|
||||
|
||||
## ConfigKit
|
||||
|
||||
Selected module: `gitea.maximumdirect.net/eric/ConfigKit` at `v0.5.0`.
|
||||
Selected module: `gitea.maximumdirect.net/eric/ConfigKit` at `v0.7.1`.
|
||||
|
||||
Copyright (C) 2026 Eric Rakestraw
|
||||
|
||||
@@ -24,13 +32,13 @@ SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
License and notices: [LGPL v3](licenses/LGPL-3.0.txt) |
|
||||
[GPL v3](licenses/GPL-3.0.txt) |
|
||||
[COPYRIGHT](https://gitea.maximumdirect.net/eric/ConfigKit/src/commit/dc09959cca4e105f49ec316c6d4ba585bd2340bd/COPYRIGHT).
|
||||
[COPYRIGHT](https://gitea.maximumdirect.net/eric/ConfigKit/src/commit/6fffde4af8f31f99d3ee295c426eb3234cb0fb77/COPYRIGHT).
|
||||
|
||||
[Source](https://gitea.maximumdirect.net/eric/ConfigKit/src/commit/dc09959cca4e105f49ec316c6d4ba585bd2340bd).
|
||||
[Source](https://gitea.maximumdirect.net/eric/ConfigKit/src/commit/6fffde4af8f31f99d3ee295c426eb3234cb0fb77).
|
||||
|
||||
## ReleaseKit
|
||||
|
||||
Selected module: `gitea.maximumdirect.net/eric/ReleaseKit` at `v0.1.0`.
|
||||
Selected module: `gitea.maximumdirect.net/eric/ReleaseKit` at `v0.4.1`.
|
||||
|
||||
Copyright (C) 2026 Eric Rakestraw
|
||||
|
||||
@@ -38,79 +46,79 @@ SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
License and notices: [LGPL v3](licenses/LGPL-3.0.txt) |
|
||||
[GPL v3](licenses/GPL-3.0.txt) |
|
||||
[COPYRIGHT](https://gitea.maximumdirect.net/eric/ReleaseKit/src/commit/5e60fe3113c69f95c42fbbe32a8ca4b51f5b83c1/COPYRIGHT).
|
||||
[COPYRIGHT](https://gitea.maximumdirect.net/eric/ReleaseKit/src/commit/2d5a8110c61e31daf8698766114ae305d0e0e469/COPYRIGHT).
|
||||
|
||||
[Source](https://gitea.maximumdirect.net/eric/ReleaseKit/src/commit/5e60fe3113c69f95c42fbbe32a8ca4b51f5b83c1).
|
||||
[Source](https://gitea.maximumdirect.net/eric/ReleaseKit/src/commit/2d5a8110c61e31daf8698766114ae305d0e0e469).
|
||||
|
||||
## Go runtime and standard library
|
||||
|
||||
Selected toolchain: Go 1.25.5 for the distributed Linux binaries.
|
||||
Selected toolchain: Go 1.26.8 for the distributed Linux binaries.
|
||||
|
||||
Copyright 2009 The Go Authors.
|
||||
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
License and notices: [BSD 3-Clause](licenses/BSD-3-Clause-Go.txt) |
|
||||
[LICENSE](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/LICENSE) |
|
||||
[PATENTS](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/PATENTS).
|
||||
[LICENSE](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/LICENSE) |
|
||||
[PATENTS](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/PATENTS).
|
||||
|
||||
[Source](https://github.com/golang/go/commit/fefb02adf45c4bcc879bd406a8d61f2a292c26a9).
|
||||
[Source](https://github.com/golang/go/commit/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e).
|
||||
|
||||
## Go vendored golang.org/x/crypto
|
||||
|
||||
Material: `golang.org/x/crypto` at `v0.39.0` in the Go 1.25.5 standard library.
|
||||
Material: `golang.org/x/crypto` at `v0.46.1-0.20251210140736-7dacc380ba00` in the Go 1.26.8 standard library.
|
||||
|
||||
Copyright 2009 The Go Authors.
|
||||
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
License and notices: [BSD 3-Clause](licenses/BSD-3-Clause-Go.txt) |
|
||||
[LICENSE](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/src/vendor/golang.org/x/crypto/LICENSE) |
|
||||
[PATENTS](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/src/vendor/golang.org/x/crypto/PATENTS).
|
||||
[LICENSE](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/src/vendor/golang.org/x/crypto/LICENSE) |
|
||||
[PATENTS](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/src/vendor/golang.org/x/crypto/PATENTS).
|
||||
|
||||
[Source](https://github.com/golang/go/commit/fefb02adf45c4bcc879bd406a8d61f2a292c26a9).
|
||||
[Source](https://github.com/golang/go/commit/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e).
|
||||
|
||||
## Go vendored golang.org/x/net
|
||||
|
||||
Material: `golang.org/x/net` at `v0.41.0` in the Go 1.25.5 standard library.
|
||||
Material: `golang.org/x/net` at `v0.47.1-0.20260731170545-cb1d721f7fb3` in the Go 1.26.8 standard library.
|
||||
|
||||
Copyright 2009 The Go Authors.
|
||||
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
License and notices: [BSD 3-Clause](licenses/BSD-3-Clause-Go.txt) |
|
||||
[LICENSE](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/src/vendor/golang.org/x/net/LICENSE) |
|
||||
[PATENTS](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/src/vendor/golang.org/x/net/PATENTS).
|
||||
[LICENSE](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/src/vendor/golang.org/x/net/LICENSE) |
|
||||
[PATENTS](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/src/vendor/golang.org/x/net/PATENTS).
|
||||
|
||||
[Source](https://github.com/golang/go/commit/fefb02adf45c4bcc879bd406a8d61f2a292c26a9).
|
||||
[Source](https://github.com/golang/go/commit/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e).
|
||||
|
||||
## Go vendored golang.org/x/sys
|
||||
|
||||
Material: `golang.org/x/sys` at `v0.33.0` in the Go 1.25.5 standard library.
|
||||
Material: `golang.org/x/sys` at `v0.39.0` in the Go 1.26.8 standard library.
|
||||
|
||||
Copyright 2009 The Go Authors.
|
||||
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
License and notices: [BSD 3-Clause](licenses/BSD-3-Clause-Go.txt) |
|
||||
[LICENSE](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/src/vendor/golang.org/x/sys/LICENSE) |
|
||||
[PATENTS](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/src/vendor/golang.org/x/sys/PATENTS).
|
||||
[LICENSE](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/src/vendor/golang.org/x/sys/LICENSE) |
|
||||
[PATENTS](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/src/vendor/golang.org/x/sys/PATENTS).
|
||||
|
||||
[Source](https://github.com/golang/go/commit/fefb02adf45c4bcc879bd406a8d61f2a292c26a9).
|
||||
[Source](https://github.com/golang/go/commit/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e).
|
||||
|
||||
## Go vendored golang.org/x/text
|
||||
|
||||
Material: `golang.org/x/text` at `v0.26.0` in the Go 1.25.5 standard library.
|
||||
Material: `golang.org/x/text` at `v0.32.0` in the Go 1.26.8 standard library.
|
||||
|
||||
Copyright 2009 The Go Authors.
|
||||
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
License and notices: [BSD 3-Clause](licenses/BSD-3-Clause-Go.txt) |
|
||||
[LICENSE](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/src/vendor/golang.org/x/text/LICENSE) |
|
||||
[PATENTS](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/src/vendor/golang.org/x/text/PATENTS).
|
||||
[LICENSE](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/src/vendor/golang.org/x/text/LICENSE) |
|
||||
[PATENTS](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/src/vendor/golang.org/x/text/PATENTS).
|
||||
|
||||
[Source](https://github.com/golang/go/commit/fefb02adf45c4bcc879bd406a8d61f2a292c26a9).
|
||||
[Source](https://github.com/golang/go/commit/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e).
|
||||
|
||||
## go-yaml v4
|
||||
|
||||
@@ -156,7 +164,7 @@ License and notices: [Apache 2.0](licenses/Apache-2.0.txt).
|
||||
|
||||
## PromptKit
|
||||
|
||||
Selected module: `gitea.maximumdirect.net/eric/promptkit` at `v0.12.0`.
|
||||
Selected module: `gitea.maximumdirect.net/eric/promptkit` at `v0.14.0`.
|
||||
|
||||
Copyright (C) 2026 Eric Rakestraw
|
||||
|
||||
@@ -164,9 +172,9 @@ SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
License and notices: [LGPL v3](licenses/LGPL-3.0.txt) |
|
||||
[GPL v3](licenses/GPL-3.0.txt) |
|
||||
[COPYRIGHT](https://gitea.maximumdirect.net/eric/promptkit/src/commit/4b8169da286917fde7875425bb32b799b12c6af3/COPYRIGHT).
|
||||
[COPYRIGHT](https://gitea.maximumdirect.net/eric/promptkit/src/commit/143c6e9b3a675872117b0471e2ff8bcb25055a54/COPYRIGHT).
|
||||
|
||||
[Source](https://gitea.maximumdirect.net/eric/promptkit/src/commit/4b8169da286917fde7875425bb32b799b12c6af3).
|
||||
[Source](https://gitea.maximumdirect.net/eric/promptkit/src/commit/143c6e9b3a675872117b0471e2ff8bcb25055a54).
|
||||
|
||||
## Promptkit OpenRouter Catalog
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Release Policy
|
||||
|
||||
**Base Policy Version:** 1.4
|
||||
**Base Policy Version:** 1.6
|
||||
|
||||
**Last Updated**: 2026-10-07
|
||||
**Upstream Source:** [Standard Repository Policies release](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/docs/policy/release.md)
|
||||
**Last Updated**: 2026-10-08
|
||||
**Upstream Source:** [Standard Repository Policies release](https://gitea.maximumdirect.net/eric/policy/src/commit/e833faddf120c789a9b45348edaf75720de16348/docs/policy/release.md)
|
||||
|
||||
## Purpose
|
||||
|
||||
@@ -11,6 +11,9 @@ This policy defines a proportionate workflow for validating and publishing an
|
||||
intended source revision under a fresh version. Releases should require little
|
||||
routine intervention, avoid repeated work, and preserve published contents.
|
||||
|
||||
Adopt stronger verification or reproducibility requirements through an explicit
|
||||
project-specific decision justified by the intended audience and support needs.
|
||||
|
||||
The repository-specific commands belong in `docs/release.md`. Historical release
|
||||
summaries belong in `docs/releases/`. The procedure must agree with the adopted
|
||||
policy and link to it rather than introduce additional release requirements.
|
||||
@@ -75,7 +78,8 @@ requires a deliberate update to the policy and procedure where needed.
|
||||
For releases at or after `v1.0.0`:
|
||||
|
||||
- a major release may make intentional incompatible changes;
|
||||
- a minor release may add backward-compatible behavior; and
|
||||
- a minor release may add backward-compatible behavior or raise the Go consumer
|
||||
minimum as described below; and
|
||||
- a patch release may make backward-compatible fixes.
|
||||
|
||||
Before `v1.0.0`, a minor release may change a documented public, operational,
|
||||
@@ -87,6 +91,36 @@ Additional compatibility promises and deliberate exceptions belong in the
|
||||
adopted policy or canonical contract documentation. Release notes explain
|
||||
changes; they do not redefine current compatibility contracts.
|
||||
|
||||
## Consumer Minimum And Release Toolchain
|
||||
|
||||
Distinguish the minimum toolchain supported for consumers from the toolchain
|
||||
maintainers use to build and validate a release. Record the consumer minimum in
|
||||
the language's standard metadata and explain its support meaning in canonical
|
||||
documentation. Define the selected release toolchain and its setup commands in
|
||||
`docs/release.md`. Toolchain selection and upgrade cadence are repository-specific
|
||||
choices.
|
||||
|
||||
For Go repositories, normally declare the initial stable release of the selected
|
||||
series as the consumer minimum, such as `go 1.26.0`. Use a higher patch minimum
|
||||
when a dependency or an identified correctness fix requires it, and document
|
||||
the reason.
|
||||
|
||||
For release-policy purposes, successful build and release validation on the
|
||||
selected Go patch release are sufficient to presume support across that Go
|
||||
series, subject to the declared consumer minimum and concrete evidence of
|
||||
incompatibility. Investigate specific compatibility concerns as they arise.
|
||||
|
||||
Use the selected release toolchain for candidate validation and release builds,
|
||||
including CI jobs performing those tasks. A newer validation patch version alone
|
||||
leaves the consumer minimum unchanged.
|
||||
|
||||
A minor release may raise the Go consumer minimum, including from one Go series
|
||||
to the next, both before and after `v1.0.0`. This is an explicit exception to the
|
||||
backward-compatibility requirement for minor releases. Patch releases preserve
|
||||
the consumer minimum. Explain an increase's impact and required consumer action
|
||||
in the release note. Other incompatible changes remain subject to the versioning
|
||||
rules above.
|
||||
|
||||
## Release Documentation And Preparation
|
||||
|
||||
Every new release must include `docs/releases/<version>.md` in the tagged
|
||||
@@ -145,9 +179,10 @@ caches are not required. If the candidate changes, validate the new candidate.
|
||||
Cheap publication-state checks may be repeated immediately before pushing
|
||||
because local or remote state may have changed during validation.
|
||||
|
||||
Automate mechanical guards. Do not require manual approvals, sign-offs, or
|
||||
routine confirmations as release gates. Version selection and
|
||||
a concise release summary remain preparation inputs, not separate approval rounds.
|
||||
Automate mechanical guards. Human review gates are strongly disfavored: add one
|
||||
only through an explicit project-specific policy decision explaining the
|
||||
concrete risk and why ordinary change review or automation is insufficient.
|
||||
Do not add routine confirmations for checks the command can perform itself.
|
||||
|
||||
## Publication Guards
|
||||
|
||||
@@ -201,7 +236,8 @@ release without replacing its contents or reusing its version.
|
||||
Maintain `docs/release.md` as a short, executable maintainer runbook. It must
|
||||
identify:
|
||||
|
||||
1. prerequisites, primary branch, and authoritative remote;
|
||||
1. prerequisites, selected release toolchain, primary branch, and authoritative
|
||||
remote;
|
||||
2. version and release-note preparation;
|
||||
3. one publication command with its selected local checks and automated guards;
|
||||
4. declared deliverables, required build targets, and automation responsibilities;
|
||||
|
||||
@@ -2,16 +2,37 @@
|
||||
|
||||
The [release policy](policy/release.md) owns release requirements. This runbook
|
||||
uses the native commands in [scripts/release.sh](../scripts/release.sh), which
|
||||
builds and invokes ReleaseKit. A confirmed source tag completes the release;
|
||||
Woodpecker reports binary delivery separately.
|
||||
invokes the module-selected ReleaseKit tool. A confirmed source tag completes
|
||||
the release; Woodpecker reports binary delivery separately.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Use Bash, Git, and Go 1.25.5 or newer. The authoritative remote is `origin`,
|
||||
Use Bash and Git. The authoritative remote is `origin`,
|
||||
which must point to `https://gitea.maximumdirect.net/eric/audita.git`; the
|
||||
primary branch is `main`. Source publication needs no delivery credential.
|
||||
Woodpecker uses the existing `GITEA_RELEASE_TOKEN` secret for delivery.
|
||||
|
||||
The source-build minimum is Go 1.26.0, declared in [go.mod](../go.mod).
|
||||
This minimum is required by the selected ReleaseKit dependency.
|
||||
Distributed executables do not require a Go installation. The selected release
|
||||
toolchain is Go 1.26.8, matching the current Woodpecker image and distributed
|
||||
runtime notices. Use that local installation for tool bootstrap, candidate
|
||||
validation, and release builds. Replace the installation path below with its
|
||||
actual directory:
|
||||
|
||||
```sh
|
||||
export PATH="/path/to/go1.26.8/bin:$PATH"
|
||||
export GOTOOLCHAIN=local
|
||||
go version
|
||||
```
|
||||
|
||||
Record the reported toolchain with the validation results. The
|
||||
[release policy](policy/release.md#consumer-minimum-and-release-toolchain)
|
||||
governs the distinction between the consumer minimum and release toolchain,
|
||||
support across a Go series, and versioning of minimum increases. When selecting
|
||||
a different release toolchain, update the CI image and applicable runtime
|
||||
attribution together; a newer build patch alone need not raise the minimum.
|
||||
|
||||
Prepare dependencies before offline candidate validation:
|
||||
|
||||
```sh
|
||||
@@ -19,9 +40,12 @@ GOWORK=off GOTOOLCHAIN=local go mod download
|
||||
```
|
||||
|
||||
If dependency preparation changes `go.mod` or `go.sum`, include those changes in
|
||||
the committed candidate. The release wrapper separately bootstraps the pinned
|
||||
ReleaseKit command into ignored `bin/releasekit`; that build is tool preparation,
|
||||
not candidate validation.
|
||||
the committed candidate. ReleaseKit's CLI is registered as a Go tool dependency;
|
||||
`go mod tidy` retains its dependencies and checksums. The release wrapper changes
|
||||
to the repository root and invokes `go tool releasekit` with workspace discovery
|
||||
and automatic toolchain downloads disabled. Go builds or reuses the selected
|
||||
tool from its normal build cache. Tool preparation precedes offline candidate
|
||||
validation.
|
||||
|
||||
## Prepare and publish the candidate
|
||||
|
||||
@@ -71,33 +95,46 @@ profile, or version input error; and `3` means the push outcome remains unknown.
|
||||
|
||||
## Binary delivery
|
||||
|
||||
Woodpecker runs the pinned ReleaseKit `ci-deliver` command for tags under
|
||||
`refs/tags/v*`. It verifies the triggering commit against the tag, prepares the
|
||||
tagged source, and uses `releasekit.json` to build and deliver:
|
||||
Woodpecker runs ReleaseKit's `ci-deliver` command for tags under
|
||||
`refs/tags/v*`. The tagged `go.mod` selects the ReleaseKit version, and
|
||||
`releasekit.json` supplies Audita's build and delivery settings:
|
||||
|
||||
- `audita-<version>-linux-amd64`
|
||||
- `audita-<version>-linux-arm64`
|
||||
- `SHA256SUMS`
|
||||
|
||||
The workflow invokes:
|
||||
Before running Go, the workflow fetches and verifies the event tag, checks it
|
||||
out detached, and confirms the source tree is clean. It peels the event object
|
||||
ID to its commit before comparing it with the tag's commit, accepting both
|
||||
annotated tag objects and commit IDs from Woodpecker. It copies the tagged
|
||||
`go.mod` and `go.sum` into temporary module metadata outside the checkout. Go
|
||||
confirms that this configuration selects ReleaseKit, then builds its CLI using
|
||||
an alternate `-modfile`. The bootstrap executable and temporary files remain
|
||||
outside the tagged source. The workflow runs with the selected Go 1.26.8 image,
|
||||
`GOWORK=off`, and `GOTOOLCHAIN=local`.
|
||||
|
||||
Delivery uses prepared-checkout mode to verify the existing tag, HEAD, and clean
|
||||
worktree without repeating the bootstrap's fetch and checkout.
|
||||
|
||||
The resulting executable receives:
|
||||
|
||||
```sh
|
||||
go run gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit@${RELEASEKIT_VERSION} ci-deliver \
|
||||
"$${bootstrap_dir}/releasekit" ci-deliver \
|
||||
--repo "$${CI_WORKSPACE}" \
|
||||
--commit "$${CI_COMMIT_SHA}" \
|
||||
--prepared \
|
||||
--commit "$${expected_commit}" \
|
||||
"$${CI_COMMIT_TAG}"
|
||||
```
|
||||
|
||||
Woodpecker sets `RELEASEKIT_VERSION` to `v0.1.0` for this workflow.
|
||||
|
||||
The complete checked-in release note, including its licensing footer, supplies
|
||||
the hosted release body. The workflow maps the existing `GITEA_RELEASE_TOKEN`
|
||||
secret to `RELEASEKIT_GITEA_TOKEN`. Delivery runs independently after source
|
||||
publication; its status and logs report delivery progress or failure.
|
||||
The workflow maps the existing `GITEA_RELEASE_TOKEN` secret to
|
||||
`RELEASEKIT_GITEA_TOKEN`. The complete checked-in release note, including its
|
||||
licensing footer, supplies the hosted release body. Delivery runs independently
|
||||
after source publication; its status and logs report delivery progress or
|
||||
failure.
|
||||
|
||||
ReleaseKit handles content-aware retries and retained-artifact recovery. See
|
||||
the pinned [publication recovery guide](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.1.0/docs/consumers/publish.md)
|
||||
and [delivery guide](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.1.0/docs/consumers/delivery.md)
|
||||
the pinned [publication recovery guide](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.4.1/docs/consumers/publish.md)
|
||||
and [delivery guide](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.4.1/docs/consumers/delivery.md)
|
||||
for those mechanics. A delivery failure does not undo a confirmed source
|
||||
release. Retry the same immutable tag after resolving the reported state; do not
|
||||
replace published files or a checksum manifest.
|
||||
@@ -110,11 +147,11 @@ captured authoritative endpoint and publication state. Resolve the result
|
||||
against that endpoint before retrying. An exact remote tag-object match, with
|
||||
its source available on remote `main`, can confirm publication. If the remote
|
||||
state cannot be read, the result remains unknown; do not remove or replace the
|
||||
tag while uncertain. Follow the pinned [publication recovery guide](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.1.0/docs/consumers/publish.md)
|
||||
tag while uncertain. Follow the pinned [publication recovery guide](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.4.1/docs/consumers/publish.md)
|
||||
for object-level recovery details.
|
||||
|
||||
A source-release success and artifact-delivery status are separate. For a
|
||||
partial or uncertain delivery, inspect the job output and follow the pinned
|
||||
[delivery recovery guidance](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.1.0/docs/consumers/delivery.md).
|
||||
[delivery recovery guidance](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.4.1/docs/consumers/delivery.md).
|
||||
A source or published-content correction requires a new appropriate version;
|
||||
leave the original tag and its contents intact.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# Release Notes
|
||||
|
||||
- [Audita v3.1.1](v3.1.1.md)
|
||||
- [Audita v3.1.0](v3.1.0.md)
|
||||
- [Audita v3.0.1](v3.0.1.md)
|
||||
- [Audita v3.0.0](v3.0.0.md)
|
||||
- [Audita v2.0.1](v2.0.1.md)
|
||||
|
||||
42
docs/releases/v3.1.0.md
Normal file
42
docs/releases/v3.1.0.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# Audita v3.1.0
|
||||
|
||||
This minor release updates Audita's configuration, LLM, and release libraries
|
||||
and raises the minimum Go version for source builds to 1.26.0. Existing Audita
|
||||
configuration files, PromptKit profiles, and command behavior require no
|
||||
migration.
|
||||
|
||||
## Changes
|
||||
|
||||
- ConfigKit is updated from v0.5.0 to v0.7.1, with improvements to configuration
|
||||
loading, resolution, provenance, and inspection efficiency.
|
||||
- PromptKit is updated from v0.12.0 to v0.14.0, reducing avoidable allocations in
|
||||
preparation, rendering, and execution. Audita retains its existing schemas,
|
||||
validation, retry and repair budgets, and resilient processing behavior.
|
||||
The libraries' new discovery and configuration-comparison APIs remain unused
|
||||
by Audita.
|
||||
- ReleaseKit is updated from v0.1.0 to v0.4.1. The local release launcher now
|
||||
invokes the module-selected Go tool, and CI selects the tool from the tagged
|
||||
module metadata. Prepared-checkout delivery reuses the tag checkout already
|
||||
verified during CI bootstrap. Source publication still completes at a
|
||||
successful tag push; Linux binary delivery remains asynchronous.
|
||||
- Release builds and CI use Go 1.26.8, with corresponding runtime attribution
|
||||
updated. The source-build minimum is tracked separately from that build
|
||||
toolchain patch version.
|
||||
|
||||
## Upgrading from v3.0.1
|
||||
|
||||
Source builders must upgrade from the previous Go 1.25.5 minimum to **Go 1.26.0
|
||||
or newer**, including any build environments still using Go 1.25. Maintainers
|
||||
should follow the updated [release procedure](../release.md) for toolchain setup,
|
||||
publication, and delivery recovery.
|
||||
|
||||
Go module consumers must use the v3 module path. For example:
|
||||
`go install gitea.maximumdirect.net/eric/audita/v3/cmd/audita@v3.1.0`. This
|
||||
aligns the module path with the v3 release line. Downloaded binaries and
|
||||
commands run from a source checkout are unaffected.
|
||||
|
||||
Users of distributed Linux binaries need no Go installation. No configuration,
|
||||
profile, transcript-format, or command-behavior migration is required for this
|
||||
release.
|
||||
|
||||
[COPYRIGHT](https://gitea.maximumdirect.net/eric/audita/src/tag/v3.1.0/COPYRIGHT) | [LICENSE](https://gitea.maximumdirect.net/eric/audita/src/tag/v3.1.0/LICENSE) | [ATTRIBUTION](https://gitea.maximumdirect.net/eric/audita/src/tag/v3.1.0/docs/oss/attribution.md)
|
||||
20
docs/releases/v3.1.1.md
Normal file
20
docs/releases/v3.1.1.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Audita v3.1.1
|
||||
|
||||
This patch fixes the Woodpecker bootstrap failure that prevented Linux binary
|
||||
delivery for v3.1.0. Audita's transcript processing and configuration are unchanged.
|
||||
|
||||
## Changes
|
||||
|
||||
- Resolve Woodpecker's tag-event object ID to its source commit before checking
|
||||
the tagged checkout and invoking ReleaseKit. Annotated tag events previously
|
||||
failed a comparison between the tag object and commit, stopping the workflow
|
||||
before binary builds began.
|
||||
- Add offline regression coverage for annotated and lightweight tag events,
|
||||
including rejection of an unrelated source commit.
|
||||
|
||||
No configuration, profile, transcript-format, or command-behavior migration is
|
||||
required from v3.1.0. The Go source-build minimum remains 1.26.0. Linux amd64 and
|
||||
arm64 binary delivery follows the existing asynchronous
|
||||
[release procedure](../release.md#binary-delivery).
|
||||
|
||||
[COPYRIGHT](https://gitea.maximumdirect.net/eric/audita/src/tag/v3.1.1/COPYRIGHT) | [LICENSE](https://gitea.maximumdirect.net/eric/audita/src/tag/v3.1.1/LICENSE) | [ATTRIBUTION](https://gitea.maximumdirect.net/eric/audita/src/tag/v3.1.1/docs/oss/attribution.md)
|
||||
@@ -1,133 +0,0 @@
|
||||
# ConfigKit v0.5.0 Adoption Roadmap
|
||||
|
||||
**Last updated:** 2026-10-03
|
||||
|
||||
**Status:** Complete. The implementation and tests are committed through
|
||||
`8175ed8`. Final documentation and example changes were included in the full
|
||||
build, test, example-validation, and local-link checks before the documentation
|
||||
completion commit. The [historical implementation plan](https://gitea.maximumdirect.net/eric/audita/src/commit/b31955fc97adec707b4e5f9a1b0c43c4cbc66750/docs/roadmap/implementation.md)
|
||||
records the ordered work and verification.
|
||||
|
||||
## Purpose and Baseline
|
||||
|
||||
Adopt ConfigKit v0.5.0 as an independently reviewable step before PromptKit
|
||||
v0.12.0. Use the library's configuration and inheritance conventions while
|
||||
preserving Audita's domain ownership and existing operator workflows.
|
||||
|
||||
At the reviewed Audita revision `6ae1d7cd5f548b26de5787372d3f2249eaa4757d`,
|
||||
[go.mod](../../go.mod) selects ConfigKit v0.4.2, PromptKit v0.11.2, and Go
|
||||
1.25.5. ConfigKit already owns loading, presence, secret resolution, and
|
||||
configuration inspection. Audita's `internal/core/config` supplies typed
|
||||
settings, defaults, derived values, and domain validation; `internal/cli`
|
||||
selects files, overlays, and explicit overrides. The
|
||||
[configuration contract](../config.md) and [CLI contract](../cli.md) own the
|
||||
implemented behavior.
|
||||
|
||||
The reviewed upstream release is
|
||||
[ConfigKit v0.5.0](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/v0.5.0/docs/releases/v0.5.0.md),
|
||||
commit `dc09959cca4e105f49ec316c6d4ba585bd2340bd`. It adds layered underlays,
|
||||
caller-owned filesystem sources, mapping sources, source resource contexts, and
|
||||
built-in sibling inheritance. The Go minimum and YAML dependency do not change.
|
||||
Ordinary `Load` remains available; adopting `LoadLayered` is optional.
|
||||
|
||||
This roadmap supersedes the completed original adoption plan at this path.
|
||||
The [historical roadmap](https://gitea.maximumdirect.net/eric/audita/src/commit/6ae1d7cd5f548b26de5787372d3f2249eaa4757d/docs/roadmap/configkit.md)
|
||||
records that earlier migration. Its coordinated breaking-refactor instructions
|
||||
and release target do not govern this incremental upgrade.
|
||||
|
||||
## Target End State
|
||||
|
||||
- Audita uses the released ConfigKit v0.5.0 module, with no local replacement.
|
||||
PromptKit stays at v0.11.2 throughout this adoption unit.
|
||||
- Configuration retains the current file-selection, overlay, explicit-override,
|
||||
resolution, and validation flow, subject to the reserved-key compatibility
|
||||
impact described below. Retain the application schema version, CLI interface,
|
||||
and main-file-relative resource rules defined in the current contracts.
|
||||
- Application configuration can use ConfigKit's native sibling `extends`
|
||||
relationships. Audita does not implement a second inheritance resolver,
|
||||
special backend-only syntax, or an opt-in switch around the library feature.
|
||||
- Inherited values participate in presence-aware defaults, domain validation,
|
||||
secret resolution, and safe inspection just like other effective input.
|
||||
In particular, inherited backend settings must not be overwritten merely
|
||||
because they were not written directly on the child.
|
||||
- Effective settings and explanations remain useful and secret-safe when
|
||||
values are inherited. Preserve existing inspection fields and add compact,
|
||||
value-free inheritance evidence from ConfigKit's metadata rather than
|
||||
reconstructing provenance from YAML.
|
||||
- Canonical documentation and a maintained example explain the adopted
|
||||
inheritance behavior. Attribution identifies the exact new upstream source.
|
||||
|
||||
The upstream [configuration contract](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/v0.5.0/docs/config.md#sibling-inheritance)
|
||||
owns generic inheritance mechanics. The integration must account for three
|
||||
consequences: `extends` is reserved automatically throughout input mappings;
|
||||
relationships resolve after source precedence and before typed decoding; and
|
||||
inherited zero, false, empty, or null values count as explicit input. An inherited
|
||||
value still has to satisfy Audita's field-specific rules. Parent definitions
|
||||
also undergo ordinary application validation; inheritance does not introduce
|
||||
abstract, validation-exempt backend entries.
|
||||
|
||||
## Scope and Adoption Boundary
|
||||
|
||||
Keep the existing `Load` integration unless implementation reveals a concrete
|
||||
need to change it. Source-backed defaults, additional operator underlay tiers,
|
||||
imports, and source-relative reinterpretation of application paths are outside
|
||||
this feature. Their availability upstream does not require expanding Audita's
|
||||
configuration surface. Imports and secret-directory bootstrap retain their
|
||||
current disabled state.
|
||||
|
||||
ConfigKit inheritance applies to Audita configuration in this step. PromptKit
|
||||
profile formats, profile inheritance, engine construction, embedded prompts,
|
||||
and backend catalogs remain governed by the existing PromptKit integration.
|
||||
There is no application-owned translation of profile documents in this work.
|
||||
|
||||
This is an independent ConfigKit adoption ahead of the planned PromptKit
|
||||
migration. A separate public release between the two units is optional.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- The released ConfigKit v0.5.0 dependency and exact source attribution are
|
||||
adopted; PromptKit remains at v0.11.2 with its existing catalogs.
|
||||
- Native inheritance preserves effective endpoints, capacity, explicit zero
|
||||
queue capacity, child overrides, and surviving credential references through
|
||||
Audita's loading, resolution, and validation boundary.
|
||||
- Selected overlays and explicit overrides retain their precedence; omitted
|
||||
validation-role selection still derives from the final proposal selection.
|
||||
- Null can remove a child's credential while surviving references on parents
|
||||
and other unselected backends still follow the existing credential contract.
|
||||
- Selected roles use inherited backend settings and share its configured
|
||||
capacity under the existing PromptKit runtime contract.
|
||||
- Effective settings remain redacted, and both CLI explanations and debug
|
||||
configuration origins expose compact, value-free inheritance evidence while
|
||||
retaining existing fields and application-derived explanations.
|
||||
- A maintained complete example and canonical documentation describe native
|
||||
inheritance, its field-validation implications, and the reserved-key
|
||||
compatibility impact. Existing workflows and applicable offline checks pass.
|
||||
|
||||
## Completion and Release Treatment
|
||||
|
||||
Adoption is complete when the released dependency is pinned, existing workflows
|
||||
pass, representative inheritance works through loading and runtime wiring,
|
||||
inspection includes value-free inheritance evidence and remains secret-safe,
|
||||
and the example, canonical docs, and attribution match the implementation. No
|
||||
PromptKit migration or provider behavior change is required to close this unit.
|
||||
|
||||
Release classification remains provisional. A minor release would be appropriate
|
||||
for a backward-compatible addition, but the newly reserved `extends` key can
|
||||
invalidate currently valid application configuration. For example, Audita
|
||||
currently permits a backend literally named `extends`; ConfigKit v0.5.0 treats
|
||||
that mapping key as an inheritance directive rather than a backend ID. Do not
|
||||
promise blanket compatibility or settle on a minor release until the final
|
||||
compatibility review resolves this impact under the
|
||||
[release policy](../policy/release.md). Describe any required migration in the
|
||||
canonical documentation and release notes when the upgrade ships. Do not select
|
||||
or publish a release as part of roadmap preparation. A later PromptKit
|
||||
migration's profile-format compatibility decision belongs to that separate
|
||||
feature.
|
||||
|
||||
## Selected Overlays for Testing
|
||||
|
||||
This heading preserves links from historical adoption documents. The original
|
||||
[overlay plan](https://gitea.maximumdirect.net/eric/audita/src/commit/6ae1d7cd5f548b26de5787372d3f2249eaa4757d/docs/roadmap/configkit.md#selected-overlays-for-testing)
|
||||
is historical; current overlay behavior belongs to [configuration](../config.md).
|
||||
This upgrade preserves that workflow and adds native ConfigKit inheritance
|
||||
without reviving the earlier combined migration plan.
|
||||
@@ -1,10 +1,10 @@
|
||||
# Deferred Feature Work
|
||||
|
||||
**Last updated:** 2026-10-03
|
||||
**Last updated:** 2026-10-11
|
||||
|
||||
**Status:** Deferred or exploratory work; not implemented or scheduled. These
|
||||
entries preserve work beyond the completed resilience and span-deletion
|
||||
features. Each entry states its intent; inclusion does not commit us to
|
||||
entries preserve work beyond completed feature and library upgrades.
|
||||
Each entry states its intent; inclusion does not commit us to
|
||||
implementing every capability.
|
||||
|
||||
## Domain-Aware Response Recovery
|
||||
@@ -78,3 +78,19 @@ semantics. It must address meaning preservation and the effects on segment
|
||||
identity, timestamps, fixed chunks, subsequent stages, recombination, and output
|
||||
consumers. Do not infer authorization to remove a segment from an empty string
|
||||
or introduce segment-removal machinery as part of span-deletion consistency.
|
||||
|
||||
## Library Inspection and Configuration Comparison
|
||||
|
||||
ConfigKit and PromptKit provide effective-configuration comparison; PromptKit
|
||||
also provides prompt/profile listings and contextual prompt requirement
|
||||
inspection. Exposing these capabilities in Audita is deferred until a concrete
|
||||
operator or development need arises. The dependency upgrade did not select new
|
||||
inspection commands.
|
||||
|
||||
If a need emerges, define command ownership, selection syntax, report scope, and
|
||||
disclosure before implementation. Reuse the libraries' public APIs and consider
|
||||
shared CLI conventions alongside any separately selected CommandKit adoption.
|
||||
Requirement discovery is advisory evidence rather than proof of execution
|
||||
readiness; an empty configuration diff does not prove equivalent execution.
|
||||
The library-upgrade review remains available in
|
||||
[Git history](https://gitea.maximumdirect.net/eric/audita/src/commit/4c5536ab78c72dea58d03b3c51834138d429a59a/docs/roadmap/imports.md).
|
||||
|
||||
@@ -1,327 +0,0 @@
|
||||
# Implementation Plan: ReleaseKit Adoption
|
||||
|
||||
**Last updated:** 2026-10-07
|
||||
**Status:** Complete; Stages 1–5 complete.
|
||||
**Audience:** Luna coding agent.
|
||||
|
||||
## Scope and Execution
|
||||
|
||||
Implement the target in the [ReleaseKit roadmap](releasekit.md), following
|
||||
[ADR 0001](../adr/0001-releasekit.md). The roadmap owns intent and policy
|
||||
choices; this document owns execution. The planning baseline is Audita commit
|
||||
`418da456d75a68d3bb5a43ab823c5b2b434b90cc`: v3.0.0 is released, the ADR is
|
||||
accepted, and release tooling still uses the custom scripts and delivery plugin.
|
||||
|
||||
This replaces the completed PromptKit plan. Its
|
||||
[completion record](https://gitea.maximumdirect.net/eric/audita/src/commit/418da456d75a68d3bb5a43ab823c5b2b434b90cc/docs/roadmap/implementation.md)
|
||||
remains available for historical adoption references.
|
||||
|
||||
Execute Stage 1 through Stage 5 in order. Each is a bounded Luna implementation
|
||||
unit. Commit completed units with plain English messages under the
|
||||
[agent policy](../policy/agents.md), recording the relevant checks. Intermediate
|
||||
commits need not be release-ready; complete the migration directly without
|
||||
compatibility wrappers for the old release arguments or temporary release modes.
|
||||
|
||||
Start with [development guidance](../development.md), use graph-first discovery,
|
||||
and follow the applicable [architecture](../policy/architecture.md),
|
||||
[testing](../policy/testing.md), [documentation](../policy/documentation.md),
|
||||
[release](../policy/release.md), and [OSS](../policy/oss.md) policies. Preserve
|
||||
transcript processing and its current configuration, reporting, and LLM behavior.
|
||||
|
||||
Use ReleaseKit v0.1.0, commit
|
||||
`5e60fe3113c69f95c42fbbe32a8ca4b51f5b83c1`. The sibling checkout is reference
|
||||
material. Its pinned [configuration](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.1.0/docs/config.md),
|
||||
[CLI](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.1.0/docs/cli.md),
|
||||
[build](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.1.0/docs/consumers/build.md),
|
||||
and [delivery](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.1.0/docs/consumers/delivery.md)
|
||||
contracts own generic mechanics. Keep Go 1.25.5 and unrelated dependency
|
||||
selections. Use released modules without a production local replacement.
|
||||
|
||||
### Selected Implementation Decisions
|
||||
|
||||
- Audita imports `ReleaseKit/buildinfo` for runtime version information. The
|
||||
upstream executable owns release orchestration; no application release engine
|
||||
or private linker variable is needed.
|
||||
- `releasekit.json` owns product facts. Local tooling builds the executable from
|
||||
the module graph; CI pins the same v0.1.0 release explicitly.
|
||||
- Keep `scripts/release.sh` as a thin entry point with native ReleaseKit
|
||||
arguments, such as `publish VERSION` and `check VERSION`. Compile its tool into
|
||||
ignored `bin/releasekit` and invoke it with `exec` to preserve native statuses.
|
||||
- Main-first preparation, annotated tags, the offline standard suite, Linux
|
||||
builds, and the native version smoke check are accepted. On a nonselected
|
||||
host, the shared builder may compile a temporary native executable and require
|
||||
its check to succeed. Keep only Linux amd64 and arm64 delivery targets.
|
||||
- CI uses managed `ci-deliver` and the existing `GITEA_RELEASE_TOKEN` secret,
|
||||
exposed to the command as `RELEASEKIT_GITEA_TOKEN`. Retained prebuilt artifacts
|
||||
remain an upstream recovery option rather than a second ordinary CI sequence.
|
||||
- Additional profile checks are omitted. Do not repeat the standard suite,
|
||||
maintain a local Git/publication guard layer, or copy upstream delivery logic.
|
||||
Focus tests on Audita wiring and reuse existing protection for common mechanics.
|
||||
|
||||
This implementation sprint does not choose an Audita release version, write a
|
||||
new versioned release note, tag, push to the authoritative repository, contact
|
||||
Gitea with delivery credentials, or wait for CI. Deployment observations belong
|
||||
to the first adopting release and its separate delivery status. No extra release
|
||||
gates or platform guarantees are introduced by these adoption checks.
|
||||
|
||||
## Stage 1 — Add the Dependency and Version Command [x]
|
||||
|
||||
**Primary files:** `go.mod`, `go.sum`, `internal/cli/run.go`, and focused tests in
|
||||
`internal/cli`.
|
||||
|
||||
1. Add `gitea.maximumdirect.net/eric/ReleaseKit@v0.1.0` with `go get`. Import its
|
||||
public `buildinfo` package in the CLI and run `go mod tidy` after the import
|
||||
is present. Review the dependency diff for unrelated upgrades or replacements.
|
||||
2. Add `version` dispatch to the existing CLI. With no arguments, print
|
||||
`audita ` followed by `buildinfo.Version()` and a newline to stdout, returning
|
||||
zero. Run this route independently of application configuration and runtime
|
||||
assembly. Use the existing output streams and standard-library parsing style.
|
||||
3. Add the command to root help. Support `help version` and the usual
|
||||
`version -h`/`version --help` help behavior with stdout and status zero.
|
||||
Unexpected positional arguments or unknown flags use the existing usage-error
|
||||
status two. No new version flags are needed at the root level.
|
||||
4. Add compact CLI coverage for successful version output, help, and malformed
|
||||
invocation. Derive the expected version from the public accessor rather than
|
||||
hardcoding `dev`. Exercise the version route from a temporary working directory
|
||||
without application setup and verify stderr stays empty on success. Preserve
|
||||
existing commands and help behavior.
|
||||
|
||||
**Verification and completion:** Run
|
||||
`go test ./internal/cli ./cmd/audita`, build the application to ignored
|
||||
`bin/audita`, and run its `version` command. Run `git diff --check`, review the
|
||||
module diff, and commit. Real release-version injection is verified in Stage 5;
|
||||
no test should hardcode an upstream private linker symbol.
|
||||
|
||||
**Completed 2026-10-07:** Added ReleaseKit v0.1.0 and the configuration-free
|
||||
`audita version` command with root/help routing and usage-error handling.
|
||||
Checks passed: `go test ./internal/cli ./cmd/audita`,
|
||||
`go build -o ./bin/audita ./cmd/audita`, `./bin/audita version`, and
|
||||
`git diff --check`.
|
||||
|
||||
## Stage 2 — Introduce the Product Profile and Thin Local Wrapper [x]
|
||||
|
||||
**Primary files:** new `releasekit.json`, `scripts/release.sh`, and
|
||||
`scripts/release_test.go`.
|
||||
|
||||
1. Write a JSON profile with these exact product settings:
|
||||
|
||||
| Field | Value |
|
||||
| --- | --- |
|
||||
| `product` | `Audita` |
|
||||
| `remote` | `origin` |
|
||||
| `build.main_package` | `./cmd/audita` |
|
||||
| `build.binary_name` | `audita` |
|
||||
| `build.targets` | `linux/amd64`, `linux/arm64` |
|
||||
| `delivery.base_url` | `https://gitea.maximumdirect.net` |
|
||||
| `delivery.owner` | `eric` |
|
||||
| `delivery.repository` | `audita` |
|
||||
| `delivery.token_env` | `RELEASEKIT_GITEA_TOKEN` |
|
||||
|
||||
Omit `checks`. Store no token value and use the upstream profile format
|
||||
directly; Audita does not need another profile parser in production.
|
||||
2. Replace the wrapper body with straightforward Bash using `set -euo pipefail`:
|
||||
select the repository directory relative to the script, create `bin/`, build
|
||||
the selected CLI, and execute it with the original argument vector. The
|
||||
build command is:
|
||||
|
||||
```sh
|
||||
GOWORK=off GOTOOLCHAIN=local go build -mod=readonly \
|
||||
-o ./bin/releasekit gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit
|
||||
```
|
||||
|
||||
Finish with `exec ./bin/releasekit "$@"`. Preserve argument boundaries and
|
||||
build failures. Existing `bin/` ignore rules suffice. Let ReleaseKit parse
|
||||
its commands and report errors; remove all local note, version, Git, test,
|
||||
build-target, and publication mechanics from the wrapper.
|
||||
3. Replace `TestReleaseWorkflow`'s old fourteen-scenario matrix. Use a temporary
|
||||
layout with the real wrapper and a stub at the Go/tool boundary to verify
|
||||
repository selection, forwarded native arguments (including an argument with
|
||||
spaces), and returned tool status. Include uncertain publication status three
|
||||
and a failed bootstrap that never executes the tool. The stub writes a small
|
||||
executable at the requested output path; assert effects and arguments without
|
||||
tying tests to harmless build-flag ordering or a particular shell layout.
|
||||
4. Add a focused check of the committed JSON profile's product/build/delivery
|
||||
facts and absence of additional checks or credential values. Standard JSON
|
||||
decoding in test code is sufficient. Keep this coverage alongside wrapper
|
||||
tests; compare target membership rather than incidental list order. Avoid
|
||||
reproducing upstream profile validation or remote guard tests.
|
||||
5. Keep `scripts/build-release.sh` until Stage 3 removes its CI caller. The new
|
||||
wrapper already uses ReleaseKit's selected build specification.
|
||||
|
||||
**Verification and completion:** Run `go test ./scripts`, then
|
||||
`bash scripts/release.sh version` to verify real tool bootstrap and execution.
|
||||
This prints the tool's version, not Audita's. Check ignored build output and
|
||||
`git diff --check`, then commit. No publication or delivery invocation against
|
||||
an external service is needed.
|
||||
|
||||
**Completed 2026-10-07:** Added the Audita profile and replaced the local
|
||||
publication workflow with a wrapper that builds and execs ReleaseKit. Replaced
|
||||
the publication test matrix with focused wrapper and profile checks. Checks
|
||||
passed: `go test ./scripts`, `bash scripts/release.sh version`, ignored-output
|
||||
verification for `bin/releasekit`, and `git diff --check`.
|
||||
|
||||
## Stage 3 — Migrate Woodpecker Delivery and Retire the Builder [x]
|
||||
|
||||
**Primary files:** `.woodpecker/release.yml` and deletion of
|
||||
`scripts/build-release.sh`.
|
||||
|
||||
1. Adapt the maintained upstream
|
||||
[tag-delivery template](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.1.0/examples/woodpecker/tag-delivery.yml).
|
||||
Use its matrix and single `deliver` step with `GO_IMAGE: golang:1.25.5` and
|
||||
`RELEASEKIT_VERSION: v0.1.0`. Select tag events under `refs/tags/v*`.
|
||||
2. Map the command environment variable `RELEASEKIT_GITEA_TOKEN` from the
|
||||
existing Woodpecker secret `GITEA_RELEASE_TOKEN`. Use the existing credential;
|
||||
no new secret name or credential provisioning is selected by this migration.
|
||||
3. Use the template's command, preserving Woodpecker interpolation escaping:
|
||||
|
||||
```sh
|
||||
go run gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit@${RELEASEKIT_VERSION} ci-deliver \
|
||||
--repo "$${CI_WORKSPACE}" \
|
||||
--commit "$${CI_COMMIT_SHA}" \
|
||||
"$${CI_COMMIT_TAG}"
|
||||
```
|
||||
|
||||
ReleaseKit owns fetch/checkout verification, dependency preparation, builds,
|
||||
note-page creation, manifests, and uploads. Remove the separate build step,
|
||||
release plugin, wildcard asset settings, and local checksum configuration.
|
||||
Managed delivery gets its targets and destination from `releasekit.json`.
|
||||
4. Delete `scripts/build-release.sh` after confirming its active caller is gone.
|
||||
Search remaining script/CI references and remove only obsolete active
|
||||
invocations. Historical release records retain their original descriptions.
|
||||
5. Review the parsed workflow against the template: selected image/pin, tag
|
||||
trigger, token mapping, and event arguments. Use the existing YAML dependency
|
||||
or available tooling for local syntax inspection. Confirm the tool pin matches
|
||||
the selected module. This is adoption validation; it does not require a new
|
||||
permanent workflow-text snapshot test or a running Woodpecker instance.
|
||||
|
||||
**Verification and completion:** Run `go test ./scripts`, review the workflow
|
||||
and profile together, and run `git diff --check`. Commit the delivery migration.
|
||||
The existing Go image must provide compatible Go and Git; real runner execution
|
||||
is observed during subsequent delivery, independently of source completion.
|
||||
|
||||
**Completed 2026-10-07:** Migrated Woodpecker to the pinned managed
|
||||
`ci-deliver` step using the existing secret, then removed the obsolete binary
|
||||
builder. Verified the parsed workflow settings and command against the pinned
|
||||
template, confirmed the module/workflow pins match, ran `go test ./scripts`,
|
||||
confirmed no active CI or script caller remained, and passed `git diff --check`.
|
||||
|
||||
## Stage 4 — Align Policy, Documentation, and Attribution [x]
|
||||
|
||||
**Primary files:** `docs/release.md`, `docs/policy/release.md`, `docs/cli.md`,
|
||||
`docs/internal/cli-config.md`, `docs/adr/README.md`, and
|
||||
`docs/oss/attribution.md`. Update other current references only where affected.
|
||||
|
||||
1. Rewrite the runbook around dependency preparation, a committed candidate,
|
||||
`git push origin main`, and `bash scripts/release.sh publish VERSION`.
|
||||
Explain that remote `main` must identify the captured candidate exactly.
|
||||
`bash scripts/release.sh check VERSION` is an optional local diagnostic,
|
||||
never a required pre-publication step. Document preparation with
|
||||
`GOWORK=off GOTOOLCHAIN=local go mod download`; if it changes module files,
|
||||
those changes belong in the candidate before publication.
|
||||
2. Describe annotated notes-derived tags, native publication statuses, and
|
||||
recovery against the captured authoritative endpoint. State that the tool
|
||||
retains a local tag after push failure. An exact-object recovery can confirm
|
||||
success; an unreadable result remains unknown. Link to pinned upstream
|
||||
recovery guidance instead of implementing or repeating its full algorithm.
|
||||
Remove the old atomic-push prerequisite and procedure.
|
||||
3. Describe the shared tagged-source delivery command, the existing secret
|
||||
mapping, Linux artifacts, note body/footer, and separate delivery status.
|
||||
Explain content-aware retries and retained-artifact recovery by linking to
|
||||
upstream. Remove references to the retired builder/plugin and the assertion
|
||||
that Audita has no version command. Keep the release script's bootstrap
|
||||
preparation distinct from its offline candidate validation.
|
||||
4. In the release policy, retain upstream wording wherever it already permits
|
||||
the selected approach. Add a concise project-specific native-host check
|
||||
provision under supported platforms/candidate validation: Linux delivery
|
||||
targets remain required, macOS development remains best effort, and running
|
||||
publication on a nonselected host requires ReleaseKit's temporary native
|
||||
version check to succeed. Qualify the existing statement that macOS failures
|
||||
never block release accordingly. Mac access and native tests on every target
|
||||
remain unnecessary. Date the local policy update and preserve its upstream
|
||||
source attribution. Avoid unrelated policy changes or additional gates.
|
||||
5. Document `audita version`, its stdout/help/usage behavior, and public version
|
||||
fallback in `docs/cli.md`. Add a short implementation/change-recipe note in
|
||||
`docs/internal/cli-config.md` linking to that contract and the accepted ADR.
|
||||
Update the ADR index to list ADR 0001; its current assertion that no ADR exists
|
||||
is obsolete. Preserve the accepted ADR's content.
|
||||
6. Add a House Format ReleaseKit entry with selected module v0.1.0,
|
||||
`Copyright (C) 2026 Eric Rakestraw`, and `LGPL-3.0-or-later`. Link existing
|
||||
`licenses/LGPL-3.0.txt` and `licenses/GPL-3.0.txt`, and the upstream COPYRIGHT
|
||||
and source at commit `5e60fe3113c69f95c42fbbe32a8ca4b51f5b83c1`. Check the
|
||||
selected module's notices. Keep the application grant and unchanged license
|
||||
texts intact; no policy-template material is copied in this feature.
|
||||
7. Repair current navigation affected by replacing this implementation plan.
|
||||
Completed PromptKit/ConfigKit roadmap references that intend to identify
|
||||
their former plan should link to the corresponding historical completion
|
||||
records, not this ReleaseKit plan. Preserve published release notes and tags.
|
||||
The next release note is deferred to release preparation.
|
||||
|
||||
**Verification and completion:** Check commands against the new wrapper/CLI,
|
||||
local links and anchors, pinned upstream references, source attribution, and
|
||||
`git diff --check`. Use the prior successful code checks for unchanged code.
|
||||
Commit the documentation unit.
|
||||
|
||||
**Completed 2026-10-07:** Updated the ReleaseKit runbook, release policy,
|
||||
version contract and contributor guidance, ADR index, and component attribution.
|
||||
Repaired PromptKit and ConfigKit links to their historical implementation
|
||||
records. Verified local links and anchors, release CLI and version commands,
|
||||
pinned module/notices, source attribution, and `git diff --check`.
|
||||
|
||||
## Stage 5 — Verify Adoption and Close the Plan [x]
|
||||
|
||||
**Primary files:** This plan and the ReleaseKit feature roadmap; fix an
|
||||
implementation file only if the final checks expose a real integration defect.
|
||||
|
||||
1. Audit the roadmap acceptance criteria against the landed files. Confirm the
|
||||
runtime uses the public version accessor, the profile selects only the two
|
||||
Linux targets, pins agree, the wrapper owns no common release mechanics, and
|
||||
the old builder and repeated publication tests have been retired.
|
||||
2. Prepare dependencies if necessary, then run `go test ./...` and
|
||||
`go build -o ./bin/audita ./cmd/audita`. Run the normal binary's `version`
|
||||
command without application setup. These tests remain offline; preparation
|
||||
may use the module network separately.
|
||||
3. On the committed implementation, verify the real shared builder once using
|
||||
temporary output outside the repository:
|
||||
|
||||
```sh
|
||||
releasekit_check_dir=$(mktemp -d)
|
||||
bash scripts/release.sh build --output "$releasekit_check_dir" v0.0.0
|
||||
```
|
||||
|
||||
`v0.0.0` is solely a build-test identifier, not an Audita release selection.
|
||||
`build` requires no release note or remote publication. Confirm both
|
||||
`audita-v0.0.0-linux-amd64` and `audita-v0.0.0-linux-arm64` are produced;
|
||||
ReleaseKit's own mandatory native smoke check must report success. It checks
|
||||
`audita v0.0.0` with a newline on a host-runnable executable, building a
|
||||
temporary native executable itself when needed. Do not execute a foreign
|
||||
architecture binary. Remove the temporary output afterward. The CLI's private
|
||||
build receipt is an upstream artifact and should not enter Git.
|
||||
4. Review the dependency/attribution diff, wrapper/profile wiring evidence,
|
||||
workflow syntax and pin, and current documentation. Run `git diff --check`
|
||||
and confirm no generated output, credentials, or unrelated work is staged.
|
||||
Fix proven defects and rerun only affected checks. No real tag publication,
|
||||
hosted upload, paid inference, extra platform matrix, or CI polling is needed
|
||||
to establish this implementation's completion.
|
||||
5. Mark the plan and feature roadmap complete after these requirements pass.
|
||||
Record the tested implementation revision and checks; distinguish a later
|
||||
documentation-only closure commit. Summarize the local infrastructure removed
|
||||
and any remaining deployment observations accurately. Commit the closure.
|
||||
The first adopting release and live delivery remain separate authorized work.
|
||||
|
||||
**End state:** Audita supplies a product profile, native version command, thin
|
||||
local entry point, and shared CI invocation. ReleaseKit owns the common release
|
||||
mechanics and their tests. Documentation and attribution match the integration.
|
||||
No implementation-blocking open questions remain.
|
||||
|
||||
**Completed 2026-10-07:** Audited the adoption criteria against implementation
|
||||
revision `5ac704c4c42fd23ed94b1f7351491ad580726db1`. Checks passed:
|
||||
`go test ./...`; `go build -o ./bin/audita ./cmd/audita` followed by the binary's
|
||||
`version` and `--help` commands; ReleaseKit's real `build` command produced
|
||||
`audita-v0.0.0-linux-amd64` and `audita-v0.0.0-linux-arm64` and passed its
|
||||
native version smoke check; profile, module/tool pins, wrapper, and parsed
|
||||
Woodpecker workflow matched the selected integration; and `git diff --check`.
|
||||
The closure record is a documentation-only commit after the tested
|
||||
implementation revision. Audita's local build and publication mechanics and
|
||||
their repeated-mechanics test matrix have been removed in favor of ReleaseKit.
|
||||
The first adopting release and live Woodpecker/Gitea delivery observation
|
||||
remain separate work.
|
||||
@@ -1,276 +0,0 @@
|
||||
# PromptKit v0.12.0 Adoption Roadmap
|
||||
|
||||
**Last updated:** 2026-10-04
|
||||
|
||||
**Status:** Complete. The implementation plan records the ordered work and
|
||||
verification details.
|
||||
|
||||
## Purpose and Baseline
|
||||
|
||||
Adopt PromptKit v0.12.0 now that the independent
|
||||
[ConfigKit v0.5.0 upgrade](configkit.md) is complete. Align Audita with the
|
||||
libraries' native configuration model while retaining Audita's domain rules,
|
||||
application-owned backend settings, and resilient processing workflow.
|
||||
|
||||
At reviewed Audita revision `8cba751835ba9faad340e933a3cfbb59c03924fd`,
|
||||
[go.mod](../../go.mod) selects ConfigKit v0.5.0 and PromptKit v0.11.2, with
|
||||
OpenRouter and Rakestrawhome `/v2` catalogs at `v2.20260926.0`. Go 1.25.5
|
||||
remains the application minimum. The implemented contracts belong to
|
||||
[configuration](../config.md), the
|
||||
[LLM integration](../integrations/openai-compatible-llm.md), and the
|
||||
[LLM runtime](../internal/llm-runtime.md).
|
||||
|
||||
`internal/framework/llm.NewRuntime` currently assembles one engine using the
|
||||
old prompt/profile filesystem options and programmatic backend registration.
|
||||
Audita embeds seven prompt definitions and separate response schemas. Operators
|
||||
select proposal and validation profiles from `profiles_dir`; the effective
|
||||
backend must be registered in application configuration, its endpoint must
|
||||
match, and its credential comes from Audita's ConfigKit-resolved settings.
|
||||
Successful profile reads are recorded to protect those sources from output
|
||||
collisions. Both roles share the same engine's backend admission controls.
|
||||
|
||||
The reviewed upstream release is
|
||||
[PromptKit v0.12.0](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.12.0/docs/releases/v0.12.0.md),
|
||||
commit `4b8169da286917fde7875425bb32b799b12c6af3`. It depends on ConfigKit
|
||||
v0.5.0 and both maintained `/v3` catalog modules at `v3.20260930.0`. This is an
|
||||
intentional incompatible pre-1.0 minor release: it replaces construction and
|
||||
configuration APIs, rather than simply updating provider data. PromptKit's
|
||||
[format reference](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.12.0/docs/formats.md)
|
||||
and [consumer migration guide](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.12.0/docs/consumers/pkg-promptkit.md#migrate-from-the-previous-configuration-api)
|
||||
own the upstream details.
|
||||
|
||||
## Target End State
|
||||
|
||||
- Audita imports released PromptKit v0.12.0 and its `/v3` catalogs, retaining
|
||||
ConfigKit v0.5.0 and using no local dependency replacement.
|
||||
- The runtime uses `Config.Sources` and native ConfigKit source groups.
|
||||
PromptKit owns composition, inheritance, presence, final-definition
|
||||
validation, prompt capture, and execution. Audita does not translate old
|
||||
profiles or implement a second YAML loader or inheritance resolver.
|
||||
- Embedded prompts and maintained operator profiles use keyed `prompts` and
|
||||
`profiles` mappings. Existing prompt IDs, versions, role selections,
|
||||
instructions, and response-schema associations remain the adoption baseline.
|
||||
The application configuration schema, overlay selection, CLI interface, and
|
||||
main-file-relative `profiles_dir` resolution remain in place.
|
||||
- Native profile `extends`, field-presence semantics, and source-relative
|
||||
resource rules apply. Documents can contain multiple definitions, and IDs
|
||||
come from mapping keys rather than filenames. The existing `profiles_dir`
|
||||
accepts native unified PromptKit documents containing profiles, backends,
|
||||
and prompts, including intentional operator prompt overrides.
|
||||
- Application backend endpoints, configured concurrency and queue capacity,
|
||||
and credential ownership remain authoritative for selected roles. Preserve
|
||||
the existing profile-selection and prepared-target checks; do not introduce
|
||||
a second admission controller or implicit provider credential lookup.
|
||||
- A runtime uses one captured configuration snapshot for both roles. Each CLI
|
||||
invocation constructs a new engine; hot reload is not part of this feature.
|
||||
Existing inspection remains offline and safe, and consumed host sources
|
||||
remain protected from output collisions.
|
||||
- PromptKit retains responsibility for transport retries, schema repair,
|
||||
observation, and prepared execution. Preserve Audita's configured retry and
|
||||
repair budgets, operation deadlines, cancellation, partial-success behavior,
|
||||
error/recovery reporting, and debug selection.
|
||||
|
||||
## Configuration Assembly and Ownership
|
||||
|
||||
Replace removed `WithPromptFS`, `WithProfileFS`, and `WithBackend` usage with
|
||||
the released source API. Discover embedded YAML through `FilesystemInputs` and
|
||||
operator YAML through `DirectoryInputs`, with explicit caller tiers. Keep the
|
||||
retained schema filesystem integration and HTTP client configuration.
|
||||
Use the helpers' default-disabled imports; this adoption does not require new
|
||||
application source-selection flags or operator underlay tiers.
|
||||
|
||||
PromptKit supplies catalog definitions first and its own defaults next. Caller
|
||||
tiers then overlay in their supplied order, followed by an optional highest
|
||||
priority main input. Files within one directory group compose strictly;
|
||||
alphabetical filenames do not establish override precedence. Use separate
|
||||
tiers for genuine priority differences rather than manufacturing file-order
|
||||
semantics.
|
||||
|
||||
Represent application backend settings as a final programmatic source, using
|
||||
`BackendSource` or ConfigKit mappings where explicit null is needed. Preserve
|
||||
configured zero queue capacity as an explicit value. Suppress backend-derived
|
||||
credential environment lookup explicitly where catalog layering would otherwise
|
||||
introduce it; omission alone can retain a lower-tier value. Continue detecting
|
||||
competing effective profile credential lookups rather than silently clearing
|
||||
operator profile fields. A missing backend credential remains valid for an
|
||||
unauthenticated local service unless the selected profile requires a key.
|
||||
|
||||
Catalog backend IDs are no longer reserved upstream. Audita should not invent a
|
||||
new reservation rule. Catalog selection alone must not bypass application
|
||||
registration, endpoint, capacity, or credential requirements. Catalog profile
|
||||
contents may evolve; this upgrade does not promise fixed model choices or live
|
||||
provider availability.
|
||||
|
||||
The accepted caller order is embedded Audita prompts, operator definitions,
|
||||
then application backend settings. The existing `profiles_dir` accepts native
|
||||
unified PromptKit documents containing profiles, backends, and prompts. Keep
|
||||
the name and path setting for continuity, and document its broader accepted
|
||||
content. This follows the upstream source API without a parallel parser or
|
||||
top-level filtering. Profiles, provider defaults, and intentional prompt
|
||||
overrides use the same native composition model.
|
||||
|
||||
Audita continues to ship its domain prompts, enforce its selected-backend
|
||||
requirements, and supply its per-call schemas. Operator prompt overrides are
|
||||
an accepted capability of this adoption; documentation, source accounting,
|
||||
and focused behavioral coverage should reflect them.
|
||||
|
||||
## Work Required
|
||||
|
||||
### Runtime Construction and Source Accounting
|
||||
|
||||
Migrate `internal/framework/llm/runtime.go` to layered construction and retain
|
||||
the role-bound adapter boundary. Review startup inspection and failure
|
||||
classification because upstream now validates all final definitions, including
|
||||
unused ones, during engine construction. Distinguish invalid operator inputs
|
||||
from broken embedded assets under the existing
|
||||
[CLI exit contract](../cli.md); do not treat every construction failure as an
|
||||
operator error merely because validation moved earlier.
|
||||
|
||||
Upstream permits partial profiles and defers endpoint/model completeness until
|
||||
request overrides are applied. Audita supplies no model override, so explicitly
|
||||
validate that both selected role profiles have a nonblank model and a complete
|
||||
effective endpoint during offline configuration validation and runtime setup.
|
||||
Retain the application-backend, endpoint-match, and credential checks. Do not
|
||||
rely on engine construction or profile inspection alone to establish selected
|
||||
profile completeness. Unselected partial profiles remain permitted if they
|
||||
satisfy upstream definition validation; they need not be runnable.
|
||||
|
||||
Adapt source accounting to the new discovery/capture boundary. The existing
|
||||
recording filesystem wrapper may be replaceable with discovered inputs or
|
||||
upstream source metadata. Protect the host sources actually consumed by the
|
||||
runtime, including inherited and differently named definitions, without
|
||||
guessing filenames from selected profile IDs. Account for consumed operator
|
||||
message files as well. Keep this proportionate to the existing collision
|
||||
contract; do not add filesystem concurrency or power-loss guarantees.
|
||||
|
||||
Keep the existing safe effective-profile summaries and application explanations.
|
||||
Use upstream metadata where useful, but do not expose the full
|
||||
`InspectConfiguration` snapshot as ordinary CLI or report output: prompt text
|
||||
and arbitrary provider fields are outside those summaries' current scope.
|
||||
|
||||
### Prompt Assets, Profiles, and Presence Semantics
|
||||
|
||||
Move each of the seven files in `internal/prompts/assets/prompts` to the keyed
|
||||
prompt/version format. Keep the shared instruction fragments and the complete
|
||||
per-call output contracts owned by Audita. This migration does not authorize
|
||||
another prompt-quality rewrite or changes to domain validators.
|
||||
|
||||
The adapter supplies `HardeningPolicy`, `ProposalContract`, and
|
||||
`ValidationContract` as template variables. Embedded prompts retain their
|
||||
references to the applicable variables. Operator message overrides control
|
||||
whether those variables are rendered; supplying a variable does not inject its
|
||||
text into a template that omits it. Preserve this native override behavior and
|
||||
document the distinction. Per-call schemas and domain validation remain enforced
|
||||
regardless of those references. Unconditional shared-instruction injection is
|
||||
outside this adoption.
|
||||
|
||||
Convert the six maintained profiles in `examples/profiles` and test-generated
|
||||
profile/prompt fixtures to the new format. Convert any old `base_profile`
|
||||
usage to `extends`, and remove embedded identities. Migrate tests that construct
|
||||
engines using removed options or old `Profile`/`Backend` values.
|
||||
|
||||
Reorganize the maintained profiles into separately selected local and service
|
||||
directory roots. The current shared directory includes profiles referring to
|
||||
backends absent from each example's application configuration; eager validation
|
||||
would reject those unselected definitions after a format-only conversion.
|
||||
Update `profiles_dir` in `examples/minimal-config.yml`,
|
||||
`examples/production-config.yml`, and `examples/configkit-inheritance.yml` to
|
||||
select the appropriate root. Keep the service testing profiles in the service
|
||||
root so the testing overlay remains usable. Discovery is recursive: placing
|
||||
both groups beneath a common selected root does not isolate them. Update example
|
||||
links and validation recipes to match the final layout.
|
||||
|
||||
Review presence deliberately rather than mechanically preserving old serialized
|
||||
values. In particular, explicit zero temperature, top-p, or max-tokens now means
|
||||
an outbound zero; zero timeout disables PromptKit's generation deadline while
|
||||
Audita's outer operation deadline still applies. Omission, blank values, and
|
||||
null have field-specific meanings. Empty provider maps do not erase inherited
|
||||
entries, and changing model/backend does not erase unrelated explicit settings.
|
||||
|
||||
Use the native meanings without a compatibility shim. Retaining the examples'
|
||||
literal `temperature: 0` as an explicit provider setting is recommended; explain
|
||||
that omitting the field requests an unspecified value, and null suppresses an
|
||||
inherited control. Do not automatically turn every existing zero into omission
|
||||
or every omission into a zero. Demonstrate representative profile inheritance
|
||||
without requiring every maintained example to use it.
|
||||
|
||||
### Documentation, Migration, and Attribution
|
||||
|
||||
Update the profile section of `docs/config.md` and maintained examples when the
|
||||
implementation lands. Explain the broader accepted content of `profiles_dir`,
|
||||
operator prompt overrides, their precedence and optional use of shared instruction
|
||||
variables, keyed identities, composition versus precedence, profile inheritance,
|
||||
presence, eager final-definition validation, selected-root errors, and captured
|
||||
configuration. Link to the pinned
|
||||
upstream reference for generic field semantics rather than reproducing its
|
||||
entire contract.
|
||||
|
||||
Include operator migration guidance for old profile documents and behaviorally
|
||||
significant zeros/nulls. This is a deliberate format migration, not an automatic
|
||||
upgrade of existing installation files. Preserve supported application overlays,
|
||||
including the cheaper/faster testing-profile workflow.
|
||||
|
||||
Update the pinned consumer link in `docs/integrations/openai-compatible-llm.md`,
|
||||
construction/source-accounting descriptions in `docs/internal/llm-runtime.md`,
|
||||
and asset-format guidance in `docs/internal/prompts.md`. Update other affected
|
||||
references only where implemented behavior changes.
|
||||
|
||||
Update `go.mod`, `go.sum`, and `docs/oss/attribution.md` for PromptKit and the two
|
||||
catalog modules. Verify exact selected source revisions and upstream notices
|
||||
under the [OSS policy](../policy/oss.md); retain the applicable LGPL/GPL and MIT
|
||||
texts rather than duplicating unchanged license documents. Dependency adoption
|
||||
does not change Audita's application license.
|
||||
|
||||
Plan this adoption for an Audita major release under the
|
||||
[release policy](../policy/release.md#versioning-and-compatibility). The public
|
||||
profile format changes incompatibly and no compatibility loader is planned;
|
||||
PromptKit's own pre-1.0 minor version does not change Audita's classification.
|
||||
The exact version and publication timing remain deferred to release preparation.
|
||||
|
||||
## Verification and Completion
|
||||
|
||||
Use existing offline tests as the starting point. Update fixtures intentionally,
|
||||
and add focused behavioral coverage where the source migration creates a
|
||||
distinct risk. Completion means:
|
||||
|
||||
- The released dependency set builds and the complete Audita test suite passes.
|
||||
- All registered embedded prompts load and render from keyed assets, retaining
|
||||
their applicable shared-instruction references and established per-call schemas.
|
||||
- Offline configuration validation rejects incomplete selected profiles, including
|
||||
a missing or blank model, while accepting valid unselected partial profiles.
|
||||
- Selected roles use final application backend settings and direct resolved
|
||||
credentials; both roles still share configured capacity, including explicit
|
||||
zero queue capacity. Catalog layering does not introduce a competing lookup.
|
||||
- Representative keyed profiles, native inheritance, and explicit presence work
|
||||
through the real runtime. Directory conflicts and invalid final definitions
|
||||
produce useful startup errors without filename-derived identity assumptions.
|
||||
- Operator prompt and backend contributions follow the accepted source order;
|
||||
prompt overrides render, including when their messages omit shared-instruction
|
||||
variables, while Audita retains its per-call schemas, domain validation, and
|
||||
authoritative application backend settings.
|
||||
- Source collision protection, safe inspection, and operator-versus-asset error
|
||||
classification remain effective at the changed construction boundary.
|
||||
- Representative prepared execution, schema repair, transient retry, and
|
||||
partial-success tests retain their existing behavior. Reuse adequate coverage
|
||||
rather than duplicating PromptKit's complete upstream test matrix.
|
||||
- Local, service, testing-overlay, and ConfigKit inheritance examples validate
|
||||
offline using their separately selected profile roots. Canonical documentation
|
||||
describes the migrated format, shared-instruction behavior, and major-release
|
||||
migration; attribution identifies the selected library sources accurately.
|
||||
|
||||
No live provider calls, new release gates, or CI-success dependency are needed
|
||||
to establish adoption. Guided domain recovery and the other work recorded in
|
||||
[future.md](future.md) remain separate features. Do not expand this upgrade into
|
||||
new report formats, pipeline scheduling, or general configuration-inspection
|
||||
commands. The [historical implementation plan](https://gitea.maximumdirect.net/eric/audita/src/commit/418da456d75a68d3bb5a43ab823c5b2b434b90cc/docs/roadmap/implementation.md)
|
||||
records that work's execution steps and verification.
|
||||
|
||||
## Completion Record
|
||||
|
||||
Implementation code is recorded through revision `5525fe8`; documentation was
|
||||
updated in `9bcf183`, and the final roadmap closure is documentation-only. At
|
||||
`9bcf183`, `go build -o ./bin/audita ./cmd/audita`, `go test ./...`, all six
|
||||
offline maintained-example commands in the implementation plan, `go mod
|
||||
verify`, and `git diff --check` passed. The selected dependency graph and
|
||||
commit-pinned attribution match PromptKit v0.12.0 and both `/v3` catalogs at
|
||||
`v3.20260930.0`.
|
||||
@@ -1,216 +0,0 @@
|
||||
# ReleaseKit Adoption Roadmap
|
||||
|
||||
**Last updated:** 2026-10-07
|
||||
**Status:** Implementation complete; first adopting release and live delivery
|
||||
observation pending.
|
||||
|
||||
## Purpose and Original Baseline
|
||||
|
||||
Implement the decision in [ADR 0001](../adr/0001-releasekit.md): standardize
|
||||
Audita's release process on ReleaseKit to improve maintainability and reduce
|
||||
locally owned release-focused code. Those benefits outweigh the small advantages
|
||||
of retaining Audita's custom procedure. The workflow changes required by the
|
||||
shared standard are accepted.
|
||||
|
||||
At Audita revision `6de470b53d185b10327ec4deba23f5a84e606e1f`, v3.0.0 is
|
||||
released. Audita owns `scripts/release.sh`, `scripts/build-release.sh`, and
|
||||
`scripts/release_test.go`, totaling 207 lines, plus the 26-line Woodpecker delivery
|
||||
workflow. Publication validates a clean candidate, cross-builds Linux binaries,
|
||||
and atomically pushes `main` and a lightweight tag. Woodpecker builds artifacts
|
||||
and uses a release plugin to publish the note, binaries, and checksums. Audita
|
||||
has no runtime version command.
|
||||
|
||||
The adoption baseline is ReleaseKit v0.1.0, commit
|
||||
`5e60fe3113c69f95c42fbbe32a8ca4b51f5b83c1`. Its public library, executable,
|
||||
`buildinfo` package, and maintained Woodpecker integration cover the required
|
||||
mechanics. The upstream test suite passes; its documentation records live
|
||||
Woodpecker/Gitea verification as remaining deployment work.
|
||||
|
||||
## Current Baseline
|
||||
|
||||
The adoption implementation is now present: `go.mod` selects ReleaseKit
|
||||
v0.1.0, `releasekit.json` supplies Audita's product and delivery facts,
|
||||
`scripts/release.sh` builds and forwards arguments to its executable, and
|
||||
`.woodpecker/release.yml` invokes the same pinned version for tag delivery.
|
||||
The application exposes `audita version` through `buildinfo`; the custom
|
||||
release builder has been removed. The sections below retain the intended
|
||||
adoption scope rather than describing work that still needs implementation.
|
||||
|
||||
The [adoption review](remediation.md) records focused CLI and wiring-test
|
||||
findings and their resolution status. Remaining implementation corrections
|
||||
belong there. First-release delivery observation remains deployment work,
|
||||
separate from source-release completion.
|
||||
|
||||
## Target End State
|
||||
|
||||
- ReleaseKit owns candidate validation, source publication, version injection,
|
||||
selected-target builds, checksum generation, and hosted delivery. Audita owns
|
||||
its product facts, compatibility decisions, release notes, and necessary
|
||||
product-specific checks.
|
||||
- A small `releasekit.json` declares product `Audita`, remote `origin`, main
|
||||
package `./cmd/audita`, binary name `audita`, and delivery targets
|
||||
`linux/amd64` and `linux/arm64`. Its Gitea destination identifies
|
||||
`https://gitea.maximumdirect.net`, owner `eric`, and repository `audita`.
|
||||
- Maintainers commit the candidate and publish it to authoritative `main`
|
||||
before invoking ReleaseKit publication. ReleaseKit validates that candidate,
|
||||
creates an annotated tag from the committed note, and pushes its exact tag
|
||||
object. Confirmed source publication completes the release independently of
|
||||
CI and artifact delivery.
|
||||
- One captured candidate receives ReleaseKit's standard offline test suite and
|
||||
selected build verification. Audita's profile introduces no additional checks
|
||||
without a concrete product need. The optional local check remains a diagnostic
|
||||
operation rather than a prerequisite that duplicates publication validation.
|
||||
- `audita version` reports `audita <version>` through ReleaseKit's public
|
||||
`buildinfo.Version()` accessor. Ordinary development builds use its native
|
||||
fallback behavior, including `dev` when release information is unavailable.
|
||||
- Woodpecker invokes the pinned shared `ci-deliver` command. Hosted notes,
|
||||
Linux assets, and `SHA256SUMS` retain their current identities; delivery
|
||||
compares existing content, adds missing assets, and reports conflicts and
|
||||
uncertainty separately from source publication.
|
||||
- Audita's release code consists of thin tool invocation and product wiring,
|
||||
with focused integration coverage. Common mechanics and their repeated tests
|
||||
reside upstream.
|
||||
|
||||
## Accepted Standardization Choices
|
||||
|
||||
Adopt ReleaseKit's main-first publication and annotated tags, replacing the
|
||||
atomic branch/tag push and lightweight tags for new releases. Existing released
|
||||
tags, notes, pages, and assets retain their historical contents.
|
||||
|
||||
Adopt its standard build settings and mandatory native version smoke check.
|
||||
The check verifies that version injection reaches the executable. On a host
|
||||
outside the selected Linux targets, ReleaseKit can build a temporary native
|
||||
binary; publication from that host depends on that check succeeding. This is an
|
||||
accepted workflow change, including for macOS invocations. Linux remains the
|
||||
production delivery target, and macOS remains a best-effort development platform.
|
||||
Mac access and macOS artifact delivery are not release prerequisites.
|
||||
|
||||
Use the shared managed build-and-deliver operation for ordinary CI delivery.
|
||||
ReleaseKit's retained-artifact workflow remains available when a delivery retry
|
||||
needs the original bytes. Follow its content-aware recovery behavior rather
|
||||
than reproducing that machinery in Audita.
|
||||
|
||||
## Adoption Scope
|
||||
|
||||
### Dependency, Profile, and Tool Entry Point
|
||||
|
||||
Select the released v0.1.0 module in `go.mod` and `go.sum`. The application uses
|
||||
the lightweight `buildinfo` facade; release orchestration is exercised through
|
||||
the upstream executable. The sibling checkout is review material, not a
|
||||
production dependency replacement.
|
||||
|
||||
Add the product profile described above. Leave additional checks empty and keep
|
||||
delivery tokens out of the profile. Use `RELEASEKIT_GITEA_TOKEN` as the token
|
||||
environment variable, supplied from the existing Woodpecker
|
||||
`GITEA_RELEASE_TOKEN` secret.
|
||||
|
||||
Reduce `scripts/release.sh` to repository selection, building the CLI selected
|
||||
by Audita's module graph into ignored `bin/` output, and invoking it directly.
|
||||
Forward ReleaseKit's native commands and arguments and preserve its exit status,
|
||||
including uncertain publication status. Use the same released tool version in
|
||||
the module graph and CI pin. Dependency/tool preparation belongs before offline
|
||||
candidate validation.
|
||||
|
||||
### Runtime Version Reporting
|
||||
|
||||
Add `version` to the existing CLI dispatch and help, with output
|
||||
`audita <version>` followed by a newline and exit status zero. This operation
|
||||
works without loading application configuration, resolving LLM credentials, or
|
||||
contacting a provider. Use the public accessor and let ReleaseKit own injection
|
||||
mechanics. Keep the release orchestration dependency outside transcript
|
||||
processing.
|
||||
|
||||
### Publication and Binary Delivery
|
||||
|
||||
Replace the local publication and cross-build mechanics with ReleaseKit's
|
||||
commands and profile. Retire `scripts/build-release.sh` when its callers use
|
||||
the shared builder.
|
||||
|
||||
Replace the current Woodpecker build/plugin sequence with the maintained
|
||||
tag-delivery integration, pinned to v0.1.0. Retain a compatible Go 1.25.5 image
|
||||
with Git, the existing secret, and only the selected Linux targets. Pass the
|
||||
workspace, event commit, and version to `ci-deliver`; the shared command owns
|
||||
tagged-checkout verification, dependency preparation, build, and delivery.
|
||||
|
||||
The declared artifacts remain `audita-<version>-linux-amd64`,
|
||||
`audita-<version>-linux-arm64`, and `SHA256SUMS`. The committed release note
|
||||
supplies the hosted body and required licensing footer. Delivery status and
|
||||
recovery follow the upstream operation; source publication does not poll CI or
|
||||
wait for assets.
|
||||
|
||||
### Tests and Removal of Duplicated Mechanics
|
||||
|
||||
Replace the repeated release-mechanics matrix in `scripts/release_test.go`
|
||||
with proportionate coverage of Audita's wiring. Protect the new version command
|
||||
and wrapper/profile integration where these introduce distinct consumer risks.
|
||||
Verify actual version injection and the selected Linux builds through the real
|
||||
builder during adoption validation. Use local Git/HTTP fixtures and controlled
|
||||
command boundaries where needed; keep the default suite offline.
|
||||
|
||||
Reuse ReleaseKit's coverage for common Git guards, push reconciliation,
|
||||
checksums, and delivery retries. Evaluate the reduction in local machinery from
|
||||
the resulting implementation rather than imposing a numerical deletion target.
|
||||
|
||||
### Documentation and Attribution
|
||||
|
||||
Update `docs/release.md` for main-first preparation, native ReleaseKit commands,
|
||||
annotated tags, dependency preparation, delivery status, and failure recovery.
|
||||
Align `docs/policy/release.md` where necessary to describe the deliberately
|
||||
accepted native-host check while retaining the existing production targets and
|
||||
independent source-completion rule.
|
||||
|
||||
Update `docs/cli.md`, relevant internal CLI guidance, and the ADR index for the
|
||||
version command and accepted decision. Keep the ADR's decision content intact.
|
||||
Record the adoption and maintainer workflow change in the next release note
|
||||
when that release is prepared.
|
||||
|
||||
Add ReleaseKit's selected source and LGPL-3.0-or-later notices to
|
||||
`docs/oss/attribution.md` under the existing OSS policy. Reuse applicable license
|
||||
texts already present. Incorporating `buildinfo` does not change Audita's
|
||||
application license.
|
||||
|
||||
## Verification and Completion
|
||||
|
||||
Adoption is complete when:
|
||||
|
||||
- The released dependency and pinned tool are selected consistently, and the
|
||||
application builds with its default offline test suite passing.
|
||||
- Version output works without LLM setup and reports the injected version from
|
||||
a ReleaseKit-built executable.
|
||||
- The native profile and thin wrapper drive candidate checks and publication
|
||||
without Audita retaining common publication or build mechanics.
|
||||
- Both required Linux targets build through ReleaseKit, and the CI workflow
|
||||
declares the intended destination, artifacts, note body, and secret mapping.
|
||||
- Focused consumer coverage exercises the changed boundaries, and redundant
|
||||
mechanics tests and the old builder have been retired.
|
||||
- Current documentation and attribution describe the adopted behavior.
|
||||
|
||||
## Remaining Release and Deployment Work
|
||||
|
||||
Prepare the first adopting release under the [release procedure](../release.md),
|
||||
including a release note explaining the maintainer workflow change. Resolve
|
||||
outstanding adoption-review findings through the linked remediation record.
|
||||
Version selection and publication timing remain release-preparation decisions.
|
||||
|
||||
Offline integration evidence and live delivery observations are distinct.
|
||||
Observe the shared workflow during the first adopting release and address any
|
||||
deployment failures through ReleaseKit's delivery recovery. Check that the
|
||||
tagged commit, hosted note with its licensing footer, selected Linux assets,
|
||||
and checksums reach the intended destination. This observation is asynchronous;
|
||||
CI success or asset availability does not become a source-release completion
|
||||
gate or require the publication command to wait.
|
||||
|
||||
The accepted ADR settles the architectural choice and standard workflow
|
||||
trade-offs. No significant feature decisions remain open. The next Audita
|
||||
version and publication timing belong to release preparation. The
|
||||
[implementation plan](implementation.md) owns the ordered execution steps and
|
||||
their verification; this roadmap owns the desired end state and adoption intent.
|
||||
|
||||
Implementation completed 2026-10-07 at revision
|
||||
`5ac704c4c42fd23ed94b1f7351491ad580726db1`. The full Go suite and executable
|
||||
version path passed, and ReleaseKit built both selected Linux artifacts with
|
||||
its native version smoke check passing. The profile, dependency and CI pins,
|
||||
wrapper, and parsed workflow were verified together. Audita's local release
|
||||
builder and publication mechanics are retired. This completion record is a
|
||||
later documentation-only commit; live delivery remains to be observed during
|
||||
the first adopting release and is separate from source implementation.
|
||||
@@ -1,151 +0,0 @@
|
||||
# ReleaseKit Adoption Review: Findings and Recommended Changes
|
||||
|
||||
**Reviewed:** 2026-10-07, source commit
|
||||
`3c405f0524ec6c098d00d4e371abbace7648d446`.
|
||||
**Scope:** ReleaseKit adoption commits after `721365e`, including CLI version
|
||||
reporting, local release wiring, CI delivery, tests, and documentation.
|
||||
**Status:** R1–R3 addressed. The findings below describe the reviewed
|
||||
baseline; completed work is recorded under Resolution Record.
|
||||
|
||||
## Architecture Assessment
|
||||
|
||||
The core adoption matches [ADR 0001](../adr/0001-releasekit.md) and the
|
||||
[feature roadmap](releasekit.md). Audita supplies product facts in
|
||||
`releasekit.json`, a thin executable wrapper, a configuration-free version
|
||||
command using the public `buildinfo` accessor, and a pinned Woodpecker
|
||||
`ci-deliver` invocation. ReleaseKit owns candidate validation, annotated-tag
|
||||
publication, version injection, Linux builds, checksums, and hosted delivery.
|
||||
The custom builder and local publication mechanics have been retired.
|
||||
|
||||
No core ownership or delivery-target gap was found. The findings concern one
|
||||
CLI behavior defect, an ineffective target-selection assertion, and unnecessary
|
||||
test restrictions. Main-first publication and the native-host version smoke
|
||||
check are deliberately accepted workflow changes, not accidental strengthening.
|
||||
|
||||
## R1 — P2: Simplify Version Help Handling and Correct Its Streams
|
||||
|
||||
**Category:** CLI behavior defect and unnecessary argument restriction.
|
||||
|
||||
**Evidence:** [runVersion](../../internal/cli/run.go) handles standalone `-h`
|
||||
and `--help` before parsing, then rejects either spelling when combined with
|
||||
other arguments. This adds a special prohibition beyond the requested usual
|
||||
help behavior. For example, `audita version -h --help` returns status `2`.
|
||||
|
||||
The parser's help path also writes usage twice: `FlagSet.Usage` writes to stderr,
|
||||
and the `flag.ErrHelp` branch writes it again to stdout. Reproduced with
|
||||
`audita version --h` and `audita version -help`: both return status `0` and emit
|
||||
the same usage on both streams. The standard library recognizes these help
|
||||
spellings, but the preliminary special cases do not handle them.
|
||||
|
||||
**Recommended change:** Use one standard parsing path. Let help short-circuit
|
||||
according to the parser's ordinary behavior, and emit successful help once to
|
||||
stdout with empty stderr. Keep non-help unknown flags and unexpected positional
|
||||
arguments as usage errors. Remove the bespoke mixed-help prohibition and the
|
||||
test that promotes it into a requirement. Update the CLI wording if needed so
|
||||
it describes ordinary help handling without promising validation of trailing
|
||||
arguments after a help request.
|
||||
|
||||
**Acceptance:** Normal version output remains configuration-free and unchanged.
|
||||
Representative parser help paths produce status `0`, stdout usage, and empty
|
||||
stderr. Non-help invalid invocations still return status `2`. Tests protect
|
||||
streams and meaningful behavior without establishing a new argument-combination
|
||||
policy or a comprehensive help-alias contract.
|
||||
|
||||
## R2 — P2: Make the Delivery-Target Check Compare Actual Membership
|
||||
|
||||
**Category:** Test correctness gap.
|
||||
|
||||
**Evidence:** [sameMembers](../../scripts/release_test.go) compares slice
|
||||
lengths and checks only that each observed item belongs to the expected slice.
|
||||
It never checks that every required target is present. Calling the actual helper
|
||||
with `got = [linux/amd64, linux/amd64]` and
|
||||
`want = [linux/amd64, linux/arm64]` returns true. A profile missing arm64 can
|
||||
therefore pass the selected-target assertion. ReleaseKit deduplicates repeated
|
||||
targets, so that configuration would build only amd64.
|
||||
|
||||
The reverse problem also occurs: a list containing both required targets plus
|
||||
a repeated amd64 entry returns false despite having the same effective target
|
||||
membership. The current committed profile is correct; the defect is in its
|
||||
regression protection.
|
||||
|
||||
**Recommended change:** Compare the sets of configured and required targets,
|
||||
including coverage of every required member and rejection of an unintended
|
||||
member. Reuse straightforward standard-library data structures. Duplicate
|
||||
normalization already belongs to ReleaseKit; Audita needs no duplicate ban or
|
||||
order requirement.
|
||||
|
||||
**Acceptance:** A repeated single target cannot conceal an omitted production
|
||||
target. Either omitted required target and an additional unintended target fail
|
||||
the profile check. Reordered or repeated entries with the same effective target
|
||||
set remain equivalent. Focused coverage catches the demonstrated false positive.
|
||||
|
||||
## R3 — P3: Remove Incidental Wiring-Test Requirements
|
||||
|
||||
**Category:** Tests strengthen representation choices into contracts.
|
||||
|
||||
**Evidence:** [release wrapper/profile tests](../../scripts/release_test.go)
|
||||
require the exact output argument spelling `-o ./bin/releasekit` and reject the
|
||||
presence of a `checks` key regardless of its value. In disposable copies of the
|
||||
tests, changing the output path to the equivalent `bin/releasekit` fails the
|
||||
wrapper assertion even though execution still reaches the intended tool.
|
||||
Adding `"checks": []` fails the profile assertion despite configuring no
|
||||
additional commands.
|
||||
|
||||
The accepted requirements concern the executable destination, native argument
|
||||
and status forwarding, and avoiding redundant additional checks. They do not
|
||||
require one path spelling or one serialization of an empty list. The plan's
|
||||
instruction to omit `checks` selects an initial file representation rather than
|
||||
an enduring prohibition on equivalent configuration.
|
||||
|
||||
**Recommended change:** Check the resolved output destination and observed
|
||||
wrapper behavior instead of the literal relative-path spelling. Check that the
|
||||
effective additional-check list is empty, accepting omission or an empty list.
|
||||
Keep the existing product, target, destination, argument-boundary, failure, and
|
||||
exit-status protection. Simplify fixture helpers where that reduces maintenance
|
||||
without adding another parser or test framework.
|
||||
|
||||
**Acceptance:** The two demonstrated equivalent edits preserve passing wiring
|
||||
tests, while a wrong executable destination, changed product facts, nonempty
|
||||
additional checks, lost argument boundaries, or lost tool status still fail.
|
||||
The tests remain offline and do not duplicate ReleaseKit's release-mechanics
|
||||
matrix.
|
||||
|
||||
## Review Verification and Limits
|
||||
|
||||
- `go test ./...` passed on the reviewed source.
|
||||
- A normal application build succeeded. Direct executable invocations reproduced
|
||||
the version-help stream defect and mixed-help rejection.
|
||||
- The actual membership helper reproduced the missing-target false positive.
|
||||
Disposable test copies reproduced both equivalent-configuration failures;
|
||||
the repository's code and tests were left unchanged.
|
||||
- The real ReleaseKit builder produced both configured Linux artifacts with
|
||||
build-test identifier `v0.0.0` and passed its injected-version smoke check.
|
||||
This used the available Go 1.26.8 Linux amd64 toolchain; CI remains configured
|
||||
for Go 1.25.5. Temporary build artifacts were removed.
|
||||
- Module selection, source attribution, product profile, secret mapping, and
|
||||
CI command match the intended integration. Live Woodpecker/Gitea delivery
|
||||
remains unobserved, as already recorded in the feature roadmap; it is separate
|
||||
deployment work rather than an implementation finding or source-release gate.
|
||||
- No tags, pushes, hosted uploads, or LLM calls were made. Remediation should
|
||||
remain bounded to the findings above and add no new release gates.
|
||||
|
||||
## Resolution Record
|
||||
|
||||
- **R1:** The version command now uses one standard flag-parsing path. Successful
|
||||
help is written once to stdout, with no stderr usage, and help can short-circuit
|
||||
trailing arguments. Non-help usage errors retain status `2`. Regression tests
|
||||
reproduced both defects before the fix; `go test ./internal/cli ./cmd/audita`
|
||||
passed afterward. The CLI contract reflects ordinary help behavior.
|
||||
- **R2:** Delivery targets are compared as sets using the standard library.
|
||||
Regression cases reject either missing Linux target concealed by duplicates
|
||||
and an unintended target, while accepting equivalent reordered/repeated lists.
|
||||
The cases reproduced the faulty membership behavior before the fix;
|
||||
`go test ./scripts` passed afterward.
|
||||
- **R3:** Wrapper coverage now checks the executable's actual destination, and
|
||||
profile coverage checks the effective additional-check list. Equivalent output
|
||||
paths and an explicit empty list are accepted. Fixture helpers use standard
|
||||
library operations where appropriate. Disposable mutation checks accepted
|
||||
`-o bin/releasekit`, `-o=bin/releasekit`, and `"checks": []`, while detecting a
|
||||
wrong executable destination, changed product, nonempty checks, lost argument
|
||||
boundaries, and lost tool status. The complete `go test ./...` suite passed
|
||||
with all three remediations in place. No new release gates were added.
|
||||
14
go.mod
14
go.mod
@@ -1,11 +1,12 @@
|
||||
module gitea.maximumdirect.net/eric/audita
|
||||
module gitea.maximumdirect.net/eric/audita/v3
|
||||
|
||||
go 1.25.5
|
||||
go 1.26.0
|
||||
|
||||
require (
|
||||
gitea.maximumdirect.net/eric/ConfigKit v0.5.0
|
||||
gitea.maximumdirect.net/eric/ReleaseKit v0.1.0
|
||||
gitea.maximumdirect.net/eric/promptkit v0.12.0
|
||||
gitea.maximumdirect.net/eric/ConfigKit v0.7.1
|
||||
gitea.maximumdirect.net/eric/ReleaseKit v0.4.1
|
||||
gitea.maximumdirect.net/eric/promptkit v0.14.0
|
||||
golang.org/x/mod v0.40.0
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
)
|
||||
|
||||
@@ -15,7 +16,10 @@ require (
|
||||
github.com/kr/pretty v0.3.1 // indirect
|
||||
github.com/rogpeppe/go-internal v1.14.1 // indirect
|
||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect
|
||||
github.com/yuin/goldmark/v2 v2.1.6 // indirect
|
||||
go.yaml.in/yaml/v4 v4.0.0-rc.6 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
|
||||
)
|
||||
|
||||
tool gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit
|
||||
|
||||
16
go.sum
16
go.sum
@@ -1,9 +1,9 @@
|
||||
gitea.maximumdirect.net/eric/ConfigKit v0.5.0 h1:2KwG10+kApWM3avOoYA+p768xcbHUp7tQ2rqizBNpyg=
|
||||
gitea.maximumdirect.net/eric/ConfigKit v0.5.0/go.mod h1:tYWpsrbLyu05r8+1MapWp5fN6ZrX9I8hU2xEPedYmYk=
|
||||
gitea.maximumdirect.net/eric/ReleaseKit v0.1.0 h1:Ejk85+9Of+A8M7Mod91iB3KxrrQYgnJcz9hPA6fL1a4=
|
||||
gitea.maximumdirect.net/eric/ReleaseKit v0.1.0/go.mod h1:KmH607Vc/RK/zKrCB96cWh0QZYvkbxBFvtqV+BkKaxs=
|
||||
gitea.maximumdirect.net/eric/promptkit v0.12.0 h1:oIFWEg6GPxtmX3Plqv0euP+FnK1LCk/t4xDy6oKCpP4=
|
||||
gitea.maximumdirect.net/eric/promptkit v0.12.0/go.mod h1:pFOOy5v1zH17stEi9rmHYmfbuLjnfVMcUhfmk+4VtJY=
|
||||
gitea.maximumdirect.net/eric/ConfigKit v0.7.1 h1:q3HrX4WWCPt1WfMydqFEaAmCf9s6Dq+vknJj0C/mdcI=
|
||||
gitea.maximumdirect.net/eric/ConfigKit v0.7.1/go.mod h1:C82sbyKHYMV1OwaD2GJanFrwTfcZfjlW2JsGze5b0kA=
|
||||
gitea.maximumdirect.net/eric/ReleaseKit v0.4.1 h1:Qn+mdebYOzCVCEXgCbuGSO/WHmJtItwaQ8e3XwY3qtI=
|
||||
gitea.maximumdirect.net/eric/ReleaseKit v0.4.1/go.mod h1:LVodqNQ3OIKv9NBq+fFeyMByd1lHY25YOmmpah/NaNI=
|
||||
gitea.maximumdirect.net/eric/promptkit v0.14.0 h1:HUzlcrFk18dNGPBgnHqjAw87O0c9Wl/IC1xc/VmzL10=
|
||||
gitea.maximumdirect.net/eric/promptkit v0.14.0/go.mod h1:2YGvNca3bNXZP+e+pJeGzsNUcxwkHvzvuoc+LNNiT3E=
|
||||
gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v3 v3.20260930.0 h1:lzfCDbzJQRGzIlRPRprnAV9hVVL5zUQy80VMQ0kbYa0=
|
||||
gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v3 v3.20260930.0/go.mod h1:HjS0f+3q0IdHCTEz+VVAEgIwIWJFAZUjuKdAtvtqKdg=
|
||||
gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/v3 v3.20260930.0 h1:h12ZTRldAmpLAomj0oQRGteFxHLN1LPE6XDl9zJNbm8=
|
||||
@@ -24,8 +24,12 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t
|
||||
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
|
||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ=
|
||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=
|
||||
github.com/yuin/goldmark/v2 v2.1.6 h1:igy0q9JcqovoFXFx/XjtU8sHVhcUHavPj2sA3EoKJUE=
|
||||
github.com/yuin/goldmark/v2 v2.1.6/go.mod h1:G6M4/qOFtfn01/o14BU1UR2Lo5N3S9Qo7xCuz/sHjGQ=
|
||||
go.yaml.in/yaml/v4 v4.0.0-rc.6 h1:1h7H1ohdUh93/FyE4YaDa1Zh64K6VVbjF4K6WUxMtH4=
|
||||
go.yaml.in/yaml/v4 v4.0.0-rc.6/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0=
|
||||
golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs=
|
||||
golang.org/x/mod v0.40.0/go.mod h1:0/weTWkPWGBikyTWAX3dkjVztMmBA5hM0DH6BElSupE=
|
||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
||||
@@ -11,7 +11,7 @@ import (
|
||||
"strings"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
)
|
||||
|
||||
var systemConfigPaths = []string{"/usr/local/etc/audita/config.yml", "/etc/audita/config.yml"}
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
"testing"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
)
|
||||
|
||||
func TestSharedConfigInput(t *testing.T) {
|
||||
|
||||
@@ -12,22 +12,22 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/diagnostics"
|
||||
coreio "gitea.maximumdirect.net/eric/audita/internal/core/io"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/normalization"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/outputschema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/reporting"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/modules"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/processreport"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/diagnostics"
|
||||
coreio "gitea.maximumdirect.net/eric/audita/v3/internal/core/io"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/normalization"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/outputschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/reporting"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/modules"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/processreport"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
)
|
||||
|
||||
func runProcess(ctx context.Context, args []string, stdout, stderr io.Writer) int {
|
||||
|
||||
@@ -7,8 +7,8 @@ import (
|
||||
"io"
|
||||
|
||||
"gitea.maximumdirect.net/eric/ReleaseKit/buildinfo"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||
)
|
||||
|
||||
func sourceToCanonicalTranscript(source *schema.SourceTranscript) *schema.Transcript {
|
||||
|
||||
@@ -3,7 +3,7 @@ package chunking
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
// Section represents a contiguous chunk of transcript segments with metadata.
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
// mapTokenEstimator provides deterministic per-segment token counts for tests.
|
||||
|
||||
@@ -3,7 +3,7 @@ package chunking
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
func TestComputeSummary(t *testing.T) {
|
||||
|
||||
@@ -6,8 +6,8 @@ import (
|
||||
"time"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/modulecatalog"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/outputschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/modulecatalog"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/outputschema"
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@@ -8,10 +8,10 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/normalization"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/normalization"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
// RunDirectory represents a per-run diagnostics directory
|
||||
|
||||
@@ -3,7 +3,7 @@ package normalization
|
||||
import (
|
||||
"sort"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
// NormalizationConfig holds configuration parameters for transcript normalization
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
func TestNormalizationNoOp(t *testing.T) {
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
func tinyTranscript() *schema.Transcript {
|
||||
|
||||
@@ -8,9 +8,9 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/diagnostics"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/diagnostics"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
func TestStringRedactionPreservesSerializationAndDomainData(t *testing.T) {
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||
)
|
||||
|
||||
// CompletionLine is the brief successful CLI summary. It uses the same counts
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
|
||||
@@ -6,9 +6,9 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
)
|
||||
|
||||
// testChunkProposalHarness is a test-only helper that composes existing
|
||||
|
||||
@@ -4,13 +4,13 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||
)
|
||||
|
||||
type StructuredLLMClient = structuredoutput.Client
|
||||
|
||||
@@ -6,9 +6,9 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||
)
|
||||
|
||||
type fakeLLMClient struct{}
|
||||
|
||||
@@ -9,10 +9,10 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||
)
|
||||
|
||||
|
||||
@@ -14,11 +14,11 @@ import (
|
||||
"time"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||
)
|
||||
|
||||
|
||||
@@ -16,11 +16,11 @@ import (
|
||||
"time"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||
)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||
)
|
||||
|
||||
var stageSanitizer = regexp.MustCompile(`[^a-zA-Z0-9_.-]+`)
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||
)
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||
)
|
||||
|
||||
|
||||
@@ -11,10 +11,10 @@ import (
|
||||
"sync/atomic"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||
)
|
||||
|
||||
|
||||
@@ -13,8 +13,8 @@ import (
|
||||
"testing/fstest"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
)
|
||||
|
||||
func runtimeAssemblyFixture(t *testing.T, selections string, documents map[string]string) (config.Config, string) {
|
||||
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
"testing"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ import (
|
||||
"strings"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package llm
|
||||
|
||||
import "gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
import "gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
|
||||
// ConfiguredSecrets returns all configured LLM API-key values that should be
|
||||
// redacted from diagnostics and surfaced error payloads.
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"testing"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
)
|
||||
|
||||
func TestConfiguredSecretsIncludesUnselectedBackends(t *testing.T) {
|
||||
|
||||
@@ -5,14 +5,14 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/modulecatalog"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
glossarymodule "gitea.maximumdirect.net/eric/audita/internal/modules/glossary"
|
||||
grammarmodule "gitea.maximumdirect.net/eric/audita/internal/modules/grammar"
|
||||
homophonesmodule "gitea.maximumdirect.net/eric/audita/internal/modules/homophones"
|
||||
spokenwordmodule "gitea.maximumdirect.net/eric/audita/internal/modules/spoken_word"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/modulecatalog"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
glossarymodule "gitea.maximumdirect.net/eric/audita/v3/internal/modules/glossary"
|
||||
grammarmodule "gitea.maximumdirect.net/eric/audita/v3/internal/modules/grammar"
|
||||
homophonesmodule "gitea.maximumdirect.net/eric/audita/v3/internal/modules/homophones"
|
||||
spokenwordmodule "gitea.maximumdirect.net/eric/audita/v3/internal/modules/spoken_word"
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@@ -6,9 +6,9 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/modulecatalog"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/modulecatalog"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
)
|
||||
|
||||
type noopModule struct {
|
||||
|
||||
@@ -5,9 +5,9 @@ import (
|
||||
"path/filepath"
|
||||
"sort"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
||||
validatormetadata "gitea.maximumdirect.net/eric/audita/internal/validators/metadata"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||
validatormetadata "gitea.maximumdirect.net/eric/audita/v3/internal/validators/metadata"
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@@ -4,9 +4,9 @@ import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||
)
|
||||
|
||||
func TestBuildCorrectionLedgerClassifiesValidatorDecisionsFromCanonicalMetadata(t *testing.T) {
|
||||
|
||||
@@ -3,11 +3,11 @@ package processreport
|
||||
import (
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/reporting"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/reporting"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||
)
|
||||
|
||||
|
||||
@@ -7,10 +7,10 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||
)
|
||||
|
||||
|
||||
@@ -6,14 +6,14 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||
)
|
||||
|
||||
type partialModule struct{ validator contracts.Validator }
|
||||
|
||||
@@ -4,10 +4,10 @@ import (
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/reporting"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/reporting"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||
)
|
||||
|
||||
// RunFailure describes a fatal or output failure without carrying its raw cause.
|
||||
|
||||
@@ -6,10 +6,10 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/reporting"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/reporting"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ package promptcontext
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
type transcriptSectionSegment struct {
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
func TestMarshalTranscriptSectionJSONShape(t *testing.T) {
|
||||
|
||||
@@ -11,12 +11,12 @@ import (
|
||||
"testing"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
)
|
||||
|
||||
func TestRepairedProposalStillFacesDomainChecks(t *testing.T) {
|
||||
|
||||
@@ -10,15 +10,15 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/stagename"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/stagename"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
)
|
||||
|
||||
// InteractionDiagnosticsWriter writes machine-readable prompt/response artifacts.
|
||||
|
||||
@@ -11,13 +11,13 @@ import (
|
||||
"testing"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
)
|
||||
|
||||
type fakeStructuredClient struct {
|
||||
|
||||
@@ -5,10 +5,10 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/stagename"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/stagename"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
)
|
||||
|
||||
type ProposalVariableBuilder func(transcript *schema.Transcript, glossary *schema.Glossary, sectionIndex int, transcriptDescription string) (map[string]string, error)
|
||||
|
||||
@@ -6,13 +6,13 @@ import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
)
|
||||
|
||||
func TestExecuteModuleProposalBuildsMessagesFromSectionAndDescription(t *testing.T) {
|
||||
|
||||
@@ -4,8 +4,8 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/promptcontext"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/promptcontext"
|
||||
)
|
||||
|
||||
// BuildProposalVariables preserves the domain inputs while PromptKit renders
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
func TestBuildProposalVariablesPreservesSectionGlossaryAndDescription(t *testing.T) {
|
||||
|
||||
@@ -3,7 +3,7 @@ package proposals
|
||||
import (
|
||||
"sort"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
// AppliedChange records a proposal that was successfully applied.
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
type applyFixture struct {
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
func TestApplyProposalsApplyingOneProposal(t *testing.T) {
|
||||
|
||||
@@ -3,7 +3,7 @@ package proposals
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
// ProposalSkipReason is a stable, report-friendly reason code for
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
func TestPreviewProposalForSegmentRequireUniqueSuccess(t *testing.T) {
|
||||
|
||||
@@ -11,16 +11,16 @@ import (
|
||||
"time"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||
)
|
||||
|
||||
|
||||
@@ -9,15 +9,15 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
||||
validatormetadata "gitea.maximumdirect.net/eric/audita/internal/validators/metadata"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||
validatormetadata "gitea.maximumdirect.net/eric/audita/v3/internal/validators/metadata"
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@@ -12,15 +12,15 @@ import (
|
||||
"time"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/modules"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposal_generation"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
||||
validatormetadata "gitea.maximumdirect.net/eric/audita/internal/validators/metadata"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/modules"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposal_generation"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||
validatormetadata "gitea.maximumdirect.net/eric/audita/v3/internal/validators/metadata"
|
||||
)
|
||||
|
||||
func runnerTestConfig() config.Config {
|
||||
|
||||
@@ -5,8 +5,8 @@ import (
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||
)
|
||||
|
||||
// DiagnosticContext identifies the logical call without examining rendered text.
|
||||
|
||||
@@ -3,7 +3,7 @@ package structuredoutput
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
)
|
||||
|
||||
// FailureKind separates invalid generated content from operational failures.
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
)
|
||||
|
||||
func TestFailureClassificationKeepsCauseAndSafeMessage(t *testing.T) {
|
||||
|
||||
@@ -5,9 +5,9 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/modulecatalog"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/modulecatalog"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
)
|
||||
|
||||
type ProposalShapeValidator struct{}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package validators
|
||||
|
||||
import (
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
)
|
||||
|
||||
// DefectiveProposalReason recognizes a safely rejected defect in a proposal
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||
)
|
||||
|
||||
type LLMValidationBatch struct {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package validators
|
||||
|
||||
import (
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
// validationContext supplies adjacent source segments within the current chunk
|
||||
|
||||
@@ -5,9 +5,9 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
)
|
||||
|
||||
func TestValidationContextCarriesAdjacentEvidenceAndRelevantDefinitions(t *testing.T) {
|
||||
|
||||
@@ -11,10 +11,10 @@ import (
|
||||
"testing"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
)
|
||||
|
||||
func TestValidationRepairAndRuntimeFailuresThroughDomainBoundary(t *testing.T) {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package validators
|
||||
|
||||
import (
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
)
|
||||
|
||||
type LLMValidatorType string
|
||||
|
||||
@@ -7,9 +7,9 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
)
|
||||
|
||||
type perItemEstimator struct{}
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/promptcontext"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/promptcontext"
|
||||
)
|
||||
|
||||
func BuildValidationVariables(validationPayload []LLMValidationItem, transcriptDescription string) (map[string]string, error) {
|
||||
|
||||
@@ -7,15 +7,15 @@ import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/stagename"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/stagename"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
)
|
||||
|
||||
type LLMBackedValidator struct {
|
||||
|
||||
@@ -7,14 +7,14 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
)
|
||||
|
||||
type fakeStructuredLLMClient struct {
|
||||
|
||||
@@ -5,11 +5,11 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/modulecatalog"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/modulecatalog"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
)
|
||||
|
||||
type protectedTermDef struct {
|
||||
|
||||
@@ -4,8 +4,8 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
)
|
||||
|
||||
func TestExtractProtectedTermsStableDeduplicatedWithPlurals(t *testing.T) {
|
||||
|
||||
@@ -5,9 +5,9 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
)
|
||||
|
||||
func mkCandidate(index int, segID int, orig, corr string, conf float64) proposals.EnrichedCorrectionProposal {
|
||||
|
||||
@@ -3,11 +3,11 @@ package glossary
|
||||
import (
|
||||
"context"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposal_generation"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
builtinvalidators "gitea.maximumdirect.net/eric/audita/internal/validators"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposal_generation"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
builtinvalidators "gitea.maximumdirect.net/eric/audita/v3/internal/validators"
|
||||
)
|
||||
|
||||
type Module struct {
|
||||
|
||||
@@ -9,12 +9,12 @@ import (
|
||||
"testing"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposal_generation"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposal_generation"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
)
|
||||
|
||||
type fakeLLMClient struct {
|
||||
|
||||
@@ -3,11 +3,11 @@ package grammar
|
||||
import (
|
||||
"context"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposal_generation"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
builtinvalidators "gitea.maximumdirect.net/eric/audita/internal/validators"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposal_generation"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
builtinvalidators "gitea.maximumdirect.net/eric/audita/v3/internal/validators"
|
||||
)
|
||||
|
||||
type Module struct {
|
||||
|
||||
@@ -9,12 +9,12 @@ import (
|
||||
"testing"
|
||||
|
||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposal_generation"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposal_generation"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||
)
|
||||
|
||||
type fakeLLMClient struct {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user