Skip to content

Reverse engineering#4

Open
jackstine wants to merge 20 commits into
mainfrom
reverse_engineering
Open

Reverse engineering#4
jackstine wants to merge 20 commits into
mainfrom
reverse_engineering

Conversation

@jackstine
Copy link
Copy Markdown
Owner

No description provided.

jackstine and others added 20 commits April 4, 2026 15:18
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- factory.py: build_session() constructs ClaudeAgentOptions and assembled prompt
- Uses setting_sources=["user"] to enforce READ_CLAUDE_MD=False (SDK workaround)
- Interpolates all entry fields and drafter sub-agent config into prompt
- Raises FileNotFoundError for missing domain root or update target
- Raises ValueError for unresolvable prompt placeholders
- .gitignore: add Python __pycache__, .pyc, .venv, dist patterns

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- runner.py: async execute() dispatcher + four mode runners
- single_shot: parallel asyncio.gather with one prompt per session
- self_refine: initial + N review follow-ups with round context per session
- multi_pass: P full passes, create→update after first pass
- peer_review: initial + N peer review follow-ups with reviewer config
- _run_entry catches exceptions → failure result, other sessions continue
- dispatch table built at call-time in execute() so tests can patch runners
- test_runner.py: 5 functional + 2 edge_case, mocked at _run_entry level

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The version var lived in package cmd but GoReleaser ldflags targeted
main.version, so released builds always showed v0.0.1. Move version,
commit, and date to a shared buildinfo package importable by both cmd
and state. Also add extra_files for the Python release tarball.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Create __main__.py and add [project.scripts] entry point so the
reverse-engineer package can be invoked as a module by the Go binary's
venv Python instead of as a bare script.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New pyenv.go provides ResolvePythonEnv (locates versioned venv Python),
cleanEnv (strips host Python vars from subprocess environment),
verifyChecksums (SHA-256 integrity check of installed Python files),
and FORGECTL_PYTHON_PROJECT dev-mode override. Includes 7 tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pyRunner now resolves the versioned venv Python via ResolvePythonEnv,
invokes python -m reverse_engineer instead of a bare script, and strips
host Python env vars via cleanEnv. Exit code 2 from Python signals an
environment error (hard failure) vs exit code 1 (retryable script error).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Makefile: install-python copies Python project to versioned dir,
  runs uv sync, generates checksums; install-global does both
- install-forgectl.sh: standalone installer for GitHub release users
- package-python.sh: creates release tarball for GoReleaser
- release.yml: adds uv install + Python packaging steps
- Dockerfile.install-test: proves install works on clean Debian
- dev-docs/environment_variables.md: documents FORGECTL_PYTHON_PROJECT

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.

1 participant