housebroken-cli 0.6.0__tar.gz → 0.6.2__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 (26) hide show
  1. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/PKG-INFO +2 -2
  2. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/README.md +1 -1
  3. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/pyproject.toml +1 -1
  4. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/comment-check.sh +13 -3
  5. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/review.sh +6 -5
  6. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/skills/housebroken/SKILL.md +5 -2
  7. housebroken_cli-0.6.2/src/housebroken/__init__.py +1 -0
  8. housebroken_cli-0.6.0/src/housebroken/__init__.py +0 -1
  9. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/.gitignore +0 -0
  10. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/LICENSE +0 -0
  11. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/bin/housebroken +0 -0
  12. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/hatch_build.py +0 -0
  13. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/branch-check.sh +0 -0
  14. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/check-ai-policy.sh +0 -0
  15. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/claim-check.sh +0 -0
  16. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/comment-census.sh +0 -0
  17. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/diff-defaults.sh +0 -0
  18. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/distinct-outside.sh +0 -0
  19. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/file-pr.sh +0 -0
  20. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/fork-hygiene.sh +0 -0
  21. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/inbox.sh +0 -0
  22. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/notes.sh +0 -0
  23. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/pr-sweep.sh +0 -0
  24. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/prior-art.sh +0 -0
  25. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/scripts/verify-filed-pr.sh +0 -0
  26. {housebroken_cli-0.6.0 → housebroken_cli-0.6.2}/src/housebroken/cli.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: housebroken-cli
3
- Version: 0.6.0
3
+ Version: 0.6.2
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
@@ -77,7 +77,7 @@ A memory-safety, remote-abort, injection or path-escape finding goes by the proj
77
77
 
78
78
  **9. File through the gate.**
79
79
  `branch-check.sh` refuses a dirty working tree, a file whose mode disagrees with its siblings, a file the repository's own `.gitignore` excludes, a working artifact, a commit carrying a tool trailer, a session link or a tool identity, a sign-off naming a username, a branch not on top of its base, and any comment added to code; it prints every absolute claim in added prose for falsification, and stamps the head it passed.
80
- `review.sh` names the adversarial reviewer: a different model from the one that wrote the change, one tier down, never below Sonnet. The reviewer gets a fresh context, hard read-only limits and an attack list that starts with every claim the prose makes; every finding carries evidence it produced itself, and its report is bound to the head and the text it read. A fix is a new head and gets a new review.
80
+ `review.sh` names the adversarial reviewer: a different model from the one that wrote the change, one tier down, never below Sonnet. The reviewer gets a fresh context, hard read-only limits and an attack list that starts with every claim the prose makes and includes the form of the code: the reviewer writes the changed block the way the strongest engineer in that language would, in the repository's own idioms, and a smaller or clearer version is a finding; every finding carries evidence it produced itself, and its report is bound to the head and the text it read. A fix is a new head and gets a new review.
81
81
  `file-pr.sh` is the only way a pull request is opened. It refuses without a prior-art printout under a day old, a policy printout under a day old that does not read BAN, a body that discloses when the policy asks, a branch stamp for the exact head, and a POST AS IS review of that head and that body.
82
82
 
83
83
  **10. Watch it land.**
@@ -65,7 +65,7 @@ A memory-safety, remote-abort, injection or path-escape finding goes by the proj
65
65
 
66
66
  **9. File through the gate.**
67
67
  `branch-check.sh` refuses a dirty working tree, a file whose mode disagrees with its siblings, a file the repository's own `.gitignore` excludes, a working artifact, a commit carrying a tool trailer, a session link or a tool identity, a sign-off naming a username, a branch not on top of its base, and any comment added to code; it prints every absolute claim in added prose for falsification, and stamps the head it passed.
68
- `review.sh` names the adversarial reviewer: a different model from the one that wrote the change, one tier down, never below Sonnet. The reviewer gets a fresh context, hard read-only limits and an attack list that starts with every claim the prose makes; every finding carries evidence it produced itself, and its report is bound to the head and the text it read. A fix is a new head and gets a new review.
68
+ `review.sh` names the adversarial reviewer: a different model from the one that wrote the change, one tier down, never below Sonnet. The reviewer gets a fresh context, hard read-only limits and an attack list that starts with every claim the prose makes and includes the form of the code: the reviewer writes the changed block the way the strongest engineer in that language would, in the repository's own idioms, and a smaller or clearer version is a finding; every finding carries evidence it produced itself, and its report is bound to the head and the text it read. A fix is a new head and gets a new review.
69
69
  `file-pr.sh` is the only way a pull request is opened. It refuses without a prior-art printout under a day old, a policy printout under a day old that does not read BAN, a body that discloses when the policy asks, a branch stamp for the exact head, and a POST AS IS review of that head and that body.
70
70
 
71
71
  **10. Watch it land.**
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "housebroken-cli"
7
- version = "0.6.0"
7
+ version = "0.6.2"
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"
@@ -118,11 +118,21 @@ while IFS= read -r f; do
118
118
 
119
119
  # An added comment line is refused unless a removed comment line in the same
120
120
  # hunk pays for it, or it is in the leading comment block of a new file whose
