Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cbcb1b3778 | |||
| 39052bf47e | |||
| 7cd5edd650 | |||
| 2d41748006 | |||
| 1d4be9988e | |||
| ed65aa6474 | |||
| 4c5536ab78 | |||
| b01180ea83 | |||
| 07fab5586b | |||
| 6debe7e641 | |||
| 11c349d9ae | |||
| 36823c91fb | |||
| 17421bc5f3 |
@@ -1,7 +1,6 @@
|
|||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- GO_IMAGE: golang:1.25.5
|
- GO_IMAGE: golang:1.26.8-bookworm
|
||||||
RELEASEKIT_VERSION: v0.1.0
|
|
||||||
|
|
||||||
when:
|
when:
|
||||||
- event: tag
|
- event: tag
|
||||||
@@ -15,7 +14,37 @@ steps:
|
|||||||
from_secret: GITEA_RELEASE_TOKEN
|
from_secret: GITEA_RELEASE_TOKEN
|
||||||
commands:
|
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}" \
|
--repo "$${CI_WORKSPACE}" \
|
||||||
--commit "$${CI_COMMIT_SHA}" \
|
--prepared \
|
||||||
|
--commit "$${expected_commit}" \
|
||||||
"$${CI_COMMIT_TAG}"
|
"$${CI_COMMIT_TAG}"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ reports for review and subprocess integration.
|
|||||||
|
|
||||||
## Quickstart
|
## Quickstart
|
||||||
|
|
||||||
From a checkout, build with Go 1.25.5 or newer:
|
From a checkout, build with Go 1.26.0 or newer:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
go build -o ./bin/audita ./cmd/audita
|
go build -o ./bin/audita ./cmd/audita
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"os/signal"
|
"os/signal"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/cli"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/cli"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/cli"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/cli"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/reporting"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/reporting"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gopkg.in/yaml.v3"
|
"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
|
`extends: <sibling-name>`; the child keeps its key, inherits parent settings, and
|
||||||
overrides them with its own settings. Selected overlay and CLI values therefore
|
overrides them with its own settings. Selected overlay and CLI values therefore
|
||||||
participate in inheritance at their normal precedence. The generic syntax and
|
participate in inheritance at their normal precedence. The generic syntax and
|
||||||
resolution rules are defined by ConfigKit v0.5.0's
|
resolution rules are defined by ConfigKit v0.7.1's
|
||||||
[sibling inheritance contract](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/v0.5.0/docs/config.md#sibling-inheritance).
|
[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
|
`extends` is reserved structural input in base files, imports, overlays, and
|
||||||
other application input mappings, including mapping values supplied by explicit
|
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
|
unspecified; null suppresses an inherited temperature. Other fields have their
|
||||||
own native null and omission rules. Provider `extra_params` maps merge
|
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
|
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.
|
for the complete field semantics.
|
||||||
|
|
||||||
Operator documents can also override an embedded prompt/version, including its
|
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
|
definitions have valid backend references; eager validation applies even to
|
||||||
unselected definitions. See the complete maintained [local](../examples/minimal-config.yml)
|
unselected definitions. See the complete maintained [local](../examples/minimal-config.yml)
|
||||||
and [service](../examples/production-config.yml) examples and the pinned
|
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
|
This incompatible profile-format migration is intended for an Audita major
|
||||||
release; no automatic file conversion is provided.
|
release; no automatic file conversion is provided.
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,9 @@ ownership. Commit discipline and agent Git restrictions are in the
|
|||||||
|
|
||||||
## Baseline Validation
|
## 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
|
```sh
|
||||||
go build -o ./bin/audita ./cmd/audita
|
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
|
additional generations for schema-invalid model output. The operation timeout
|
||||||
covers preparation, capacity waiting, retries, generation, and repair. Caller
|
covers preparation, capacity waiting, retries, generation, and repair. Caller
|
||||||
cancellation or an earlier deadline also applies. See [configuration](../config.md#settings)
|
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.
|
for the pinned protocol and retry details.
|
||||||
|
|
||||||
A model operation that exhausts structural repair, a live-parent local operation
|
A model operation that exhausts structural repair, a live-parent local operation
|
||||||
|
|||||||
@@ -2,7 +2,11 @@
|
|||||||
|
|
||||||
## Standard Repository Policies
|
## 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
|
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) |
|
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) |
|
[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/d84a38ebab26f048cafbe59a2246700c35d29843).
|
||||||
|
|
||||||
|
[Source](https://gitea.maximumdirect.net/eric/policy/src/commit/e833faddf120c789a9b45348edaf75720de16348).
|
||||||
|
|
||||||
## ConfigKit
|
## 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
|
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) |
|
License and notices: [LGPL v3](licenses/LGPL-3.0.txt) |
|
||||||
[GPL v3](licenses/GPL-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
|
## 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
|
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) |
|
License and notices: [LGPL v3](licenses/LGPL-3.0.txt) |
|
||||||
[GPL v3](licenses/GPL-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
|
## 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.
|
Copyright 2009 The Go Authors.
|
||||||
|
|
||||||
SPDX-License-Identifier: BSD-3-Clause
|
SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
License and notices: [BSD 3-Clause](licenses/BSD-3-Clause-Go.txt) |
|
License and notices: [BSD 3-Clause](licenses/BSD-3-Clause-Go.txt) |
|
||||||
[LICENSE](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/LICENSE) |
|
[LICENSE](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/LICENSE) |
|
||||||
[PATENTS](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/PATENTS).
|
[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
|
## 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.
|
Copyright 2009 The Go Authors.
|
||||||
|
|
||||||
SPDX-License-Identifier: BSD-3-Clause
|
SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
License and notices: [BSD 3-Clause](licenses/BSD-3-Clause-Go.txt) |
|
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) |
|
[LICENSE](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/src/vendor/golang.org/x/crypto/LICENSE) |
|
||||||
[PATENTS](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/src/vendor/golang.org/x/crypto/PATENTS).
|
[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
|
## 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.
|
Copyright 2009 The Go Authors.
|
||||||
|
|
||||||
SPDX-License-Identifier: BSD-3-Clause
|
SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
License and notices: [BSD 3-Clause](licenses/BSD-3-Clause-Go.txt) |
|
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) |
|
[LICENSE](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/src/vendor/golang.org/x/net/LICENSE) |
|
||||||
[PATENTS](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/src/vendor/golang.org/x/net/PATENTS).
|
[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
|
## 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.
|
Copyright 2009 The Go Authors.
|
||||||
|
|
||||||
SPDX-License-Identifier: BSD-3-Clause
|
SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
License and notices: [BSD 3-Clause](licenses/BSD-3-Clause-Go.txt) |
|
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) |
|
[LICENSE](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/src/vendor/golang.org/x/sys/LICENSE) |
|
||||||
[PATENTS](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/src/vendor/golang.org/x/sys/PATENTS).
|
[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
|
## 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.
|
Copyright 2009 The Go Authors.
|
||||||
|
|
||||||
SPDX-License-Identifier: BSD-3-Clause
|
SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
License and notices: [BSD 3-Clause](licenses/BSD-3-Clause-Go.txt) |
|
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) |
|
[LICENSE](https://github.com/golang/go/blob/c293dd49cbe25e1fe8d97d94a5cb618e7b6d831e/src/vendor/golang.org/x/text/LICENSE) |
|
||||||
[PATENTS](https://github.com/golang/go/blob/fefb02adf45c4bcc879bd406a8d61f2a292c26a9/src/vendor/golang.org/x/text/PATENTS).
|
[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
|
## go-yaml v4
|
||||||
|
|
||||||
@@ -156,7 +164,7 @@ License and notices: [Apache 2.0](licenses/Apache-2.0.txt).
|
|||||||
|
|
||||||
## PromptKit
|
## 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
|
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) |
|
License and notices: [LGPL v3](licenses/LGPL-3.0.txt) |
|
||||||
[GPL v3](licenses/GPL-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
|
## Promptkit OpenRouter Catalog
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
# Release Policy
|
# Release Policy
|
||||||
|
|
||||||
**Base Policy Version:** 1.4
|
**Base Policy Version:** 1.6
|
||||||
|
|
||||||
**Last Updated**: 2026-10-07
|
**Last Updated**: 2026-10-08
|
||||||
**Upstream Source:** [Standard Repository Policies release](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/docs/policy/release.md)
|
**Upstream Source:** [Standard Repository Policies release](https://gitea.maximumdirect.net/eric/policy/src/commit/e833faddf120c789a9b45348edaf75720de16348/docs/policy/release.md)
|
||||||
|
|
||||||
## Purpose
|
## 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
|
intended source revision under a fresh version. Releases should require little
|
||||||
routine intervention, avoid repeated work, and preserve published contents.
|
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
|
The repository-specific commands belong in `docs/release.md`. Historical release
|
||||||
summaries belong in `docs/releases/`. The procedure must agree with the adopted
|
summaries belong in `docs/releases/`. The procedure must agree with the adopted
|
||||||
policy and link to it rather than introduce additional release requirements.
|
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`:
|
For releases at or after `v1.0.0`:
|
||||||
|
|
||||||
- a major release may make intentional incompatible changes;
|
- 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.
|
- a patch release may make backward-compatible fixes.
|
||||||
|
|
||||||
Before `v1.0.0`, a minor release may change a documented public, operational,
|
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
|
adopted policy or canonical contract documentation. Release notes explain
|
||||||
changes; they do not redefine current compatibility contracts.
|
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
|
## Release Documentation And Preparation
|
||||||
|
|
||||||
Every new release must include `docs/releases/<version>.md` in the tagged
|
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
|
Cheap publication-state checks may be repeated immediately before pushing
|
||||||
because local or remote state may have changed during validation.
|
because local or remote state may have changed during validation.
|
||||||
|
|
||||||
Automate mechanical guards. Do not require manual approvals, sign-offs, or
|
Automate mechanical guards. Human review gates are strongly disfavored: add one
|
||||||
routine confirmations as release gates. Version selection and
|
only through an explicit project-specific policy decision explaining the
|
||||||
a concise release summary remain preparation inputs, not separate approval rounds.
|
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
|
## 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
|
Maintain `docs/release.md` as a short, executable maintainer runbook. It must
|
||||||
identify:
|
identify:
|
||||||
|
|
||||||
1. prerequisites, primary branch, and authoritative remote;
|
1. prerequisites, selected release toolchain, primary branch, and authoritative
|
||||||
|
remote;
|
||||||
2. version and release-note preparation;
|
2. version and release-note preparation;
|
||||||
3. one publication command with its selected local checks and automated guards;
|
3. one publication command with its selected local checks and automated guards;
|
||||||
4. declared deliverables, required build targets, and automation responsibilities;
|
4. declared deliverables, required build targets, and automation responsibilities;
|
||||||
|
|||||||
@@ -2,16 +2,37 @@
|
|||||||
|
|
||||||
The [release policy](policy/release.md) owns release requirements. This runbook
|
The [release policy](policy/release.md) owns release requirements. This runbook
|
||||||
uses the native commands in [scripts/release.sh](../scripts/release.sh), which
|
uses the native commands in [scripts/release.sh](../scripts/release.sh), which
|
||||||
builds and invokes ReleaseKit. A confirmed source tag completes the release;
|
invokes the module-selected ReleaseKit tool. A confirmed source tag completes
|
||||||
Woodpecker reports binary delivery separately.
|
the release; Woodpecker reports binary delivery separately.
|
||||||
|
|
||||||
## Prerequisites
|
## 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
|
which must point to `https://gitea.maximumdirect.net/eric/audita.git`; the
|
||||||
primary branch is `main`. Source publication needs no delivery credential.
|
primary branch is `main`. Source publication needs no delivery credential.
|
||||||
Woodpecker uses the existing `GITEA_RELEASE_TOKEN` secret for delivery.
|
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:
|
Prepare dependencies before offline candidate validation:
|
||||||
|
|
||||||
```sh
|
```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
|
If dependency preparation changes `go.mod` or `go.sum`, include those changes in
|
||||||
the committed candidate. The release wrapper separately bootstraps the pinned
|
the committed candidate. ReleaseKit's CLI is registered as a Go tool dependency;
|
||||||
ReleaseKit command into ignored `bin/releasekit`; that build is tool preparation,
|
`go mod tidy` retains its dependencies and checksums. The release wrapper changes
|
||||||
not candidate validation.
|
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
|
## Prepare and publish the candidate
|
||||||
|
|
||||||
@@ -71,33 +95,46 @@ profile, or version input error; and `3` means the push outcome remains unknown.
|
|||||||
|
|
||||||
## Binary delivery
|
## Binary delivery
|
||||||
|
|
||||||
Woodpecker runs the pinned ReleaseKit `ci-deliver` command for tags under
|
Woodpecker runs ReleaseKit's `ci-deliver` command for tags under
|
||||||
`refs/tags/v*`. It verifies the triggering commit against the tag, prepares the
|
`refs/tags/v*`. The tagged `go.mod` selects the ReleaseKit version, and
|
||||||
tagged source, and uses `releasekit.json` to build and deliver:
|
`releasekit.json` supplies Audita's build and delivery settings:
|
||||||
|
|
||||||
- `audita-<version>-linux-amd64`
|
- `audita-<version>-linux-amd64`
|
||||||
- `audita-<version>-linux-arm64`
|
- `audita-<version>-linux-arm64`
|
||||||
- `SHA256SUMS`
|
- `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
|
```sh
|
||||||
go run gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit@${RELEASEKIT_VERSION} ci-deliver \
|
"$${bootstrap_dir}/releasekit" ci-deliver \
|
||||||
--repo "$${CI_WORKSPACE}" \
|
--repo "$${CI_WORKSPACE}" \
|
||||||
--commit "$${CI_COMMIT_SHA}" \
|
--prepared \
|
||||||
|
--commit "$${expected_commit}" \
|
||||||
"$${CI_COMMIT_TAG}"
|
"$${CI_COMMIT_TAG}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Woodpecker sets `RELEASEKIT_VERSION` to `v0.1.0` for this workflow.
|
The workflow maps the existing `GITEA_RELEASE_TOKEN` secret to
|
||||||
|
`RELEASEKIT_GITEA_TOKEN`. The complete checked-in release note, including its
|
||||||
The complete checked-in release note, including its licensing footer, supplies
|
licensing footer, supplies the hosted release body. Delivery runs independently
|
||||||
the hosted release body. The workflow maps the existing `GITEA_RELEASE_TOKEN`
|
after source publication; its status and logs report delivery progress or
|
||||||
secret to `RELEASEKIT_GITEA_TOKEN`. Delivery runs independently after source
|
failure.
|
||||||
publication; its status and logs report delivery progress or failure.
|
|
||||||
|
|
||||||
ReleaseKit handles content-aware retries and retained-artifact recovery. See
|
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)
|
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.1.0/docs/consumers/delivery.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
|
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
|
release. Retry the same immutable tag after resolving the reported state; do not
|
||||||
replace published files or a checksum manifest.
|
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
|
against that endpoint before retrying. An exact remote tag-object match, with
|
||||||
its source available on remote `main`, can confirm publication. If the remote
|
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
|
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.
|
for object-level recovery details.
|
||||||
|
|
||||||
A source-release success and artifact-delivery status are separate. For a
|
A source-release success and artifact-delivery status are separate. For a
|
||||||
partial or uncertain delivery, inspect the job output and follow the pinned
|
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;
|
A source or published-content correction requires a new appropriate version;
|
||||||
leave the original tag and its contents intact.
|
leave the original tag and its contents intact.
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
# Release Notes
|
# 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.1](v3.0.1.md)
|
||||||
- [Audita v3.0.0](v3.0.0.md)
|
- [Audita v3.0.0](v3.0.0.md)
|
||||||
- [Audita v2.0.1](v2.0.1.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
|
# Deferred Feature Work
|
||||||
|
|
||||||
**Last updated:** 2026-10-03
|
**Last updated:** 2026-10-11
|
||||||
|
|
||||||
**Status:** Deferred or exploratory work; not implemented or scheduled. These
|
**Status:** Deferred or exploratory work; not implemented or scheduled. These
|
||||||
entries preserve work beyond the completed resilience and span-deletion
|
entries preserve work beyond completed feature and library upgrades.
|
||||||
features. Each entry states its intent; inclusion does not commit us to
|
Each entry states its intent; inclusion does not commit us to
|
||||||
implementing every capability.
|
implementing every capability.
|
||||||
|
|
||||||
## Domain-Aware Response Recovery
|
## 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
|
identity, timestamps, fixed chunks, subsequent stages, recombination, and output
|
||||||
consumers. Do not infer authorization to remove a segment from an empty string
|
consumers. Do not infer authorization to remove a segment from an empty string
|
||||||
or introduce segment-removal machinery as part of span-deletion consistency.
|
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 (
|
require (
|
||||||
gitea.maximumdirect.net/eric/ConfigKit v0.5.0
|
gitea.maximumdirect.net/eric/ConfigKit v0.7.1
|
||||||
gitea.maximumdirect.net/eric/ReleaseKit v0.1.0
|
gitea.maximumdirect.net/eric/ReleaseKit v0.4.1
|
||||||
gitea.maximumdirect.net/eric/promptkit v0.12.0
|
gitea.maximumdirect.net/eric/promptkit v0.14.0
|
||||||
|
golang.org/x/mod v0.40.0
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -15,7 +16,10 @@ require (
|
|||||||
github.com/kr/pretty v0.3.1 // indirect
|
github.com/kr/pretty v0.3.1 // indirect
|
||||||
github.com/rogpeppe/go-internal v1.14.1 // indirect
|
github.com/rogpeppe/go-internal v1.14.1 // indirect
|
||||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // 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
|
go.yaml.in/yaml/v4 v4.0.0-rc.6 // indirect
|
||||||
golang.org/x/text v0.14.0 // indirect
|
golang.org/x/text v0.14.0 // indirect
|
||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // 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.7.1 h1:q3HrX4WWCPt1WfMydqFEaAmCf9s6Dq+vknJj0C/mdcI=
|
||||||
gitea.maximumdirect.net/eric/ConfigKit v0.5.0/go.mod h1:tYWpsrbLyu05r8+1MapWp5fN6ZrX9I8hU2xEPedYmYk=
|
gitea.maximumdirect.net/eric/ConfigKit v0.7.1/go.mod h1:C82sbyKHYMV1OwaD2GJanFrwTfcZfjlW2JsGze5b0kA=
|
||||||
gitea.maximumdirect.net/eric/ReleaseKit v0.1.0 h1:Ejk85+9Of+A8M7Mod91iB3KxrrQYgnJcz9hPA6fL1a4=
|
gitea.maximumdirect.net/eric/ReleaseKit v0.4.1 h1:Qn+mdebYOzCVCEXgCbuGSO/WHmJtItwaQ8e3XwY3qtI=
|
||||||
gitea.maximumdirect.net/eric/ReleaseKit v0.1.0/go.mod h1:KmH607Vc/RK/zKrCB96cWh0QZYvkbxBFvtqV+BkKaxs=
|
gitea.maximumdirect.net/eric/ReleaseKit v0.4.1/go.mod h1:LVodqNQ3OIKv9NBq+fFeyMByd1lHY25YOmmpah/NaNI=
|
||||||
gitea.maximumdirect.net/eric/promptkit v0.12.0 h1:oIFWEg6GPxtmX3Plqv0euP+FnK1LCk/t4xDy6oKCpP4=
|
gitea.maximumdirect.net/eric/promptkit v0.14.0 h1:HUzlcrFk18dNGPBgnHqjAw87O0c9Wl/IC1xc/VmzL10=
|
||||||
gitea.maximumdirect.net/eric/promptkit v0.12.0/go.mod h1:pFOOy5v1zH17stEi9rmHYmfbuLjnfVMcUhfmk+4VtJY=
|
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 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-openrouter/v3 v3.20260930.0/go.mod h1:HjS0f+3q0IdHCTEz+VVAEgIwIWJFAZUjuKdAtvtqKdg=
|
||||||
gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/v3 v3.20260930.0 h1:h12ZTRldAmpLAomj0oQRGteFxHLN1LPE6XDl9zJNbm8=
|
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/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 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ=
|
||||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=
|
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 h1:1h7H1ohdUh93/FyE4YaDa1Zh64K6VVbjF4K6WUxMtH4=
|
||||||
go.yaml.in/yaml/v4 v4.0.0-rc.6/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0=
|
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 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
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=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
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"}
|
var systemConfigPaths = []string{"/usr/local/etc/audita/config.yml", "/etc/audita/config.yml"}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
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) {
|
func TestSharedConfigInput(t *testing.T) {
|
||||||
|
|||||||
@@ -12,22 +12,22 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/diagnostics"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/diagnostics"
|
||||||
coreio "gitea.maximumdirect.net/eric/audita/internal/core/io"
|
coreio "gitea.maximumdirect.net/eric/audita/v3/internal/core/io"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/normalization"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/normalization"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/outputschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/outputschema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/reporting"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/reporting"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/modules"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/modules"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/processreport"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/processreport"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
)
|
)
|
||||||
|
|
||||||
func runProcess(ctx context.Context, args []string, stdout, stderr io.Writer) int {
|
func runProcess(ctx context.Context, args []string, stdout, stderr io.Writer) int {
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ReleaseKit/buildinfo"
|
"gitea.maximumdirect.net/eric/ReleaseKit/buildinfo"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func sourceToCanonicalTranscript(source *schema.SourceTranscript) *schema.Transcript {
|
func sourceToCanonicalTranscript(source *schema.SourceTranscript) *schema.Transcript {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package chunking
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"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.
|
// Section represents a contiguous chunk of transcript segments with metadata.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"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.
|
// mapTokenEstimator provides deterministic per-segment token counts for tests.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package chunking
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestComputeSummary(t *testing.T) {
|
func TestComputeSummary(t *testing.T) {
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/modulecatalog"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/modulecatalog"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/outputschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/outputschema"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/normalization"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/normalization"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RunDirectory represents a per-run diagnostics directory
|
// RunDirectory represents a per-run diagnostics directory
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package normalization
|
|||||||
import (
|
import (
|
||||||
"sort"
|
"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
|
// NormalizationConfig holds configuration parameters for transcript normalization
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestNormalizationNoOp(t *testing.T) {
|
func TestNormalizationNoOp(t *testing.T) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
func tinyTranscript() *schema.Transcript {
|
func tinyTranscript() *schema.Transcript {
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/diagnostics"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/diagnostics"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestStringRedactionPreservesSerializationAndDomainData(t *testing.T) {
|
func TestStringRedactionPreservesSerializationAndDomainData(t *testing.T) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"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
|
// CompletionLine is the brief successful CLI summary. It uses the same counts
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
)
|
)
|
||||||
|
|
||||||
// testChunkProposalHarness is a test-only helper that composes existing
|
// testChunkProposalHarness is a test-only helper that composes existing
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
type StructuredLLMClient = structuredoutput.Client
|
type StructuredLLMClient = structuredoutput.Client
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
type fakeLLMClient struct{}
|
type fakeLLMClient struct{}
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"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_.-]+`)
|
var stageSanitizer = regexp.MustCompile(`[^a-zA-Z0-9_.-]+`)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ import (
|
|||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import (
|
|||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
)
|
)
|
||||||
|
|
||||||
func runtimeAssemblyFixture(t *testing.T, selections string, documents map[string]string) (config.Config, string) {
|
func runtimeAssemblyFixture(t *testing.T, selections string, documents map[string]string) (config.Config, string) {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
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"
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/redaction"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/redaction"
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package llm
|
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
|
// ConfiguredSecrets returns all configured LLM API-key values that should be
|
||||||
// redacted from diagnostics and surfaced error payloads.
|
// redacted from diagnostics and surfaced error payloads.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
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) {
|
func TestConfiguredSecretsIncludesUnselectedBackends(t *testing.T) {
|
||||||
|
|||||||
@@ -5,14 +5,14 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/modulecatalog"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/modulecatalog"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
glossarymodule "gitea.maximumdirect.net/eric/audita/internal/modules/glossary"
|
glossarymodule "gitea.maximumdirect.net/eric/audita/v3/internal/modules/glossary"
|
||||||
grammarmodule "gitea.maximumdirect.net/eric/audita/internal/modules/grammar"
|
grammarmodule "gitea.maximumdirect.net/eric/audita/v3/internal/modules/grammar"
|
||||||
homophonesmodule "gitea.maximumdirect.net/eric/audita/internal/modules/homophones"
|
homophonesmodule "gitea.maximumdirect.net/eric/audita/v3/internal/modules/homophones"
|
||||||
spokenwordmodule "gitea.maximumdirect.net/eric/audita/internal/modules/spoken_word"
|
spokenwordmodule "gitea.maximumdirect.net/eric/audita/v3/internal/modules/spoken_word"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/modulecatalog"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/modulecatalog"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
)
|
)
|
||||||
|
|
||||||
type noopModule struct {
|
type noopModule struct {
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||||
validatormetadata "gitea.maximumdirect.net/eric/audita/internal/validators/metadata"
|
validatormetadata "gitea.maximumdirect.net/eric/audita/v3/internal/validators/metadata"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuildCorrectionLedgerClassifiesValidatorDecisionsFromCanonicalMetadata(t *testing.T) {
|
func TestBuildCorrectionLedgerClassifiesValidatorDecisionsFromCanonicalMetadata(t *testing.T) {
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ package processreport
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/reporting"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/reporting"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,14 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
type partialModule struct{ validator contracts.Validator }
|
type partialModule struct{ validator contracts.Validator }
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/reporting"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/reporting"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RunFailure describes a fatal or output failure without carrying its raw cause.
|
// RunFailure describes a fatal or output failure without carrying its raw cause.
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/reporting"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/reporting"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/runner"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/runner"
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package promptcontext
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
type transcriptSectionSegment struct {
|
type transcriptSectionSegment struct {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMarshalTranscriptSectionJSONShape(t *testing.T) {
|
func TestMarshalTranscriptSectionJSONShape(t *testing.T) {
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRepairedProposalStillFacesDomainChecks(t *testing.T) {
|
func TestRepairedProposalStillFacesDomainChecks(t *testing.T) {
|
||||||
|
|||||||
@@ -10,15 +10,15 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/stagename"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/stagename"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
)
|
)
|
||||||
|
|
||||||
// InteractionDiagnosticsWriter writes machine-readable prompt/response artifacts.
|
// InteractionDiagnosticsWriter writes machine-readable prompt/response artifacts.
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
)
|
)
|
||||||
|
|
||||||
type fakeStructuredClient struct {
|
type fakeStructuredClient struct {
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/stagename"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/stagename"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"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)
|
type ProposalVariableBuilder func(transcript *schema.Transcript, glossary *schema.Glossary, sectionIndex int, transcriptDescription string) (map[string]string, error)
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestExecuteModuleProposalBuildsMessagesFromSectionAndDescription(t *testing.T) {
|
func TestExecuteModuleProposalBuildsMessagesFromSectionAndDescription(t *testing.T) {
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/promptcontext"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/promptcontext"
|
||||||
)
|
)
|
||||||
|
|
||||||
// BuildProposalVariables preserves the domain inputs while PromptKit renders
|
// BuildProposalVariables preserves the domain inputs while PromptKit renders
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuildProposalVariablesPreservesSectionGlossaryAndDescription(t *testing.T) {
|
func TestBuildProposalVariablesPreservesSectionGlossaryAndDescription(t *testing.T) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package proposals
|
|||||||
import (
|
import (
|
||||||
"sort"
|
"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.
|
// AppliedChange records a proposal that was successfully applied.
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
type applyFixture struct {
|
type applyFixture struct {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestApplyProposalsApplyingOneProposal(t *testing.T) {
|
func TestApplyProposalsApplyingOneProposal(t *testing.T) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package proposals
|
|||||||
import (
|
import (
|
||||||
"strings"
|
"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
|
// ProposalSkipReason is a stable, report-friendly reason code for
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPreviewProposalForSegmentRequireUniqueSuccess(t *testing.T) {
|
func TestPreviewProposalForSegmentRequireUniqueSuccess(t *testing.T) {
|
||||||
|
|||||||
@@ -11,16 +11,16 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
pk "gitea.maximumdirect.net/eric/promptkit"
|
pk "gitea.maximumdirect.net/eric/promptkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -9,15 +9,15 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||||
validatormetadata "gitea.maximumdirect.net/eric/audita/internal/validators/metadata"
|
validatormetadata "gitea.maximumdirect.net/eric/audita/v3/internal/validators/metadata"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -12,15 +12,15 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/modules"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/modules"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposal_generation"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposal_generation"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/validators"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/validators"
|
||||||
validatormetadata "gitea.maximumdirect.net/eric/audita/internal/validators/metadata"
|
validatormetadata "gitea.maximumdirect.net/eric/audita/v3/internal/validators/metadata"
|
||||||
)
|
)
|
||||||
|
|
||||||
func runnerTestConfig() config.Config {
|
func runnerTestConfig() config.Config {
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DiagnosticContext identifies the logical call without examining rendered text.
|
// DiagnosticContext identifies the logical call without examining rendered text.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package structuredoutput
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"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.
|
// FailureKind separates invalid generated content from operational failures.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFailureClassificationKeepsCauseAndSafeMessage(t *testing.T) {
|
func TestFailureClassificationKeepsCauseAndSafeMessage(t *testing.T) {
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/modulecatalog"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/modulecatalog"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ProposalShapeValidator struct{}
|
type ProposalShapeValidator struct{}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package validators
|
package validators
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DefectiveProposalReason recognizes a safely rejected defect in a proposal
|
// DefectiveProposalReason recognizes a safely rejected defect in a proposal
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||||
)
|
)
|
||||||
|
|
||||||
type LLMValidationBatch struct {
|
type LLMValidationBatch struct {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package validators
|
package validators
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
// validationContext supplies adjacent source segments within the current chunk
|
// validationContext supplies adjacent source segments within the current chunk
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestValidationContextCarriesAdjacentEvidenceAndRelevantDefinitions(t *testing.T) {
|
func TestValidationContextCarriesAdjacentEvidenceAndRelevantDefinitions(t *testing.T) {
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/llm"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/llm"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestValidationRepairAndRuntimeFailuresThroughDomainBoundary(t *testing.T) {
|
func TestValidationRepairAndRuntimeFailuresThroughDomainBoundary(t *testing.T) {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package validators
|
package validators
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
)
|
)
|
||||||
|
|
||||||
type LLMValidatorType string
|
type LLMValidatorType string
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
)
|
)
|
||||||
|
|
||||||
type perItemEstimator struct{}
|
type perItemEstimator struct{}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"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) {
|
func BuildValidationVariables(validationPayload []LLMValidationItem, transcriptDescription string) (map[string]string, error) {
|
||||||
|
|||||||
@@ -7,15 +7,15 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/stagename"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/stagename"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
)
|
)
|
||||||
|
|
||||||
type LLMBackedValidator struct {
|
type LLMBackedValidator struct {
|
||||||
|
|||||||
@@ -7,14 +7,14 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/chunking"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/chunking"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/responseschema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/responseschema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/structuredoutput"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
)
|
)
|
||||||
|
|
||||||
type fakeStructuredLLMClient struct {
|
type fakeStructuredLLMClient struct {
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/modulecatalog"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/modulecatalog"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
type protectedTermDef struct {
|
type protectedTermDef struct {
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestExtractProtectedTermsStableDeduplicatedWithPlurals(t *testing.T) {
|
func TestExtractProtectedTermsStableDeduplicatedWithPlurals(t *testing.T) {
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
)
|
)
|
||||||
|
|
||||||
func mkCandidate(index int, segID int, orig, corr string, conf float64) proposals.EnrichedCorrectionProposal {
|
func mkCandidate(index int, segID int, orig, corr string, conf float64) proposals.EnrichedCorrectionProposal {
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ package glossary
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposal_generation"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposal_generation"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
builtinvalidators "gitea.maximumdirect.net/eric/audita/internal/validators"
|
builtinvalidators "gitea.maximumdirect.net/eric/audita/v3/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Module struct {
|
type Module struct {
|
||||||
|
|||||||
@@ -9,12 +9,12 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposal_generation"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposal_generation"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
)
|
)
|
||||||
|
|
||||||
type fakeLLMClient struct {
|
type fakeLLMClient struct {
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ package grammar
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposal_generation"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposal_generation"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
builtinvalidators "gitea.maximumdirect.net/eric/audita/internal/validators"
|
builtinvalidators "gitea.maximumdirect.net/eric/audita/v3/internal/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Module struct {
|
type Module struct {
|
||||||
|
|||||||
@@ -9,12 +9,12 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
ck "gitea.maximumdirect.net/eric/ConfigKit"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/schema"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/contracts"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposal_generation"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposal_generation"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/proposals"
|
||||||
"gitea.maximumdirect.net/eric/audita/internal/prompts"
|
"gitea.maximumdirect.net/eric/audita/v3/internal/prompts"
|
||||||
)
|
)
|
||||||
|
|
||||||
type fakeLLMClient struct {
|
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