Repository navigation
feat(task-utils): make blocking configurable via plugins.settings.yaml (v0.3.0) - #178
Merged
Merged
Conversation
…settings.yaml Adds per-agent opt-out for all three enforcement points in the task-utils hooks: - `enabled` (master switch, both hooks) - `singleTaskBlocking` (0-or-1 in_progress invariant) - `requireValidationSteps` (validation-steps block requirement) - `requireInProgress` (write-tool gating) All flags default to `true` so existing installs are unaffected. Version bumped 0.2.0 → 0.3.0. Fixes: alex's install had hooks temporarily neutered with `exit 0`; next plugin update would re-enable blocking. This makes disabling opt-in via config instead. Co-Authored-By: Agent Alex Picard <alex-nsheaps[bot]@users.noreply.github.com>
Contributor
Plugin Version StatusVersions are auto-bumped in PRs. Manual bumps to higher versions are preserved.
|
Contributor
There was a problem hiding this comment.
Review: Quality 91% | Security 95% | Simplicity 88%
PR Contents
- Title slightly over 70 chars but clear and descriptive ✓
- Summary excellent — config key table, motivation, example usage ✓
- Test plan covers all 7 paths including PyYAML-absent fallback ✓
Commits
- 2 commits (feature + CI auto-bump) — clean structure ✓
- Conventional commit format ✓
Diff
- 5 files, scope matches PR description exactly ✓
- No unrelated changes ✓
Code
- Logic correct:
enabled: falsebypasses both hooks entirely; individual flags gate their respective enforcement points ✓ - Backward-compatible: all defaults
true, no config section = existing behavior ✓ - Fallback chain (
PYEOF 2>/dev/null || echo "$default") correctly handles PyYAML-absent case ✓ - Config-state logging added to the
allowpath — good observability ✓
Follow-ups (P2 — safe to merge, follow up separately):
- P2
read_config()is duplicated verbatim across both hook files. A sharedhooks/lib/config.shsourced by both would eliminate the duplication. Not blocking — hooks must be independently runnable — but worth tracking. - P2
2>/dev/nullon thepython3YAML call suppresses parse errors. Acceptable here (failure IS expected and handled by the|| echo "$default"fallback), but worth noting for the shared-lib follow-up above where the error path could be logged instead. - P2 No linked issue in the PR body.
No P0 or P1 findings. Ready to merge.
Reviewed manually (automated CI review infra had a pre-existing actions: read permission error unrelated to this PR).
alex-nsheaps Bot
added a commit
that referenced
this pull request
May 28, 2026
…te=done) Retroactively ticket the task-utils PDITID work shipped in PR #178 on 2026-05-26, per Nate Discord 02:30Z directive to GSD-link existing Phase-1 done items. Co-Authored-By: Agent Alex Picard <alex-nsheaps[bot]@users.noreply.github.com>
4 tasks
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.
Summary
task-utils:configuration section support inplugins.settings.yamlfor all three enforcement points in the task-utils hookstrue— existing installs with no config section are unaffected0.2.0→0.3.0New config keys
enabledtruefalsedisables all task-utils hookssingleTaskBlockingtruetask-invariant.shrequireValidationStepstruetask-invariant.sh<validation-steps>block + RESULT() requirementrequireInProgresstruerequire-task-in-progress.shMotivation
Alex's install (task-utils 0.2.0) had both hooks temporarily neutered with an early
exit 0to unblock multi-workstream operation. The next plugin update would re-enable the hardcoded blocking. This change makes the behaviour opt-in via project config instead of requiring source patching.Example usage (disable all blocking for a multi-workstream agent)
Test plan
task-utils:config section → hooks behave as before (blocking enforced)enabled: false→ both hooks pass through immediately (log entryallow-config-disabled)singleTaskBlocking: false→ multiple tasks can be in_progress simultaneouslyrequireValidationSteps: false→ tasks can move to in_progress without<validation-steps>blockrequireInProgress: false→ Write/Edit tools allowed without an in_progress tasktruefor all keys (backward-compatible)read_configfalls back to default via exception handler🤖 Generated with Claude Code