Commit Graph
4029 Commits
Author SHA1 Message Date
haelyra 87e8d734a7 fix(opencode): ship audited runtime dependencies 2026-10-25 15:06:01 -04:00
haelyra 90d94d4424 test: fix Windows install and ck hook expectations 2026-10-25 14:46:45 -04:00
haelyra a1e84ca67a fix(opensource): permit only untracked reports at publish gate 2026-10-20 18:53:51 -04:00
haelyra 3ffb0d90af Merge branch 'stewardship/verified-pr-batch-3602-3621-owned' into stewardship/verified-pr-batch-3569-3578-owned 2026-10-20 18:42:12 -04:00
haelyra dd640d14ff ci: refresh registry digest after skill-comply repair 2026-10-20 18:41:45 -04:00
haelyra 6e11d21dd1 Merge branch 'stewardship/verified-pr-batch-3538-3566' into stewardship/verified-pr-batch-3602-3621-owned 2026-10-20 18:41:32 -04:00
haelyra a6db53f835 fix(inspection): normalize diagnostic-looking Windows filenames 2026-10-20 18:41:19 -04:00
haelyra 071e1fea6d fix(integration): address reviewer portability and guidance 2026-10-20 18:40:59 -04:00
haelyra 63daf0e89d fix(skill-comply): send Unicode Claude prompts through stdin 2026-10-20 18:40:59 -04:00
haelyra fcff074e6f Merge branch 'stewardship/verified-pr-batch-3538-3566' into stewardship/verified-pr-batch-3602-3621-owned 2026-10-20 18:28:33 -04:00
haelyra c04d00c15e fix(integration): address review findings in docs and diagnostics 2026-10-20 18:17:37 -04:00
haelyra 90b9fba1a4 fix(opencode): pin Node 18 compatible runtime plugin 2026-10-20 18:17:37 -04:00
haelyra d9ad010b19 ci: refresh digest for ten combined skill fixes 2026-10-20 18:01:48 -04:00
Wen 79d22134e6 fix(opensource-pipeline): drop copied reports from the index even when .gitignore re-includes them
A .gitignore rule outranks .git/info/exclude, so a source project that ships !FORK_REPORT.md made git add -A stage the report. Remove both reports from the index after staging, in the forker's first commit and in every fold-in amend. The history test now runs both documented blocks against a negating .gitignore, prints the Passed/Failed summary for run-all.js, and skips on Windows like the publish-guard test.

(cherry picked from commit f493d9ff66)
2026-10-20 18:01:44 -04:00
Wen feff29fd80 fix(opensource-pipeline): keep pre-existing reports out of the first fork commit
Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit 35909e548e)
2026-10-20 18:01:44 -04:00
Wen 1acdd02fb4 fix(opensource-pipeline): publish only the commit the sanitizer scanned
Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit 21d914fa77)
2026-10-20 18:01:44 -04:00
Wen 3906ba98f3 fix(opensource-pipeline): commit packaging and sanitizer fixes before publishing
The forker makes the only commit before the sanitizer and packager run,
and Step 7 publishes with `gh repo create --source=. --push`, which sends
commits, not the working tree. Packager output (LICENSE, README, CLAUDE.md,
setup.sh) never reached the public repo, and a secret the sanitizer caught
and the agent fixed in the working tree was still pushed in that commit.

- Fold sanitizer fixes and packager output into the single commit with
  `git commit --amend`, keeping FORK_REPORT.md and SANITIZATION_REPORT.md
  out through .git/info/exclude.
- Re-run the sanitizer after packaging (Step 5b) and refuse to push with
  uncommitted changes or more than one commit.
- Sanitizer Step 6 now runs the Step 1 secret patterns and Step 3 home
  path patterns over `git log -p --all`, not only a 4-keyword grep.

Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit fe767e2099)
2026-10-20 18:01:43 -04:00
Wen f933bad11b fix(frontend-slides): ignore CDPATH when resolving input and output paths
Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit 6b53bedc74)
2026-10-20 18:01:43 -04:00
Wen ea8b48860e fix(frontend-slides): make relative PDF output paths absolute before export
The "resolve output to absolute path" step only rebuilt
"$OUTPUT_DIR/$(basename ...)", so ./slides.pdf stayed relative. The
script then cd's into a temp dir, Playwright writes the PDF there, and
the temp dir is deleted. The script prints "PDF exported successfully!"
and then fails on du under set -e, with no PDF produced. This is the
script's own documented example.

