Skip to content

feat: Oxidizer recipe — automated Python-to-Rust migration workflow#2950

Merged
rysweet merged 2 commits intomainfrom
feature/oxidizer-recipe-clean
Mar 8, 2026
Merged

feat: Oxidizer recipe — automated Python-to-Rust migration workflow#2950
rysweet merged 2 commits intomainfrom
feature/oxidizer-recipe-clean

Conversation

@rysweet
Copy link
Owner

@rysweet rysweet commented Mar 8, 2026

Oxidizer Recipe

Adds the Oxidizer workflow — an automated Python-to-Rust migration recipe with iterative convergence loops, quality audits, and zero-tolerance parity validation.

What's included

  • Recipe: amplifier-bundle/recipes/oxidizer-workflow.yaml — 65 steps across 6 phases with recursive convergence loops
  • Skill: .claude/skills/oxidizer-workflow/SKILL.md — auto-activates on migration-related keywords
  • Docs: docs/OXIDIZER.md — full documentation with phases, context variables, and usage examples
  • mkdocs.yml: Navigation entries for the workflow and skill

Workflow Phases

  1. Analysis — AST analysis, dependency mapping, type inference, public API extraction
  2. Test Completeness Gate — blocks until Python test coverage is sufficient
  3. Scaffolding — cargo init with correct structure
  4. Test Extraction — ports Python tests to Rust
  5. Iterative Convergence — implement → compare → quality audit → degradation check → loop
  6. Final Summary — parity matrix report

Zero-Tolerance Policy

  • 100% parity required — no partial results accepted
  • Silent degradation audit on every iteration
  • Quality gates: clippy + fmt + full test suite
  • Up to 30 iterations with 5 unrolled loops

Closes #2818

@github-actions
Copy link
Contributor

github-actions bot commented Mar 8, 2026

🤖 Auto-fixed version bump

The version in pyproject.toml has been automatically bumped to the next patch version.

If you need a minor or major version bump instead, please update pyproject.toml manually and push the change.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 8, 2026

Repo Guardian - Passed ✅

All files in this PR are legitimate, durable additions to the repository:

  • .claude/context/PROJECT.md — Updated project name (configuration)
  • amplifier-bundle/recipes/oxidizer-workflow.yaml — New reusable recipe workflow (permanent tooling)
  • pyproject.toml — Automated version bump (standard configuration)

No ephemeral content detected.

AI generated by Repo Guardian

@github-actions
Copy link
Contributor

github-actions bot commented Mar 8, 2026

🤖 Auto-fixed version bump

The version in pyproject.toml has been automatically bumped to the next patch version.

If you need a minor or major version bump instead, please update pyproject.toml manually and push the change.

@rysweet rysweet force-pushed the feature/oxidizer-recipe-clean branch from bf3e55c to 126d77e Compare March 8, 2026 03:09
@github-actions
Copy link
Contributor

github-actions bot commented Mar 8, 2026

🤖 Auto-fixed version bump

The version in pyproject.toml has been automatically bumped to the next patch version.

If you need a minor or major version bump instead, please update pyproject.toml manually and push the change.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 8, 2026

Repo Guardian - Passed ✅

All files in this PR are legitimate, durable additions to the repository:

  • amplifier-bundle/recipes/oxidizer-workflow.yaml — New reusable recipe workflow (permanent tooling) for Python-to-Rust migration. Parameterized, documented, and designed for long-term use.
  • pyproject.toml — Automated version bump (standard configuration)

No ephemeral content detected.

AI generated by Repo Guardian

@rysweet rysweet force-pushed the feature/oxidizer-recipe-clean branch from c89a18b to c70ed10 Compare March 8, 2026 03:42
@github-actions
Copy link
Contributor

github-actions bot commented Mar 8, 2026

🤖 Auto-fixed version bump

The version in pyproject.toml has been automatically bumped to the next patch version.

If you need a minor or major version bump instead, please update pyproject.toml manually and push the change.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 8, 2026

Repo Guardian - Passed

All files in this PR are durable reference material:

