Commit Graph
3059 Commits
Author SHA1 Message Date
montjeffrey bdb2ceb230 fix(carriers): follow Node's CommonJS candidates, see regex after a block, ignore non-import from
- An extensionless require now tries only the path, .js, .json, and a
  directory's index.js/index.json, as Node does; .cjs and .mjs must be
  named, so require('./helper') no longer passes on helper.cjs alone.
- Treat `}` as a statement boundary, so a regex after a block is read as
  a regex and cannot swallow a later require.
- Decide whether a paren opens a condition from the token before the
  keyword, ignoring whitespace, so `obj.\nif(x) / 2` and
  `obj?. while(x) / 2` stay method calls followed by division.
- Record which slots came from template literals and skip them for
  static `from` and side-effect `import`, which accept only a quoted
  string; a tagged template named `from` is no longer an import.
  A template passed to import() is still a dependency.

Rescanning all 802 repository JavaScript files against dd14493e changes
no result, and the real registry still reports 35/35 resolved with zero
failures or warnings.
2026-10-09 17:48:27 -04:00
montjeffrey 253c051dbf test(carriers): pin CommonJS require candidates, regex after a block, and non-import from
Review on dd14493e found four more ways the closure gate misjudges a
carrier, each reproduced against that head:

- require('./helper') resolves when only helper.cjs or helper.mjs is
  planned, but Node's CommonJS search tries only .js, .json and .node.
- In `if (ok) {} /"/.test(text); require(...)` the regex after the block
  is read as division and its quote swallows the require.
- `obj.\nif(x) / 2` is a method call, but the condition check only saw
  the character immediately before `if`, so the division read as a regex
  and swallowed a later require. Introduced by the previous fix.
- A tagged template named `from` was recorded as an import; with exact
  import resolution it now fails a carrier that never loads that path.
  Introduced by the previous fix.

Controls: an extensionless require still resolves to a .json file, and a
template literal passed to import() is still a dependency.
2026-10-09 17:46:02 -04:00
montjeffrey dd14493e98 docs(carriers): record the second closure review follow-up 2026-10-09 16:15:55 -04:00
montjeffrey fa3f459a93 fix(carriers): resolve imports exactly, reject backslash separators, see regex after a condition
- Track whether each relative specifier arrives through require or
  through import()/static import, and resolve the import forms by exact
  path. Node's ESM resolver adds no extension and rejects directory
  imports even from a CommonJS file, so import('./helper') and
  import('./data') no longer pass on helper.js or data/index.json alone.
  require keeps the CommonJS extension and index candidates.
- Stop normalizing backslashes in relative specifiers. Linux and macOS
  read them as filename characters, so require('./lib\helper.js') now
  fails as non-portable-separator instead of resolving to lib/helper.js.
- Record whether each closing paren ends an if/while/for/with condition,
  so a `/` right after one starts a regex. A method named `if` and calls
  nested inside a condition still read as division.

extractReferences gains an `imports` list. Rescanning all 802 repository
JavaScript files against the previous scanner changes no result, and the
real registry still reports 35/35 resolved with zero failures.
2026-10-09 16:15:55 -04:00
montjeffrey aba3c241af test(carriers): pin exact import resolution, portable separators, and regex after a condition
Review on aec97150 found four ways the closure gate passes a carrier that
fails at run time. Each is reproduced here against the current head:

- import('./helper') with only helper.js planned is accepted, but Node's
  ESM resolver does no extension search.
- import('./data') with only data/index.json (or index.js) planned is
  accepted, but Node rejects directory imports even from CommonJS.
- require('./lib\helper.js') with lib/helper.js planned is accepted
  because backslashes were normalized, but Linux and macOS read the
  backslash as part of the filename.
- In `if (ok) /['"]/.test(text); require('./missing')` the regex after
  the condition's closing paren is read as division, its quote opens a
  fake string, and the require disappears.

