Prepare a complete GitHub Release from an explicitly pushed version tag.
Validate the tag against plugin metadata, preserve the full version's
changelog including known model failures, and pin document links to the tag.
Upload the three portable skill archives and their checksum manifest.
Use verified commit-pinned Node 24 release actions, reject missing assets,
and avoid overwriting existing release files or persisting Git credentials.
The reviewed skill content and flavor hashes remain unchanged.
Validation:
- All 18 offline suites passed, including 6 release preparation tests
- Stable-tag, metadata, duplicate/missing section and local-link checks
- Reproducible package builds and tested skill hashes unchanged
- Workflow YAML, staged whitespace and credential-pattern checks passed
Co-authored-by: Codex <codex@openai.com>
Retain original skill rhetoric and the frozen flavor library while adding
portable Claude Code, Codex and ChatGPT runtime contracts and packages.
Correct hook event handling, scoped numeric checkpoints, flavor locks,
plugin path resolution, advisory integrity checks and voluntary feedback.
Add native-loading and ordered-evidence runners for cc0, OMP and Codex.
Document paired model results, refusals, approval/rate-limit failures,
explanatory factual errors and remaining evidence gaps without an all-model
pass claim. Exclude private execution archives from public Git content.
Bump all six PUA manifests including Pi, refresh three-language READMEs,
and add release notes plus reproducible offline validation instructions.
Resolve optional OMP source metadata relative to the current user's home.
Validation:
- 17 offline suites passed, including 13 OMP evidence regressions
- Six manifest versions synchronized; all tested skill hashes unchanged
- Three portable packages rebuilt reproducibly; original tone checks pass
- Python, Bash and JSON syntax; public doc links; staged diff checks pass
- 330 private archive files verified unchanged and excluded from staging
Real-model results remain limited: this is not universal behavior acceptance.
Co-authored-by: Codex <codex@openai.com>
State file was written to a single global path (~/.claude/pua/loop-active.md),
causing two Claude Code instances in different directories to overwrite each
other's loop state. Now uses cwd hash in filename (loop-<hash>.md) so each
project directory has an independent loop instance.
Fixes: multiple users reporting task A executing task B's commands when
running pua-loop in two directories simultaneously.
## Issue #97 — Hooks fire without user consent
- PreCompact hook now checks for PUA activation markers before writing files
- Stop feedback hook skips if PUA was never triggered this session
## Issue #98 — Session sanitization incomplete
- Sanitize script upgraded; rate limiting migration added (0003_feedback_rate_limiting.sql)
## Issue #99 — PUA Loop no in-session escape
- Default max iterations changed from unlimited to 30
- Added <loop-abort> (terminate) and <loop-pause> (pause for manual intervention) signals
- Loop hook supports active:false for pause state; session self-binding on resume
- Added /cancel-pua-loop command; guide.html and README updated
- PUA pressure escalation injected per iteration via system message
## Issue #100 — Upload endpoint undisclosed PII
- Privacy/data-usage disclosure added to contribute.html (ZH+EN bilingual)
- Contribute.tsx updated with same disclosure
## Additional fixes
- Rename commands/loop.md → commands/pua-loop.md; add cancel-pua-loop.md
- Replace "Ralph Loop × PUA" with "PUA Loop" across all user-facing docs
- Fix nav active-state highlighting on all sub-pages
- Fix logout button (GET method); redirect to /contribute.html
- Add JA language support to leaderboard.html
- Add "how to find session file" guide to contribute.html
- Unify nav-r gap (1rem) across all pages
Closes#97Closes#98Closes#99Closes#100