Skip to content

refactor(proxy): extract tool injection logging - #2009

Merged
chopratejas merged 4 commits into
mainfrom
jd/architecture-slice-46
Jul 12, 2026
Merged

refactor(proxy): extract tool injection logging#2009
chopratejas merged 4 commits into
mainfrom
jd/architecture-slice-46

Conversation

@JerrettDavis

Copy link
Copy Markdown
Collaborator

Description

Extracts proxy tool-injection decision logging from headroom.proxy.helpers into a focused logging policy module. The public helper function remains in place and delegates to the new module, so existing injection call sites keep their current API while the logging format has direct tests.

Closes #

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Performance improvement
  • Code refactoring (no functional changes)

Changes Made

  • Added headroom.proxy.tool_injection_logging with the shared ToolInjectionDecision type and structured logging helper.
  • Updated helpers.log_tool_injection_decision to delegate to the logging policy module while preserving the existing helper API.
  • Added tests that assert the emitted structured fields and verify tool names/contents are not logged.

Testing

  • Unit tests pass (pytest)
  • Linting passes (ruff check .)
  • Type checking passes (mypy headroom)
  • New tests added for new functionality
  • Manual testing performed

Test Output

python -m pytest tests/test_tool_injection_logging.py tests/test_memory_tool_session_sticky.py tests/test_ccr_tool_always_on.py tests/test_corrupt_golden_bytes_recovery.py tests/test_issue_728_empty_tools_injection.py
60 passed in 0.95s

python -m ruff check .
All checks passed!

python -m ruff format --check .
1069 files already formatted

python -m mypy headroom --ignore-missing-imports
Success: no issues found in 410 source files

gitleaks protect --staged --no-banner --redact
no leaks found

Real Behavior Proof

  • Environment: Windows, Python 3.13.13, clean worktree from headroomlabs/main at d2170b19.
  • Exact command / steps: Ran targeted logging, memory injection, CCR injection, corrupt-byte, and empty-tool regression tests plus ruff, ruff-format, mypy, and staged gitleaks scan.
  • Observed result: All targeted tests and local gates passed; staged secret scan found no leaks.
  • Not tested: Full Docker/native wrapper CI locally; covered by repository CI.

Review Readiness

  • I have performed a self-review
  • This PR is ready for human review

Checklist

  • My code follows the project's style guidelines
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • I have updated the CHANGELOG.md if applicable

Screenshots (if applicable)

N/A.

Additional Notes

Documentation and changelog updates are not applicable for this internal refactor. The push reported existing default-branch Dependabot vulnerabilities; this PR's staged gitleaks scan passed and CI security checks are expected to validate the branch.

@github-actions

Copy link
Copy Markdown
Contributor

PR governance

This PR follows the template and is marked ready for human review.

@github-actions github-actions Bot added the status: ready for review Pull request body is complete and the author marked it ready for human review label Jul 10, 2026
@JerrettDavis
JerrettDavis force-pushed the jd/architecture-slice-46 branch from 4379034 to 1c0e625 Compare July 10, 2026 23:57
@github-actions github-actions Bot added status: ci failing Required or reported CI checks are failing and removed status: ready for review Pull request body is complete and the author marked it ready for human review labels Jul 11, 2026
…-slice-46

# Conflicts:
#	headroom/proxy/helpers.py
@github-actions github-actions Bot added status: ready for review Pull request body is complete and the author marked it ready for human review and removed status: ci failing Required or reported CI checks are failing labels Jul 11, 2026
# Conflicts:
#	headroom/proxy/helpers.py
@chopratejas
chopratejas merged commit 9c7b9d5 into main Jul 12, 2026
11 checks passed
@chopratejas
chopratejas deleted the jd/architecture-slice-46 branch July 12, 2026 16:11
@chopratejas chopratejas mentioned this pull request Jul 12, 2026
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status: ready for review Pull request body is complete and the author marked it ready for human review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants