Add footers to pull requests created#1831
Conversation
|
failures from CI |
Fix required per project exception handling standards. Add diagnostic output to both except Exception as e:
print(f'[pr_footer] provider lookup failed: {e}', file=sys.stderr)
provider_name = ''Same pattern for line 105 (model config). This matches the project's |
|
|
BabyKoan
left a comment
There was a problem hiding this comment.
Blocking issues found — see the review comment above.
Rebase with requested adjustmentsBranch Changes applied
StatsActions performed
CI statusCI will be checked asynchronously. Automated by Kōan |
|
view failures from CI and fix |
0bf07d7 to
bc34d60
Compare
|
Created follow-up issue #1849 to track the architectural re-design: moving generic mission PR creation from the LLM session into Python (unifying with the skill-dispatch path). This will fix the missing rich footer on all future generic mission PRs. |
Fix required per project exception handling standards. Add diagnostic output to both except Exception as e:
print(f'[pr_footer] provider lookup failed: {e}', file=sys.stderr)
provider_name = ''Same pattern for line 105 (model config). This matches the project's |
PR Review — Add footers to pull requests createdFeature implementation blocked by silent exception handling.
Fix the silent exception handlers before merging. The footer feature itself is solid - provider/model/HEAD/duration tracking adds valuable observability. 🟡 Important1. Cross-link comment failure only logged to stderr (`koan/app/claude_step.py`, L1514-1522)The 🟢 Suggestions1. Hardcoded skill list will drift (`koan/app/run.py`, L2033-2037)The hardcoded set
This prevents future skills from missing footer attribution. Checklist
To rebase specific severity levels, use: Silent Failure Analysis🟡 **MEDIUM** — silent exception suppression with empty string return (`koan/app/pr_footer.py:95-108`)Risk: Broad Fix: Catch specific expected exceptions (e.g., 🟡 **MEDIUM** — silent exception suppression with empty string return (`koan/app/pr_footer.py:109-117`)Risk: Same pattern as above — any exception during config lookup is silently discarded, leaving no trace of what went wrong. Fix: Add debug-level logging before returning empty string to preserve observability while maintaining best-effort semantics. 🟡 **MEDIUM** — silent subprocess failure with empty string return (`koan/app/pr_footer.py:124-138`)Risk: Git command failures (including timeout, missing git, or non-git directory) return empty string with no logging, making it impossible to diagnose why HEAD metadata is missing. Fix: Log the exception at debug level with the project_path context before returning empty string. 🟡 **MEDIUM** — silent type/value error with empty string return (`koan/app/pr_footer.py:140-152`)Risk: Invalid timestamp formats or non-numeric started_at values fail silently, losing the ability to detect clock skew or data corruption issues. Fix: Log the raw started_at value at debug level when conversion fails to aid debugging of timestamp pipeline issues. 🟡 **MEDIUM** — silent exception suppression in cross-link comment (`koan/app/claude_step.py:1514-1524`)Risk: GitHub comment creation failures are caught but the exception handling is not visible in this diff snippet — if it only logs or passes, PR cross-linking failures become invisible. Fix: Ensure the except block logs the exception with the PR number and error details; consider adding a warning action to the result. 🟡 **MEDIUM** — environment variable parsing without validation (`koan/app/run.py:2030-2045`)Risk: If mission_title parsing fails or returns unexpected values, _mission_command becomes empty string and _mission_model_key silently defaults to empty, causing inconsistent model tracking. Fix: Validate mission_command_name output against expected commands and log unexpected patterns for monitoring. Automated review by Kōan (Ollama-launch · model qwen3.5:cloud) |
BabyKoan
left a comment
There was a problem hiding this comment.
Blocking issues found — see the review comment above.
the goal is to track the model/provider used when submitting a PR
so we can know what the options were during implementation