Controls that must keep passing: an exact import() of a planned file, an
extensionless require through the CommonJS search, and division after a
method named `if` or a call nested inside a condition. extractReferences
gains an `imports` list so the resolver can tell the two forms apart.
2026-10-09 16:12:32 -04:00
montjeffrey aec97150d8 docs(carriers): record the closure review follow-up 2026-10-08 16:49:30 +00:00
montjeffrey d00b379f70 fix(carriers): keep keyword patterns from spanning an interpolation 2026-10-08 16:49:08 +00:00
montjeffrey e85c529eaf test(carriers): an interpolated from identifier is not an import 2026-10-08 16:48:47 +00:00
montjeffrey 0d3c85bd54 fix(carriers): match spaced calls, cook escapes, treat Windows and file URLs as absolute 2026-10-08 16:48:33 +00:00
montjeffrey 333e755f50 test(carriers): cover spaced calls, escaped specifiers, Windows paths and index.json 2026-10-08 16:47:54 +00:00
montjeffrey 6abf02bb49 feat(carriers): flag absolute and package imports a carrier cannot ship 2026-10-08 15:47:34 +00:00
montjeffrey 5f7c2e9d7a test(carriers): flag absolute and package imports a carrier cannot ship 2026-10-08 15:47:10 +00:00
montjeffrey 3c8042fb33 test(carriers): pin scanner edge cases and share one registry run 2026-10-08 15:46:49 +00:00
montjeffrey 4d8e3cfac0 docs(carriers): record the runtime-closure gate slice 2026-10-08 15:36:04 +00:00
montjeffrey 840a72b6c1 feat(carriers): validate carrier runtime closure in CI 2026-10-08 15:35:03 +00:00
montjeffrey 722f2193cb test(carriers): pin runtime closure checks 2026-10-08 15:30:58 +00:00
Affaan MustafaandGitHub ef648e0189 docs(ja-JP): match current sponsors (CodeRabbit, Greptile, Moonshot AI, Itô, SerpApi) (#3363)
Atlas Cloud and Mike Morgan move to past sponsors, as in README.md, SPONSORS.md
and ecc.tools. SerpApi added to the partners row.
2026-10-01 21:01:14 -05:00
Affaan MustafaandGitHub c05b2d6614 chore: retire the Everything Claude Code name, ECC only (#3330)
* chore: retire the Everything Claude Code name, ECC only

Replace the expanded product name and the everything-claude-code slug
with ECC across READMEs, translated docs, harness folders, skills,
commands, scripts and examples. Repo URLs now point at affaan-m/ECC.

Rename repo-internal artifacts to ecc forms (ecc-conventions skill,
ecc-guardrails, ecc-research-playbook, ecc-team-config, ecc-instincts
with ecc-* ids) and update .claude/ecc-tools.json.

Legacy install ids, plugin dirs, package names and MCP prefixes stay
where existing installs resolve against them. The codex global-state
check and harness-audit repo detection accept the new name first and
the legacy one as a fallback. The Discord bot prefers ~/GitHub/ECC and
falls back to the nested legacy checkout path.

Refresh the skill-triggers registryDigest for the changed skill text.

* fix(ecc-tools): drop managed paths to the removed Claude repo skill

.claude/skills/<repo-skill>/SKILL.md was deleted in #2770 but stayed listed in
ecc-tools.json and the team config. Remove those entries and point the Claude
Code adapter at the existing .agents/skills/ecc-conventions/SKILL.md.
v2.2.3
2026-10-01 17:50:41 -05:00
Affaan MustafaandGitHub 0348d7b6d7 chore(release): 2.2.3, ECC-only naming in pi/core and a longer npm publish wait (#3329)
pi/core and the bundled blueprint skill now refer to the project as ECC only;
the generated README no longer expands the name. Profile contents, package
name and paths are unchanged (123 skills, 24 commands).

The release workflows poll npm for up to five minutes after publish before
verifying the artifact. In 2.2.2 the check gave up after about 30 seconds while
npm was still processing, failing the run before latest was promoted and the
GitHub Release was created.

Version metadata synced to 2.2.3 with CHANGELOG, translated release headings
and release notes; skill-triggers registryDigest updated for the blueprint text.
2026-10-01 17:49:51 -05:00
Affaan MustafaandGitHub c70874fae9 feat(pi): curated pi/core skills+prompts profile, CI load test, and 2.2.2 release sync (#3264)
Adds a curated, Pi-native, skills+prompts-only profile at pi/core/ for downstream packagers that mirror GitHub Releases.

- manifests/pi-core.json: explicit include lists, per-item exclusion reasons, curation rules, safety allowlists; every root skill and command must be classified.
- scripts/build-pi-core.js regenerates pi/core deterministically (package.json from VERSION, LICENSE, README.md, CURATION.md, skills/, commands/); --check fails CI on drift. council is renamed ecc-council inside pi/core only.
- Safety checks: no callable endpoints outside the allowlist, no npx/curl|sh/pip install, no secrets, no absolute home paths, no symlinks, valid frontmatter, no duplicate names.
- CI: build + drift check and an offline Pi CLI load test of pi/core.
- Release: VERSION, package.json and pi/core/package.json at 2.2.2, CHANGELOG, tag-triggered release verification, and a two-week cadence in CONTRIBUTING.md.

pi/core: 123 of 293 skills and 24 of 94 commands; 35,006 characters of skill description text.
v2.2.2
2026-09-29 20:24:05 -05:00
haelyraandGitHub d30588f90a Merge pull request #3251 from affaan-m/affaan/integrate-reviewed-followups-20260928
fix: integrate reviewed contributor repairs and bounded installer tests
2026-09-29 19:04:47 -04:00
haelyraandGitHub 759d841b24 merge: preserve PR #3243 rollback redraw regression 2026-09-29 18:25:59 -04:00
haelyra 51a59a1112 test(gateguard): align spawned hook timeouts 2026-09-29 18:22:26 -04:00
haelyraandGitHub dc3f44ad5a Merge branch 'main' into affaan/integrate-reviewed-followups-20260928 2026-09-29 18:13:54 -04:00
Santhi PrakashandGitHub bd9402f774 fix(hooks): scope MCP health checks to MCP tools (#2838)
Anchor the PreToolUse and PostToolUseFailure MCP health-check matchers so non-MCP tool calls do not spawn the health hook.
2026-09-29 15:08:37 -04:00
pasmud a85f43b1fa test(control-pane): assert the rollback redraws without waiting for a resize
The malformed-drawing rollback test took its marker baseline before the
malformed poll but only checked it after resizeAgain(). Resize redraws
the accepted view on its own, so the test still passed with the
immediate rollback redraw removed and the canvas left blank until the
operator resized.

Record the log position alongside the baseline and assert the retained
markers are on the canvas immediately after the malformed poll, before
any resize. Scoped to the drawing case, since the events and lanes
cases fail before draw() starts and correctly do not redraw.

Mutating the implementation confirms the assertion bites: disabling the
rollback draw and removing it entirely both fail it with the message
"the rollback must redraw the retained markers immediately".

Test-only change. control-plane-view-ui 27/27, control-plane-view
13/13, control-plane-view-ui-a11y 18/18, ESLint clean on the test file.
2026-09-29 14:02:41 +00:00
affaan-m 93fca4a604 Merge reviewed Biome-filename correction from PR2835
Source-PR: https://github.com/affaan-m/ECC/pull/2835
Source-Head: 7ffea7091a
2026-09-28 07:07:45 -04:00
affaan-m e10bbaa492 Merge reviewed append-assignment correction from PR2965
Source-PR: https://github.com/affaan-m/ECC/pull/2965
Source-Head: eca846248d
2026-09-28 07:07:45 -04:00
affaan-m 7ffea7091a fix(hooks): distinguish Biome configs from results files
Preserve the original contributor histories and apply the exact independently reviewed repair.

Source-Parent: 74023e5689
Review-Manifest-SHA256: 208a6350119857df7c1e5b83a46cdba0b7f7399f58ed60167397920c7a21b454
2026-09-28 07:07:07 -04:00
affaan-m 423b2158a9 docs(ja): match the canonical command count
Preserve the original contributor histories and apply the exact independently reviewed repair.

Source-Parent: e41c9241f5
Review-Manifest-SHA256: df9ec6b308f1935e55f13af1845a99b87a0fc921fb30b16e52fbf70d5120ee81
2026-09-28 07:07:07 -04:00
affaan-m eca846248d fix(hooks): track append assignments in Git override checks
Preserve the original contributor histories and apply the exact independently reviewed repair.

Source-Parent: dee884656e
Review-Manifest-SHA256: 0c7eeef7c2722a605d049daf2dc3c2473c10dd616005afcba21049fc036d8ce9
2026-09-28 07:05:14 -04:00
affaan-m e41c9241f5 test(installer): pass capability probe as a private script file
Preserve the original contributor histories and apply the exact independently reviewed repair.

Source-Parent: aa0ea42882
Review-Manifest-SHA256: 3d35033783c03f7660b6795e20c1de588fc1cd48850b208e36add955e2446ad7
2026-09-28 06:43:02 -04:00
affaan-m aa0ea42882 docs: align composed catalog counts with i18n skill
Update four stale skill totals to the293 canonical entries verified by the existing catalog checker.

Reviewed-Parent: 5d4cca811d
Source-Manifest-SHA256: 5281891022c3405cfa0549bb15a15ce4b1df101b7c64780da9cbbd839df3d971
2026-09-28 06:21:25 -04:00
affaan-m 5d4cca811d test: bound installer child shutdown and preserve diagnostics
Keep the original wrapper assertions while supervising owned child groups through pipe closure, reporting failed capability probes, and preserving aggregate counts.

Reviewed-Base: 807f07a687
Source-Manifest-SHA256: 75176a5cfe5345cc93c20fb748ba5a1f159fdeb171b12ae7a8619979fa55edd9
Final-Source-SHA256: 691cb15f7356845a2cc4f84277ff5fd24cd6210ec9995ffefea0ab19509ba076
2026-09-28 06:10:43 -04:00
affaan-m 807f07a687 Merge reviewed Git environment scope correction for PR2965
Source-PR: https://github.com/affaan-m/ECC/pull/2965
Source-Head: dee884656e
2026-09-28 05:39:46 -04:00
affaan-m dee884656e fix(hooks): preserve Git configuration across shell command scopes
Preserve contributor history while applying the exact reviewed current-main repair.

Source-PR: https://github.com/affaan-m/ECC/pull/2965
Source-Parent: ec0753bc7f
Review-Manifest-SHA256: 0172e3e695e672305f9bc41b0d385d2a299d8ec520c763dd9d7f6da743f76971
2026-09-28 05:38:05 -04:00
affaan-m b5406da674 Merge reviewed optional skill-editor documentation PR2990
Source-PR: https://github.com/affaan-m/ECC/pull/2990
Source-Head: 154fa123d8
2026-09-28 05:36:38 -04:00
affaan-m 154fa123d8 docs: describe optional skill editor without unsupported claims
Preserve contributor history while applying the exact reviewed current-main repair.

Source-PR: https://github.com/affaan-m/ECC/pull/2990
Source-Parent: f3b423c4b3
Integration-Main: d3b8a3e908
Review-Manifest-SHA256: 7007a872199e16cc103bbb62fa2fa3812167677c8a63ebf2ecd8a88854d1042b
2026-09-28 05:35:31 -04:00
affaan-m 6bcc31358e Merge reviewed Plan Canvas test termination correction
Source-PR: https://github.com/affaan-m/ECC/pull/3241
Review-Manifest-SHA256: 281ec1d297672ff9986406c47e210b41590e00926b8da5071eceeedef8c51833
2026-09-28 05:20:21 -04:00
affaan-m cc1539fda0 test(plan-canvas): bound stalled cleanup and flush results before exit
Preserve contributor history while applying the exact reviewed current-main repair.

Source-PR: https://github.com/affaan-m/ECC/pull/3241
Source-Parent: 63f30ffc36
Review-Manifest-SHA256: 281ec1d297672ff9986406c47e210b41590e00926b8da5071eceeedef8c51833
2026-09-28 05:18:12 -04:00
affaan-m e7d69ac9ee Merge reviewed PR2879 missing-declaration regression correction
Source-PR: https://github.com/affaan-m/ECC/pull/2879
Review-Manifest-SHA256: d561b12170431bc2f5ec9baa80548a656fca9e55b4bb6b11bd756be4e6cab199
2026-09-28 05:13:01 -04:00
affaan-m de5119dcb6 fix(locale): reject missing canonical agent declarations
Preserve contributor history while applying the exact reviewed current-main repair.

Source-PR: https://github.com/affaan-m/ECC/pull/2879
Source-Parent: cc9914ce77
Review-Manifest-SHA256: d561b12170431bc2f5ec9baa80548a656fca9e55b4bb6b11bd756be4e6cab199
2026-09-28 05:11:01 -04:00
affaan-m da2edcb740 Merge reviewed PR2835 qualified configuration protections
Preserve exact-file protections, all shared assertions and private cleanup.

Source-PR: https://github.com/affaan-m/ECC/pull/2835
2026-09-28 05:01:22 -04:00
affaan-m 78dee5c829 Merge reviewed PR2845 configuration filename protections
Source-PR: https://github.com/affaan-m/ECC/pull/2845
2026-09-28 04:58:30 -04:00
affaan-m b150db1bb4 Merge reviewed PR2444 localization workflow into maintained batch
Preserve prior agent/docs/package changes; bind actual 293-skill registry.

Source-PR: https://github.com/affaan-m/ECC/pull/2444
2026-09-28 04:58:29 -04:00
affaan-m 74023e5689 fix(config-protection): protect qualified shared linter configurations
Preserve contributor history while applying the exact reviewed current-main repair.

Source-PR: https://github.com/affaan-m/ECC/pull/2835
Source-Parent: e58bb26647
Integration-Main: d3b8a3e908
Review-Manifest-SHA256: 2b591ee5fc545e0d552a58dd6f473f196ca773a194c33b87359f5c0447187e26
2026-09-28 04:50:09 -04:00
affaan-m 339db5b0be fix(config-protection): guard current config and ignore filenames
Preserve contributor history while applying the exact reviewed current-main repair.

Source-PR: https://github.com/affaan-m/ECC/pull/2845
Source-Parent: e19e74a7fc
Integration-Main: d3b8a3e908
Review-Manifest-SHA256: 02ef909e8553e93554ec8fb615b9299fd3ee6a0d7dc250ee2375ce80ce538060
2026-09-28 04:49:31 -04:00
affaan-m a0444eb8a6 feat(skills): add scoped JSON locale synchronization workflow
Preserve contributor history while applying the exact reviewed current-main repair.

Source-PR: https://github.com/affaan-m/ECC/pull/2444
Source-Parent: 21cb5e733f
Integration-Main: d3b8a3e908
Review-Manifest-SHA256: 4f76d01c75de844ab771a3d03e12e840565e73c6d8daa09ca7a1c0d3841e3607
2026-09-28 04:48:51 -04:00
affaan-m 9886c333f6 fix(batch): preserve Plan Canvas cleanup on every failure path
Source-PR: https://github.com/affaan-m/ECC/pull/3241
Source-Commit: 63f30ffc36
Reviewed-Manifest-SHA256: efb1271980b7e706b4ee237320ca86e8515e6012dce0802af36ec12dbdebc7a4
2026-09-28 04:16:18 -04:00
affaan-m 63f30ffc36 test(plan-canvas): close owned resources across failure paths
Preserve contributor history while applying the exact reviewed current-main repair.

Source-PR: https://github.com/affaan-m/ECC/pull/3241
Source-Parent: 71bb09c76b
Review-Manifest-SHA256: efb1271980b7e706b4ee237320ca86e8515e6012dce0802af36ec12dbdebc7a4
2026-09-28 04:10:00 -04:00