Commit Graph
4083 Commits
Author SHA1 Message Date
haelyra 09e0eb7d7f maint: integrate reviewed contribution #3591 2026-10-29 11:23:24 -07:00
haelyra 7bc0b1a6a9 maint: integrate reviewed contribution #3631 2026-10-29 11:23:22 -07:00
haelyra bca6fcee9e maint: integrate reviewed contribution #3567 2026-10-29 11:23:22 -07:00
haelyra cbdd9be209 maint: integrate reviewed contribution #3778 2026-10-29 11:23:21 -07:00
haelyra 674d5458c9 maint: integrate reviewed contribution #3764 2026-10-29 11:23:19 -07:00
haelyra 9aed578c67 fix: integrate symlink-aware GateGuard exemptions from #3726 2026-10-29 11:20:48 -07:00
haelyra 8e00137b04 fix: integrate observer identity and lease repair with canonical root matching 2026-10-29 11:19:43 -07:00
haelyra c337d7c057 feat: integrate reviewed module governance with Windows path assertions 2026-10-29 11:19:41 -07:00
haelyra 9b296f4cab docs: preserve latest contributor migration safeguards and workflow assertions 2026-10-29 11:17:59 -07:00
haelyra 8851c049ec docs: integrate reviewed workflow guidance from #3727 2026-10-29 11:17:30 -07:00
Muhammad Zubair b3b13350d1 test: isolate HOME in the test files that write to the real home directory 2026-10-28 12:20:21 +05:00
Wen c5a11f9f7a chore(context-packs): refresh skill-triggers registry digest 2026-10-27 16:52:48 -03:00
Wen af94289c17 fix(ck): reject only parent-traversal segments in the forget guard
Signed-off-by: Wen <jwcastillo@gmail.com>
2026-10-27 16:52:48 -03:00
Wen cb0cda8623 test(ck): assert forget removes the selected project's directory and registry entry
Signed-off-by: Wen <jwcastillo@gmail.com>
2026-10-27 16:52:48 -03:00
Wen f1b01825d8 fix(ck): never let forget remove the shared contexts root
save.mjs derived contextDir by stripping everything outside [a-z0-9-],
so a project name with no ASCII letters or digits (e.g. "Проект")
produced an empty contextDir. forget.mjs then resolved
resolve(CONTEXTS_DIR, "") to CONTEXTS_DIR itself and removed it
recursively, deleting every other project's context.

- save.mjs: fall back to project-<sha256(path)[:8]> when the slug is
  empty, so contextDir is never "".
- forget.mjs: refuse to rmSync unless the resolved path is strictly
  inside CONTEXTS_DIR. This also protects registries that already
  contain an empty contextDir.
- tests/skills/ck-forget.test.js: regression tests for both cases.
- manifests/context-packs/skill-triggers@1.json: refresh registryDigest,
  which validate-context-profiles requires after any skills/ change
  (same as 9fdf1ca2).

