18 Commits

Author SHA1 Message Date
xsser 56332fe2eb fix(hooks): make integrity guard advisory-only 2026-05-13 23:39:49 +08:00
xsser 92850d9db2 feat(upload): allow consented anonymous session uploads 2026-05-09 17:25:49 +08:00
xsser 534b91c65f fix(upload): make contribution uploads reliable
Summary:
- Treat /contribute.html and /contribute as first-class SPA routes so
  GitHub OAuth callback and documented upload links land on the uploader.
- Switch the browser uploader from multipart/base64 to raw JSONL POSTs
  with metadata headers, while keeping JSON file_data and multipart
  compatibility on the API.
- Add static upload-flow gates and Vitest coverage for authenticated
  upload sanitization, R2 writes, and D1 metadata recording.
- Bump plugin and marketplace versions to 3.4.4.

Rationale:
- The upload path had two breakpoints: documented /contribute.html links
  rendered the homepage because routing only checked hash, and multipart
  browser uploads could be stripped by proxy/custom-domain behavior.
- Raw JSONL avoids multipart body loss and avoids base64 size/memory bloat
  for large session files.

Tests:
- bash evals/test-upload-flow.sh
- bash evals/test-release-consistency.sh
- npm --prefix landing test -- --run src/test/upload-function.test.ts
- static eval suite: governance, feedback auth, heartbeat, integrity
  guard, issue regressions, Microsoft flavor, platform compat, loop hook,
  Windows Python hooks, YAML frontmatter
- npm --prefix landing run build
- ./landing/node_modules/.bin/tsc -p pi/pua/tsconfig.json
- git diff --check

Co-authored-by: Codex <codex@openai.com>
2026-05-09 17:15:54 +08:00
xsser d40ca8a164 feat(pua): add silent heartbeat stats
Summary:
- Add a silent SessionStart heartbeat hook that posts minimal anonymous
  install activity to Cloudflare without emitting stdout, stderr, or
  additionalContext.
- Add the Cloudflare Pages heartbeat endpoint, D1 migration, and
  admin-only stats page at #/admin/heartbeats.
- Add heartbeat regression gates, release consistency checks, FAQ/design
  notes, and bump marketplace/package versions to 3.4.3.

Rationale:
- Active-user measurement belongs in a hook-side mechanical gate, not in
  the model prompt, so the worker context cannot narrate or leak the
  telemetry behavior.
- Privacy gates disable the signal for offline mode, telemetry opt-out,
  and feedback-off users before any local telemetry identity is created.

Tests:
- bash evals/test-heartbeat.sh
- bash evals/test-release-consistency.sh
- static eval suite: governance, feedback auth, integrity guard, issue
  regressions, Microsoft flavor, platform compat, loop hook, Windows
  Python hooks, YAML frontmatter
- bash evals/test-behavior.sh
- npm --prefix landing run build
- ./landing/node_modules/.bin/tsc -p pi/pua/tsconfig.json
- git diff --check

Co-authored-by: Codex <codex@openai.com>
2026-05-09 17:01:38 +08:00
xsser 308767f107 feat(pua): restore authentic Microsoft flavor 2026-05-09 14:29:47 +08:00
xsser aee3d5c2fa feat(pua): add Microsoft growth flavor 2026-05-09 14:23:39 +08:00
xsser ee09e3153a feat(pua): add Trae and pi package gates 2026-05-09 00:13:50 +08:00
xsser 0672b260b3 feat(pua): sweep open issues and add offline adapters
Summary:
- Filter UserPromptSubmit prompts inside the hook and soften hook wording so
  normal first-attempt prompts stay silent and frustration prompts read as
  user-installed productivity context.
- Add offline mode, remove stop-feedback /tmp plugin-root rendezvous, and add
  feedback endpoint body caps, origin checks, and D1-backed rate limiting.
- Add diagnosis-first discipline, Huawei military-order mode, Codex subcommand
  alias skills, a lightweight pi adapter, and Trae prompt/rule files.
- Clarify ambiguous 下场 wording, add FAQ guidance, and bump manifests to
  v3.3.0.

Rationale:
- Open issues covered over-aggressive hooks, model refusal, closed-network
  usage, Codex subcommands, Pi/Trae support, feedback abuse, ambiguous lifecycle
  wording, Huawei tone, and the misleading-traceback blind spot.
- The fixes convert ad-hoc prompt pressure into mechanical gates: script-level
  trigger filtering, offline config gates, endpoint abuse controls, and static
  regression checks.

