feat: add interactive profile design wizard#40
Conversation
|
Thanks @leo-guinan for the contribution. I am starting a maintainer review for this PR now. Selection note: this is the PR I am reviewing for you as a first-time contributor candidate on Verification so far: I ran Bounty metadata: This closes a bounty issue, so please add a Solana wallet address to the PR body before payout review. |
|
Review note for
Suggested change: def write_params(path: Path, params: dict, *, force: bool = False) -> None:
if path.exists() and not force:
raise SystemExit(f"Refusing to overwrite {path}. Re-run with --force or choose --output.")
path.write_text(yaml.safe_dump(params, sort_keys=False), encoding="utf-8") |
|
Review note for
Suggested change: def load_yaml(path: Path) -> dict:
if not path.exists():
raise FileNotFoundError(f"Wizard config not found: {path}")
data = yaml.safe_load(path.read_text(encoding="utf-8"))
if not isinstance(data, dict):
raise ValueError(f"Wizard config must be a YAML mapping: {path}")
return data |
|
Review note for The generated params use Suggested assertion: params = build_params(engineer, None)
self.assertEqual(params["model_provider"], "openrouter")
self.assertIn("/", params["model_default"]) |
|
Review note for This fixture is a symlink-style text file rather than a real fixture directory in the diff. That can be brittle on platforms and makes the tests depend on production templates. Please copy minimal fixture YAML into Suggested layout: |
|
Review note for Please add a non-interactive smoke test that writes to a temporary output path and then runs |
|
Thanks again for the work here. I will be happy to accept this PR once the requested updates above are addressed, the branch is kept scoped to #13, and the verification commands in the PR body are refreshed after the changes. If this is a bounty PR, please make sure the Solana wallet address is present and not a placeholder before payout review. |
985106e to
a60d358
Compare
- Add --force flag to overwrite existing output safely - Fail loudly in load_yaml for missing/invalid config files - Add model compatibility test for generator mapping - Add end-to-end smoke test: wizard -> generate_profile.py -> validated profile - Replace symlink with copied fixture files in tests/fixtures/wizard/
a60d358 to
5fc15a5
Compare
|
Thanks @leo-guinan. I integrated the relevant parts of this contribution into #53 and merged it to You were included as a Wallet metadata was captured from your PR body for payout review. I am closing this PR as superseded by the merged maintainer integration to keep at most one accepted path per first-time contributor and avoid duplicate implementations for the same issues. |
|
Superseded by merged maintainer integration #53 with co-author credit. |
|
Paid. Thank you for the contribution. Wallet: FFAdvcr2CUPbaQSypK3c8WfQo3SuyBh5YKrtzZRSvg34 |
Implements #13 with class selection, companion bundles, and generated profile.params.yaml. Includes tests/ and docs.
Changes based on maintainer review
--forceflag to overwrite existing output safelyload_yamlnow fails loudly on missing config filesconfig.yamlgenerate_profile.py→ validated profiletests/fixtures/wizard/to remove symlink dependencyVerification
python3 -m unittest tests.test_profile_wizard -v— 6/6 passedmake validate— passedmake generate-smoke— passedmake release-check— passed for version 0.7.0Bounty payout address
Solana:
FFAdvcr2CUPbaQSypK3c8WfQo3SuyBh5YKrtzZRSvg34Closes #13.