Repository navigation
Commit be488ce
docs(pm-dispatch): land the maintainer's filing/merging directive — items 1 2 3 4 5 8 — as in-place charter deltas, net 0 per ratcheted file (#19449)
Fixes #19340
Clause-②: no
Lands the DELTA between the six adopted items of the director's record
(comment 5750077963 on #19340 — the maintainer's verbatim answer 「1 2 3
4 5 6 8」, 2026-09-20T13:24Z, items 1 2 3 4 5 6 8 adopted, 7 and 9 not)
and the charter as it stood on `origin/main` `23f1de0`. Item 6 is
carried by #19344 (out of scope here; #19344 remains open). Items 7 and
9 were not adopted and nothing here re-proposes them.
Every ratcheted file lands at **net 0** — each new rule is paid by
retiring a second pointer to the same reference file or a line restated
verbatim in a sibling (the pointer-retirement pattern of the last two
director-charter PRs) — and every landed line is at or under 120 bytes
(widest: 120 B). `state-machine.md` is untouched (reasons below). Diff:
4 files, +24 / −24.
## Per item — the line that stood, the line that lands, what was already
in place
| item | before (`origin/main` `23f1de0`) | after (this branch,
`a2665ce`) | already in place — untouched |
|:--|:--|:--|:--|
| **1** filing threshold inverted | `SKILL.md` :347–:351 named the three
classes and 「其余进 PR `## Acceptance notes`,⛔ 不立卡」 but said nothing about
reachability today, a named producer, dormant / zero-pull findings,
digests or quotas | `SKILL.md` :351 (new) 「(a) 须今天可达,(c)
须具名生产者;观察、休眠、零拉动 ⛔ 不立卡、不进汇总卡、无配额」 · `os-dev.md` :45 「(a) 须今天可达,…」, :46
「…须具名生产者…」, :48 adds 休眠、零拉动 to the not-filed list · `core-rules.md` :87
twin (今日可达可复现缺陷 · 具名生产者陷阱) | `SKILL.md` :347–:350 (three classes,
(a)/(c) boundaries), :352–:354 (承接者:无), :376 (三类外关 not planned);
`os-dev.md` :41–:44, :47 |
| **2** devs do not file; report contract | `SKILL.md` :778 「只列三类立卡与
`noted, not filed`;立卡附查重词、归挂、立在修复仓」 and :779 「席位在 ACCEPT 读 … 由席位补立」
named no `class:` / `carrier:` field and no per-entry disposition;
`os-dev.md` :49–:50 spelled entries as `noted, not filed: …`; :60–:61
and :65 still read as the dev filing (「立成它的 sub-issue」「独立立单」「无 assignee
立单」) | `SKILL.md` :777 (every entry `class: a\|b\|c` + evidence, or
`carrier:` = 承接者; neither ⇒ Acceptance notes), :778 (dev 不立卡; ACCEPT
disposes each entry in one line `filed #N` / `Acceptance notes` /
`dropped — reason`; the seat files the three-class ones in the fix
repo), :779 (seat reads Acceptance notes, files the true three-class
ones with 归挂 + 查重词; out-of-class cards already filed are closed not
planned) · `os-dev.md` :49–:50 (the two fields; `carrier:` defined;
neither ⇒ Acceptance notes only), :60–:61, :65 (the REPORT names the
sub-issue / `Blocked-by:` anchor; the seat files), :376 (report
template) · `core-rules.md` :151 twin | `os-dev.md` :55 「dev 不 `POST
/issues`」 already said devs do not file; :51 (3–5 dedupe words); :53
(four-write budget) |
| **2** the mechanical lock | see **Item 2's lock — measured** below |
no file change | MCP half: `issue_write` and `sub_issue_write` are in
`settings.json` `permissions.deny`, pinned by
`check-settings-deny-roster.mjs` |
| **3** triage merges at first grading | `SKILL.md` :367 「同文件同缺陷 =
同一发现,不分车道:证据搬到先卡,后卡关 `duplicate_of`,⛔ 不并排派发」 and :368 「其余在飞 ⇒
`Blocked-by:` 不派;open 未认领 ⇒ 先并成一个派发入口;已完成 ⇒ 卡可能过期」 — a label-pass rule
with no first-touch timing, no same-family rule and no execution-seat
route | `SKILL.md` :368 「同文件同机制 = 同一发现,不分车道,首触定级即并:证据搬先卡,后卡关
`duplicate_of`」, :369 「同族异缺陷 ⛔ 不并:互链排同批;在飞(assignee/open
PR)永不并,`Blocked-by:` 不派;完工查过期」, :370 「执行席 ⛔ 不并卡,疑重复挂 `pm:retriage`
写明哪两张同文件同机制;…」 | `SKILL.md` :223 (分诊唯一生产 `duplicate_of`), :224 (执行席误标 ⇒
`pm:retriage`), :366 (查重先按文件/机制); `core-rules.md` :137 (去重并卡 = 记账不升级) —
no core-rules line states the merge rule itself, so no twin |
| **4(i)** escalated card names its half | nothing: `SKILL.md` :454–:455
(在飞卡衍生三分 / sub-issue) and :471 (`Release:` 行点名已落项与余项去向) never required
the new card's face to say which half it carries | `SKILL.md` :458 (new)
「自在飞派发升级出的卡首行一句:本卡承哪一半、父卡留哪一半;缺此行不入队不入箱」 | `SKILL.md` :456–:457
(sub-issue inherits domain / priority; the one dispatch bypass), :471 |
| **4(ii)** ruled card re-enters only with `Prior rulings on this card:`
| `SKILL.md` :357 「决策箱勤务:落卡入箱时校验/补全四棱块与速读;…」 checked the 速读 and
four-facet block only; no intake refusal existed anywhere | `SKILL.md`
:357 (intake also checks the `Prior rulings on this card:` line), :358
(new) 「线程有 `Ruling:`/RULED 的卡再入箱,该行逐 id 各一句变化;缺行 ⇒ 拒入,`pm:retriage`
回立卡者」 | `SKILL.md` :340 (`Prior rulings read:` line at classification),
:733 (出决策箱须引裁决 id); `decision-analysis.md` :45; `dispatch-runbook.md`
:84 (`Ruling-ref:`); `state-machine.md` :40–:41 (who hangs and who
removes `pm:retriage`) |
| **5** first batch after five cards | `director.md` :40
「第一步:逐卡过一类自裁三判据;全立者录裁转工作态、只入收班追认表,⛔ 不呈批」 — read as 「screen the whole
inbox, then present」 | `director.md` :40 「首批读完前 ≤5 张同族卡即呈;一类自裁按批过,⛔
不先扫全箱,自裁者由下一候选补位」, :41 「取下五张只用便宜扫描:标签、assignee、PR 引用、速读首行;全文只读手上五张」, :42
「判据:开场标记→首批 ≤ 读五张;全立者录裁转工作态、只入收班追认表,⛔ 不呈批」 (the old :40 tail kept
verbatim) | `director.md` :44 「一次只开一批」 (pacing, not the pre-read); :23
(每批 5 张) |
| **8** same-holder duplicates | `SKILL.md` :223
「分诊座位唯一生产:…`duplicate_of`」 with no exception anywhere | `SKILL.md` :370
tail 「同 assignee 者自关后卡」 — the holding seat closes the later card as
`duplicate_of` itself, no `pm:retriage` round trip | :223 kept verbatim:
no 120-byte spelling of the exception fits on it (four variants measured
125–153 B); the exception sits beside the merge rule it widens |
## Paid for by retiring five second pointers and two restated lines —
net 0 per file
| retired | what it was | the rule still lives at |
|:--|:--|:--|
| `SKILL.md` :321 「`since` 读法与成本对价见 `references/dispatch-runbook.md`」 |
pointer, one of six to the same file | `dispatch-runbook.md`, still
pointed at from :384, :532, :588, :729 |
| `SKILL.md` :560 「云卡四课与接手协议增量见 `references/dispatch-runbook.md`」 |
pointer | `dispatch-runbook.md` :115 「## 云卡(`mode:cloud`)四课」, :143 「##
接手中断的 dev」; pointed at from :532 |
| `SKILL.md` :650 「os-regen 的陷阱与锚点禁令见 landing-operations A」 | pointer,
second to the same file | :637 「细则见 `references/landing-operations.md`」;
`os-dev.md` :197–:198 carry the trap |
| `SKILL.md` :657 「首次入队 flip 定点、MERGED 两读数、关键 PR 订阅与退订/归档细则见
landing-operations B」 | pointer, third to the same file | :637 |
| `SKILL.md` :771 「总监席不占 `domain:*`,永不认领 backlog、永不写码;章程见
`references/lanes/director.md`」 | restated verbatim + duplicate pointer
| `director.md` :19 (the rule); `SKILL.md` :57 and :675 (the pointer) |
| `director.md` :42 「一行回批即全链执行,裁后四件原子执行不再请示」 | restated |
`decision-analysis.md` :14 (⛔ 不为它另起请示轮), `SKILL.md` :728 (四件同笔);
`director.md` :46 points at decision-analysis |
| `director.md` :51 「代裁通道的置信门与人工地板见 SKILL.md 分诊座位职责,⛔ 不另抄」 | pointer |
`SKILL.md` :392–:399 (人工地板, 置信门), :770 (总监席是唯一裁决者) |
Clauses compressed inside a rewritten line, and where each now lives:
| clause | now covered by |
|:--|:--|
| `SKILL.md` :357 「语言按不变量」「子轮」 | :99 (中文只留四通道), :372 (低频子轮) |
| `SKILL.md` :367 「⛔ 不并排派发」 | :368 merge at first grading + :369 「在飞 …
`Blocked-by:` 不派」 + :370 (execution seat raises `pm:retriage`): two
same-finding cards can no longer be dispatched side by side |
| `SKILL.md` :368 「open 未认领 ⇒ 先并成一个派发入口」 | superseded by 「首触定级即并」 (:368)
and 「同族异缺陷 … 互链排同批」 (:369) — item 3 moves the merge from the dispatch
entry to first grading |
| `SKILL.md` :368 「已完成 ⇒ 卡可能过期」 | kept as 「完工查过期」 (:369) |
| `os-dev.md` :46 「由写它的人以外的人」→「他人」 · :48 「文档 nit」→「nit」 | same meaning,
21 B and 7 B shorter |
| `os-dev.md` :49 「席位 ACCEPT 读」 | `SKILL.md` :778–:779 (the seat's
ACCEPT disposition) |
| `core-rules.md` :87 「先发修复指令再跳过,不可派发」→「发修复指令不派」 | `SKILL.md` :355 (the
full rule) |
| `core-rules.md` :151 「核验对读同轮报告」→「对读同轮」 | `SKILL.md` :780 (unchanged) |
## Ceilings before / after (`node
scripts/pm/check-skill-line-ratchet.mjs`, green before and after)
| file | before | after | ceiling |
|:--|--:|--:|--:|
| `.claude/skills/pm-dispatch/SKILL.md` | 813 | 813 | 813 |
| `.claude/agents/os-dev.md` | 403 | 403 | 403 |
| `.claude/skills/pm-dispatch/references/core-rules.md` | 151 | 151 |
151 |
| `.claude/skills/pm-dispatch/references/lanes/director.md` | 72 | 72 |
72 |
| `.claude/skills/pm-dispatch/references/state-machine.md` | 42 | 42 |
42 (untouched) |
No ceiling raised, no cross-file move declared. Twin rule: a rule
changed in `SKILL.md` that has a `core-rules.md` twin changed there in
this PR (:87 for item 1, :151 for item 2); items 3, 4, 5, 8 have no
core-rules twin line, so none was added.
## Item 2's lock — measured, not written
- `.claude/settings.json` `permissions.deny` holds 17 `mcp__github__*`
write tools, including `issue_write` and `sub_issue_write` — the MCP
half of 「devs do not file」 is already mechanical (lock 1;
`check-settings-deny-roster.mjs` pins the roster).
- `permissions.allow` pre-approves `curl -sS -X POST …/issues/*/labels`
(labels) and no `POST …/issues` (create): the REST create is neither
allowed nor denied — it falls to the session's permission mode, not to a
rule.
- No hook inspects a curl target: of the five PreToolUse hooks only
`guard-main-checkout-bash.sh` mentions `curl`, as a write-redirection
shape, not a URL.
- `references/rest-channel.md` :41 declares `POST …/issues` a ✓ seat
channel (「建卡带标签 `POST .../issues`」) and the seats file cards through it;
a dev subagent runs inside the seat's session under the same
`settings.json`. A Bash deny rule on `POST …/issues` would refuse the
seat's own filing — exactly the conflict the claim anticipated — so **no
rule is added**. The report's `open_questions` carries the two
mechanisms that could bind the dev without the seat (an agent-scoped
PreToolUse hook declared in `os-dev.md` frontmatter; a guard branch
keyed on a subagent signal in the hook payload), both needing a
measurement of what the harness hands a subagent's hook, and both on the
human floor (新增必需 hook).
## Why `state-machine.md` is untouched
The claim listed it for item 4(ii). It is 42 / 42 on the ratchet
(mechanism assumption 4: the row exists), has no `needs-user-decision`
section, and its `pm:retriage` section already governs the refusal's
mechanics — :40 (挂标者 = 提出异议的席位, evidence + the ask in one stroke) and
:41 (摘标者 = 分诊 Routine, next fire). The intake duty the card itself names
(「落卡入箱时校验/补全」) lives at `SKILL.md` :357, so 4(ii) lands there. Nothing
in `state-machine.md` is a second pointer or a restated line worth
retiring to add a twin.
## Mechanism assumptions — each verified
1. **Tier.** `dispatch-gates --tier --repo objectstack-ai/objectstack`
on the five paths → MANDATORY, path-derived from `SKILL.md` and
`os-dev.md`; the register (`check-governed-merges.mjs` row
`claude-tree`) puts `.claude/**` in Tier S. `node
scripts/pm/check-governed-merges.mjs --pr N` runs after this PR opens;
its reading is in the report comment on #19340 (GOVERNED, exit 3, Tier S
expected).
2. **Serial.** At 2026-09-20T21:54Z the file lists of all 21 open PRs
were read: none touches the five files; only #19292 touches
`.claude/settings.json`, which this PR does not. `origin/main` moved by
one commit since the branch point (`57ceb9d`, `scripts/` only, no
`.claude/` path) — nothing to merge.
3. **Gates.** The line ratchet, the id-lint and the governed-prose pin
are all in the derived union and green (below). There is no token
ratchet over `.claude/**`: `scripts/check-skills-token-ratchet.mjs`
prices the published `skills/**` only; `.claude/**` is priced in lines
by `check-skill-line-ratchet.mjs`. Ceilings not raised.
4. **`state-machine.md` row.** Present at 42 — see above.
## Verification (head `a2665ce`)
Derived union — `node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` (no paths; change set 4 paths vs merge base
`23f1de0`, 48 changed lines vs the 5000 threshold: under) → 23 commands,
each exit captured before any pipe, reconciled with `--ran`: 「23 derived
famil(ies) accounted for — 23 run, 0 NOT-MEASURED (a DERIVED zero — all
23 recorded an exit code and none of them is 3)」.
```text
pnpm check:pm-skill-ratchet :: exit 0
pnpm check:pm-skill-id-lint :: exit 0
pnpm check:pm-governed-prose :: exit 0
pnpm check:pm-governed-merges :: exit 0
pnpm check:pm-expected-skips :: exit 0
pnpm check:skill-frame-sync :: exit 0
pnpm check:agent-model-declared :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:commit-card-trailers :: exit 0
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
pnpm check:agent-test-spelling :: exit 0
pnpm check:doc-authoring :: exit 0
pnpm check:gitlink-declared :: exit 0
pnpm check:watch-hint-literal :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:cross-package-test-inputs :: exit 0
node scripts/pm/check-governed-queue-guard.mjs --self-test :: exit 0
node scripts/pm/check-harness-current.mjs --self-test :: exit 0
pnpm check:pm-half-states :: exit 0
pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0
```
`check:doc-formula-expressions` first exited 3 (PREREQUISITE NOT MET —
`@objectstack/formula` and `@objectstack/lint` unbuilt; not a
measurement); both were built under `bash scripts/pm/os-verify-lock.sh`
(VERDICT command-exit 0, 4 tasks, cached) and the gate re-ran to exit 0.
The three named gates plus `check-nul-bytes` and
`check-agent-model-declared` were also run directly via `node` on the
working tree before the commit, exit 0 each. `pnpm
check:pm-dispatch-gates` (not in the derived union) runs detached with
its exit captured to a log; at PR open it stood at 1715 cases ✓ / 0 ✗
and still running — its final exit is in the report comment.
## 四维分析 — 每处措辞的取舍
- **实际业务需求** — 每一条都对应本场总监席实测到的成本:51 张全读后才呈第一批(第 5 项);5
张已裁卡以新速读重入决策箱、每张换来一次全线程重读与一句「维持原裁」(第 4(ii) 项);16 张裸 `finding` 积压超过运行手册
15 张告警线(第 1、2 项)。措辞只写机制与判据,不写故事;判据可核验(开场标记→首批 ≤ 读五张;线程有 `Ruling:` 而卡面缺行
⇒ 拒入)。
- **项目长远合理性** — 全部落成在位改写与退指针,不抬棘轮上限、不加文件、不加工作流;规则住在它的自然家(入箱检在 `SKILL.md`
:357 的决策箱勤务行,并卡规则在查重三行,总监节奏在章程 :40–:42),不另起一节。第 2 项的锁没有落:实测无规则拒 `POST
…/issues`,而 `settings.json` deny 会一并锁住席位自己的立卡通道 ——
加一条会破坏立卡的规则是「workaround」,故按裁决意图只落报告契约半边,机制半边作为待决问题带四轴上报。
- **防 AI 写错** — 报告契约从散文(`noted, not filed: …`)改成两个具名字段(`class: a|b|c` +
证据 / `carrier:`),缺字段的条目有确定去向(Acceptance
notes),席位处置是三选一的固定拼写;入箱拒入是机械判据(线程有 `Ruling:`/RULED 而卡面缺行),不靠席位记得去读线程 ——
这正是本场 5 张重入卡的失效形态。
- **创业阶段不扩散需求** — 未采纳的第 7、9 项与汇总卡、配额都没有被重新提出;第 1
项明确写「不进汇总卡、无配额」封住两条被拒的路。`state-machine.md` 不为一个已有归宿的规则新增一节。
## 维护者速读(草稿)
**改了什么** — 把您 2026-09-20 对立卡与并卡流程的裁定(「1 2 3 4 5 6 8」,总监席记录
5750077963)中的六项(第 6 项由 #19344
另落)逐条落进章程:立卡门槛反转(只立三类,且缺陷须今天可达、元数据陷阱须具名生产者;观察类 / 休眠 / 零拉动
不立卡、不进汇总卡、不设配额);dev 不立卡,报告每条带 `class:` + 证据或 `carrier:`,席位在 ACCEPT
逐条一行处置;分诊首触定级即并同文件同机制的卡,同族异缺陷互链排同批、在飞永不并,执行席只挂 `pm:retriage`;同 assignee
的重复由持有席自关;从在飞派发升级出的卡首行写明承哪一半;线程已有裁决的卡再入决策箱必须带 `Prior rulings on this
card:` 行,否则拒入;总监席读完前五张同族卡即呈首批,一类自裁按批过,排序只用便宜扫描。四个受棘轮文件全部净 0 行(813 / 403
/ 151 / 72),每条新规则以退掉一条重复指针或一条他处已原样陈述的行付账;`state-machine.md` 未动。
**为什么改** — 章程原文与已生效裁定相反或缺失:`director.md` :40 仍写「第一步:逐卡过一类自裁」(本场总监席因此读完
51 张卡才呈第一批);`SKILL.md` 没有「首触即并」「同持有自关」「Prior rulings on this
card」任何一句;`os-dev.md` 的报告契约没有 `class:` / `carrier:` 字段,且三行仍把「立单」写成 dev
的动作。每个席位每次 fire 都读这些文件,错一句就整队照错。
**风险与代价(含回滚)** — 纯文本改动,零代码、零工作流、零 settings;派生门禁 23 / 23 绿。代价是为了净 0 而退掉的
7 行(5 条第二指针、2
条他处原样陈述的规则)与重写行里压缩掉的几个短语,每一条都在上方表格里点名了现在住在哪一行;若您认为任一条不该退,恢复它是一行
revert,但要同时退另一行才能过棘轮。第 2 项的机械锁没有落:实测今天没有任何规则拒绝 dev 会话的 REST `POST
/issues`(MCP `issue_write` 已 deny;REST 建卡既不在 allow 也不在 deny),而在
`settings.json` 加 deny 会同时锁住席位自己的立卡通道,故作为待决问题上报而不硬加。
**席位意见** —(留空,由席位定稿)
**你要做的** — 本 PR 走 Tier S 席内复核落地,不需要您点击。唯一待您一字的是第 2 项机械锁的形态(报告
`open_questions`):A 以 `os-dev.md` frontmatter 的 agent 级 PreToolUse hook
只锁 dev 会话 / B 暂不加锁、只靠报告契约与 ACCEPT 处置 / C 其它。
## Acceptance notes
- noted, not filed: `Prior rulings read:` (tool-printed by
`check-prior-rulings.mjs`, ids only; `decision-analysis.md` :45) and the
ruled `Prior rulings on this card:` (hand-written, id + one sentence
each) are now two spellings for one fact on a card face; the tool could
print a stub of the second. 承接者: the skills seat (this lane), when a
card asks for it — no PR heads for `check-prior-rulings.mjs` today.
- noted, not filed: `SKILL.md` :223 still reads 「分诊座位唯一生产 …
`duplicate_of`」 with the item-8 exception only at :370; no 120-byte
spelling of the exception fits on :223 (four variants measured 125–153
B). 承接者: the next PR that touches :223.
- noted, not filed: `os-dev.md` :48 keeps 「未演练漂移」 while the seat-side
list (`SKILL.md` :351) says 「休眠」 — same class, two words. 承接者:无.
- noted, not filed: the record's 「Tier H — the maintainer merges by
hand」 for `.claude/**` is the superseded boundary; PR #19379 repairs the
two carriers still spelling it (out of scope here; #19379 remains open).
---
_Generated by [Claude
Code](https://claude.ai/code/session_017ETYWqMQD4qMtZzAGovWNi)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent fc1a790 commit be488ce
4 files changed
Lines changed: 24 additions & 24 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
46 | | - | |
| 45 | + | |
| 46 | + | |
47 | 47 | | |
48 | | - | |
49 | | - | |
50 | | - | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | | - | |
61 | | - | |
| 60 | + | |
| 61 | + | |
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
| 65 | + | |
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| |||
373 | 373 | | |
374 | 374 | | |
375 | 375 | | |
376 | | - | |
| 376 | + | |
377 | 377 | | |
378 | 378 | | |
379 | 379 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
318 | 318 | | |
319 | 319 | | |
320 | 320 | | |
321 | | - | |
322 | 321 | | |
323 | 322 | | |
324 | 323 | | |
| |||
349 | 348 | | |
350 | 349 | | |
351 | 350 | | |
| 351 | + | |
352 | 352 | | |
353 | 353 | | |
354 | 354 | | |
355 | 355 | | |
356 | 356 | | |
357 | | - | |
| 357 | + | |
| 358 | + | |
358 | 359 | | |
359 | 360 | | |
360 | 361 | | |
| |||
364 | 365 | | |
365 | 366 | | |
366 | 367 | | |
367 | | - | |
368 | | - | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
369 | 371 | | |
370 | 372 | | |
371 | 373 | | |
| |||
453 | 455 | | |
454 | 456 | | |
455 | 457 | | |
| 458 | + | |
456 | 459 | | |
457 | 460 | | |
458 | 461 | | |
| |||
557 | 560 | | |
558 | 561 | | |
559 | 562 | | |
560 | | - | |
561 | 563 | | |
562 | 564 | | |
563 | 565 | | |
| |||
647 | 649 | | |
648 | 650 | | |
649 | 651 | | |
650 | | - | |
651 | 652 | | |
652 | 653 | | |
653 | 654 | | |
654 | 655 | | |
655 | 656 | | |
656 | 657 | | |
657 | | - | |
658 | 658 | | |
659 | 659 | | |
660 | 660 | | |
| |||
768 | 768 | | |
769 | 769 | | |
770 | 770 | | |
771 | | - | |
772 | 771 | | |
773 | 772 | | |
774 | 773 | | |
775 | 774 | | |
776 | 775 | | |
777 | 776 | | |
778 | | - | |
779 | | - | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
780 | 780 | | |
781 | 781 | | |
782 | 782 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
84 | 84 | | |
85 | 85 | | |
86 | 86 | | |
87 | | - | |
| 87 | + | |
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
| |||
148 | 148 | | |
149 | 149 | | |
150 | 150 | | |
151 | | - | |
| 151 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
41 | 43 | | |
42 | | - | |
43 | 44 | | |
44 | 45 | | |
45 | 46 | | |
| |||
48 | 49 | | |
49 | 50 | | |
50 | 51 | | |
51 | | - | |
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
| |||
0 commit comments