fix: silence stray CI/tool noise, fix real --silent leak in agents-vault/agents-init #166
No Reviewers
Labels
Clear labels
Area/CI
Area/Completions
Area/Components
Area/Config
Area/Docs
Area/Functions
Area/Integrations
Area/Prompt & Theme
Area/Scripts
Area/Tests
Compat/Breaking
Kind/Bug
Kind/Chore
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Refactor
Kind/Security
Kind/Testing
good first issue
help wanted
.github/workflows and repository automation
completions/ - tab-completion scripts
The opinionated-component system (C1-C6)
config.fish and conf.d/ - startup and environment
docs/manual/ and the generated manual, man page, and site
functions/ - user-facing functions and helpers
integrations/ - third-party tool wiring
themes/ and prompt appearance
scripts/ - standalone helper scripts
tests/ - the syntax lint and functional suite
Breaking change that won't be backward compatible
Something is not working
Tooling, dependencies, and housekeeping
Documentation changes
Improve existing functionality
New functionality
Makes existing behavior faster or lighter
Restructures code without changing behavior
This is security issue
Issue or pull request related to testing
Well-scoped and self-contained; a good place to start
Maintainer is looking for someone to pick this up
Priority
Critical
1
The priority is critical
Priority
High
2
The priority is high
Priority
Medium
3
The priority is medium
Priority
Low
4
The priority is low
Reviewed
Confirmed
1
Issue has been confirmed
Reviewed
Duplicate
2
This issue or pull request already exists
Reviewed
Invalid
3
Invalid issue
Reviewed
Won't Fix
3
This issue won't be fixed
Status
Blocked
1
Something is blocking this issue or pull request
Status
Need More Info
2
Feedback is required to reproduce issue or to continue work
Status
Abandoned
3
Somebody has started to work on this but abandoned work
Milestone
No items
No Milestone
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: rootiest/fish-config#166
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Follow-up to the mkrep git-init hint fix (#165): asked agy to scan a full green run's
testandbuild-docsjob logs for any remaining stray output that isn't the harness's own PASS/FAIL/section output. Found 15 items (spot-checked 5 directly against the raw logs, all matched). This PR fixes what's fixable in this repo.What / Why
Real bug, not just log noise:
agents-vault.fishandagents-init.fishboth doset -l x (some_helper ...)to capture a helper function's stdout message. Fish command substitutions don't inherit a caller-scoped stderr redirect — proven with a 2-line repro (outer 2>/dev/nullwhereouterdoesset -l x (inner)still leaksinner's stderr to the real terminal). This meant_agents_repo_ensure_symlink's and_agents_repo_sync's raw internal error messages leaked past--silentfor real users too, always duplicating the clean summary message the caller already echoes on failure. Fixed at all 4 call sites with an explicit2>/dev/nulldirectly on the command substitution — a redirect on the outer call can't reach it.CI cosmetics (
.github/workflows/ci.yml):NODE_OPTIONS: --no-deprecationat thebuild-docsjob level — silences Node's internal punycode-module deprecation notice (astro's toolchain still pulls it in transitively).npm ci --no-funddrops the funding nag.gpg --batch --quiet --importdrops gpg's normal-case import status lines during the bot commit-signing setup.apt-utilsis now installed alongside the other early packages so debconf has something configured for later triggers. Its own "delaying package configuration" notice on its first install is not eliminated by this and is documented as accepted, not fixed — see below.Deliberately NOT touched, all live-verified before giving up on them:
globwarning, its audit vulnerability summary, and its allow-scripts notice about esbuild's postinstall — genuine dependency-hygiene signal, not noise. No flag hides these without also hiding real future findings.'runs-on' key not defined in CI/test) — traces to neither workflow YAML in this repo (both already setruns-onon every job, confirmed twice). Runner-internal, same class asactions/checkout's own git-init hint in its Checkout-step preamble.Verification
fish tests/run-tests.fish— 730/730,$status0rc=1, stderr empty (previously leaked)test-agents-vault.fishstandalone — 320/320, zero occurrences of the previously-leaked messagespython3 -c "import yaml; yaml.safe_load(...)"onci.ymlfish -non both touched.fishfilesManual verification checklist
build-docsjob log for this branch shows no punycode/npm-fund/gpg-import lines (debconf's apt-utils line is expected and fine)agents-vault/agents-initlink failure locally and confirm only the clean summary message prints, not the raw duplicateAn audit of a full green run's test + build-docs logs (agy scan, spot- checked) turned up stray output beyond the mkrep git-init hint already fixed. Two real bugs, plus CI-config cosmetics: - agents-vault.fish/agents-init.fish: `set -l x (some_fish_function ...)` command substitutions do not inherit a caller-scoped stderr redirect in fish (proven with a two-line repro: `outer 2>/dev/null` where outer does `set -l x (inner)` still leaks inner's stderr to the real terminal). This let _agents_repo_ensure_symlink's and _agents_repo_sync's raw internal error messages leak past `--silent` for real users too, always duplicating the clean summary message each caller already echoes on failure. Fixed at all 4 call sites by adding an explicit `2>/dev/null` directly on each command substitution, since a redirect on the outer call cannot reach it. - ci.yml: apt-get install missing `apt-utils`, so debconf printed "delaying package configuration" on every install in both jobs -- installing it first fixes the chicken-and-egg. - ci.yml: added `NODE_OPTIONS: --no-deprecation` at the build-docs job level to silence Node's internal punycode-module deprecation notice (astro's toolchain still pulls it in transitively). - ci.yml: `npm ci --no-fund` drops the funding nag. - ci.yml: `gpg --batch --quiet --import` drops gpg's normal-case import status lines during the bot commit-signing setup. Deliberately NOT silenced: npm's deprecated-glob warning, its audit vulnerability summary, and its allow-scripts notice about esbuild's postinstall -- these are genuine dependency-hygiene signal, not noise, and no workflow-level flag exists to hide them without also hiding real future findings. Also not fixable here: a Gitea Actions/act runner warning ('runs-on' key not defined in CI/test) that traces to neither workflow YAML in this repo -- both already set runs-on on every job, confirmed twice; it's runner-internal, like actions/checkout's own git-init hint in its Checkout-step preamble. Verified: full suite 730/730 passing ($status 0); the exact mkdir- collision repro that surfaced the command-substitution bug re-run clean (rc=1, empty stderr); test-agents-vault.fish standalone, 320/320, zero occurrences of the previously-leaked messages.