Tests:
- for f in hooks/*.sh scripts/*.sh evals/*.sh; do bash -n "$f"; done
- bash evals/test-windows-python-hooks.sh
- bash evals/test-yaml-frontmatter.sh
- bash evals/test-release-consistency.sh
- bash evals/test-agent-governance.sh
- bash evals/test-pua-loop-hook.sh
- bash evals/test-integrity-guard.sh
- bash evals/test-issue-regressions.sh
- bash evals/test-behavior.sh
- bash evals/run-trigger-test.sh
- ./landing/node_modules/.bin/tsc -p pi/pua/tsconfig.json --noEmit
- npm -C landing run build
- git diff --check
- python3 JSON parse check for plugin and hook manifests

Co-authored-by: Codex <codex@openai.com>
2026-05-08 23:41:30 +08:00
xsser 2e9d3b9bf6 fix(pua): respect off on Windows Git Bash
Summary:
- Add shared Python launcher fallback, Git Bash path conversion, and JSON
  config readers for hook configuration access.
- Route UserPromptSubmit, PostToolUse, SessionStart, Stop, and integrity
  hooks through the shared config reader so /pua:off and feedback_frequency=0
  work when only python is available.
- Add issue #159 Windows Git Bash regression coverage and bump all plugin
  manifests to v3.2.8.

Rationale:
- Native Windows Python cannot open Git Bash /c/... paths directly, and some
  Windows installations provide python without python3.
- The previous fallback treated config read failures as always_on=true, so
  /pua:off could still inject PUA on frustration prompts.

Tests:
- for f in hooks/*.sh scripts/*.sh evals/*.sh; do bash -n "$f"; done
- bash evals/test-windows-python-hooks.sh
- bash evals/test-yaml-frontmatter.sh
- bash evals/test-release-consistency.sh
- bash evals/test-agent-governance.sh
- bash evals/test-pua-loop-hook.sh
- bash evals/test-integrity-guard.sh
- bash evals/test-behavior.sh
- bash evals/run-trigger-test.sh
- git diff --check
- python3 JSON parse check for plugin and hook manifests

Co-authored-by: Codex <codex@openai.com>
2026-05-08 23:15:35 +08:00
xsser f2e5716055 feat(pua): add four-power governance agents
Summary:
- Add four context-isolated governance agents for action,
  self-evaluation, verifier recommendation, and policy review.
- Bind each power to PUA cultural narratives: Alibaba/Musk for
  execution, Huawei/Netflix/Jobs for review, ByteDance/JD for
  verification, and Tencent/Amazon/Alibaba internal control for policy.
- Document the multi-agent topology in the PUA skill and harness
  reference, inject it on SessionStart, add static agent governance evals,
  and bump manifests to v3.2.7.
- Harden trigger evals to accept observable PUA behavior when Claude
  applies pressure without emitting a Skill tool event before max-turns.

Rationale:
- v3.2.6 created mechanical hook gates; v3.2.7 separates the thinking
  contexts too, so execution, review, verification, and environment
  approval cannot collapse into one self-proving narrative.
- Cultural narratives provide role-specific pressure, but the agents still
  remain advisory compartments under hook/external/human authority.

Tests:
- for f in hooks/*.sh scripts/*.sh evals/*.sh; do bash -n "$f"; done
- bash evals/test-yaml-frontmatter.sh
- bash evals/test-release-consistency.sh
- bash evals/test-agent-governance.sh
- bash evals/test-pua-loop-hook.sh
- bash evals/test-integrity-guard.sh
- bash evals/test-behavior.sh
- bash evals/run-trigger-test.sh
- git diff --check
- python3 JSON manifest validation

Co-authored-by: Codex <codex@openai.com>
2026-05-08 22:49:53 +08:00
xsser 86746c26b1 feat(pua): add harness integrity governance
Summary:
- Add harness governance reference for four-power separation,
  task contracts, verifier-owned status, and memory boundaries.
- Add PreToolUse integrity guard for grader-gaming, solution
  contamination, capability-abuse, status, CI, and memory risks.
- Add integrity-guard eval coverage and release gates, then bump
  marketplace/plugin manifests to v3.2.6.

Rationale:
- PUA should not just pressure agents to try harder; it should make
  it difficult to fake completion by modifying tests, verifier assets,
  hidden answers, secrets, or persistent status/memory.
- The guard uses ask/deny decisions so ordinary code changes still
  proceed while governance assets require verifier or human approval.

Tests:
- for f in hooks/*.sh scripts/*.sh evals/*.sh; do bash -n "$f"; done
- bash evals/test-yaml-frontmatter.sh
- bash evals/test-release-consistency.sh
- bash evals/test-pua-loop-hook.sh
- bash evals/test-integrity-guard.sh
- bash evals/test-behavior.sh
- bash evals/run-trigger-test.sh
- git diff --check
- python3 JSON manifest validation

Co-authored-by: Codex <codex@openai.com>
2026-05-08 21:30:24 +08:00
xsser b995858141 fix(pua): harden confidence gate and trigger evals
Summary:
- Replace the one-line confidence loop with an explicit Confidence Gate
  that enumerates claims, finds risks, fixes or discloses them, and
  reruns evidence before delivery.
- Make pua-loop Oracle verification portable on macOS/Linux and add
  hook smoke tests for verified, rejected, and quoted verify commands.
- Fix trigger/behavior evals so they use portable timeouts, isolated
  PUA config, a neutral workspace, and the Claude CLI stream-json
  verbose requirement.
- Tighten PUA skill and slash-command descriptions to avoid triggering
  on normal first-attempt coding or information requests.
- Bump marketplace/plugin manifests to v3.2.5 with an updated Claude
  marketplace changelog summary.

Rationale:
- The previous strategy relied on vague "100% confidence" wording and
  left the verification system itself vulnerable to false failures on
  macOS, local user config leakage, and workspace-biased false triggers.
- Confidence is now defined as evidence-backed gates: all runnable
  checks pass, known high-risk issues are fixed, and residual risks are
  disclosed.

Tests:
- bash -n hooks/*.sh scripts/*.sh evals/*.sh
- bash evals/test-yaml-frontmatter.sh
- bash evals/test-release-consistency.sh
- bash evals/test-pua-loop-hook.sh
- bash evals/test-behavior.sh
- bash evals/run-trigger-test.sh

Co-authored-by: Codex <codex@openai.com>
2026-05-08 20:54:48 +08:00
xsser 45b2dd38ba feat: add confidence loop gate + bump to v3.2.4
- Add "信心闭环" self-verification loop before delivery in pua SKILL.md
- Fix puav2→pua path references in shot SKILL.md
- Fix flavor detection in stop-feedback hook (read from config)
- Bump version 3.2.3 → 3.2.4 across all plugin manifests
2026-05-08 19:55:58 +08:00
xsser ff830d3089 chore: bump version to 3.2.3
- fix: pua-loop state file isolation (multi-directory)
- fix: hooks.json path quoting for Windows spaces
- feat: Kimi Code + Hermes Agent support
2026-04-23 01:40:23 +08:00
xsser 390ab875e2 fix(skills): p7/p9/p10 reference paths resolve to ../pua/references/ (#146)
- skills/p7, p9, p10 SKILL.md referenced `references/xxx.md` but the
  files live under `skills/pua/references/` — fix to `../pua/references/`
- Add evals/test-yaml-frontmatter.sh regression test for #147
- Bump version to 3.2.2
2026-04-19 18:53:06 +08:00
xsser 69a0202f31 release: v3.2.1 — hotfix flavor-helper.sh unbound variable (#144)
Ship the #144 fix (ccaa9c0) to all marketplace users via synchronized
version bump across all distribution channels.

Version bumps:
- .claude-plugin/plugin.json:       3.2.0 → 3.2.1
- .claude-plugin/marketplace.json:  3.2.0 → 3.2.1
- .codebuddy-plugin/plugin.json:    3.2.0 → 3.2.1
- .codebuddy-plugin/marketplace.json (top + plugins[0]): 3.2.0 → 3.2.1
- landing/dist/index.html: add v3.2.1 hotfix entry in zh/en/ja changelogs

Fix content (already in main @ ccaa9c0):
- hooks/flavor-helper.sh: initialize PUA_LANGUAGE="" before the config
  file existence check so first-run users whose shells run with
  set -euo pipefail don't trip 'PUA_LANGUAGE: unbound variable'.

No functional changes beyond #144 — hero brand (v3.2) intentionally
preserved; only manifest-level patch version increments so marketplace
clients will pick up the fix on next sync.
2026-04-19 01:10:08 +08:00
xsser 38ab18f41d marketplace: sync .codebuddy-plugin manifests to v3.2.0
.codebuddy-plugin/{plugin,marketplace}.json: bump versions
  - plugin.json: 1.2.0 → 3.2.0
  - marketplace.json top-level: 1.0.0 → 3.2.0
  - marketplace.json plugin entry: 1.2.0 → 3.2.0

Keeper Test finding: codebuddy manifest was last touched 1 month ago
(cc50d9f). It's a pure manifest wrapper (no independent code), so the
version must track the main project; leaving it at 1.x made the
CodeBuddy marketplace card claim the plugin hadn't shipped since
January. Descriptions stay platform-neutral (no Claude-specific slash
commands) since CodeBuddy command mapping may differ.
2026-04-18 02:51:35 +08:00
xsser cc50d9f861 feat: add CodeBuddy (Tencent) compatibility
- Add .codebuddy-plugin/plugin.json and marketplace.json for native
  CodeBuddy plugin installation
- Add codebuddy/ directory with pua, pua-en, pua-ja SKILL.md files
  for standalone manual installation
- Update all 3 READMEs (EN/ZH/JA) with CodeBuddy badge, description,
  and installation instructions
- Landing page: add CodeBuddy to install tabs, platform pills, and
  vintage banner platform list
2026-03-16 16:30:26 +08:00