183 lines
9.1 KiB
Markdown
183 lines
9.1 KiB
Markdown
# Feature Request From PromptKit: Shared Release Validation
|
|
|
|
Status: Requested by a prospective downstream consumer; not yet adopted by
|
|
ReleaseKit.
|
|
|
|
Date: 2026-10-07.
|
|
|
|
This request derives from PromptKit's
|
|
[ReleaseKit adoption assessment](https://gitea.maximumdirect.net/eric/promptkit/src/commit/7310ef34a44dae7288db7b281e2a6b7f2c56c4e9/docs/roadmap/releasekit.md),
|
|
which reviewed ReleaseKit `v0.1.0`. It describes downstream needs and leaves
|
|
public API design, shared defaults, and implementation choices to ReleaseKit.
|
|
|
|
## Consumer Context And Goal
|
|
|
|
PromptKit is a source-only Go library with concurrent LLM execution and
|
|
backend-capacity management. It would like to adopt ReleaseKit's common
|
|
source-publication process and reduce its own release infrastructure to
|
|
product settings and a few substantive project checks. Its existing release
|
|
scripts contain 209 lines, most of which implement validation rather than
|
|
publication.
|
|
|
|
PromptKit accepts changes to its release process in exchange for a common
|
|
standard and lower maintenance. The opportunity is to share useful validation
|
|
capabilities, rather than preserve every existing shell command or local rule.
|
|
Its consumer-example assertions and compatibility decisions remain meaningful
|
|
project responsibilities.
|
|
|
|
The four primary requests below concern reusable validation. Two additional
|
|
candidates are included for evaluation if their wider value justifies shared
|
|
support. PromptKit's choices about race testing, full vet, and credential
|
|
scanning remain under review; these requests describe useful capabilities
|
|
without making their acceptance a prerequisite for adoption.
|
|
|
|
## Primary Requests
|
|
|
|
### 1. Shared Go Formatting Validation
|
|
|
|
Please make Go formatting validation available through ReleaseKit's public
|
|
validation API and release profile, so the shared candidate workflow can
|
|
report tracked Go source that needs formatting.
|
|
|
|
PromptKit currently owns a shell check that identifies its tracked Go files
|
|
and verifies their formatting. The operation is common to Go repositories;
|
|
maintaining that mechanism independently adds little project-specific value.
|
|
A useful shared capability would inspect source, report the affected files,
|
|
and leave formatting changes to ordinary development.
|
|
|
|
The benefit is consistent validation and diagnostics with less local script
|
|
maintenance. PromptKit can follow ReleaseKit's selected formatting convention
|
|
without requiring preservation of its current enumeration or command loop.
|
|
|
|
### 2. Shared Offline Markdown-Link Validation
|
|
|
|
Please make validation of local Markdown links available through the public
|
|
validation API and release profile. PromptKit needs checks for local file
|
|
destinations and heading fragments, with enough diagnostic context to locate
|
|
and correct a broken link.
|
|
|
|
Documentation is part of PromptKit's consumer interface. Broken navigation
|
|
between its guides, formats, policies, and examples makes otherwise correct
|
|
documentation harder to use. Its current local Markdown checker is the
|
|
largest generic block in its release-validation script.
|
|
|
|
Shared support would remove a locally maintained parser and standardize the
|
|
supported Markdown behavior across consumers. ReleaseKit can establish the
|
|
supported link and heading conventions; PromptKit does not require its exact
|
|
current parsing or anchor rules. Repository-specific choices about links to
|
|
material outside the checkout should remain distinguishable from generally
|
|
useful local-link validation.
|
|
|
|
The desired operation is offline and reports problems without changing
|
|
documentation. External website availability is a separate concern and adds
|
|
no value to this request.
|
|
|
|
### 3. Race Detection Within One Standard Test Run
|
|
|
|
Please provide a supported public API and profile choice for race-enabled
|
|
execution of the standard full Go suite during candidate validation.
|
|
|
|
PromptKit's concurrent execution and capacity management make race detection
|
|
useful: ordinary successful tests can miss unsafe shared-state access. Its
|
|
current release validation runs the full suite with the race detector.
|
|
ReleaseKit's current
|
|
[candidate workflow](../consumers/check.md) always runs the ordinary suite;
|
|
expressing a race run as an additional check would execute the complete suite
|
|
twice.
|
|
|
|
The desired capability selects race-enabled execution for that one suite
|
|
run, while ReleaseKit continues to own the candidate workflow. The selection
|
|
should work consistently through the public API and CLI/profile forms of
|
|
candidate checking and publication. A consumer can select the ordinary suite
|
|
when that is sufficient.
|
|
|
|
This overlaps with ConfigKit's
|
|
[base-test invocation request](feature-request-configkit.md#select-one-base-go-test-invocation).
|
|
PromptKit would benefit from the same shared capability; it does not need a
|
|
separate PromptKit-specific test mechanism. ReleaseKit can decide the smallest
|
|
appropriate public expression of the choice and whether race testing belongs
|
|
among its common defaults.
|
|
|
|
### 4. Shared Full Go Vet Validation
|
|
|
|
Please consider exposing full Go vet analysis as part of ReleaseKit's public
|
|
validation API and release profile, coordinated with the standard suite.
|
|
|
|
PromptKit currently runs full vet separately. Ordinary Go test execution
|
|
includes only a subset of vet analyses, so replacing the current procedure
|
|
with the standard test run does not provide equivalent static analysis. The
|
|
additional analyses can detect defects that are not exercised by tests.
|
|
|
|
PromptKit can temporarily retain a configured full-vet command. A shared
|
|
capability would let consumers express that validation choice directly and
|
|
let ReleaseKit coordinate the analysis with testing to avoid unnecessary
|
|
overlap. The desired outcome is full selected analysis and one complete
|
|
suite execution; PromptKit leaves the means of achieving that outcome to
|
|
ReleaseKit.
|
|
|
|
This also overlaps with ConfigKit's
|
|
[shared-check request](feature-request-configkit.md#evaluate-shared-release-checks).
|
|
Full vet may be useful as a common default or as an explicit selection.
|
|
PromptKit is asking for a shared capability, not prescribing additional gates
|
|
for every ReleaseKit consumer.
|
|
|
|
## Additional Candidates For Evaluation
|
|
|
|
### 5. Optional Go Module Distribution Checks
|
|
|
|
PromptKit's architecture keeps committed workspace files and local filesystem
|
|
module replacements out of its released source. These rules help a shared
|
|
library remain independent of neighboring checkouts. Disabling workspace
|
|
discovery during validation controls the test environment but does not check
|
|
the files being distributed.
|
|
|
|
If other consumers have the same need, optional public validation capabilities
|
|
could check for committed workspace files and local filesystem replacements.
|
|
Consumers should be able to select the distribution rules relevant to them;
|
|
a versioned module replacement is different from a local filesystem
|
|
dependency, and Go applications may deliberately distribute workspace files.
|
|
|
|
The potential benefit is reusable inspection and consistent diagnostics
|
|
without each library owning its own checks. PromptKit can also keep a small
|
|
local check if that is simpler than introducing shared support. This is a
|
|
lower-priority candidate, not a request for universal bans on workspaces,
|
|
replacement directives, or vendoring.
|
|
|
|
### 6. Optional Recognizable-Credential Checks
|
|
|
|
PromptKit's assessment recommends retiring its mandatory credential-pattern
|
|
scan, while retaining ordinary credential-aware change review. A viable
|
|
alternative is to keep a lightweight automated signal for recognizable
|
|
accidentally committed credential formats.
|
|
|
|
If ReleaseKit finds broader consumer value in that alternative, please
|
|
consider an optional public validation capability for such checks. A useful
|
|
offering would make its detection scope clear and account for the possibility
|
|
of matching synthetic examples or fixtures. It would complement ordinary
|
|
review rather than imply comprehensive detection.
|
|
|
|
Shared support could centralize maintenance of the selected detection behavior
|
|
and remove another local script fragment. PromptKit is not requesting a
|
|
general security-scanning subsystem, preservation of its current regex, or
|
|
a mandatory credential gate. This candidate warrants adoption only if its
|
|
additional protection justifies its maintenance and false-positive costs.
|
|
|
|
## Desired Adoption Outcome
|
|
|
|
The strongest opportunities are shared formatting and Markdown validation,
|
|
followed by useful race/vet choices within a single candidate-validation flow.
|
|
The module-distribution and credential candidates merit separate evaluation
|
|
because their policies and benefits vary between consumers.
|
|
|
|
For accepted capabilities, availability through both the public Go API and
|
|
the maintained CLI/profile would let PromptKit select them without creating
|
|
its own release executable. PromptKit can retain its consumer-example
|
|
assertions as additional checks and use ReleaseKit's supported conventions
|
|
for shared validation and diagnostics.
|
|
|
|
PromptKit would continue to prepare its release note and publish its candidate
|
|
to authoritative `main` before invoking source publication. Confirmed tag
|
|
publication completes the source release; CI and hosted delivery remain
|
|
separate. Those responsibilities already fit ReleaseKit's common workflow
|
|
and do not require new features for this request.
|