121
- # neighbours open with one.
122
- awk -F'\t' -v re="$re" -v hdr="$header_ok" -v file="$f" '
121
+ # neighbours open with one. Every added line between an added /* and its */
122
+ # is a comment, whatever it starts with.
123
+ blk=0
124
+ case "$re" in *'/[*]'*) blk=1 ;; esac
125
+ awk -F'\t' -v re="$re" -v hdr="$header_ok" -v file="$f" -v blk="$blk" '
123
126
  $1 == "-" { if ($4 ~ re) rem[$2]++; next }
124
127
  $1 == "+" {
125
- if ($4 ~ re) {
128
+ iscom = ($4 ~ re)
129
+ if (blk == 1) {
130
+ if ($3 != prev + 1) inblock = 0
131
+ prev = $3
132
+ if (inblock) { iscom = 1; if ($4 ~ /[*]\//) inblock = 0 }
133
+ else if ($4 ~ /^[[:space:]]*\/[*]/ && $4 !~ /[*]\//) inblock = 1
134
+ }
135
+ if (iscom) {
126
136
  if (rem[$2] > 0) { rem[$2]--; next }
127
137
  if (hdr == 1 && !code_seen) next
128
138
  text = $4; sub(/^[[:space:]]+/, "", text)
@@ -154,7 +154,7 @@ cmd_brief() {
154
154
  printf 'ADVERSARIAL REVIEW BRIEF\n\n'
155
155
  printf 'You are the reviewer. The change below was written by %s. You are %s, chosen because you did not write it. ' "$author" "$reviewer"
156
156
  cat <<'EOF'
157
- Find what is wrong with it before a maintainer does. Assume there is at least one defect and hunt for it. A finding needs evidence you produced yourself: a command and its output, a quoted line of code, a quoted document. An impression is not a finding.
157
+ Review it as the strongest engineer in the language of the changed files, the one the maintainers ask when a diff looks fine and they want to know what is wrong with it. Find what is wrong with it before a maintainer does. Assume there is at least one defect and hunt for it. A finding needs evidence you produced yourself: a command and its output, a quoted line of code, a quoted document. An impression is not a finding.
158
158
 
159
159
  Hard limits
160
160
  - Nothing leaves this machine: no git push; no gh pr create, comment, review or merge; no gh api call with -X POST, PATCH, PUT or DELETE, or with -f or -F fields. Read-only gh calls are fine.
@@ -189,10 +189,11 @@ EOF
189
189
  cat <<'EOF'
190
190
  2. The proof: the new test fails on the base and passes with the change. Swap file content with git show <base>:<path> rather than switching branches, compare hashes, and make sure the two arms differ. Ask what each step would print if it did nothing.
191
191
  3. The project's own CI, read from its workflow files: tests, lint, format, API and mutation checks, run on the change.
192
- 4. Scope: every changed line is needed for what was asked, nothing is unrequested, no comment appears where the surrounding code has none, and documentation, README and CHANGELOG that describe the changed behaviour change with it.
193
- 5. Prior art: nothing duplicates an open pull request or argues with a ruling in a closed issue.
194
- 6. The text: it leads with the fact; no verdict on the reviewer, no thanks, apology or offer of help; a reply runs one to three sentences and a body stays under 120 words; no footer, trailer or typographic dash; every sentence is true as literally worded.
195
- 7. Anything else that would embarrass the author in front of this maintainer.
192
+ 4. The form: write the changed block the way the best engineer in this language would, in this repository's own idioms and at the language version its manifest names, then measure the diff against it. Fewer moving parts, no state the loop already carries, no extra pass, no extra allocation, no counter beside a cursor that could be bounded itself. When yours is smaller or clearer, the finding is SHOULD FIX with your version in full; when the diff is already that form, say which alternatives you tried and why each is worse. A maintainer who asks for a rework is a review round you could have spent on the merge.
193
+ 5. Scope: every changed line is needed for what was asked, nothing is unrequested, no comment appears where the surrounding code has none, and documentation, README and CHANGELOG that describe the changed behaviour change with it.
194
+ 6. Prior art: nothing duplicates an open pull request or argues with a ruling in a closed issue.
195
+ 7. The text: it leads with the fact; no verdict on the reviewer, no thanks, apology or offer of help; a reply runs one to three sentences and a body stays under 120 words; no footer, trailer or typographic dash; every sentence is true as literally worded.
196
+ 8. Anything else that would embarrass the author in front of this maintainer.
196
197
 
197
198
  Report
198
199
  EOF
@@ -161,8 +161,11 @@ report it in one line and do not proceed to the next step.
161
161
  that wrote the change: one tier down, Fable to Opus and Opus to Sonnet,
162
162
  and never below Sonnet, so Sonnet's work goes to Opus. Hand the brief to a
163
163
  fresh agent running that model; anything of yours it reads is for it to
164
- attack, not to trust. It writes its report where the brief says, with its
165
- own evidence behind every finding. Every fix it asks for is a new head,
164
+ attack, not to trust. It attacks the form as well as the facts: it writes
165
+ the changed block the way the strongest engineer in that language would,
166
+ and a smaller or clearer version is a finding you fix before filing. It
167
+ writes its report where the brief says, with its own evidence behind
168
+ every finding. Every fix it asks for is a new head,
166
169
  and a new head is reviewed again. When it passes, re-read every claim it
167
170
  did not re-derive itself: a passed review is not a proof. Then
168
171
  `housebroken file owner/repo --title ... --body-file ...`, the only way a
@@ -0,0 +1 @@
1
+ __version__ = "0.6.2"
@@ -1 +0,0 @@
1
- __version__ = "0.6.0"
File without changes