No description
Find a file
Rongsong Shen e6c670194f
docs(scheduler-sim-repl-verbosity): expand spec with Requirements 5.5, 6, 7
Extends the original continue-mode-noise-reduction spec (Requirements
1-5, 4 tasks) with three more requirements surfaced during a cli-ux
review of the live REPL:

- Req 5.5: REPL prompt shows current session/timestamp (step+continue)
- Req 6: human-readable byte/megabyte resource value formatting, table
  layout for info worker/info resource, and a new `set units` option
- Req 7: help listing reorganized into labeled sections, and break's
  valid event types made discoverable in both help and its error text

design.md gains three matching components (REPL Prompt Context,
Resource Value Formatter, Help & Breakpoint Discoverability), each
grounded in direct source verification (node_information.c's mem/tmp/
swp unit docstrings, test.c's is_bytes_valued_resource()/
format_bytes_human() precedent, BP_KIND_TABLE's actual contents).
Went through a full self-review pass fixing 7 internal-consistency
issues (stale System Flows section, a factual error in the claimed
timestamp format, a missing Requirements Traceability row, an
enum-zero-init assumption, a session_count off-by-one trap, and
incomplete Domain Model prose) before design/tasks approval.

tasks.md's own expansion (task groups 6-10) is committed alongside
each task's implementation, not here.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YAWMhfRJFnmmnG8h97yUDd
2026-09-02 08:40:43 +00:00
.claude test(xce-test-ha): add worker-rejoin-resync coverage to sequential/chaotic soak modes 2026-09-02 04:31:07 +00:00
.kiro docs(scheduler-sim-repl-verbosity): expand spec with Requirements 5.5, 6, 7 2026-09-02 08:40:43 +00:00
.wolf feat(scheduler-sim-repl-verbosity): task 1.2 - implement job identifier range compression 2026-09-02 08:39:52 +00:00
docs/superpowers/plans update documents 2026-08-10 17:51:51 +08:00
raft chore: checkpoint all prior work for clean state 2026-06-04 13:04:16 +00:00
reports update work status 2026-08-30 23:09:58 +08:00
scripts fix(gitea-sync): unwrap buglog.json's {version,bugs} wrapper before iterating (bug-1677) 2026-08-24 14:23:31 +00:00
src fix(scheduler): repl_cmd_delete() rejects non-numeric/invalid breakpoint ids 2026-09-02 08:40:22 +00:00
.clang-format reformat code and job array 2025-11-07 16:14:27 +08:00
.gitignore ignore daemon.log token-ledger 2026-08-28 14:33:03 +08:00
.mcp.json checkpoint: bug-851 root cause + raft TLA+ conformance spec family 2026-06-21 14:02:15 +00:00
.opencode.json checkpoint: bug-851 root cause + raft TLA+ conformance spec family 2026-06-21 14:02:15 +00:00
CHANGES.md update work status 2026-08-30 23:09:58 +08:00
CLAUDE.md feat(scheduler): reconcile mem reservation against real usage 2026-08-31 07:02:32 +00:00
README.md update README.md to the newest build guide 2026-09-02 11:06:19 +08:00

1. commit 规则

  • 每个人 fork 自己的 branch, 从自己的 branch 做 PR,review 完再 commit

2. code format

2.1. C

推荐使用 clang-format,公共配置放在源码里面 xce/.clang-format

(理论上直接使用源码里面 xce/.clang-format 文件格式不会变)

2.1.1. vscode 可以在配置中加上如下内容

"C_Cpp.clang_format_style": "WebKit",
"C_Cpp.clang_format_fallbackStyle": "WebKit",

2.1.2. vim & emacs

clang-format -style="{BasedOnStyle: webkit}" -i XX.c

2.2. golang

使用默认 gofmt

3. build environment and build (example of ubuntu)

3.1 build environment

  • Install nix package management tool
sh <(curl -L https://nixos.org/nix/install) --daemon
  • Edit /etc/nix/nix.conf to make sure
experimental-features = nix-command flakes
sandbox = true
sandbox-fallback = false
substituters = https://mirrors.ustc.edu.cn/nix-channels/store https://cache.nixos.org https://cache.nixos.org/
trusted-users = root <your account>

make sure that you have restarted nix-daemon service after you have changed /etc/nix/nix.conf

  • Install socat and config ssh (for clone by ssh protocol)
nix profile add nixpkgs#socat

.ssh/config

Host gitea.shenrs.eu
	HostName gitea.shenrs.eu
	IdentityFile ~/.ssh/id_ed25519
	ProxyCommand socat - openssl-connect:gitea.shenrs.eu:2022,snihost=gitea.shenrs.eu,verify=0

3.2 checkout source code

git clone ssh://forgejo@gitea.shenrs.eu/rshen/xce.git
cd xce

(参考第 1 节,fork 自己的 branch 再提交 PR)

3.3 build (for package and release)

cd xce/src

# for build debug version
nix build --option sandbox false .#xcecore_debug

# for normal build
nix build --option sandbox false .#xcecore

You can find the generated binaries at =result= directory

3.4 build (for daily develop)

日常开发推荐直接使用 src/tools/xce-build.sh(若在 Claude Code 中开发,对应的是 /xce-build skill), 它会执行 meson setup / meson compile,并在 asan profile 下跑测试。注意它自己不会进入 nix develop 环境,需要先手动 nix develop,或者用 nix develop --command 包一层:

cd xce/src
nix develop

tools/xce-build.sh              # 全部组件 + 全部测试 (asan profile, 输出到 xce.build/)
tools/xce-build.sh controller   # 只构建/测试 controller (lib + controller + xce_test)
tools/xce-build.sh worker       # 只构建 worker
tools/xce-build.sh scheduler    # 只构建/测试 scheduler
tools/xce-build.sh apiserver    # 只构建/测试 apiserver + xcecli (Go)

或者不进入交互式 shell,直接一条命令跑:

cd xce/src
nix develop --command tools/xce-build.sh controller

支持三种 profile(tools/xce-build.sh [component] [profile]):

  • asan(默认):debug + AddressSanitizer,输出目录 xce.build/,会运行测试
  • debug:-O0 -g3 无 sanitizer,输出目录 build.dbg/,仅编译,用于 gdb 调试
  • release:-O3 无 sanitizer,输出目录 build.release/,仅编译,用于 soak/性能测试

注意:单组件构建默认会先 rm -rf 对应的 build 目录再重新配置,若同一目录下已有其他组件的产物会被清掉; 需要在同一目录下累积多个组件时加 --incremental(增量 reconfigure,不清空目录)。

也可以手动执行底层的 nix + meson 命令(xce-build.sh 实际上就是对下面步骤的封装):

cd xce/src
nix develop

# using meson to generated build configuration (debug and address sanitize)

meson setup xce.build --buildtype=debug -Db_sanitize=address

# run meson to build
meson compile -C xce.build

# The generated files will be in xce.build/

3.5 build AppImage package

cd xce/src
nix bundle --bundler github:ralismark/nix-appimage --option sandbox false .#xce

This will create all in one AppImage file which contains everything for package delivery.

4. misc

4.1. Windows remap ctrl and alt key

create a reg file, e.g. remapkey.reg

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,05,00,00,00,38,00,1d,00,1d,00,38,00,38,e0,1d,e0,1d,e0,38,e0,00,00,00,00

then double click remapkey.reg to import it. Restart OS.