1501 Commits

Author SHA1 Message Date
Affaan Mustafa
4b67c3cac6 docs: close ecc2 rc1 release policy drift 2026-04-29 19:52:09 -04:00
Affaan Mustafa
c3ea7a1e5e
fix: preserve gateguard concurrent state writes (#1623) 2026-04-29 19:31:11 -04:00
Affaan Mustafa
468c755abd test: extend insaits monitor subprocess timeout 2026-04-29 19:25:18 -04:00
Affaan Mustafa
fc96be4924 test: cover skill tracker edge paths 2026-04-29 19:21:03 -04:00
Affaan Mustafa
7ca48f376f test: cover skill dashboard edge paths 2026-04-29 19:15:47 -04:00
Affaan Mustafa
8c7e6611e0 test: cover gateguard edge paths 2026-04-29 19:08:47 -04:00
Affaan Mustafa
b5bdd9352f fix: run pre-bash linters through windows wrappers 2026-04-29 18:59:10 -04:00
Affaan Mustafa
ae02b26cf9 test: cover mcp config merge edges 2026-04-29 18:57:55 -04:00
Affaan Mustafa
cc89c40751 test: cover codex config merge edges 2026-04-29 18:51:56 -04:00
Affaan Mustafa
880c487c0f test: cover state store query edge paths 2026-04-29 18:45:20 -04:00
Affaan Mustafa
45a9bcf295 test: lift harness manifest branch coverage 2026-04-29 18:38:48 -04:00
Affaan Mustafa
ebf0d4322b test: support windows pre-bash linter shims 2026-04-29 18:36:33 -04:00
Affaan Mustafa
015b00b8fc test: stabilize mcp health crash probes 2026-04-29 18:29:02 -04:00
Affaan Mustafa
51511461f6 test: cover pre-bash commit quality edges 2026-04-29 18:28:56 -04:00
Affaan Mustafa
aaaf52fb1e test: cover session adapter edge cases 2026-04-29 18:21:31 -04:00
Affaan Mustafa
33edfd3bb3 test: cover session activity tracker edge paths 2026-04-29 18:15:51 -04:00
Affaan Mustafa
f92dc544c4 test: cover mcp health edge paths 2026-04-29 18:08:45 -04:00
Affaan Mustafa
1c2d5dd389 fix: fail open on insaits monitor errors 2026-04-29 18:03:33 -04:00
Affaan Mustafa
b40de37ccb test: cover install lifecycle edge paths 2026-04-29 17:56:25 -04:00
Affaan Mustafa
63485a26bf fix: support windows insaits python shims 2026-04-29 17:53:07 -04:00
Affaan Mustafa
fe40a3d27b test: cover hook bootstrap and InsAIts monitor 2026-04-29 17:45:22 -04:00
Affaan Mustafa
2c56c9c69f test: relax windows install apply timeout 2026-04-29 17:42:19 -04:00
Affaan Mustafa
d9d52d8b77 test: cover install executor planning 2026-04-29 17:32:37 -04:00
Affaan Mustafa
2eaafc38f6 test(ecc2): normalize release workflow newlines 2026-04-29 17:31:01 -04:00
Affaan Mustafa
c7c7d37f29 Merge remote-tracking branch 'origin/main' into feat/ecc2-rc1-preview-surface 2026-04-28 22:15:34 -04:00
Affaan Mustafa
b6b5b6d08e test: cover CI catalog validator 2026-04-28 22:14:19 -04:00
Affaan Mustafa
f6acf6e19f
Merge pull request #1606 from affaan-m/fix/1598-observer-sigusr1-wait
fix: retry observer wait after SIGUSR1
2026-04-28 22:12:04 -04:00
Affaan Mustafa
46aa301f1d Merge remote-tracking branch 'origin/main' into feat/ecc2-rc1-preview-surface
# Conflicts:
#	docs/fixes/HOOK-FIX-20260421-ADDENDUM.md
2026-04-28 22:11:54 -04:00
Affaan Mustafa
fd95cf6b29 fix: retry observer wait after signal 2026-04-28 22:11:47 -04:00
Affaan Mustafa
83d6bb230d
Merge pull request #1605 from affaan-m/fix/1587-codex-skills-validation
fix: normalize codex skill metadata
2026-04-28 22:11:29 -04:00
Affaan Mustafa
6c8a6bd7c0 docs: remove unicode markers from hook addendum 2026-04-28 22:11:19 -04:00
Affaan Mustafa
d89f8d895d fix: normalize codex skill metadata 2026-04-28 22:10:17 -04:00
Affaan Mustafa
0a87323eda feat(ecc2): finalize rc1 release surface 2026-04-28 22:10:04 -04:00
Affaan Mustafa
5595c074fe
Merge pull request #1555 from affaan-m/fix/install-uninstall-readme-clarity
docs: clarify install and uninstall paths
2026-04-28 22:10:03 -04:00
Affaan Mustafa
530088c77c docs: remove unicode safety violations from hook addendum 2026-04-23 02:14:28 -04:00
Affaan Mustafa
177b8f31da docs: clarify install and uninstall paths 2026-04-23 02:11:29 -04:00
Affaan Mustafa
4e66b2882d
docs: fix plugin quick start for continuous learning v2 (#1546) 2026-04-21 18:41:36 -04:00
suusuu0927
e63241c699
fix(observe): skip Windows AppInstallerPythonRedirector.exe in resolve_python_cmd (#1511)
On Windows 10/11 without Python installed from the Microsoft Store, the
"App Execution Alias" stubs at %LOCALAPPDATA%\Microsoft\WindowsApps\python.exe
and python3.exe are symlinks to AppInstallerPythonRedirector.exe. These
stubs neither launch Python nor honor `-c`; calls print a bare "Python "
line and exit, silently breaking every JSON-parsing step in observe.sh.

Net effect: observations.jsonl is never written, CLV2 appears installed
correctly, and the only residual artifact is `.last-purge`.

This commit:
  1. Adds `_is_windows_app_installer_stub` helper that detects the stub
     via `command -v` output and optional `readlink -f` resolution.
  2. Teaches `resolve_python_cmd` to skip stub candidates and fall
     through to the next real interpreter (typically C:\...\Python3xx\python.exe).
  3. Exports the stub-aware CLV2_PYTHON_CMD before sourcing
     detect-project.sh, which already honors an already-set value,
     so the shared helper does not re-resolve and re-select the stub.

POSIX-compatible. No behavior change on macOS / Linux / WSL where no
such stub exists.

Refs: observations.jsonl empty on Windows Claude Desktop users.
2026-04-21 18:39:06 -04:00
Zhao-Ming Zhong
81bde5c3cd
fix(continuous-learning-v2): accept claude-desktop as valid entrypoint (#1522) 2026-04-21 18:37:23 -04:00
livlign
602894efdd
docs: fix bottom overflow in hero PNG, tighten stats labels (#1535)
The merged hero was being clipped at the bottom by the Puppeteer capture
because the HTML body used flex-centering with 24px padding, shifting the
stage below the viewport top.

- Captures now flush to (0,0) via a min-width 1300px media-query wrapper
  so the in-browser preview keeps its padding but the capture viewport
  does not.
- Shortens bottom-row labels so the stats row no longer overlaps the foot
  line at 1200px:
  Catalog, Harnesses, Rust plane, MIT  /  npm: ecc-universal · AgentShield

No other content changes.

Co-authored-by: livlign <livlign@users.noreply.github.com>
2026-04-21 18:36:59 -04:00
suusuu0927
df9a478ea1
fix(hooks): avoid Claude Code v2.1.116 argv-dup bug in settings.local.json (#1524)
* fix: resolve Claude Code Bash hook "cannot execute binary file" on Windows

Root cause in ~/.claude/settings.local.json (user-global):
1. UTF-8 BOM + CRLF line endings left by patch_settings_cl_v2_simple.ps1
2. Double-wrapped command "\"bash.exe\" \"wrapper.sh\"" broke Windows
   argument splitting on the space in "Program Files", making bash.exe
   try to execute itself as a script.

Fix:
- Rewrite settings.local.json as UTF-8 (no BOM), LF, with the hook command
  pointing directly at observe-wrapper.sh and passing "pre"/"post" as a
  positional arg so HOOK_PHASE is populated correctly in observe.sh.

Docs:
- docs/fixes/HOOK-FIX-20260421.md — full root-cause analysis.
- docs/fixes/apply-hook-fix.sh — idempotent applier script.

* docs: addendum for HOOK-FIX-20260421 (v2.1.116 argv duplication detail)

- Documents Claude Code v2.1.116 argv duplication bug as the underlying
  cause of the bash.exe:bash.exe:cannot execute binary file error
- Records night-session fix variant using explicit `bash <path>` prefix
  (matches hooks.json observer pattern, avoids EFTYPE on Node spawn)
- Keeps morning commit 527c18b intact; both variants are now documented

---------

Co-authored-by: suusuu0927 <sugi.go.go.gm@gmail.com>
2026-04-21 18:35:33 -04:00
Affaan Mustafa
92e0c7e9ff
fix: install native Cursor hook and MCP config (#1543)
* fix: install native cursor hook and MCP config

* fix: avoid false healthy stdio mcp probes
2026-04-21 18:35:21 -04:00
Affaan Mustafa
8c422a76f4
docs: separate plugin install from full manual install (#1544) 2026-04-21 18:28:52 -04:00
Affaan Mustafa
8ae1499122
Merge pull request #1540 from suusuu0927/claude/install-hook-wrapper-argv-dup-fix-20260422
fix(hooks): rewrite install_hook_wrapper.ps1 to avoid argv-dup bug
2026-04-21 18:19:16 -04:00
Affaan Mustafa
c42818f103
Merge pull request #1542 from suusuu0927/claude/patch-settings-simple-fix-20260422
fix(hooks): rewrite patch_settings_cl_v2_simple.ps1 to avoid argv-dup bug
2026-04-21 18:18:47 -04:00
Affaan Mustafa
601c626b03
Merge pull request #1495 from ratorin/fix/session-end-transcript-path-isolation
fix(hooks): isolate session-end.js filename using transcript_path UUID (#1494)
2026-04-21 18:14:23 -04:00
Affaan Mustafa
14f8f66833
Merge pull request #1490 from gaurav0107/fix/1459-remove-agents-manifest-field
fix: remove unsupported `agents` field from plugin.json
2026-04-21 18:14:12 -04:00
Affaan Mustafa
32e3a31c3e
Merge pull request #1539 from suusuu0927/claude/detect-project-locale-fix-20260421
fix: make detect-project.sh locale-independent and handle Windows bac…
2026-04-21 18:13:52 -04:00
Vishnu Pradeep
b27551897d
fix(hooks): wrap SessionStart summary with stale-replay guard (#1536)
The SessionStart hook injects the most recent *-session.tmp as
additionalContext labelled only with 'Previous session summary:'.
After a /compact boundary, the model frequently re-executes stale
slash-skill invocations it finds inside that summary, re-running
ARGUMENTS-bearing skills (e.g. /fw-task-new, /fw-raise-pr) with the
last ARGUMENTS they saw.

Observed on claude-opus-4-7 with ECC v1.9.0 on a firmware project:
after compaction resume, the model spontaneously re-enters the prior
skill with stale ARGUMENTS, duplicating GitHub issues, Notion tasks,
and branches for work that is already merged.

ECC cannot fix Claude Code's skill-state replay across compactions,
but it can stop amplifying it. Wrap the injected summary in an
explicit HISTORICAL REFERENCE ONLY preamble with a STALE-BY-DEFAULT
contract and delimit the block with BEGIN/END markers so the model
treats everything inside as frozen reference material.

Tests: update the two hooks.test.js cases that asserted on the old
'Previous session summary' literal to assert on the new guard
preamble, the STALE-BY-DEFAULT contract, and both delimiters. 219/219
tests pass locally.

Tracked at: #1534
2026-04-21 18:02:19 -04:00
Junming
20041294d9
fix(gateguard): rewrite routineBashMsg to use fact-presentation pattern (#1531)
* fix(gateguard): rewrite routineBashMsg to use fact-presentation pattern

The imperative 'Quote user's instruction verbatim. Then retry.' phrasing
triggers Claude Code's runtime anti-prompt-injection filter, deadlocking
the first Bash call of every session. The sibling gates (edit, write,
destructive) use multi-point fact-list framing that the runtime accepts.

Align routineBashMsg with that pattern to restore the gate's intended
behavior without changing run(), state schema, or any public API.

Closes #1530

* docs(gateguard): sync SKILL.md routine gate spec with new message format

CodeRabbit flagged that skills/gateguard/SKILL.md still described the
pre-fix imperative message. Update the Routine Bash Gate section to
match the numbered fact-list format used by the new routineBashMsg().
2026-04-21 18:02:16 -04:00