pt-wave-loop

Automates wave-based C/C++ translation campaigns with census-driven target selection and build gates.

Updated May 28, 2026
One-click install
npx skills add https://github.com/HPI-Jimmy-Chiu/HT904_V899 --skill pt-wave-loop-hpi-jimmy-chiu
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: pt-wave-loop
Source: https://github.com/HPI-Jimmy-Chiu/HT904_V899/tree/main/.agents/skills/pt-wave-loop
Command: npx skills add https://github.com/HPI-Jimmy-Chiu/HT904_V899 --skill pt-wave-loop-hpi-jimmy-chiu

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Running a large legacy C/C++ translation campaign (porting a golden codebase to standard C++) requires disciplined wave planning: choosing which files to translate next, verifying builds, and knowing when to stop. Without a policy, agents stall, misquote completion percentages, or ship unlinked code that passes builds but is never called. ## Core Features & Use Cases - Wave Planning Policy: Selects translation targets from census output (largest gaps first), caps each wave at roughly 15k golden lines, and pre-pulls blocking units like cinitial.cpp and uHGemHT9045.cpp. - Two-Tier Acceptance Gates: Zero-behavior-change waves use preprocessed diff comparison plus a single -O3 compile; behavior-change waves require fresh Debug and Release builds with ctest failure-set comparison. - Autonomous Continuation Rules: Defines exactly when to keep going (default), which situations are pre-authorized (test recalibration, agent retry via resumeFromRunId), and the only three real stop conditions (safety-critical changes, form boundary, quota exhaustion). - Cold-Start Recovery: A fixed resume sequence using git log, git status, and the DEVLOG RESUME marker, plus dual ScheduleWakeup and cron heartbeat mechanisms for surviving quota interruptions. - Use Case: You invoke /pt-wave to run the next translation wave on the HT9045 V906 project; the skill runs the census, picks 1-7 units, dispatches append-only translation agents, integrates, gates, commits, logs to DEVLOG, and immediately starts the next wave. ## Quick Start Run the pt-wave-loop skill to plan and execute the next translation wave for the HT9045 V906 campaign starting from the census report.

Frequently Asked Questions about pt-wave-loop

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run the next translation wave in a large C++ porting project?▼

Run the census script to list mirrored-but-incomplete units, pick 1-7 units capped near 15k golden lines prioritizing the largest gaps, then dispatch append-only translation agents. After integration, run the acceptance gate, commit, update the DEVLOG, and immediately start the next wave.

How do I verify a translation wave that makes no behavior changes?▼

Use preprocessed output comparison: run g++ -E with the project's defines on both the HEAD version and the new file, strip line markers and carriage returns, and require every diff line to be blank. Then compile the changed file once with -O3 to rule out Release OOM, plus one Debug build as a regression check.

Why does a green build not prove translated C++ code is actually linked?▼

Static archive members are only extracted when they resolve an undefined symbol, so a file can compile into an archive yet never be linked. Check with nm --undefined-only and nm --defined-only to detect stubs satisfying the symbol first, wrong-archive registration, or static shadowing.

When should an autonomous translation loop stop and wait for a human?▼

Only three conditions justify stopping: safety-critical behavior changes (motor brake, safety interlocks, real machine motion), reaching the form boundary where facade strategy is undecided, or compute quota exhaustion. Everything else, including test recalibration and agent retries, is pre-authorized to continue.

How do I resume an interrupted translation campaign after a crash or quota reset?▼

Run git log to see the last real commit, check git status for uncommitted work in progress, verify no background builds or workflows are still running, then read the RESUME marker at the end of DEVLOG.md. Never trust memory over git log, and never rerun completed waves.

Why does Debug build pass but Release fail on large translated files?▼

Very large single-function files can cause 32-bit cc1plus to run out of memory at -O2 or -O3 while Debug compiles fine. The workaround is pinning that specific source file to -O1 via set_source_files_properties, and always measuring both build types after final integration.