fix: harden end-to-end refactor workflow (#63-#70)#71
Merged
Conversation
Parse expectations such as '→ no output' from spec Acceptance Criteria bullets. For no-output commands, treat exit codes 0/1 with empty stdout as passing instead of requiring exit code 0. Closes #64
…ession file Generate the static HTML report inside the worktree at the end of each run so it reflects the actual branch/iterations/status. Also make ReportGenerator fall back to session_latest.json when the detailed summary file is not present in the current directory (e.g. main repo). Closes #65
The workspace was flagged as dirty whenever .owloop/ existed untracked, which is normal because owloop stores specs/logs there. Filter out paths owned by owloop (currently .owloop/) from git status --porcelain before deciding whether to prompt the user. Closes #63
Branch names now look like owloop/<date>-<slug>-<session_id>, e.g. owloop/20260707-extract-issue-service-3c0c9b3c, so it is obvious what a branch is doing at a glance. Legacy branch names without a slug are still supported for --resume. Closes #68
…ria commands Closes #66
…t failures Closes #69
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.
This PR addresses the workflow gaps found during the end-to-end refactor run on
xyz-data-website.Changes
fix(engine): ignore owloop-owned paths in dirty-workspace check
.owloop/is owloop's own state directory; it should not trigger the dirty-workspace prompt.fix(verification): honor
→ no outputacceptance-criteria expectationsgrepnaturally returns exit code 1 when there are no matches. The verifier now treats→ no outputcommands as passing when stdout is empty and the exit code is 0 or 1.fix(report): auto-generate HTML report in worktree and fall back to session file
ReportGeneratorfalls back tosession_latest.jsonwhenowloop_summary_latest.jsonis not present.fix(verification): restore excluded files mutated by acceptance-criteria commands
uv run --with pytestcan mutate tracked files listed in a spec's## Exclusions(e.g.uv.lock). The verifier now reverts those files to HEAD after running acceptance criteria and backpressure.feat(engine): add
--no-pushfor review-before-push workflowsowloop run --no-pushcommits completed specs locally but skips the remote push, leaving commits on the branch for human review.feat(engine): include spec slug in owloop branch names
owloop/20260707-extract-label-service-4a3b2c1) so it is clear what a branch is working on.feat(verification): classify functional vs meta-check failures as soft failures
grep ... → no output) fails, the run stops with a newsoft_failureterminal state, preserves the diff for review, and avoids an unconditional rollback.feat(engine): skip subagents for small/scoped specs to reduce token cost
--subagentsnow only enables the Orient/Implement/Verify subagent orchestration when a spec's## Filesscope exceeds the threshold (default 3 files). Small, scoped changes run as a single agent iteration to save coordination tokens.Verification
uv run pytest -q: 381 passeduv run ruff check src/owloop tests: All checks passeduv run mypy src/owloop tests: Success