.claude/skills/oxidizer-workflow/SKILL.md — Reusable skill documentation
amplifier-bundle/recipes/oxidizer-workflow.yaml — Workflow recipe (1131 lines)
docs/OXIDIZER.md — Feature documentation for the Oxidizer workflow
mkdocs.yml — Configuration update to add new docs to navigation
pyproject.toml — Version bump (0.5.116 → 0.5.117)

No ephemeral content detected. All files belong in the repository as permanent tooling and documentation.

AI generated by Repo Guardian

@github-actions
Copy link
Contributor

github-actions bot commented Mar 8, 2026

🤖 Auto-fixed version bump

The version in pyproject.toml has been automatically bumped to the next patch version.

If you need a minor or major version bump instead, please update pyproject.toml manually and push the change.

Adds the oxidizer-workflow recipe, skill definition, and documentation.

- amplifier-bundle/recipes/oxidizer-workflow.yaml: 65-step recipe with
  iterative convergence loops, quality audits, and zero-tolerance parity
- .claude/skills/oxidizer-workflow/SKILL.md: Skill definition with activation
  keywords and usage examples
- docs/OXIDIZER.md: Full documentation covering all phases, context variables,
  and the zero-tolerance policy
- mkdocs.yml: Navigation entries for the workflow and skill

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rysweet rysweet force-pushed the feature/oxidizer-recipe-clean branch from 3c8ee7b to 7de646b Compare March 8, 2026 06:06
@github-actions
Copy link
Contributor

github-actions bot commented Mar 8, 2026

🤖 Auto-fixed version bump

The version in pyproject.toml has been automatically bumped to the next patch version.

If you need a minor or major version bump instead, please update pyproject.toml manually and push the change.

@rysweet rysweet merged commit 69b6e7d into main Mar 8, 2026
1 check passed
@github-actions
Copy link
Contributor

github-actions bot commented Mar 8, 2026

Repo Guardian - Passed ✅

All files in this PR are legitimate, durable additions to the repository:

.claude/skills/oxidizer-workflow/SKILL.md — Reusable skill documentation for automated Python-to-Rust migration workflow. Parameterized, documented, designed for long-term use.

amplifier-bundle/recipes/oxidizer-workflow.yaml — Recipe workflow definition (1131 lines). This is permanent tooling infrastructure with versioning, recursion controls, and iterative convergence logic. Not a one-off script.

docs/OXIDIZER.md — Feature documentation describing the Oxidizer workflow, phases, usage, and API. Standard reference material.

mkdocs.yml — Configuration update adding OXIDIZER.md to the navigation structure. Standard configuration file maintenance.

pyproject.toml — Automated version bump (0.5.116 → 0.5.117). Standard version control.

No ephemeral content detected. All files belong in the repository as permanent tooling, skills, and documentation.

AI generated by Repo Guardian

AI generated by Repo Guardian

@github-actions github-actions bot mentioned this pull request Mar 8, 2026
rysweet added a commit that referenced this pull request Mar 8, 2026
…2950)

* feat: Oxidizer recipe — automated Python-to-Rust migration workflow

Adds the oxidizer-workflow recipe, skill definition, and documentation.

- amplifier-bundle/recipes/oxidizer-workflow.yaml: 65-step recipe with
  iterative convergence loops, quality audits, and zero-tolerance parity
- .claude/skills/oxidizer-workflow/SKILL.md: Skill definition with activation
  keywords and usage examples
- docs/OXIDIZER.md: Full documentation covering all phases, context variables,
  and the zero-tolerance policy
- mkdocs.yml: Navigation entries for the workflow and skill

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
rysweet added a commit that referenced this pull request Mar 8, 2026
* feat: integrate /top5 priority aggregation into pm-architect

Merge top5 priority aggregation directly into pm-architect rather than
as a standalone skill. Adds Pattern 5 (Quick Priority View) and Pattern 6
(Daily Standup) to the orchestrator.

Files added/modified:
- scripts/generate_top5.py: Aggregates priorities across backlog-curator,
  workstream-coordinator, roadmap-strategist, and work-delegator into a
  strict Top 5 ranked list (weights: 35/25/25/15)
- scripts/tests/test_generate_top5.py: 31 unit tests covering extraction,
  aggregation, ranking, tiebreaking, and edge cases
- scripts/tests/conftest.py: Added pm_dir, sample_backlog_items, and
  populated_pm fixtures for top5 testing
