Repository navigation
Re/01 gsasii extraction - #1
Merged
Merged
Conversation
…ator Validation exercise per devkit dossiers/multi-engine A22: byte-identical error messages (probe diff empty) and full suite green (492 passed, 3 skipped), matching the v0.1.1 baseline. See devkit dossiers/multi-engine/tasks/require-phase-validation.md. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…/proj Devkit PR review finding (confirmed): the None special-case skipped the existence check, but the original inline checks raise ValueError for phase_name=None and AttributeError for proj=None. Also let sig.bind TypeErrors fall through so native missing-argument messages are preserved. Edge-case probe (phase=None x5 setters, proj=None, missing-args) diff empty vs main; original probe diff empty; full suite 492 passed, 3 skipped. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rbatim)
Pure cut-paste split of the kicker.py monolith (multi-engine refactor,
re/01). Every moved function/class/assignment body is byte-identical;
only module docstrings and import lines are new.
- gateways/gsasii/{helpers,project,setters,executors,extractors}.py:
moved per the re/01 move map. Each module carries kicker.py's import
block verbatim (constraints import pointed at its new home) plus
explicit sibling imports. DEFAULT_* constants -> helpers.py, InstParm
aliases -> project.py (A49).
- constraints.py, gsas_server.py, gsas_client.py relocated unchanged to
gateways/gsasii/{constraints,server,client}.py; explicit re-export
shims at the old paths (gsas_server shim keeps its __main__).
- kicker.py keeps run/validate/load_recipe_asset/is_template_file/
validate_simulation_mode_parameters + CLI and its original import
block, and re-exports every moved name, so existing imports resolve.
- gateways/gsasii/__init__.py imports nothing (GSAS-II stays lazy).
Move fidelity: all 56 top-level nodes + __main__ byte-identical,
banner comments preserved, relocated files identical (devkit probe
re01_move_fidelity.py, source-rev daace24).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
run_refinement now resolves its callees from
powderline.gateways.gsasii.executors (and _extract_phase_reports from
.extractors), so patch("powderline.kicker.<name>") no longer intercepts
them. Retarget those patch strings (pure substitution, 83 targets;
powderline.kicker.G2.G2Project unchanged - it patches the shared module
object) and point test_gsas_server_unit at the real server module so its
PID_FILE/_pid_alive monkeypatches take effect. Maintainer decision A47.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…move The relocated client computed the src dir and the server script path relative to its old location (src/powderline/gsas_client.py), so server autostart would spawn a nonexistent gateways/gsasii/gsas_server.py. Point src_dir at parents[3] (= src/) in client.py and server.py and spawn gateways/gsasii/server.py. Three lines; not GSAS-II project-dict code (outside the A39 freeze) - maintainer decision A48, flagged OTHER for the re/01 review. The old-path gsas_server.py shim keeps __main__, so the gsas-server pixi task and docs are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…dules
_code_hash.json becomes a manifest of MD5s for the frozen GSAS-II code:
gateways/gsasii/{helpers,project,setters,executors,extractors,
constraints}.py (kicker.py is now a facade; server/client are not
hashed). update_code_hash.py regenerates the manifest (drops the
obsolete kicker_hash key, errors if a module is missing);
test_code_hash.py checks the manifest covers exactly those six modules
(independent tripwire list) and each file's hash. constraints.py hash is
unchanged from the pre-move file.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
First branch of the v0.2.0 multi-engine refactor (master plan §5, re/01).
Moves kicker.py's GSAS-II code into
src/powderline/gateways/gsasii/without modifying any moved code. Shims keep every existing import path working.
Commits
3f35c26,daace24—@require_phasecherry-picks of scratche3e91c1+dc2a0d2(A46)ab87cc3— move into helpers/project/setters/executors/extractors; constraints/server/client relocated unchanged; old-path shims + kicker re-exports (A49)1384755— tests: retarget patches of moved internals (A47)6603574— 3-line server/client__file__path fix (A48; the only non-move src edit)c471b19— code-hash tripwire now covers the six gateway modulesVerification
__main__byte-identical; banners preserved;constraints.pyidentical (devkittasks/re01-move-fidelity.md)pixi run gsas-server): LaB6 within regression toleranceexamples/untouched; no engine imports added to core; no frozen-edits ledger entry neededMaintainer line-by-line review: approved 2026-09-29.
🤖 Generated with Claude Code