Skip to content

chore: drop expired release-notes banner; complete the autohands registry - #254

Merged
Jammy2211 merged 1 commit into
mainfrom
feature/hands-hygiene-leftovers
Aug 23, 2026
Merged

chore: drop expired release-notes banner; complete the autohands registry#254
Jammy2211 merged 1 commit into
mainfrom
feature/hands-hygiene-leftovers

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

Closes #249. Both in-scope bullets from the 2026-08-19 release-board census (#239).

The work was committed on 2026-08-20 and has been sitting unshipped since; rebased today onto 90f108f and opened.

1. Expired ANNOUNCEMENT banner → deleted

autohands/generate_release_notes.py carried a banner mechanism that expired 2026-07-24. It has been dead code for a month. Deleted rather than documented — delete the trap.

2. bin/autohands help is now the complete registry

Seven modules existed but were unreachable from the dispatcher: navigator, check_navigator, regenerate_navigator, generate_markdown, validate_env_profiles, check_search_memory, check_dataset_allowlist. #239 fixed the prose in AGENTS.md to call them "workflow-invoked"; this fixes the actual gap.

Each module was decided per-module — CLI verb or deliberately internal — and the outcome is enforced by tests rather than asserted in prose (tests/test_autohands_registry.py):

  • every executable module is either a subcommand or a listed INTERNAL_MODULES entry with a reason;
  • neither list may name a module that no longer exists;
  • every subcommand has a short description, a command and help text;
  • the two lists are disjoint.

So the registry cannot silently drift back out of date, which is how it got here. AGENTS.md now points at bin/autohands help instead of re-listing verbs — one source of truth.

Timely side effect: check_dataset_allowlist becomes a directly invokable verb, so the capped-deletion guard added in #253 is runnable locally rather than only reachable through pre_build.

Out of scope, deliberately

The census's third bullet — ~30 stale remote branches including origin/master and origin/release — is not here. It belongs in a separate /repo_cleanup sweep so a destructive branch delete never rides a code diff.

Verification

bin/autohands help renders the full grouped registry. Suite: 374 passed (main's 370 plus this branch's 4 new registry tests). Tenant-firewall gate OK. Rebase preserved the branch diff byte-for-byte.

🤖 Generated with Claude Code

https://claude.ai/code/session_01F11sMzmaVWfU6NCz1PKVVb

Two hygiene leftovers from the 2026-08-19 release-board census (#239).

The time-boxed ANNOUNCEMENT banner in generate_release_notes.py expired
2026-07-24, so announcement_banner() had returned "" on every call since.
Delete the mechanism rather than document it; the datetime.date import goes
with it. The banner markdown also appears as a literal fixture string in
test_slack_release_notes.py, which imports nothing from the deleted code —
kept as the file's only blockquote -> mrkdwn case, with its comment corrected.

`bin/autohands help` claimed to be "the registry of what is a CLI verb", but
eleven modules in autohands/ had grown __main__ blocks without ever appearing
in it. Nine become real verbs (generate_markdown, regenerate_navigator, the
four workspace guards, slack_release_notes, tombstone, clone_seed), each with
help text stating its actual input contract — they differ: cwd, --root, or a
positional path. The rest are declared in a new INTERNAL_MODULES array with a
one-line reason each, and printed by `autohands help`, so the registry
describes the whole package rather than a subset.

tests/test_autohands_registry.py makes that an enforced invariant: every
executable module is a verb or allowlisted, the allowlist has no ghosts, every
verb carries its SHORT_DESC + cmd_* + help_* trio, and the two lists are
disjoint. Each assertion was negative-tested to confirm it fires.

Refs #249

Co-Authored-By: Claude Opus 5 <[email protected]>
@Jammy2211
Jammy2211 merged commit ce51277 into main Aug 23, 2026
3 checks passed
@Jammy2211
Jammy2211 deleted the feature/hands-hygiene-leftovers branch August 23, 2026 00:03
Jammy2211 added a commit that referenced this pull request Aug 23, 2026
…ntexts (#255)

`autohands check_dataset_allowlist`, newly registered as a CLI verb in #254,
crashed with ModuleNotFoundError when run from a workspace root. The two merges
combined to expose it: #253 added `from autohands.env_config import ...` to this
module, and #254 made it reachable from the dispatcher.

`bin/autohands` (`_python_in_autohands`) runs these tools as scripts with
`autohands/` ITSELF on PYTHONPATH, so siblings are top-level modules — the flat
`from env_config import ...` idiom the other guards here already use. As a
library import (pytest, or anything importing
`autohands.check_dataset_allowlist`) the package's PARENT is on the path and the
flat name does not resolve. Supporting only one form breaks the other, so
`_env_config()` tries flat first and falls back to package-qualified.

Also fixes a quieter instance of the same bug. `_releasing_tokens` wrapped its
import in `except Exception` and returned the hardcoded `{full_datasets,
real_output}` fallback, so under the CLI it swallowed the ImportError and never
consulted ENV_DECLARATION_TOKENS at all — a silent degradation that still
produced a green run, and would have stopped honouring any future releasing
token without failing. The fallback is now a genuine last resort.

Verified in both contexts: the CLI verb runs clean from a workspace root and
still reports the originating defect (exact file, line, resolved path) when that
workspace is reverted to its pre-fix state. Suite 375 passed; firewall gate OK.


Claude-Session: https://claude.ai/code/session_01F11sMzmaVWfU6NCz1PKVVb

Co-authored-by: Jammy2211 <[email protected]>
Co-authored-by: Claude Opus 5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore: drop expired release-notes banner; complete autohands registry

1 participant