Repository navigation
Commit 6c2699b
docs(pm-dispatch): a project-run seat form beside the Routine form — the seat post as a stub, the dispatch order in the card thread, event wake plus one patrol per project, 项目总监 → 总监席 (#25385)
<!-- claude-projects-attribution: {"github_login":"os-elon-musk"} -->
_Requested by **Elon** · [project
thread](https://claude.ai/code/project/chan_01WedDzV26nniwxv7jC88B9D?thread=cmsg_01WedDzV26nniwxv7jC88B9D4DhDnco8yuU89yAoN1Eq5n)_
Fixes #25379
Clause-②: no
Metadata-protocol: none
## 维护者速读(草稿)
- **改了什么**:pm-dispatch 技能里加一种「项目席」形态,与 Routine
席并列:席位会话是车道项目的线程时,座位贴降为存根(只留别的账号要读的四项:在座账号与项目、上任时刻、热文件串行队、指针行,外加可选撞墙注记),姿态、台账、班次叙事与轮报住项目;派发令由协调者写进卡线程开场消息,不再落共享目录;唤醒
= 每张卡 PR 的订阅事件 + 每项目一个 2–4 小时巡查 routine,不再有自绑 cron、`send_later`
链与跨墙定时器链;轮报 = 卡线程清单,五项健康指标进总监项目的每日摘要;「项目总监」改称「总监席」、「项目协调者」改称「协调者」,GitHub
的 org Project 改称「看板」,并在入口表定义「车道项目」与「总监项目」。第五个提交是卡上预告的跟进:coordinator.md
落地后补指针与改名,两处「派发令文件」改「派发令全文」,巡查行点名前提过时检查,cross-repo 规则 5 的 org Project
也改「看板」。
- **为什么改**:您 2026-10-23 在「车队机制迁往
Projects」线程的原话:「同意,你现在就立卡派发处理。」(对调研备忘推荐字母 1B 2A 3B 4B 5B 与第 9 节命名的同意)。
- **风险与代价(含回滚)**:纯规则文本,八个文件行数全部净零、每行 ≤120 字节,无上限抬高;一次 revert 可回。两处要您知道:①
卡上第 3 项「线程开起前先命名分支」实测做不到——分支由平台在线程建立那一刻指定,协调者只能在线程建起之后读到它;您 2026-10-23
11:29 在决裁批 #4 裁了 1A(协调者开线程即读分支交席位、席位认领、线程核对),第三个提交已照裁写进 runbook 〈卡线程〉与
os-dev.md 规则 1(卡线程不推空分支)。② 为付行数删掉了三条 Routine 席专用规则(自绑 cron、`send_later`
加速器、跨墙每小时 cron 链),正是卡上点名的付账行;维护者在 UI 建的 Routine 席不受影响;同批 2A
补上直连会话的唤醒规则(按召唤跑,⛔ 无自醒不常驻),写在 SKILL.md 分诊席那一行。
- **席位意见**:(席位复核后填)
- **你要做的(一个动作)**:等席位对新 head 的契约复核 PASS、CI 全绿后说一句「可以落地」。
## What changed
Nine files under `.claude/skills/pm-dispatch/**`
(`references/coordinator.md` joins once PR #25255 landed, and
`references/cross-repo-coordination.md` by the seat's one-line widening)
plus, after the maintainer's batch-4 ruling, `.claude/agents/os-dev.md`
(the seat widened the claim's file surface by that one file, same Tier
S); rule text only; every file lands at the same line count it had,
every edited line is at or under 120 bytes, no ratchet ceiling moves (so
`scripts/pm/check-skill-line-ratchet.mjs` is untouched).
| File | Before | After |
|:--|:--|:--|
| `SKILL.md` 红线 | `org Project 只是视图` | `看板(org Project)只是视图` — the
vocabulary line for GitHub's board; 「任何」 dropped to stay under the byte
cap, meaning unchanged |
| `SKILL.md` 入口与角色 (the `domain` row, the `director` row) | lane seat /
「项目总监席」 | the lane row defines 「车道项目」 (the project running that lane);
the `director` row reads 「总监席」 and defines 「总监项目」 (the project the
director seat sits in). Table rows, under the 342-byte row pin |
| `SKILL.md` 入口与角色 bullets | 「入座即建唯一自绑 cron Routine…」 and 「轮末
`send_later` 是可选加速器…」 | 「席位两形:Routine 席与项目席(会话是车道项目的线程);细则见
`references/seat-lifecycle.md`」 and 「项目席唤醒 = PR 订阅事件 + 每项目一个巡查 routine;⛔
无自绑 cron、无 `send_later` 链」 — the two Routine-seat-only mechanisms the
card names as payment are the two lines replaced |
| `SKILL.md` 升级与决策 | 「项目总监席:维护者在所在仓召唤…」 | 「总监席:…」 (rename only; PR
#25255 deletes this line, so its landing takes the deletion) |
| `references/seat-lifecycle.md` 〈座位贴协议〉 | — | +2: the project seat's
post is a stub holding only what another account reads (template in
`seat-post-protocol.md`); posture, ledger and round reports live in the
project; title, assignee, the seating audit comment and the
cross-account hand-over brief stay |
| `references/seat-lifecycle.md` 〈轮次报告与节奏〉 | — | +1: a project seat's
round report is the card-thread checklist, ⛔ no per-round chat table;
the five health figures go to the 总监项目's daily digest |
| `references/seat-lifecycle.md` 〈断粮与跨墙恢复〉 | the cross-wall timer chain
(fixed-point timer; hourly cron Routine when no reset time; delete the
cron after the first good fire) and 「随后重挂常规巡检 → 照常跑轮」 | −3: the three
timer-chain lines leave (they are the self-bound-cron / `send_later`
chain the card names as payment); the recovery line keeps its steps and
ends in 「照常跑轮」 (the 「重挂常规巡检」 clause referred to the deleted chain); +1:
the project patrol routine runs the lanes' standby items every 2–4
hours, a wall leaves only a stub note, ⛔ no cross-wall timer chain |
| `references/seat-post-protocol.md` 〈贴的四段与派生视图〉 | — | +2: the stub's
four items (seated account and project · seating time · hot-file serial
queue · the pointer line) and the optional fifth line (wall note with
the expected reset time); the stub is refreshed only on seating, a
serial-queue change, a wall and hand-over |
| `references/seat-post-protocol.md` 〈交接收尾清单〉 | step 8 「`list_triggers`
清点本会话定时器:删入座 Routine,一次性的逐个清理或随移交物转交」 | −1: the step inventoried the
self-bound seat Routine and one-off timers that no longer exist in the
protocol; steps 9–10 renumbered 8–9. The no-orphan-timer rule itself
stays in `platform-readings.md` 〈断粮检测与跨墙恢复〉 |
| `references/seat-post-protocol.md` 〈座位 Routine 创建〉 | 「会话内
`create_trigger` 的 fresh-session Routine 不挂 repo sources,拿不到 GitHub 工具」
+ 「表现为静默零产出;⛔ 不要在会话里 `create_trigger` 出一个座位 Routine 就当它在跑」 | −1: one
line — the fact (no GitHub tools, zero output) and the rule (do not
treat an in-session `create_trigger` Routine as a running seat); the 「不挂
repo sources」 mechanism is already the reading in `platform-readings.md`
|
| `references/dispatch-runbook.md` 〈卡线程〉 | 「派发令落项目共享目录
`/mnt/project-files/…/dispatch-….md`:线程读不到席位 scratchpad」 | 「派发令由
coordinator 写进卡线程开场消息,⛔ 不落共享目录;卡上派发评论留一行指针」 (item 2) |
| `references/execution-duties.md` 〈收集〉 ①② | 「巡检首动作 `list_triggers` 确认
Routine 启用,在飞重挂加速器;唤醒归 Routine,漏挂不断链」 / 「在飞期间主巡检间隔 ≤45 分钟…」 | ① scoped
to the Routine seat, the accelerator clause gone, and 「项目席由事件与巡查 routine
唤醒」; ② scoped to the Routine seat (its cadence is unchanged) |
| `references/dispatch-runbook.md` 〈卡线程〉 handshake (ruling 1A, third
commit) | 「线程开起后第一动作:向席位报告指定推送分支并等待;⛔ 线程不贴认领、不写 assignee」 / 「席位按
AGENTS.md 的顺序写 assignee+`pm:dispatched`,再贴带该 `Branch:` 的认领;之后线程才开工」 |
「coordinator 开线程即读线程分支交席位(读不到则线程自报);⛔ 线程不认领、不写 assignee」 / 「席位写
assignee+`pm:dispatched`+带该 `Branch:` 的认领;线程核对最新认领指向本分支方开工」 — the ruled
shape: the coordinator reads the branch from the child's session record
at spawn, the seat claims it, the thread starts once the newest claim
names its branch; the thread's own report is the fallback |
| `.claude/agents/os-dev.md` 基本规则 1 (ruling 1A, third commit) |
「建好分支后的第一个动作是推空分支:任何编辑之前 `git push -u origin <branch>`」 +
「它既是认领评论所指分支的落地标记,又是写路由探针(容器凭据不对称)」 | the two probe lines merge into
「建好分支后先推空分支(任何编辑前 `git push -u origin <branch>`):落地标记兼写路由探针」 and the
freed line reads 「卡线程分支由平台指定、harness 推送,⛔ 不推空分支;探针规则只对自建分支」 — the file
sits at its 404-line ceiling, so the new rule is paid inside rule 1 |
| `SKILL.md` 入口与角色 triage-seat line (ruling 2A, third commit) |
「分诊席跑普通直连会话、默认判断档;裁决不在本席,归维护者召唤的总监席」 | 「分诊席跑直连会话、默认判断档;直连会话按召唤跑,⛔
无自醒不常驻;裁决归总监席」 — the direct-session wake rule the contract review
flagged (③-2): summoned only, no self-wake, not resident; 「维护者召唤」 is
already the 总监席 line's own text |
| `references/lanes/director.md` L1 | `# 席位章程:项目总监(Project Director)` |
`# 席位章程:总监席(Director Seat)` |
| `references/coordinator.md` title and `SKILL.md` `coordinator` row
(follow-up commit, after PR #25255) | `# 项目协调者(Project Coordinator)` /
「以项目协调者身份运行…」 | `# 协调者(Coordinator)` / 「以协调者身份运行…」 — the card's naming
item for the coordinator |
| `references/coordinator.md` L3 (follow-up) | 「…跨车道调度的那一席读本文。」 |
「…跨车道调度的那一席读本文;项目席见 `seat-lifecycle.md`。」 — the pointer to the
project-seat form, folded into the opening line because the file sits at
its 49-line ceiling |
| `references/coordinator.md` 三 and `references/dispatch-runbook.md`
〈卡线程〉 candidate lines (follow-up) | 「派发令文件」 | 「派发令全文」 — the word item 2
made stale (the seat hands the coordinator the order's full text, no
file) |
| `references/seat-lifecycle.md` 〈断粮与跨墙恢复〉 patrol line (follow-up;
contract review ③-4) | 「…跑各车道待命项;撞墙只留存根注记,⛔ 无跨墙定时器链」 |
「…跑各车道待命项(含前提过时);撞墙记入存根,⛔ 无 cron 链」 — names the stale-premise check the
card's item 4 lists; 「cron 链」 is SKILL.md L72's word for the deleted
chain; 119 bytes |
| `references/cross-repo-coordination.md` 规则 5 (follow-up; contract
review ③-6, surface widened by the seat) | 「org Project 只是维护者的聚合视图」 |
「看板(org Project)只是维护者的聚合视图」 |
| `references/lanes/skills.md` | 「决裁勤务归项目总监席」 | 「决裁勤务归总监席」 |
| `references/rest-channel.md` 不可迁移 ② | 「Projects
field_values:GraphQL-only —— 舰队并不需要它;MCP 服务器端…」 | 「看板(org
Project)field_values:GraphQL-only,舰队不需要它;MCP 服务端…」 — the org-Project
naming line the card points at (its L78 citation is this line at L62 on
`main`) |
The rule after the change, as the card states it: GitHub keeps what
another account reads (six-state labels, assignee, `Claim:`/`Release:`,
the seat stub, the PR and its ACCEPT, the ruling record); the project
keeps the working layer (posture, ledger, orders, round reports,
memory). It is written as the two 〈座位贴协议〉 lines, not restated elsewhere.
Acceptance checks on this head: `git grep -n '项目总监' -- .claude/skills` →
no hit; `git grep -n '总监席' -- .claude/skills/pm-dispatch/SKILL.md` → L56
(the `director` row), L75 (ruling 2A), L237 (main's, from #25348) and
L275–L276 (the old summons line is gone by #25255).
## Item 3 — filed as `needs_decision`, ruled 1A in batch #4, written in
the third commit
Ruling record: card comment 6363872862 (maintainer 「同意」
2026-10-23T11:29Z = 1A 2A). The text below is the analysis as filed; the
ruled shape is option A, now on `dispatch-runbook.md` 〈卡线程〉 L141–L142
and `os-dev.md` rule 1 (see the table above). Item 2 of that batch (2A,
the direct-session wake rule) is on SKILL.md L75 (L74 before the merge
added the `coordinator` row).
The card's item 3 (「branch named before the thread opens」: the seat
claims first with the `Claim:` naming the branch the coordinator will
give the thread, then asks for the thread) rests on the coordinator
being able to name a project thread's branch. Measured on this very
thread (A2 below): it cannot. The branch is platform-assigned at thread
creation (`claude/project-thread-` + a random suffix; 27 such heads on
`origin`), the coordinator's opening message carried none, and the
thread may push only that branch. So the 〈卡线程〉 handshake lines were left
as they were until the ruling; the options as filed, ⛔ none picked by
this thread (A was ruled by the maintainer):
- **A. Coordinator reads, seat claims, thread verifies.** The
coordinator reads the new thread's branch from its session record the
moment it is spawned (`get_session` on the child lists
`outcomes[].git_info.branches` before any push — measured) and hands it
to the seat in the same stroke; the seat claims; the thread's first act
stays 「verify the newest `Claim:` names my branch」 and it starts as soon
as the claim is up. Cost: one read per thread; the thread still waits
for the seat, usually less than today because the read beats the
thread's own report.
- **B. Today's handshake minus the probe push.** The thread reports its
branch and waits; the seat claims; the thread starts. The empty-branch
push (`os-dev.md` rule 1) is dropped for card threads because the branch
is platform-designated and the push route is the harness's. Cost: zero
protocol change on the seat side; the 5–10 minute wait the card measured
stays. (The probe-push drop touches `.claude/agents/os-dev.md`, outside
this card's file surface either way.)
- **C. Claim first with the branch line filled later.** The seat claims
with `Branch: pending` and the thread's first report fills it by a body
edit of the claim comment. Cost: a claim comment that is edited after it
is written, which the claim protocol (「认领评论时间戳是唯一仲裁」) does not foresee.
## The PM's mechanism assumptions, measured
- **A1 (hot files; three seat PRs unmerged)** — held at the first push
(all three open: `#25348` at `2bf0113`, `#25255` at `3e6e35e`, `#25247`
at `d062675`); `#25348` landed 06:19Z and was merged in (`7198a099`, one
adjacent-line conflict in `seat-lifecycle.md` resolved by keeping both
lines; SKILL.md now 319/319, `lanes/director.md` 70/70). This PR started
from `main` at `448374d` and touches none of their hunks: `#25348`'s
SKILL.md L30/L106/L212–L222/L234/L264/L267/L276, `seat-lifecycle.md`
L69, `dispatch-runbook.md` L57/L77/L115/L146, `execution-duties.md`
L103, `contract-review.md`, `triage-duties.md`, `lanes/director.md`
L13–L24 and L45–L60 — not touched; `#25255`'s SKILL.md L57 insertion
(the `coordinator` row) and `dispatch-runbook.md` L136 — not touched;
`#25247`'s 〈域车道〉 table and `lanes/*` other than the two one-line renames
— not touched. Two known overlaps, both trivial: `#25255` deletes
SKILL.md L274, which this PR only renames (the merge takes the
deletion); `#25247` and `#25348` move SKILL.md's count (317 and 319)
while this PR leaves it at 318 under the 319 ceiling, so whichever lands
last re-measures. `#25255`, `#25247` and `#25393` landed 13:14Z and were
merged in (`bd78f67d`): two SKILL.md conflicts, both resolved as
foreseen — the `director` row keeps this PR's rename and `#25255`'s
`coordinator` row is added beneath it; `#25255`'s deletion of the 总监席
summons line wins over this PR's rename of it. The follow-up commit then
wrote the deferred items (coordinator.md pointer and rename, 「派发令全文」 in
both candidate lines) plus the two review flags (patrol line, cross-repo
rule 5).
- **A2 (can the coordinator name the branch?)** — disproved.
`get_session` on this thread shows the branch
`claude/project-thread-hxtlri` in
`session_context.outcomes[].git_repository.git_info.branches` at
creation (04:51:59Z); the coordinator's opening note named no branch;
`git ls-remote` had no such head until this thread pushed it; the suffix
appears in neither the thread id nor the session id. So the branch is
readable after spawn, not nameable before it — item 3 goes to the ruling
batch as above.
- **A3 (SKILL.md 319/319 once `#25348` lands)** — holds and is
respected: SKILL.md stayed at 318 lines until `#25348` landed and sat at
319/319 after the first merge and 318/318 after the second (the
ruling-2A clause is in place on L75, net zero). No re-wrap used as
payment; the two lines removed are the two mechanisms the card names.
- **A4 (`check:pm-skill-id-lint`)** — holds; the operating text names
rules by file and section only; 87 files clean.
## Line budget
| File | Lines | Ceiling | Net |
|:--|--:|--:|--:|
| `SKILL.md` | 318 (319 before `#25255`/`#25247` merged in) | 318 | 0 (2
replaced, 6 edited in place) |
| `references/seat-lifecycle.md` | 95 (96 before `main` shrank it) | 96
| 0 (+4 −3 −1, 1 edited) |
| `references/seat-post-protocol.md` | 91 | 91 | 0 (+2 −1 −1) |
| `references/dispatch-runbook.md` | 241 | 241 | 0 (4 edited) |
| `references/execution-duties.md` | 187 | 188 | 0 (2 edited) |
| `references/lanes/director.md` | 70 (72 before `#25348`) | 70 | 0 (1
edited) |
| `references/lanes/skills.md` | 32 | 33 | 0 (1 edited) |
| `references/rest-channel.md` | 82 | 82 | 0 (1 edited) |
| `references/coordinator.md` | 49 | 49 | 0 (3 edited in place) |
| `references/cross-repo-coordination.md` | 51 | 51 | 0 (1 edited) |
| `.claude/agents/os-dev.md` | 404 | 404 | 0 (2 edited in place; ruling
1A) |
Widest edited prose line 119 bytes; the two edited SKILL.md table rows
are 143 and 145 bytes against the 342-byte row pin.
## Gates
Head `f08bab5c` (the follow-up commit, on top of the `origin/main` merge
`bd78f67d` that brought in `#25255`, `#25247` and `#25393`): `node
scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` derives 22 commands (the 20 of the first
head plus `pnpm check:agent-model-declared` and `pnpm
check:commit-card-trailers`, which `.claude/agents/os-dev.md` in the
change set adds). Every one was run in this worktree with its exit code
captured before any pipe and recorded as `COMMAND :: exit CODE`, then
reconciled with `--ran`: 22 derived, 22 run, 22 × `exit 0`, 0
NOT-MEASURED, 0 UNRUN (`✓ dispatch-gates --ran`). Earlier heads, each
reconciled the same way: `f81aab8a` 20/20, the merge head `7198a099`
20/20, the ruling head `9700ab9d` 22/22; the first pass on `2b1450c` had
one `exit 3` (`pnpm --filter @objectstack/lint run
check:doc-formula-expressions`, a PREREQUISITE — the
`@objectstack/formula` and `@objectstack/lint` builds absent in a fresh
worktree — cleared by building those two packages under
`scripts/pm/os-verify-lock.sh`). The four the dispatch order names on
this head: `pnpm check:pm-skill-ratchet` ✓ (declared cross-file moves 2;
SKILL.md 318/318, `coordinator.md` 49/49, `cross-repo-coordination.md`
51/51, `os-dev.md` 404/404, no row moved), `pnpm check:pm-skill-id-lint`
✓ (87 files clean), `pnpm check:skill-frame-sync` ✓, `pnpm
check:skill-frame-freshness` ✓. CI on `f81aab8a`, `7198a099` and
`9700ab9d` was all green (40, 35 and 42 check runs, none failed); this
head has its own check runs. No published package moves (`.claude/**`
only), so `skip-changeset` rides the create.
## Acceptance notes
- The body's first line is the HTML-comment attribution block the
project session requires; `os-dev.md` 〈干净收尾〉 forbids HTML comments in
GitHub text. Measured on the sibling PRs of this project, the relay
read-back keeps it byte for byte. Reported as a deviation, not hidden.
- `references/cross-repo-coordination.md` 规则 5 was outside the claim's
file surface at the first push; the seat widened the surface by that one
line and the follow-up commit carries the review's exact 119-byte
rewrite.
- The card's item 4 names the patrol's work as 「the collection step of
`execution-duties.md` (unlock scan, hold release, stale premise,
awaiting-landing list, wall note)」; the standby items
`seat-lifecycle.md` 〈停止条件与待命〉 enumerates cover all but the stale-premise
check, which the follow-up commit names on the line (「含前提过时」, the term
of `execution-duties.md` 派发节).
- The vocabulary 「车道项目 / 总监项目 / 项目席」 this PR introduces is left as
written; card #25412 (PR #25427) re-words it after this PR lands, per
the seat.
- Work was done in a linked worktree (`../objectstack-issue-25379`) on
the designated branch; the primary checkout was left detached at
`d12e650`. The empty-branch push was made before the first edit, as
`os-dev.md` rule 1 asked then; the third commit exempts card threads
from it per ruling 1A.
- The commit trailer pair is the model-free pair the pre-push hook
requires.
Governed surface `.claude/**` (Tier S): draft, awaiting the seat's
`CONTRACT_REVIEW_TIER` review and the maintainer's word; ⛔ not to be
flipped ready, queued or armed by this thread.
---
_Generated by [Claude
Code](https://claude.ai/code/session_0178pvZcJjqXL36QzPi1jbSX)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 01fd980 commit 6c2699b
11 files changed
Lines changed: 32 additions & 32 deletions
File tree
- .claude
- agents
- skills/pm-dispatch
- references
- lanes
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
31 | | - | |
| 30 | + | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
54 | | - | |
| 54 | + | |
55 | 55 | | |
56 | | - | |
57 | | - | |
| 56 | + | |
| 57 | + | |
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| |||
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
71 | | - | |
72 | | - | |
| 71 | + | |
| 72 | + | |
73 | 73 | | |
74 | 74 | | |
75 | | - | |
| 75 | + | |
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
| 44 | + | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
132 | 132 | | |
133 | 133 | | |
134 | 134 | | |
135 | | - | |
| 135 | + | |
136 | 136 | | |
137 | 137 | | |
138 | 138 | | |
139 | 139 | | |
140 | | - | |
141 | | - | |
142 | | - | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
154 | 154 | | |
155 | 155 | | |
156 | 156 | | |
157 | | - | |
158 | | - | |
| 157 | + | |
| 158 | + | |
159 | 159 | | |
160 | 160 | | |
161 | 161 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
62 | | - | |
| 62 | + | |
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
| 27 | + | |
26 | 28 | | |
27 | 29 | | |
28 | 30 | | |
| |||
65 | 67 | | |
66 | 68 | | |
67 | 69 | | |
| 70 | + | |
68 | 71 | | |
69 | 72 | | |
70 | 73 | | |
| |||
88 | 91 | | |
89 | 92 | | |
90 | 93 | | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
| 94 | + | |
| 95 | + | |
0 commit comments