Resolve the output directory with cd + pwd, as the input path already
does, and add a stubbed regression test (no network or browser).

Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit f91c14749e)
2026-10-20 18:01:43 -04:00
Wen 59868a9404 fix(ck): escape the skill dir for bash when SessionStart fills it in
Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit 00a03ab84f)
2026-10-20 18:01:42 -04:00
Wen cf3408097c fix(ck): run commands from the skill directory and pass JSON through a heredoc
- SKILL.md invoked every script through ~/.claude/skills/ck, which does
  not exist when ck is installed as part of the ECC plugin, so every
  /ck:* command failed with MODULE_NOT_FOUND. Use ${CLAUDE_SKILL_DIR}
  and tell non-Claude hosts to substitute the skill directory. Scripts
  still run from the project directory, since they use it as the
  project path.
- The documented SessionStart command quoted "~/...", which the shell
  never expands. Use $HOME and explain the plugin-install case.
- /ck:init and /ck:save piped JSON through echo '<json>'. Any apostrophe
  ends the quoted string, and init JSON carries README/package.json
  text. Pass it through a quoted heredoc instead.
- session-start.mjs and shared.mjs resolve SKILL.md next to the code
  (import.meta.url), and the hook expands ${CLAUDE_SKILL_DIR} in the
  text it injects.
- encodeProjectPath only replaced '/', while Claude Code maps every
  non-alphanumeric character to '-'. Memory entries for projects whose
  path has a space or dot went to a directory Claude Code never reads.

Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit c920005c2b)
2026-10-20 18:01:42 -04:00
Wen 2eed06b585 docs(delivery-gate): document that a missing memory directory only warns
With no project memory directory the hook cannot check the learning libraries, so a complex task is warned, not blocked. Say so in the blocking-conditions paragraph and in Limitations, as CodeRabbit pointed out on #3575. Disk checks still apply.

Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit 353cfa2b57)
2026-10-20 18:01:42 -04:00
Wen 6839f58cd3 test(delivery-gate): select an interpreter only if it runs Python 3
Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit fe861f8983)
2026-10-20 18:01:41 -04:00
Wen 936cf3d040 fix(delivery-gate): honor stop_hook_active and match Claude Code project dir encoding
quality-gate.py never read stop_hook_active, so a condition the agent
cannot fix (disk below 15 GB, an unwritable growth-log) blocked every
Stop and kept the session generating turns. Exit 0 when Claude Code
reports that the Stop hook already forced a continuation.

The memory dir lookup only mapped '/', '\' and ':' to '-'. Claude Code
maps every non-alphanumeric character, so for any project path with a
space the memory dir was never found and enforcement silently became
warn-only.

Align SKILL.md with the code: disk thresholds (remind 50 / warn 30 /
block 15), the disk block applies to every session, the learning-lib
rule and its examples, stderr messages, and the hook timeout, which
Claude Code reads in seconds (5000 meant 83 minutes).

Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit a1385c4397)
2026-10-20 18:01:41 -04:00
Wen daa22ec2ea docs(social-publisher): require user approval before socialclaw apply
apply creates real posts, but the workflow went straight from validate
to apply. Require showing every post and getting explicit approval
first. Also note that the CLI only takes the API key as an argument, so
the user should run login themselves instead of the agent.

Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit 93dce707f1)
2026-10-20 18:01:41 -04:00
Wen 73e92ae994 docs(safety-guard): state that the skill is advisory and ships no hook
ECC ships no /safety-guard command, no PreToolUse hook for it and
nothing that writes ~/.claude/safety-guard.log. Describe the modes as
rules the agent follows and point to permission deny rules or hooks for
enforced blocking.

Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit b23d73b182)
2026-10-20 18:01:41 -04:00
Wen 95e6e4e735 docs(django-security): keep the CSRF cookie readable for the AJAX example
The AJAX example reads csrftoken from document.cookie, which fails when
CSRF_COOKIE_HTTPONLY is True. Drop the setting from the production
block (the default is False) and set it to False in the CSRF block, as
the .kiro copy already does there. Also remove SECURE_BROWSER_XSS_FILTER,
which Django 4.0 removed. Updated .kiro and regenerated pi/core.

Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit bdc4407edf)
2026-10-20 18:01:40 -04:00
Wen a492b08126 docs(perl-security): drop nonexistent perlcritic policies
Perl::Critic has no InputOutput::RequireThreeArgOpen or
Modules::RequireTaintChecking policy. perlcritic warns that they are
not installed and ignores them. Two-arg open is already covered by
InputOutput::ProhibitTwoArgOpen in the same profile. Regenerated pi/core.

Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit d70726d79c)
2026-10-20 18:01:40 -04:00
Wen 580acac926 docs(laravel-security): drop the undefined sanitize_html validation rule
sanitize_html is not a built-in Laravel rule and the skill never
registers it, so the validator throws BadMethodCallException. The same
FormRequest already strips tags in validated(). Regenerated pi/core.

Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit 453c0651f7)
2026-10-20 18:01:40 -04:00
Wen c5378bf456 docs(fastapi-patterns): import Depends in the router example
The users router uses Depends() for OAuth2PasswordRequestForm but the
import line omits it, so the module raises NameError on import.
Regenerated pi/core with scripts/build-pi-core.js.

