fix(pipeline): outcome display, contract compliance, artifact path normalization#143
Merged
nextlevelshit merged 5 commits intomainfrom Feb 23, 2026
Merged
fix(pipeline): outcome display, contract compliance, artifact path normalization#143nextlevelshit merged 5 commits intomainfrom
nextlevelshit merged 5 commits intomainfrom
Conversation
…rnings Shared-worktree pipelines (like gh-rewrite) where multiple steps produce the same artifact.json were showing duplicate entries. filterArtifacts now deduplicates by absolute path. Outcome extraction failures were completely silent — warnings went to events but never reached the user. Now extraction errors surface in the outcome summary so broken pipes are visible, not hidden. Also makes url required in enhancement-results contract schema and updates the gh-issue-rewrite prompt to capture issue URLs.
Change output/publish-result.json to .wave/output/publish-result.json for consistency with all other pipelines. Updates output_artifacts path, outcomes extract_from path, and prompt instruction.
When a step has a json_schema contract, Wave now auto-generates a Contract Compliance section in the persona's CLAUDE.md that includes the output file path, format requirement (valid JSON only), schema reference, and required top-level fields extracted from the schema. For test_suite contracts, the test command is shown instead. This ensures personas know the required output format without pipeline authors needing to repeat format requirements in their prompts. Closes #140
…on to contract prompt - Change all output_artifacts/outcomes paths from artifact.json to .wave/artifact.json across gh-issue-rewrite, gh-issue-update, and prototype pipelines - Update persona prompts to reference .wave/artifact.json consistently - Enhance contract compliance prompt with concrete JSON skeleton example showing required fields with type-appropriate placeholders - Use CRITICAL emphasis in contract prompt to prevent personas writing markdown instead of JSON to the output file Affected: 5 personas, 3 pipelines (both .wave/ and internal/defaults/ copies)
…pliance handle it Strip all artifact.json / .wave/artifact.json path references from pipeline step prompts and persona definitions. The auto-generated Contract Compliance section in CLAUDE.md now handles telling the persona exactly where and how to write output. This cleanly separates concerns: prompts describe WHAT to do, contracts describe HOW to validate, and Wave handles the plumbing.
nextlevelshit
added a commit
that referenced
this pull request
Mar 4, 2026
fix(pipeline): outcome display, contract compliance, artifact path normalization
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
output_artifactswhen no explicitsourceconfigured.wave/artifact.jsonconvention across all pipelinesChanges
display/outcome.go,outcome_test.godeliverable/tracker.gopipeline/executor.go,executor_test.goadapter/adapter.go,claude.go,claude_test.goContractPromptfield, inject into CLAUDE.mdartifact.json→.wave/artifact.json, strip path refs from promptsgithub-enhancement-results.schema.json× 2urlrequiredoutput/→.wave/output/Test plan
go test -race ./...— all 22 suites passgh-issue-rewritepipeline completes all 4 steps with contract validationgh-issue-updatepipeline end-to-endCloses #140