Register the new forge lane in the manifest
Intent: Declare a new `pikachat_typescript` branch lane in the forge lane manifest so the CI selector can match TypeScript-related path changes to a dedicated lane instead of falling through to the broader pikachat Rust lane.
Affected files: ci/forge-lanes.toml
@@ -201,6 +201,27 @@ paths = [
+[[branch.lanes]]
+id = "pikachat_typescript"
+title = "check-pikachat-typescript"
+staged_linux_target = "pre-merge-pikachat-typescript"
+paths = [
+ "ci/forge-lanes.toml",
+ ".github/workflows/pre-merge.yml",
+ "crates/pikaci/**",
+ "nix/ci/linux-rust.nix",
+ "scripts/forge-github-ci-shim.py",
+ "scripts/pikaci-staged-linux-remote.sh",
+ "scripts/pikachat-typescript-ci.sh",
+ "pikachat-claude/package.json",
+ "pikachat-claude/tsconfig.json",
+ "pikachat-claude/src/**",
+ "pikachat-openclaw/openclaw/extensions/pikachat-openclaw/package.json",
+ "pikachat-openclaw/openclaw/extensions/pikachat-openclaw/tsconfig.json",
+ "pikachat-openclaw/openclaw/extensions/pikachat-openclaw/index.ts",
+ "pikachat-openclaw/openclaw/extensions/pikachat-openclaw/src/**",
+]
A new [[branch.lanes]] entry is appended to ci/forge-lanes.toml with id = "pikachat_typescript" and staged_linux_target = "pre-merge-pikachat-typescript". The paths array is carefully scoped to only the TypeScript package surfaces (pikachat-claude/src/**, pikachat-openclaw/.../src/**, their package.json and tsconfig.json files) plus the CI plumbing files that govern the lane itself. This means a pure .ts file change will select only this lane and not the heavier Rust-oriented pikachat lane.