- SKILL.md: Added /top5 trigger, Pattern 5 and 6, updated scripts list

Closes milestone 1 of #2932

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

* feat: GitHub-native data sourcing for /top5

Rewrites generate_top5.py to query live GitHub data instead of reading
static .pm/ YAML files. Sources issues and PRs across multiple GitHub
accounts via gh CLI search API.

- Reads .pm/sources.yaml for account/repo configuration
- Fetches open issues and PRs via gh api search/issues
- Scores by: label priority, staleness, comment activity, draft status
- Falls back to .pm/backlog/ for local overrides when GitHub unavailable
- Restores original gh account after multi-account queries
- Weights: issues 40%, PRs 30%, roadmap alignment 20%, local 10%

Tested live: 116 candidates from rysweet + rysweet_microsoft accounts
29 unit tests passing (mocked gh calls + aggregation logic)

Implements Milestone 0 of #2932

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

* fix: address review findings in /top5 implementation

- Remove dead `env` variable and unused comment in run_gh()
- Simplify get_current_gh_account() from fragile stderr parsing to `gh api user --jq`
- Fix lstrip("-* ") bug in extract_roadmap_goals() using removeprefix()
- Rename shadow variable `l` to `lbl` in list comprehensions for readability
- Fix SKILL.md weight documentation to match actual code (40/30/20/10)

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

* [skip ci] chore: Auto-bump patch version

* test: add outside-in agentic test scenarios for /top5 trigger

Five gadugi-agentic-test YAML scenarios covering:
- Smoke test: valid JSON output with expected keys
- GitHub source aggregation: end-to-end with real sources.yaml
- Error handling: malformed YAML, missing dirs, empty sources
- Local overrides: .pm/backlog + roadmap alignment scoring
- Ranking enforcement: top-5 limit, rank fields 1-5, score ordering

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

* feat: enriched /top5 output with score breakdown, actions, near-misses, and repo summary

The previous output was a flat ranked list with no context for decision-making.
Now includes:

- Score breakdown per item (label_priority, staleness, activity components)
- Suggested action per item ("Merge, close, or rebase", "Fix immediately", etc.)
- Near-misses (items #6-#10 that just missed the cut)
- Per-repo summary (issue/PR counts, high-priority counts)
- Per-account summary (total work across repos)
- Full metadata preserved (labels, dates, days_stale, draft status, comments)

40 tests passing (up from 29), covering new features:
- suggest_action logic for all source types
- near_misses return from aggregate_and_rank
- build_repo_summary grouping and counting

Refs #2932

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

* fix: sync skill mirrors and remove ephemeral .pm/ state files

- Sync all new pm-architect files to amplifier-bundle/skills/ and docs/claude/skills/
  (fixes "Check skill/agent drift" CI failure)
- Remove .pm/ ephemeral state files (backlog, workstreams, delegations, config)
  that Repo Guardian correctly flagged as point-in-time state
- Add .pm/ to .gitignore to prevent future accidental commits

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

* [skip ci] chore: Auto-bump patch version

* feat: Oxidizer recipe — automated Python-to-Rust migration workflow (#2950)

* feat: Oxidizer recipe — automated Python-to-Rust migration workflow

Adds the oxidizer-workflow recipe, skill definition, and documentation.

- amplifier-bundle/recipes/oxidizer-workflow.yaml: 65-step recipe with
  iterative convergence loops, quality audits, and zero-tolerance parity
- .claude/skills/oxidizer-workflow/SKILL.md: Skill definition with activation
  keywords and usage examples
- docs/OXIDIZER.md: Full documentation covering all phases, context variables,
  and the zero-tolerance policy
- mkdocs.yml: Navigation entries for the workflow and skill

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* [skip ci] chore: Auto-bump patch version

---------

Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ubuntu <azureuser@devy.yb0a3bvkdghunmsjr4s3fnfhra.phxx.internal.cloudapp.net>
Co-authored-by: Ubuntu <azureuser@devo.xh24nwhiyviedbtbx54dafh01e.dx.internal.cloudapp.net>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.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.

Feature: Oxidizer — Automated Python-to-Rust Migration Workflow

1 participant