Signed-off-by: Wen <jwcastillo@gmail.com>
(cherry picked from commit d383fb57e9)
2026-10-20 18:01:40 -04:00
haelyra 45a021ea11 test: remove extra trailing blank line from installer coverage 2026-10-20 17:41:33 -04:00
haelyra accdc30c07 ci: refresh registry digest for combined skill changes 2026-10-20 17:41:21 -04:00
Eneko Ruiz 1d20bed37f fix: treat optional-only specs as compliant
(cherry picked from commit ed6799f33c)
2026-10-20 17:41:10 -04:00
Eneko Ruiz e9176a14e3 test: annotate the legacy locale I/O wrapper
(cherry picked from commit c5704c128e)
2026-10-20 17:41:08 -04:00
Eneko Ruiz f78fe3287b test: enforce legacy locales for UTF-8 regressions
(cherry picked from commit b5fa7e7fcf)
2026-10-20 17:41:05 -04:00
Eneko Ruiz 429737572a fix: use UTF-8 throughout skill compliance workflows
RED: seven Unicode regressions reproduced under Windows cp1252 and Linux ASCII with UTF-8 mode disabled. GREEN: Windows 91 passed with 5 platform skips; Linux ASCII 96 passed. Nine offline Unicode cases cover file, temporary YAML, prompt and all four CLI capture boundaries without model calls. Changed functions have 84.7% line coverage, each exceeds 80%; all 13 changed IO sites execute. Pi/catalog parity checks pass.
(cherry picked from commit 642cb0d512)
2026-10-20 17:41:00 -04:00
Eneko Ruiz 99b6a9bb8f fix: reject lossy classifier tool-call indices
RED: 6 failures proved booleans and fractional indices could invent evidence. GREEN: 49 targeted tests; full skill-comply suites pass on Windows (88 passed, 5 platform skips) and Linux (93 passed). Parser coverage 100%; exact integer floats and numeric strings remain supported. Pi/catalog checks pass.
(cherry picked from commit 6dde588860)
2026-10-20 17:40:59 -04:00
Eneko Ruiz 7b7ec11b2a fix: preserve escaped instinct strings through serialization
RED: multiline/control serialization and newline decoding failed; C1/NEL cases exposed malformed or folded YAML. GREEN: 40 targeted tests and 126 complete Linux tests pass; quote/parser coverage 100%/97.4%. Unicode, Windows paths and legacy escapes survive round trips; Pi/catalog checks pass.
(cherry picked from commit 1b1119f409)
2026-10-20 17:40:59 -04:00
Eneko Ruiz 21e0ab5271 fix(session-aliases): reject array-shaped alias maps
(cherry picked from commit b1668579f6)
2026-10-20 17:40:59 -04:00
Eneko Ruiz 0bdb6a52ab fix: validate session alias titles before saving
(cherry picked from commit e4f9aac414)
2026-10-20 17:40:58 -04:00
Alan Vo 67034687f3 Fix CLAUDE_CONFIG_DIR tilde expansion, blank path fallback, and inline WSL resolver parity
(cherry picked from commit 617ab29f8d)
2026-10-20 17:40:58 -04:00
Alan Vo 5701a4f2e1 fix: respect CLAUDE_CONFIG_DIR with WSL Windows-path conversion
(cherry picked from commit aaacbc7592)
2026-10-20 17:40:58 -04:00
Eneko Ruiz f1c6692f99 fix: include the oldest dashboard window boundary
(cherry picked from commit e32d1a4e4d)
2026-10-20 17:40:58 -04:00
Eneko Ruiz 65f7dfb735 fix: reject missing session database and limit values
(cherry picked from commit 299899941d)
2026-10-20 17:40:57 -04:00
Eneko Ruiz 8f72869987 fix: reject negative execution counters
(cherry picked from commit fed9eebed5)
2026-10-20 17:40:57 -04:00
Eneko Ruiz 3ac640f6cc fix: sort missing inspection dates after pre-epoch timestamps
(cherry picked from commit 774dfd6894)
2026-10-20 17:40:57 -04:00
Eneko Ruiz c2a28b2963 fix: order failure pattern timestamps chronologically
(cherry picked from commit 075d55e9cb)
2026-10-20 17:40:57 -04:00
Eneko Ruiz 3a26147843 docs: repair Japanese guide image URLs
(cherry picked from commit 34574239f8)
2026-10-20 17:40:57 -04:00
Eneko Ruiz 014fcae682 docs: repair localized brand voice schema links
(cherry picked from commit fa932aa35e)
2026-10-20 17:40:57 -04:00
Eneko Ruiz 150348a57a docs: repair localized development workflow links
(cherry picked from commit 28289f5b41)
2026-10-20 17:40:56 -04:00