Document shared validation integration
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user