housebroken-cli 0.2.4__tar.gz → 0.2.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/PKG-INFO +1 -1
  2. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/pyproject.toml +1 -1
  3. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/scripts/inbox.sh +8 -0
  4. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/skills/housebroken/SKILL.md +12 -5
  5. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/.gitignore +0 -0
  6. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/LICENSE +0 -0
  7. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/README.md +0 -0
  8. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/bin/housebroken +0 -0
  9. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/hatch_build.py +0 -0
  10. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/scripts/check-ai-policy.sh +0 -0
  11. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/scripts/comment-census.sh +0 -0
  12. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/scripts/diff-defaults.sh +0 -0
  13. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/scripts/distinct-outside.sh +0 -0
  14. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/scripts/file-pr.sh +0 -0
  15. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/scripts/fork-hygiene.sh +0 -0
  16. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/scripts/notes.sh +0 -0
  17. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/scripts/pr-sweep.sh +0 -0
  18. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/scripts/prior-art.sh +0 -0
  19. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/scripts/verify-filed-pr.sh +0 -0
  20. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/src/housebroken/__init__.py +0 -0
  21. {housebroken_cli-0.2.4 → housebroken_cli-0.2.6}/src/housebroken/cli.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: housebroken-cli
3
- Version: 0.2.4
3
+ Version: 0.2.6
4
4
  Summary: Agent-written pull requests that do not make a mess in someone else's house.
5
5
  Project-URL: Repository, https://github.com/lenamonj/housebroken
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "housebroken-cli"
7
- version = "0.2.4"
7
+ version = "0.2.6"
8
8
  description = "Agent-written pull requests that do not make a mess in someone else's house."
9
9
  dynamic = ["readme"]
10
10
  license = "MIT"
@@ -120,6 +120,14 @@ if [ "$do_ci" -eq 1 ]; then
120
120
  echo "== census of open pull requests: failing, blocked, conflicting, changes requested, draft =="
121
121
  prs="$(gh search prs --author "$user" --state open --limit 100 --json repository,number,isDraft --jq '.[] | "\(.repository.nameWithOwner) \(.number) \(.isDraft)"' 2>/dev/null)"
122
122
  total=$(printf '%s\n' "$prs" | grep -c . || true)
123
+ # GitHub search returns a short page when it is throttled, and a census of half
124
+ # the pull requests reads exactly like a clean one. Compare against the count the
125
+ # API itself reports and say so loudly rather than silently flagging fewer.
126
+ claimed="$(gh api "search/issues?q=is:pr+author:$user+is:open&per_page=1" --jq '.total_count' 2>/dev/null)"
127
+ case "$claimed" in
128
+ ''|*[!0-9]*) echo "CENSUS UNVERIFIED: could not read the open pull request count from the API" ;;
129
+ *) [ "$claimed" -eq "$total" ] || echo "CENSUS INCOMPLETE: search returned $total of $claimed open pull requests, so this census covers only part of them; re-run when the search rate limit recovers" ;;
130
+ esac
123
131
  flagged=0
124
132
  while read -r repo num draft; do
125
133
  [ -n "$repo" ] || continue
@@ -55,11 +55,18 @@ report it in one line and do not proceed to the next step.
55
55
  exists.
56
56
 
57
57
  3. **Is it a fix or an opinion?**
58
- A change that rejects an input the project tolerated, or changes a
59
- default, is a breaking change on a stable major, however wrong the old
60
- behavior looks. It becomes an issue that describes the behavior and offers
61
- the patch, never a pull request. Classify every patch before writing a
62
- test for it. A finding whose only red evidence is a measurement, such
58
+ A change that rejects an input the project tolerated, changes a default,
59
+ or narrows what the project publishes is the maintainer's call, not
60
+ yours, however wrong the old behavior looks. Send the pull request
61
+ anyway, and put the call in the body: one paragraph naming exactly what
62
+ breaks for existing users, and a sentence offering to narrow it or close
63
+ it if they would rather not. Never send that change silently, and never
64
+ sit on it. Two exceptions take the issue route instead: a policy that
65
+ says behavior changes need discussion first, and a runtime behavior
66
+ change on a stable major that the project's own compatibility promise
67
+ forbids. Even then the patch is pushed to a branch and linked from the
68
+ issue, so the work is attributable to whoever did it. Classify every
69
+ patch before writing a test for it. A finding whose only red evidence is a measurement, such
63
70
  as peak memory or elapsed time, is a hold: a pull request needs a test
64
71
  that fails on the default branch for a wrong value, a crash or an
65
72
  out-of-bounds access, and "less memory" is not that test.
File without changes