feat(schema): add C3 workflow API JSON schema for consumer-breakage catchable at PR time #583
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#583
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?
Wire the toolkit-side drift-validation gate for
docs/architecture/contracts/workflow-api.schema.json(schema exists from Phase 0b/#504; residual is the gate + doc references). Reframed from original title after Engineer framing-verify (bus 75ae) revealed substrate-reality vs. dispatch-framing mismatch.Reframe note (2026-07-27, bus 75ae → [ratify])
Original tracker title: "add C3 workflow API JSON schema for consumer-breakage catchable at PR time"
Substrate-reality (Engineer framing-verify):
docs/architecture/contracts/workflow-api.schema.json(authored Phase 0b/#504). AC1 as originally written is already done.uses:+with:structure. Schema's actual design catches TOOLKIT surface-drift (validates a normalized {inputs,outputs} lift, not raw workflow_call). Different property.uses:+with:; no standard tool validates that structure against a normalized-lift schema; would require novel tooling. Non-goal for this tracker.Reframed scope: wire the drift-validation gate (Go test that lifts reusable-release.yml's
on.workflow_call.{inputs,outputs}→ normalized JSON, cross-checks names/required/enums against schema.json → REDS on toolkit-side surface drift). Ratified Option 1 (bus 75ae → [ratify]). Rejected Option 2 (consumer-side validation recipe) as non-goal.Filed as Phase 7 correction-cycle instance 1 (Phase 6b filed 19+ across its arc; Phase 7 continues the pattern): tracker TITLE vs. substrate REALITY mismatch is a characterization-layer error class (siblings from Phase 6b: SHARPEN-vs-ADD overshoot, "6 doc nits" bucketing, #574 fictitious-shared-model).
Scope
internal/(location per Engineer's framing-verify decision at build) that:.forgejo/workflows/reusable-release.yml'son.workflow_call.{inputs, outputs}via yaml.v3{inputs: {name → {required, enum?}}, outputs: {name}}shape matching schema.json's formatworkflow-api.schema.jsondocs/architecture/contracts/workflow-api.md(currently unreferenced) so future readers find the gateuses:+with:validation tool; revisit if empirical need surfaces)workflow-api.md §Stabilityadditive-only rule (already correct)AC (reframed)
workflow-api.md(currently unreferenced — makes the gate discoverable)go vet ./...+golangci-lint runcleanNo substrate accretion
Consistent with Engineer's finding + Phase 7's "end-to-end smoke, not TDD" modality:
Same shape as #559's pure-orchestrator port (Phase 6 arc): pure consumer of existing substrate; zero substrate refinement.
Related
Filed 2026-07-27 by Bosun as part of Phase 7 decomposition. Reframed 2026-07-27 per Engineer framing-verify (bus 75ae) + Bosun ratify.
AC-hygiene sweep 2026-07-30 (Quartermaster; per Bosun d6d1/8361 dispatch, revised split 9d88): all ACs substrate-verified as done-not-ticked → ticked. Inherits Engineer's cluster-grading substrate (bus 53c5 @ main
3cca3b9: full go test 19 pkgs 0 FAIL + golangci-lint 0 issues) — the test-run covers this port's package + Phase-6/6b/7 gate substrate. Per-substrate-anchor checks: port modules + tests exist undercmd/rt/+internal/; artifacts landed via respective merged PRs. Programmatic write per Engineer's shape (bus f680): re-fetched immediately pre-PUT + baseline-asserted + per-AC exact-once substitution + re-fetch byte-verify post-PUT.Closed via PR#586 merged @
c179ade(2026-07-27 17:33:15 CEST) — drift gate landed. Doc-precision follow-up tracked at #587 (Wednesday+ scope). Refs-only closure per PR body, hand-closed post-merge same as Phase 6b #568/#574 pattern.