Document shared validation integration

This commit is contained in:
2026-10-07 18:39:15 +00:00
parent 1ebd45c975
commit 89c5b2c1fd
3 changed files with 255 additions and 0 deletions

View File

@@ -342,6 +342,11 @@ will add setting-specific mapping/equivalence cases at this established boundary
## Stage 7: Record capability integration recipes and consumer shapes
**Completion:** Complete. Internal guidance now records setting and checker
ownership, Go command coordination, and candidate-file integration. The
prospective examples below compare the agreed declarations with the read-only
consumer review.
**Outcome:** Subsequent feature prompts can use the foundation without redesigning
its ownership or inventing a public extension framework.
@@ -372,6 +377,172 @@ and the ownership table in `model.md`. Confirm product checks still fit the
existing callback/profile extension point. Runtime tests are self-contained and
independent of the three sibling checkouts.
### Prospective consumer shapes
These examples show the agreed model before its optional settings are
implemented. The `Validation` field and the profile `validation` object are
prospective until their corresponding checkers land.
#### Audita: retain the existing artifact build
The zero-value validation selection preserves current defaults while the
existing Linux application artifacts remain declared separately:
```go
request := releasekit.ReleaseRequest{
Product: "Audita",
Version: version,
Validation: releasekit.ValidationSpec{}, // prospective; zero value keeps current validation
Build: &releasekit.BuildSpec{
MainPackage: "./cmd/audita",
BinaryName: "audita",
Targets: []releasekit.Target{
{OS: "linux", Arch: "amd64"},
{OS: "linux", Arch: "arm64"},
},
},
}
```
Its profile keeps the existing build declaration and omits `validation`:
```json
{
"product": "Audita",
"remote": "origin",
"build": {
"main_package": "./cmd/audita",
"binary_name": "audita",
"targets": ["linux/amd64", "linux/arm64"]
},
"delivery": {
"base_url": "https://gitea.maximumdirect.net",
"owner": "eric",
"repository": "audita",
"token_env": "RELEASEKIT_GITEA_TOKEN"
}
}
```
#### ConfigKit: select release compatibility checks
The declaration expresses its race test, separate full vet, and source-only
Linux compilation commitments without selecting executable artifacts:
```go
request := releasekit.ReleaseRequest{
Product: "ConfigKit",
Version: version,
Validation: releasekit.ValidationSpec{
Go: releasekit.GoValidationSpec{
Race: true,
FullVet: true,
CompileTargets: []releasekit.Target{
{OS: "linux", Arch: "amd64"},
{OS: "linux", Arch: "arm64"},
},
},
},
}
```
```json
{
"product": "ConfigKit",
"validation": {
"go": {
"race": true,
"full_vet": true,
"compile_targets": ["linux/amd64", "linux/arm64"]
}
}
}
```
The consumer's baseline-toolchain requirement remains its compatibility
decision. The selection above describes checks, not a promise to run them with
every Go toolchain.
#### PromptKit: share mechanics and keep example assertions
Shared settings cover the maintained race and vet passes, Go formatting,
checkout-bounded Markdown links, and the two distribution rules. Substantive
example assertions remain in the existing `AdditionalChecks` extension point
or profile `checks`:
```go
request := releasekit.ReleaseRequest{
Product: "Promptkit",
Version: version,
Validation: releasekit.ValidationSpec{
Go: releasekit.GoValidationSpec{Race: true, FullVet: true},
GoFormat: true,
Markdown: &releasekit.MarkdownValidationSpec{EnforceCheckoutBoundary: true},
ModuleDistribution: releasekit.ModuleDistributionValidationSpec{
WorkspaceFiles: true,
LocalReplacements: true,
},
},
AdditionalChecks: checkExamples,
}
```
```json
{
"product": "Promptkit",
"validation": {
"go": {"race": true, "full_vet": true},
"go_format": true,
"markdown": {"enforce_checkout_boundary": true},
"module_distribution": {
"workspace_files": true,
"local_replacements": true
}
},
"checks": [
{"args": ["python3", "scripts/check-examples.py"]}
]
}
```
The example-check command is illustrative of a product-owned check retained
from PromptKit's current release assertions; it is not a file in the reviewed
checkout.
### Read-only consumer review
Reviewed on 2026-10-07. All three local worktrees were clean. The declarations
were compared with Audita `bd62f36`, ConfigKit `dc09959`, and PromptKit
`7310ef3`; no sibling repository was modified.
- Audita's `releasekit.json` already declares its product, remote, Linux binary
build, and Gitea destination. Its nine-line `scripts/release.sh` builds the
module-selected ReleaseKit executable and delegates to it. It has no
additional candidate-validation block to remove; omitting optional
selections preserves its current validation. Module-selected CI bootstrap
remains separate later work.
- ConfigKit's 29-line `scripts/release-check.sh` selects one race test run with
test-time vet disabled, runs full vet, and compiles all packages for Linux
amd64 and arm64. Those invocation and target-loop mechanics correspond to
the shared Go settings. Its 133-line publication script also checks an
expected remote URL and advances `main` before publishing a tag. The
endpoint expectation is a separate publication capability; the main-branch
publication flow remains product-specific. Its `CONFIGKIT_BASELINE_TOOLCHAIN`
requirement covers cached supported Go 1.25 patch releases and remains a
consumer commitment.
- PromptKit's 152-line `scripts/release-check.sh` owns the race suite, separate
vet, tracked-Go formatting check, Markdown link and heading checks,
workspace-file and local-replacement checks, a vendor-directory rejection,
and substantive example output assertions. The shared validation settings
correspond to race, vet, formatting, Markdown, workspace-file, and
replacement mechanics; vendor and example assertions remain product checks.
Its 57-line `scripts/release.sh` also checks release-note sections and
publishes an annotated tag, which remain in the product's release procedure.
The file-size capability has no corresponding local check in these reviewed
scripts. Consumer migrations and measurements of realized code removal remain
outside this implementation plan.
## Stage 8: Verify and document the completed foundation
**Outcome:** The enabling refactor is complete, its current boundary is clear,