Submit geo_run
Treat original sprocess W-2024.09-SP1 behavior as the only authority. Never infer a conflict resolution or recovered behavior when the binary can answer it.
Start
- Work in
/home/mozztcad/geo3d unless the user names another geo_run worktree.
- Read
references/checklist.md completely before changing Git state, committing, or pushing.
- Read the repository
CLAUDE.md and its current handoff pointers.
- Inspect the branch, remotes, worktrees, status, untracked files, and existing user changes. Preserve unrelated changes.
- Do not commit or push merely because this skill was invoked. Do so only when the user requested that action.
Establish the binary ground truth
When source behavior, conflict intent, object layout, ownership, call order, or output semantics are uncertain, stop guessing and probe the original binary. Use the smallest useful combination of:
nm, readelf, objdump, strings, and c++filt
- GDB and GDB Python
- Frida attach, hook, replacement, call counters, ordering, arguments, and memory snapshots
- IDA and IDA Python
h5dump, h5diff, and h5ls
- TDR/HDF5 field, topology, tag, geometry, and digest comparisons
Store temporary evidence only under geo3d/temp/. Record the command, target binary/deck, observed calls or bytes, and conclusion. Prefer reproducible probes; remove one-off traces and large outputs before submission.
Synchronize with main safely
- Capture
git status --short, the current branch, git diff, staged diff, and untracked paths before synchronization.
- Run
git fetch origin and git rebase origin/main.
- If uncommitted changes prevent rebase, preserve tracked and untracked work with an explicitly named temporary stash, rebase, then restore it. Never drop the stash until restoration is verified. Stop on conflicts.
- Resolve each conflict semantically. If the correct side is unclear, obtain binary evidence first.
- Never discard unrelated work with reset, checkout, clean, or broad deletion.
- After rebase run:
git status
git diff --check
git diff origin/main...
Enforce source placement and identity
- Add no code under
src/standalone/; it is being retired.
- Put newly recovered source under the matching
src/abi/<namespace>/... path.
- Use the original binary namespace, class, function, signature, and main call relationships.
- Do not create convenience wrappers, substitute classes, parallel implementations, or standalone bypasses unrelated to the binary.
- Move in-scope legacy logic from standalone toward ABI instead of extending standalone.
- Keep scope to TDR_VERSION=16/HDF5. Do not add or modify Ogawa/TDR17 writer behavior.
Reject counterfeit recovery
Do not accept or submit any of the following:
- Collection-to-Collection passthrough
- copied benchmark output
- topology, region, dataset, tag, or value hardcoding for one deck
- silent skipping of unsupported datasets, geometry types, or parameters
- standalone shortcuts around the original call chain
- runtime launch of
sprocess
- dynamic calls into proprietary
sprocess functions or proprietary TDR libraries
- empty or no-op implementations that make a reached path appear successful
Reached deck paths must reproduce the important binary entry points, namespaces/classes, call order, object lifetime, argument semantics, ownership, error behavior, and output. Unreached logic may remain unrecovered only when explicitly marked and documented.
Review infrastructure and artifacts
Avoid changes to CMake, build scripts, global compile/link flags, optimization, environment, shared test infrastructure, and benchmarks. If an infrastructure change is unavoidable, require binary evidence and document why recovery code alone cannot solve it, affected targets/tests, and ABI impact.
Remove temporary GDB/Frida/HDF5/binary-tool output, core dumps, build products, large traces, benchmark copies, and unmaintainable scripts. Keep reusable probes only when stable, documented, rerunnable, and free of benchmark-specific hardcoding. Confirm geo3d/temp/ is ignored.
Run the mandatory validation gate
Treat all eight numbered commands in the project checklist as mandatory, in this exact order, beginning with a clean Release build. Do not reuse an old build or run only affected tests.
~/.codex/skills/submit-georun/scripts/run_validation_suite.sh /home/mozztcad/geo3d
The runner stores logs and exit statuses under geo3d/temp/submit-georun/<UTC timestamp>/. On the first failure, stop submission, diagnose the cause, compare against the original binary when relevant, fix the implementation, and restart the entire sequence from the clean Release build. Never loosen comparisons, skip cases, swallow errors, or modify benchmarks to manufacture a pass.
Final review
Before declaring ready, inspect all of the following:
git diff --check
git status --short
git diff --stat
git diff origin/main...
git diff --name-status origin/main...
Also verify:
- no newly added code under standalone;
- new files are in the correct ABI namespace path;
- no native
sprocess calls, passthroughs, benchmark fallbacks, or silent skips exist;
- new errors include HDF5 path, dataset/geometry type, and failure stage where applicable;
- recovered call chains match recorded original-binary evidence;
- no unintended build-script, benchmark, generated-file, TDR17/Ogawa, or unrelated-module changes exist;
- all eight validation statuses are zero and their concise results are retained;
- any TDR file intended for commit has explicit user confirmation, per repository policy.
Report the branch/rebase result, binary evidence used, meaningful diff scope, eight validation statuses, artifact cleanup, remaining unrecovered paths, and blockers. Commit or push only after every gate passes and only with user authorization.
1---2name: submit-georun3description: Pre-commit and pre-push validation workflow for the geo_run restoration project. Use when Codex is asked to prepare, review, commit, rebase, submit, or push changes in /home/mozztcad/geo3d; verify recovered code against the original SProcess binary; run the required clean Release validation suite; or decide whether geo_run changes are safe to integrate.4---56# Submit geo_run78Treat original `sprocess` W-2024.09-SP1 behavior as the only authority. Never infer a conflict resolution or recovered behavior when the binary can answer it.910## Start11121. Work in `/home/mozztcad/geo3d` unless the user names another geo_run worktree.132. Read `references/checklist.md` completely before changing Git state, committing, or pushing.143. Read the repository `CLAUDE.md` and its current handoff pointers.154. Inspect the branch, remotes, worktrees, status, untracked files, and existing user changes. Preserve unrelated changes.165. Do not commit or push merely because this skill was invoked. Do so only when the user requested that action.1718## Establish the binary ground truth1920When source behavior, conflict intent, object layout, ownership, call order, or output semantics are uncertain, stop guessing and probe the original binary. Use the smallest useful combination of:2122- `nm`, `readelf`, `objdump`, `strings`, and `c++filt`23- GDB and GDB Python24- Frida attach, hook, replacement, call counters, ordering, arguments, and memory snapshots25- IDA and IDA Python26- `h5dump`, `h5diff`, and `h5ls`27- TDR/HDF5 field, topology, tag, geometry, and digest comparisons2829Store temporary evidence only under `geo3d/temp/`. Record the command, target binary/deck, observed calls or bytes, and conclusion. Prefer reproducible probes; remove one-off traces and large outputs before submission.3031## Synchronize with main safely32331. Capture `git status --short`, the current branch, `git diff`, staged diff, and untracked paths before synchronization.342. Run `git fetch origin` and `git rebase origin/main`.353. If uncommitted changes prevent rebase, preserve tracked and untracked work with an explicitly named temporary stash, rebase, then restore it. Never drop the stash until restoration is verified. Stop on conflicts.364. Resolve each conflict semantically. If the correct side is unclear, obtain binary evidence first.375. Never discard unrelated work with reset, checkout, clean, or broad deletion.386. After rebase run:3940```bash41git status42git diff --check43git diff origin/main...44```4546## Enforce source placement and identity4748- Add no code under `src/standalone/`; it is being retired.49- Put newly recovered source under the matching `src/abi/<namespace>/...` path.50- Use the original binary namespace, class, function, signature, and main call relationships.51- Do not create convenience wrappers, substitute classes, parallel implementations, or standalone bypasses unrelated to the binary.52- Move in-scope legacy logic from standalone toward ABI instead of extending standalone.53- Keep scope to TDR_VERSION=16/HDF5. Do not add or modify Ogawa/TDR17 writer behavior.5455## Reject counterfeit recovery5657Do not accept or submit any of the following:5859- Collection-to-Collection passthrough60- copied benchmark output61- topology, region, dataset, tag, or value hardcoding for one deck62- silent skipping of unsupported datasets, geometry types, or parameters63- standalone shortcuts around the original call chain64- runtime launch of `sprocess`65- dynamic calls into proprietary `sprocess` functions or proprietary TDR libraries66- empty or no-op implementations that make a reached path appear successful6768Reached deck paths must reproduce the important binary entry points, namespaces/classes, call order, object lifetime, argument semantics, ownership, error behavior, and output. Unreached logic may remain unrecovered only when explicitly marked and documented.6970## Review infrastructure and artifacts7172Avoid changes to CMake, build scripts, global compile/link flags, optimization, environment, shared test infrastructure, and benchmarks. If an infrastructure change is unavoidable, require binary evidence and document why recovery code alone cannot solve it, affected targets/tests, and ABI impact.7374Remove temporary GDB/Frida/HDF5/binary-tool output, core dumps, build products, large traces, benchmark copies, and unmaintainable scripts. Keep reusable probes only when stable, documented, rerunnable, and free of benchmark-specific hardcoding. Confirm `geo3d/temp/` is ignored.7576## Run the mandatory validation gate7778Treat all eight numbered commands in the project checklist as mandatory, in this exact order, beginning with a clean Release build. Do not reuse an old build or run only affected tests.7980```bash81~/.codex/skills/submit-georun/scripts/run_validation_suite.sh /home/mozztcad/geo3d82```8384The runner stores logs and exit statuses under `geo3d/temp/submit-georun/<UTC timestamp>/`. On the first failure, stop submission, diagnose the cause, compare against the original binary when relevant, fix the implementation, and restart the entire sequence from the clean Release build. Never loosen comparisons, skip cases, swallow errors, or modify benchmarks to manufacture a pass.8586## Final review8788Before declaring ready, inspect all of the following:8990```bash91git diff --check92git status --short93git diff --stat94git diff origin/main...95git diff --name-status origin/main...96```9798Also verify:99100- no newly added code under standalone;101- new files are in the correct ABI namespace path;102- no native `sprocess` calls, passthroughs, benchmark fallbacks, or silent skips exist;103- new errors include HDF5 path, dataset/geometry type, and failure stage where applicable;104- recovered call chains match recorded original-binary evidence;105- no unintended build-script, benchmark, generated-file, TDR17/Ogawa, or unrelated-module changes exist;106- all eight validation statuses are zero and their concise results are retained;107- any TDR file intended for commit has explicit user confirmation, per repository policy.108109Report the branch/rebase result, binary evidence used, meaningful diff scope, eight validation statuses, artifact cleanup, remaining unrecovered paths, and blockers. Commit or push only after every gate passes and only with user authorization.