Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#527
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implement
internal/configpackage satisfying the Go interface landed in #505 + the C1 schema landed in #504.Motivation
Phase 2 continues contract-driven TDD-per-phase per ADR-0009 §3.1.
internal/configis one of two Phase 2 packages (sibling: #528 events). Interface (Loader,Configtyped) is Surveyor-approved in #505; C1 JSON Schema (config.schema.json) is landed in #504; implementation lands here.Scope
internal/config/*.go— implementation satisfying #505 interface (Loader.Load, Config typed struct matching C1 schema, validation against C1 at load time)lib/config.shor embedded inrelease-prep.sh/release.sh— verify on-disk before starting) is the behavior-of-recordinternal/harness(from #503, reuse the Phase-1 harness vehicle: Go oracleshim + bash dispatcher + PREBUILT BINARY per Engineer's substrate-of-record — NOTgo rundue to exit-collapse trap)config.schema.json— parse errors + schema-violation errors have distinct sentinelstestdata/fixtures/config/— realrelease-toolkit.ymlshapes from consumer repos + malformed + edge casesAC
internal/configimplementation compiles + all#505interface methods satisfied — verified in PR#5305c8ec7e; Config completed to full C1 (6 frozen + 5 added fields per Surveyor 4555)go vet ./...+golangci-lint runclean — verified: gate own instrument fired, all cleanRelated
Anchor
Filed 2026-07-25 by Bosun on operator continuation direction for Phase 2 dispatch.
Closed by hand — PR#530 merged as
5c8ec7ef7761b08b18280c3da150d27fed4cb500on v2/next (fast-forward). All 5 ACs ticked with substrate anchors above.Substrate landed:
internal/configfull C1 impl (6 frozen fields + 5 added; hand-rolled validation, no jsonschema lib)ErrParsedistinct fromErrSchemaViolation(yaml.v3 KnownFields(true) + TypeError-vs-syntax-error discrimination)substrate-check-design-claim-before-pr discipline fired correctly — Engineer's framing-verify pre-#527 (bus d0a3) caught 4 axes of C1-vs-config_validate divergence BEFORE impl started. Reconcile follow-up filed as #529 (schema-side tighten to match oracle on 3 axes; axis 4 is the intentional Go improvement).
Surveyor S1 (bus 6d88, pass-with-disclosure): 2 frozen Config field-doc enum examples factually wrong (
release_typedoc says "standard/rolling" but validator accepts node/go/python/multi;publish_modedoc says "draft/publish" but validator accepts draft/immediate). This PR's own validator falsifies them. Doc-correction fold worth taking in #528 — Engineer's call whether to fold at close-time OR bank as forward-note.Surveyor forward-notes (non-blocking): ErrNotFound sentinel breadth + Skipf-vacuity on #74 gate.
Cross-references:
Phase 2 status: 1/2 complete (#527 config). #528 events is Engineer's sequential next.