Signed-off-by: Wen <jwcastillo@gmail.com>
2026-10-27 16:52:47 -03:00
Muhammad Zubair 0618bdc7a8 test(claw): keep the askClaude tests from spawning a real claude CLI 2026-10-27 23:58:20 +05:00
haelyra 25278e7d7b Merge pull request #3736 from haelyra/integration/l4xb-four-hooks-20261025
fix(hooks): integrate four focused L4XB fixes
2026-10-26 00:03:57 -04:00
haelyra b144908df6 fix(types): declare Git utility options 2026-10-25 19:43:37 -04:00
haelyra e10f72413f test(hooks): isolate Git fixtures from inherited env 2026-10-25 19:41:21 -04:00
haelyra 0a7a9a718e fix(hooks): use session repository for console warnings 2026-10-25 19:32:16 -04:00
haelyra 605e006137 Integrate L4XB PR #3662 2026-10-25 19:30:50 -04:00
haelyra 9c8a66b696 Integrate L4XB PR #3664 2026-10-25 19:30:50 -04:00
haelyra 0e7588cec5 Integrate L4XB PR #3667 2026-10-25 19:30:50 -04:00
haelyra 6ddc4ea007 Integrate L4XB PR #3666 2026-10-25 19:30:50 -04:00
haelyra f390400944 Merge pull request #3583 from Tivonsico/fix/skill-run-timestamp-type-20261014
fix(skill-tracker): reject non-string execution timestamps
2026-10-25 19:16:34 -04:00
haelyra e2be9b5ac4 Merge pull request #3732 from affaan-m/stewardship/opencode-jsonc-3590-20261025
fix(install): integrate reviewed OpenCode JSONC fix with malformed-comma guard
2026-10-25 18:48:10 -04:00
haelyra 7f0b6ce500 fix(install): reject malformed empty-container JSONC commas 2026-10-25 18:20:40 -04:00
haelyra f4e8f6eb3e Merge reviewed OpenCode JSONC fix from #3590 2026-10-25 18:17:10 -04:00
Gaurav Dubey b98bff4a45 fix(observer): keep project context and leases aligned after remote changes
Integrates #3697 on current main. Prefer the observer project ID, retain a sole legacy ID until the new observer folder exists, and release the ending session lease across same-root aliases. Replace the unsafe live merge hint with read-only project inspection, and validate alias IDs before path use. #3711 independently identified the computed-ID selection gap; its early switch without observer data and unchanged SessionEnd path were not adopted.
2026-10-25 17:54:47 -04:00
Seekers2001 7b1449ef53 feat(governance): port optional module and context workflows
Integrate contributor PRs #3533, #3534, and #3535 on current main. Preserve the read-only module audit, canonical glossary and ADR ownership, and opt-in install closure. Refresh only the manual trigger manifest registry binding and coverage after adding the skill.
2026-10-25 17:51:30 -04:00
Dante e06c9d276b docs: integrate four reviewed workflow guidance PRs
Sources: #3689 #3691 #3692 #3693. Preserve Claude marketplace migration guidance, tool-result boundaries, scoped workflow authority, and bounded batch preparation. Regenerate the Pi projection and recompute the shared registry digest on one main head.
2026-10-25 17:50:53 -04:00
Gaurav Dubey dcb947a4e1 fix(gateguard): judge exempt globs against real target location
Port #3656 onto current main, preserving both the contributor fix and the unrelated current changelog entry. Includes the follow-up glob normalization from 2c11fd74.
2026-10-25 17:47:30 -04:00
haelyra e3292b0010 Merge pull request #3594 from ketpatil77/fix/managed-hook-config-bom
fix(hooks): honor managed preferences in BOM-prefixed config
2026-10-25 17:44:47 -04:00
haelyra e494799377 Merge pull request #3654 from affaan-m/stewardship/verified-pr-batch-3569-3578-owned
Integrate 34 reviewed ECC fixes with verified follow-up patches
2026-10-25 15:39:22 -04:00
haelyra 108ff18624 feat(ci): limit Issue bursts and open submissions per author (#3723)
Verified with 30 exact-head hosted checks, 31 combined PR and Issue tests, workflow security validation, and a live read-only Issue replay.
2026-10-25 15:16:53 -04:00
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
4c28a7be9e ci: audit closed-issue delivery claims — cited PRs must actually be merged (#3522)
* ci: audit closed-issue delivery claims — cited PRs must actually be merged

Follow-up to #3223: an issue closed as 'fixed in #N' while #N was closed
without merging (or does not exist) leaves a completion claim that does not
hold. The weekly maintenance workflow now runs a read-only audit over issues
closed in the last 30 days, extracts delivery-claim PR references from issue
bodies and close-window comments, verifies each cited PR's merge state, and
reports findings to the step summary.

Design constraints:
- Read-only: no comments, no closes, no labels; findings are advisory and
  the run always stays green so the weekly audit never blocks maintenance.
- Unverifiable counts as unmerged: a 404 PR or an API failure fails the
  verdict, because an unverifiable claim is exactly the failure mode.
- Pure decision functions are exported for tests; a first live run against
  this repository surfaced one real finding (#3408 cites #3060, which does
  not resolve), included here as the motivating sample.

8 unit/contract tests: extraction, windowing (close comments included),
the #3223 unmerged-citation failure mode, the all-clear summary, workflow
contract, and a no-write guard.

* ci: rework audit evidence contract — claims vs context, four PR states, visible completeness

Revision per the #3522 review (reviewer ran the CLI through 19 controlled
cases plus a bounded live check of #3408):

- Bind findings to asserted delivery claims. Closing wording ('Delivered
  through #N'), claim verbs (fixed/shipped/landed/resolved/...), and bare
  'PR #N' inside closing comments are claims; historical mentions, quoted
  lines, fenced examples, negated claims, and tracking-only references are
  reported as contextual references and never produce findings. On the live
  #3408 the audit now recognizes the closing claim #3500 (merged) instead of
  flagging the historical #3060 text.
- Separate observed states: merged / open-unmerged / closed-unmerged /
  unknown (404, rate limit, transient). Unknown claims are advisory manual-
  verification items, not failed claims; each row carries the claim snippet,
  its source link, and the observation time. Checked claims are listed even
  when passing, so the report is traceable rather than an opaque all-clear.
- Paginate issue and comment collection (--paginate --slurp), bound comment
  requests (200) and PR checks (100), and surface skipped pages, rate limits,
  and retrieval failures as an explicit incomplete audit instead of an empty
  all-clear. A live-run maxBuffer overflow on the paginated issue list was
  caught and fixed (64MB); the audit reported it as incomplete before the fix.
- Scope the job to read access: job-level contents/issues/pull-requests read.

13 contract/unit tests including a CLI fixture (stub gh) that places the
relevant issue on page two and forces a comment-fetch failure.

* ci: report incomplete audit at PR check cap

---------

Co-authored-by: chenhz01 <chenhz01@users.noreply.github.com>
Co-authored-by: haelyra <49814733+haelyra@users.noreply.github.com>
2026-10-25 14:41:22 -04:00
L4XB 10e7c5800f fix(hooks): recognize Prettier's TypeScript and JSON5 config files
Prettier's config searcher also reads .prettierrc.json5, .prettierrc.ts/.mts/.cts and prettier.config.ts/.mts/.cts. resolve-formatter knew none of them, so a project configured only through prettier.config.ts was never formatted by post-edit-format, quality-gate or the Stop batch. config-protection's rc pattern stopped at .yaml/.toml, so an existing .prettierrc.ts or .prettierrc.json5 could be edited freely.
2026-10-22 23:51:32 +02:00
L4XB cd1f5b74e2 fix(hooks): match tsc diagnostics by the file they name
The Stop typecheck reported every tsc line that contained the edited path anywhere. A root index.ts has the relative path `index.ts`, which every `src/index.ts(...)` diagnostic contains, so a clean root file was reported with the errors of src/index.ts. The same happened to src/utils.ts with web/src/utils.ts, and to any file named in another file's message.

Compare the path that starts the diagnostic (`path(line,col): `), keeping the slash normalization for Windows.
2026-10-22 23:42:21 +02:00
L4XB b02e02dcd2 fix(hooks): list modified files from the repository root even with diff.relative
With diff.relative=true, `git diff --name-only` reports paths relative to the working directory, so joining them to the repository root pointed at files that do not exist, and a session in a subdirectory again got no console.log warning. getGitModifiedFiles now runs `git -c diff.relative=false diff --name-only HEAD`. The -c form also works on Git versions older than --no-relative.
2026-10-22 23:01:26 +02:00
L4XB 5311485e94 fix(hooks): keep a backslash in double quotes as bash does in the dev-server block
readToken dropped every backslash inside double quotes, while bash drops it only before $, `, ", \\ or a newline. `"echo ready\;"` therefore reached the tmux check as `echo ready;`, read as a command separator, and `tmux send-keys -t dev "echo ready\;" "npm run dev" Enter` was blocked although it types into a pane.
2026-10-22 22:45:28 +02:00
L4XB adf435d36f fix(hooks): find console.log in modified files from a subdirectory session
check-console-log took the paths from `git diff --name-only HEAD`, which are relative to the repository root, and checked them with fs.existsSync from the hook's working directory. In a session started in a subdirectory, such as a monorepo package, no path existed from there, so the hook never warned. Resolve each path from the repository root. The exclusion patterns and the warning still use the root-relative path.
2026-10-22 22:42:08 +02:00
L4XB eee00776be fix(hooks): end a tmux command at a semicolon that ends an argument
tmux also separates commands at a `;` that ends an argument, so `new-session -d 'npm run dev;' run-shell 'npm run dev'` runs the second dev server without a pane. Split there as well. An escaped `\;` at the end of an argument stays literal, as in tmux.
2026-10-22 22:32:33 +02:00
L4XB 87945aac1f fix(hooks): read tmux option clusters and command sequences in the dev-server block
Two forms got the pane exemption although they run the dev server without a pane.

`tmux -vL new-session run-shell ...`: in a cluster, the last option that takes a value (f, L, S, T) takes the next token, here the socket name `new-session`. A `c` anywhere in a cluster (`-c'npm run dev'`) runs a shell command without a pane.

`tmux new-session -d \; run-shell "npm run dev"`: only the first command of a sequence was checked. The sequence is now split at `;`, and it is exempt only when every command in it that runs the dev server is a pane command. This also closes the same hole for the plain `tmux new-session ... \; run-shell`, which the old regex exempted.
2026-10-22 21:59:23 +02:00
L4XB 99aa85dde9 fix(hooks): let the dev-server block see a tmux launch past tmux options
The block allowed a dev server only when the segment began with `tmux new`, `new-session`, `new-window` or `split-window`. It therefore blocked dev servers that do start in a tmux pane, the way its own message asks: `tmux -L work new-session ...` and `tmux -f conf new-session ...` (tmux options before the command), `/opt/homebrew/bin/tmux new-session ...` and `env TERM=... tmux new-session ...`, the aliases `neww` and `splitw`, and `tmux send-keys -t dev 'npm run dev' Enter` or `respawn-pane` for a session that exists.

Read the tmux command from the parsed segment instead, after the leading command word and tmux's own options, and allow the commands that run their shell command in a pane. `tmux run-shell` and `tmux -c` run it without one and stay blocked.
2026-10-22 21:15:25 +02: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