@adamchanadam/cer-workflow 0.3.19 → 0.3.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +6 -6
- package/package.json +1 -1
- package/skills/cer-workflow/VERSION +1 -1
- package/skills/cer-workflow/references/core-runtime.md +5 -1
- package/skills/cer-workflow/references/uat.md +14 -0
- package/skills/cer-workflow/scripts/validate_cer_skill.py +41 -0
- package/skills/cer-workflow-en/VERSION +1 -1
- package/skills/cer-workflow-en/references/core-runtime.md +5 -1
- package/skills/cer-workflow-en/references/uat.md +14 -0
- package/skills/cer-workflow-en/scripts/validate_cer_skill.py +41 -0
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Adam Chan
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Adam Chan
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -10,9 +10,9 @@ In plain language: when you discover halfway through that the direction, constra
|
|
|
10
10
|
|
|
11
11
|
If you do not want to choose between ordinary chat, Goal, and CER up front, use `/CER-auto <task>` after installation. It first selects the minimum sufficient route: ordinary execution, Goal, CER Workflow, or blocked because authority, safety, or acceptance conditions are missing.
|
|
12
12
|
|
|
13
|
-
[Traditional Chinese README](https://github.com/Adamchanadam/cer-workflow/blob/v0.3.
|
|
13
|
+
[Traditional Chinese README](https://github.com/Adamchanadam/cer-workflow/blob/v0.3.20/README.md) | [GitHub repository](https://github.com/Adamchanadam/cer-workflow)
|
|
14
14
|
|
|
15
|
-

|
|
16
16
|
|
|
17
17
|
## Install
|
|
18
18
|
|
|
@@ -78,7 +78,7 @@ New users should start with `/CER-auto`. If it returns ordinary execution or Goa
|
|
|
78
78
|
|
|
79
79
|
When CER starts, the Controller first shows a startup card and a roadmap. The tasks in the left sidebar are named with C / E1 / R, so you can tell which task coordinates, which one writes, and which one reviews in read-only mode. The inline roadmap in the main chat shows the current stage, confirmed context, and the next checkpoint.
|
|
80
80
|
|
|
81
|
-

|
|
82
82
|
|
|
83
83
|
## Choose First
|
|
84
84
|
|
|
@@ -157,7 +157,7 @@ The Goal details above follow OpenAI's [Long-running work](https://learn.chatgpt
|
|
|
157
157
|
|
|
158
158
|
## CER Roles
|
|
159
159
|
|
|
160
|
-

|
|
161
161
|
|
|
162
162
|
**Controller (C): coordination and decisions**
|
|
163
163
|
|
|
@@ -183,7 +183,7 @@ Medium and large tasks sometimes need several kinds of preparation at once: find
|
|
|
183
183
|
|
|
184
184
|
Exploration Helpers only produce candidate material. They do not modify the project, replace the Executor or Reviewer, or declare the work complete. The Controller decides whether to start them based on task size, source clarity, and whether parallel preparation is actually useful. The complete conditions live in the [complete Exploration Helper rules](skills/cer-workflow-en/references/parallel-producers.md#activation-eligibility).
|
|
185
185
|
|
|
186
|
-

|
|
187
187
|
|
|
188
188
|
## Commands
|
|
189
189
|
|
|
@@ -220,7 +220,7 @@ When CER starts, it first confirms that the working tasks can return messages to
|
|
|
220
220
|
|
|
221
221
|
This package is a distribution wrapper for the included Skill packages. Public runtime behavior remains owned by the Skill files and their references.
|
|
222
222
|
|
|
223
|
-
Package version `0.3.
|
|
223
|
+
Package version `0.3.20` matches the included CER Workflow Skill runtime VERSION files. npm support is an installability and onboarding layer for future users. It does not change CER runtime behavior. Validator, package, and install checks do not by themselves prove manual UAT pass, token saving, or universal task quality.
|
|
224
224
|
|
|
225
225
|
Packaged surfaces:
|
|
226
226
|
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.3.
|
|
1
|
+
0.3.20
|
|
@@ -119,6 +119,8 @@ CER v1 接受自然語言和 slash command 兩種入口。slash command 是穩
|
|
|
119
119
|
|
|
120
120
|
通用任務前檢/層級對焦的唯一全域 owner 不在 CER Skill;本節只作 CER-specific mapping,不重定義該八項。C 將通用 `對準`/`失焦`/`受阻` 判斷映射到本節的 `已確認`、`可安全推定`、`關鍵缺失` 與 blocked 停點。複雜 ordinary/Goal/CER 工作法任務不得只因 route label 跳過必要層級對焦;簡單、單步、低風險且終點唯一的任務仍可內部通過,不強制顯示對焦卡。可見對焦卡、preflight、活的任務簡報或路線圖更新不計作成果進度、驗收證據或產品品質證明,也不改變 `/CER-auto` 四路線、不新增 CER role、schema、enum 或 slash command。
|
|
121
121
|
|
|
122
|
+
任務錨定可先於對焦判斷作只讀診斷:C 暫列父級成果、精確 target、本輪實際產出、驗收主張及可能混淆分支,只為找出必要真源與收窄問題。它不得被寫成 `對準`、成果進度、驗收證據或派工授權;若連錨點也不能從使用者要求、上下文或可核實權威路由確定,狀態就是 `受阻`/`未判定`,只可必要唯讀診斷或停問。
|
|
123
|
+
|
|
122
124
|
C 只判斷五項,每項標成 `已確認`、`可安全推定` 或 `關鍵缺失`:
|
|
123
125
|
|
|
124
126
|
- 終點:可觀察終點是甚麼,哪些明確不做。
|
|
@@ -132,6 +134,8 @@ C 只判斷五項,每項標成 `已確認`、`可安全推定` 或 `關鍵缺
|
|
|
132
134
|
<!-- cer-truth-source-intake-gate-owner -->
|
|
133
135
|
真源攝取門檻屬於 Controller preflight 的唯一 owner,不另建文件、角色或固定表格。對任何會實質影響本批成果、權限、驗收、owner 或受保護語意的完成條件,C 在派正式實作批次前必須能回答四項:誰擁有;誰實際使用;如何生效;甚麼反例能推翻。`誰擁有` 指使用者裁決、專案真源、規則、檔案或外部權威的來源錨點。`誰實際使用` 指 E1、R、交付物、安裝面、公開面、後續批次或使用者流程如何消費該條件。`如何生效` 指它如何改變本批派工、交付內容、權限、驗收或成果判定。`甚麼反例能推翻` 指哪個讀回、測試、Reviewer 問題或反例會令本批不能算成功。任一項答不到,或答案依賴未讀的必要真源,該條件就是 `關鍵缺失`;C 不得派正式實作批次,只能做必要唯讀診斷、收窄驗收範圍,或用 `🟡 使用者裁決` 停問。簡單、單步、低風險且終點唯一的任務可在 C 內部輕量通過,但前提是缺省答案不會實質改變結果;不得把此門檻擴成預設全文讀取、全 repo 審查或固定 Full Audit。
|
|
134
136
|
|
|
137
|
+
真源覆蓋先於可見 `對準`、正式計劃、寫入、派工或接納:C 只需覆蓋會實質推翻本輪目標、target、平台/工具行為、驗收、owner 或授權邊界的必要真源,並讀回可指出的錨點。任一必要 owner 未識別、必要真源未讀、讀回互相衝突,或只能用推測補足父子層關係時,保持 `關鍵缺失`/`blocked`,不得說 `對準`。覆蓋可用短摘要呈現,不要求固定覆蓋表;Mermaid 層級圖只在高複雜任務有助使用者理解且覆蓋已通過後作展示,不得用未讀或衝突內容補節點,也不得變成必填驗收。
|
|
138
|
+
|
|
135
139
|
對需要首次公開對齊或中途收斂的任務,活的任務簡報至少列明:已確認要求/排除、可安全推定、關鍵缺口、最新使用者回饋、本批凍結、下一個可觀察預覽或裁決點、與上一版相比改變了甚麼。C 只凍結下一個可安全執行批次;後續方向可保持暫定,待使用者看到中間成果、補資料或 R 提出反證後再更新。使用者回饋、真源讀回或 R 證據改變方向/範圍/交付形狀/驗收時,C 先更新活的任務簡報和路線圖差異,再派下一批;若已派出的批次受影響,按批次去重規則用新的 `batchId`/`payloadDigest` 重凍結或先 supersede 舊批次。
|
|
136
140
|
|
|
137
141
|
派工前,C 做一次短 QC:逐項核對 `已確認` 是否有來源、`可安全推定` 的反事實結果是否成立,以及本批凍結沒有把推測升格為 `已確認`。QC 失敗時,C 不得建立/復用 E1,也不得派實際批次;只能先做必要唯讀調查,或用 `🟡 使用者裁決` 最多問三個會實質改變結果的問題。
|
|
@@ -311,7 +315,7 @@ source corpus、候選工作內容或正式批次 payload,也不得要求 E1
|
|
|
311
315
|
violation,停止或重凍結,不得把後續相同 digest 的 duplicate ack 當作正常高效
|
|
312
316
|
通訊。若 assignee 無法從已授權真源自行讀取大型輸入,C 只在正式
|
|
313
317
|
`sendable_packet` 發送一次;過長或跨風險邊界的輸入按語義/風險切成多個正式批次。若 assignee 可從已授權真源讀取,派工包優先給來源座標、digest、必要摘錄
|
|
314
|
-
與禁止越界範圍,不重貼整份 corpus
|
|
318
|
+
與禁止越界範圍,不重貼整份 corpus。正式送出前,C 必須做 dispatch-size preflight;不得依賴固定公開字數/行數上限,而要按當前工具 schema、官方錯誤、保守本地預算及 assignee 可讀真源能力判斷 packet 是否可送。若 packet 過大、可能超出 context/訊息限制,或 send/create_thread 以 too_large/context_length/400/413 等同類錯誤拒收,C 只能回到 `draft_packet`,改用來源座標+digest+必要摘錄、已授權 artifact 路徑+hash,或按語義/風險單元拆成多個新正式批次;每個內容改動後的新批次必須有新 `batchId`、較高 `batchSeq` 及新 `payloadDigest`。C 不得為縮短而靜默刪除 scope、驗收、真源、停止條件或禁止事項,也不得用「見上文」、child final、passive read 或 user relay 補成正式送達。
|
|
315
319
|
|
|
316
320
|
長期、多批、高風險或非簡單正式實作批次的 `sendable_packet` 必須包含短小 `pre_dispatch_evidence`。它不是新真源、固定表格、背景監察或 Full Audit,只是把既有 Controller preflight、`outcome_anchor`/drift 判斷濃縮成 assignee 可讀回的派工前證據。內容至少列明:`outcome_anchor` 指向或摘要;本批改善的未完成條件與成功後可讀回成果差異;真源攝取四問摘要及來源錨點;已讀必要真源與仍缺真源的處置;本批工作線分類;若觸發 drift checkpoint,列其結論,否則說明未觸發理由。缺失、互相矛盾、依賴未讀必要真源,或只有「已判斷」但沒有可讀回摘要時,`sendable_packet` 不可送出,C 停在 `dispatch_blocked`。E1/R 收到缺少必要 `pre_dispatch_evidence` 的正式批次時,只可 direct-push 零寫入 blocker(例如 `BATCH_BLOCKED_MISSING_PRE_DISPATCH_EVIDENCE`)並停止,不得開始寫入、審閱或沿錯誤方向補完 C 的判斷。簡單、單步、低風險且終點唯一的任務可用短摘要通過,不強制大表格。
|
|
317
321
|
|
|
@@ -229,6 +229,10 @@ numbering 規則生效前已開始且無法可靠回推原 cycle number。cycle
|
|
|
229
229
|
- 新建 E1/R 的 create prompt 是零寫入 ready handshake;完整 corpus 或正式 batch
|
|
230
230
|
payload 只在收到 ready 後的 formal `sendable_packet` 一次送出,或按語義/風險
|
|
231
231
|
切成多個正式批次。
|
|
232
|
+
- 正式送出前,C 做 dispatch-size preflight;過大、可能超出 context/訊息限制,
|
|
233
|
+
或 send/create_thread 以 too_large/context_length/400/413 等同類錯誤拒收時,
|
|
234
|
+
C 回到 `draft_packet`,改用來源座標+digest+必要摘錄、已授權 artifact 路徑+hash,
|
|
235
|
+
或拆成多個新 `batchId`/較高 `batchSeq`/新 `payloadDigest` 的語義/風險批次。
|
|
232
236
|
- 任務禁止寫檔或外部副作用但仍使用 E1/R 時,create prompt 明示允許正式
|
|
233
237
|
direct-push 回傳通道;這是 CER 內部通訊,不是 project/source-root 寫入或外部
|
|
234
238
|
副作用。
|
|
@@ -296,6 +300,9 @@ numbering 規則生效前已開始且無法可靠回推原 cycle number。cycle
|
|
|
296
300
|
- C 的本批凍結和 E1/R 派工都保留三態、必要來源錨點和反事實結果;不得虛構使用者確認。
|
|
297
301
|
- 非簡單正式實作批次在派工前,C 能逐項回答真源攝取四問:誰擁有、誰實際使用、如何生效、甚麼反例能推翻;答案只作 Controller preflight 與自足派工摘要,不建立第二個規則 owner。
|
|
298
302
|
- C 答不到真源攝取四問任一項,或答案依賴未讀必要真源時,該完成條件是 `關鍵缺失`;C 不派正式實作批次,只做必要唯讀診斷、收窄驗收範圍或停問使用者。
|
|
303
|
+
- 任務錨定只作對焦前只讀診斷;C 可暫列父級成果、target、本輪產出、驗收主張及易混淆分支來找必要真源,但不得把錨定本身標為對準、成果進度或派工授權。
|
|
304
|
+
- 真源覆蓋未通過時,C 不得說對準;必要 owner 未識別、必要真源未讀、讀回衝突或父子層關係只能靠推測補足時,只能保持 `關鍵缺失`/`blocked`。
|
|
305
|
+
- Mermaid 層級圖只可在高複雜任務且真源覆蓋已通過後作展示,不得用未讀或衝突內容補節點,也不成為必填驗收。
|
|
299
306
|
- 長期、多批、高風險或非簡單正式實作批次的正式派工包含短小 `pre_dispatch_evidence`,可讀回 `outcome_anchor` 指向、目標未完成條件、成功後成果差異、真源攝取四問摘要及來源錨點、必要真源已讀/缺失處置、工作線分類,以及 drift checkpoint 結論或未觸發理由;缺失時 E1/R 只回傳零寫入 `BATCH_BLOCKED_MISSING_PRE_DISPATCH_EVIDENCE`。
|
|
300
307
|
- 複雜 ordinary/Goal/CER 工作法任務不得只因 route label 跳過任務前檢/層級對焦;若需要可見對焦卡,它只讀並在正式計劃、寫入、派工或接納前呈現,不派批次。
|
|
301
308
|
- 簡單、單步、低風險且終點唯一的任務仍可內部快速通過,不強制顯示對焦卡或建立活的任務簡報。
|
|
@@ -454,6 +461,9 @@ numbering 規則生效前已開始且無法可靠回推原 cycle number。cycle
|
|
|
454
461
|
- 本批凍結或派工把無來源推測寫成 `已確認`。
|
|
455
462
|
- 非簡單正式實作批次未回答誰擁有、誰實際使用、如何生效、甚麼反例能推翻,C 仍建立/復用 E1 或派實作批次。
|
|
456
463
|
- C 把真源攝取門檻擴成預設全文讀取、全 repo 審查、固定 Full Audit、第二份規則 owner 或固定表格流程。
|
|
464
|
+
- 任務錨定被當成對焦判決、成果進度、驗收證據或派工授權。
|
|
465
|
+
- 必要 owner 未識別、必要真源未讀或讀回衝突時,C 仍標為 `對準` 或派工。
|
|
466
|
+
- Mermaid 層級圖被規定為所有複雜任務必填,或用未讀/衝突內容補足節點。
|
|
457
467
|
- 長期、多批、高風險或非簡單正式實作批次的派工包缺 `pre_dispatch_evidence`,或只寫「C 已判斷」但無可讀回摘要,E1/R 仍開始寫入、審閱或補完 C 的判斷。
|
|
458
468
|
- 關鍵終點、權限或驗收缺失時,C 不停問而直接派工。
|
|
459
469
|
- 複雜 Goal 任務只因不是 full CER 而跳過任務前檢/層級對焦。
|
|
@@ -530,6 +540,10 @@ numbering 規則生效前已開始且無法可靠回推原 cycle number。cycle
|
|
|
530
540
|
合格 ready/result。
|
|
531
541
|
- 同一完整大型輸入在 create prompt 和 formal `sendable_packet` 被重複發送,並被
|
|
532
542
|
當成正常高效通訊。
|
|
543
|
+
- 正式 packet 過大或 send/create_thread 因長度拒收後,C 仍宣稱已 dispatch、
|
|
544
|
+
沿用舊 `batchId`/`payloadDigest`、或用 child final/passive read/user relay 補成送達。
|
|
545
|
+
- 為縮短 packet 靜默刪除 scope、驗收、真源、停止條件或禁止事項,或用「見上文」
|
|
546
|
+
要求 E1/R 重建上下文。
|
|
533
547
|
- 未證明送達鏈便開始工作。
|
|
534
548
|
- 只證明 title、fork 或單向 send,沒有 E1 direct-push ready/result。
|
|
535
549
|
- create 結果為逾時、錯誤或部分結果時,在有界權威對帳前立即重試。
|
|
@@ -327,6 +327,25 @@ TRUTH_SOURCE_INTAKE_UAT_REQUIREMENTS = {
|
|
|
327
327
|
"overwide_gate": "C 把真源攝取門檻擴成預設全文讀取、全 repo 審查、固定 Full Audit、第二份規則 owner 或固定表格流程",
|
|
328
328
|
}
|
|
329
329
|
|
|
330
|
+
TASK_ANCHOR_COVERAGE_RUNTIME_REQUIREMENTS = (
|
|
331
|
+
"任務錨定可先於對焦判斷作只讀診斷",
|
|
332
|
+
"不得被寫成 `對準`、成果進度、驗收證據或派工授權",
|
|
333
|
+
"真源覆蓋先於可見 `對準`、正式計劃、寫入、派工或接納",
|
|
334
|
+
"只需覆蓋會實質推翻本輪目標、target、平台/工具行為、驗收、owner 或授權邊界的必要真源",
|
|
335
|
+
"任一必要 owner 未識別、必要真源未讀、讀回互相衝突",
|
|
336
|
+
"覆蓋可用短摘要呈現,不要求固定覆蓋表",
|
|
337
|
+
"Mermaid 層級圖只在高複雜任務有助使用者理解且覆蓋已通過後作展示",
|
|
338
|
+
)
|
|
339
|
+
|
|
340
|
+
TASK_ANCHOR_COVERAGE_UAT_REQUIREMENTS = (
|
|
341
|
+
"任務錨定只作對焦前只讀診斷",
|
|
342
|
+
"真源覆蓋未通過時,C 不得說對準",
|
|
343
|
+
"Mermaid 層級圖只可在高複雜任務且真源覆蓋已通過後作展示",
|
|
344
|
+
"任務錨定被當成對焦判決、成果進度、驗收證據或派工授權",
|
|
345
|
+
"必要 owner 未識別、必要真源未讀或讀回衝突時,C 仍標為 `對準` 或派工",
|
|
346
|
+
"Mermaid 層級圖被規定為所有複雜任務必填",
|
|
347
|
+
)
|
|
348
|
+
|
|
330
349
|
CONTROLLER_CHALLENGE_UAT_REQUIREMENTS = {
|
|
331
350
|
"section": "## Controller 長任務挑戰情景",
|
|
332
351
|
"measurable_endpoint": "欠缺可量度或可讀回的終點",
|
|
@@ -368,6 +387,12 @@ SENDABLE_PACKET_REQUIREMENTS = {
|
|
|
368
387
|
"create_prompt_no_full_payload": "不得在 create prompt 放入完整 source corpus、候選工作內容或正式批次 payload",
|
|
369
388
|
"large_payload_once": "C 只在正式 `sendable_packet` 發送一次",
|
|
370
389
|
"large_payload_split": "過長或跨風險邊界的輸入按語義/風險切成多個正式批次",
|
|
390
|
+
"dispatch_size_preflight": "正式送出前,C 必須做 dispatch-size preflight",
|
|
391
|
+
"no_fixed_public_limit": "不得依賴固定公開字數/行數上限",
|
|
392
|
+
"length_rejection_recovery": "send/create_thread 以 too_large/context_length/400/413 等同類錯誤拒收",
|
|
393
|
+
"source_artifact_split": "改用來源座標+digest+必要摘錄、已授權 artifact 路徑+hash",
|
|
394
|
+
"new_identity_after_split": "每個內容改動後的新批次必須有新 `batchId`、較高 `batchSeq` 及新 `payloadDigest`",
|
|
395
|
+
"no_silent_trimming": "不得為縮短而靜默刪除 scope、驗收、真源、停止條件或禁止事項",
|
|
371
396
|
"pre_dispatch_evidence": "長期、多批、高風險或非簡單正式實作批次的 `sendable_packet` 必須包含短小 `pre_dispatch_evidence`",
|
|
372
397
|
"pre_dispatch_not_new_owner": "它不是新真源、固定表格、背景監察或 Full Audit",
|
|
373
398
|
"pre_dispatch_fields": "內容至少列明:`outcome_anchor` 指向或摘要;本批改善的未完成條件與成功後可讀回成果差異;真源攝取四問摘要及來源錨點;已讀必要真源與仍缺真源的處置;本批工作線分類;若觸發 drift checkpoint,列其結論,否則說明未觸發理由",
|
|
@@ -387,6 +412,11 @@ SENDABLE_PACKET_UAT_REQUIREMENTS = {
|
|
|
387
412
|
"create_prompt_payload": "新建 E1/R create prompt 包含完整 source corpus、候選工作內容或正式批次",
|
|
388
413
|
"internal_return_channel_forbidden": "派工包同時要求 direct-push,又把正式 direct-push 回傳通道當成被禁止外部",
|
|
389
414
|
"double_large_payload": "同一完整大型輸入在 create prompt 和 formal `sendable_packet` 被重複發送",
|
|
415
|
+
"dispatch_size_preflight": "正式送出前,C 做 dispatch-size preflight",
|
|
416
|
+
"length_rejected_draft": "send/create_thread 以 too_large/context_length/400/413 等同類錯誤拒收時",
|
|
417
|
+
"source_artifact_split": "改用來源座標+digest+必要摘錄、已授權 artifact 路徑+hash",
|
|
418
|
+
"oversize_false_dispatch": "正式 packet 過大或 send/create_thread 因長度拒收後,C 仍宣稱已 dispatch",
|
|
419
|
+
"silent_trim": "為縮短 packet 靜默刪除 scope、驗收、真源、停止條件或禁止事項",
|
|
390
420
|
"relative_identity": "正式派工用 `同一 E1`/`上述 E1`/`下一個序號` 等相對說法",
|
|
391
421
|
"hostid_hard_required": "Controller 仍硬性要求 `hostId`",
|
|
392
422
|
"hostid_inferred": "由 `local`、title、sessionId、threadId 形狀或錯誤訊息推導 hostId",
|
|
@@ -400,6 +430,11 @@ SENDABLE_PACKET_FORBIDDEN = {
|
|
|
400
430
|
"placeholder_allowed": "正式可送出的派工包可以保留 `<...>` 佔位符",
|
|
401
431
|
"create_prompt_full_payload": "create prompt 可包含完整 source corpus 或正式批次 payload",
|
|
402
432
|
"double_send_large_payload": "C 可在 create prompt 和正式 `sendable_packet` 重複發送同一完整大型輸入",
|
|
433
|
+
"fixed_public_limit": "固定公開字數/行數上限足以判定所有 Codex thread 訊息可送",
|
|
434
|
+
"oversize_dispatch_claim": "send/create_thread 因長度拒收後仍可宣稱已 dispatch",
|
|
435
|
+
"silent_trim_allowed": "為縮短 packet 可靜默刪除 scope、驗收、真源、停止條件或禁止事項",
|
|
436
|
+
"reuse_identity_after_split": "過長內容拆分後可沿用舊 `batchId`/`payloadDigest`",
|
|
437
|
+
"see_above_delivery": "可用「見上文」、child final、passive read 或 user relay 補成正式送達",
|
|
403
438
|
"relative_identity_allowed": "`同一 E1`/`上述 E1`/`下一個序號` 可作為正式派工身份",
|
|
404
439
|
"hostid_always_required": "正式派工一律必須填入 `hostId`,即使當前工具 schema 只要求 `threadId`",
|
|
405
440
|
"sessionid_infers_hostid": "可由 sessionId、title、`local` 或錯誤訊息推導 hostId 後繼續",
|
|
@@ -1011,6 +1046,9 @@ def validate_texts(root: Path, texts: dict[str, str]) -> list[str]:
|
|
|
1011
1046
|
for label, required in TRUTH_SOURCE_INTAKE_REQUIREMENTS.items():
|
|
1012
1047
|
if required not in preflight_owner:
|
|
1013
1048
|
findings.append(f"truth-source intake owner missing {label}")
|
|
1049
|
+
for index, required in enumerate(TASK_ANCHOR_COVERAGE_RUNTIME_REQUIREMENTS):
|
|
1050
|
+
if required not in preflight_owner:
|
|
1051
|
+
findings.append(f"task-anchor coverage runtime missing requirement_{index}")
|
|
1014
1052
|
unexpected_failure_match = re.search(
|
|
1015
1053
|
r"^## 執行閉環[ \t]*\n([\s\S]*?)(?=^## |\Z)", core, re.MULTILINE
|
|
1016
1054
|
)
|
|
@@ -1081,6 +1119,9 @@ def validate_texts(root: Path, texts: dict[str, str]) -> list[str]:
|
|
|
1081
1119
|
for label, required in TASK_PREFLIGHT_UAT_REQUIREMENTS.items():
|
|
1082
1120
|
if required not in uat:
|
|
1083
1121
|
findings.append(f"uat.md missing task-preflight counterexample {label}")
|
|
1122
|
+
for index, required in enumerate(TASK_ANCHOR_COVERAGE_UAT_REQUIREMENTS):
|
|
1123
|
+
if required not in uat:
|
|
1124
|
+
findings.append(f"uat.md missing task-anchor coverage counterexample_{index}")
|
|
1084
1125
|
for label, forbidden in TASK_PREFLIGHT_FORBIDDEN.items():
|
|
1085
1126
|
if forbidden in normalized_markdown:
|
|
1086
1127
|
findings.append(f"task-preflight fixed contradiction present {label}")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.3.
|
|
1
|
+
0.3.20
|
|
@@ -118,6 +118,8 @@ Before creating this cycle's E1, reusing the existing E1 in the same cycle, or d
|
|
|
118
118
|
|
|
119
119
|
The sole general owner for task preflight / layer focus is not the CER Skill; this section is only the CER-specific mapping and must not redefine the eight items. C maps the user-facing `aligned` / `misaligned` / `blocked` judgment to this section's `confirmed`, `safe inference`, `critical missing`, and blocked checkpoints. Complex ordinary, Goal, and CER Workflow tasks must not skip needed layer focus merely because of their route label; simple one-step low-risk work with one clear endpoint may still pass internally and must not be forced to show a focus card. A visible focus card, preflight, living task brief, or roadmap update is not outcome progress, acceptance evidence, or product-quality proof, and it must not change the four `/CER-auto` routes or add a CER role, schema, enum, or slash command.
|
|
120
120
|
|
|
121
|
+
Task anchoring may happen before the focus judgment as read-only diagnosis: C tentatively lists the parent outcome, exact target, this round's actual output, acceptance claim, and easily confused branches only to discover required sources and narrow the problem. It must not be treated as `aligned`, outcome progress, acceptance evidence, or dispatch authorization; if those anchors cannot be determined from the user request, context, or verifiable authority route, the state is `blocked` / `undetermined`, and C may only perform necessary read-only diagnosis or stop for user input.
|
|
122
|
+
|
|
121
123
|
C judges only five items, each marked `confirmed`, `safe inference`, or `critical missing`:
|
|
122
124
|
|
|
123
125
|
- Endpoint: what observable endpoint exists, and what is explicitly out of scope.
|
|
@@ -131,6 +133,8 @@ The three states have evidence boundaries. `confirmed` may come only from an exp
|
|
|
131
133
|
<!-- cer-truth-source-intake-gate-owner -->
|
|
132
134
|
The truth-source intake gate is the sole owner inside Controller preflight; do not create another document, role, or fixed table for it. For any completion condition that could materially affect this batch's outcome, permissions, acceptance, owner, or protected meaning, C must answer four items before dispatching a formal implementation batch: who owns it; who actually uses it; how it takes effect; and what counterexample can disprove it. `Who owns it` means the source anchor in a user decision, project source of truth, rule, file, or external authority. `Who actually uses it` means how E1, R, the deliverable, install surface, public surface, later batch, or user flow consumes that condition. `How it takes effect` means how it changes this batch's dispatch, deliverable content, permissions, acceptance, or outcome judgment. `What counterexample can disprove it` means the readback, test, Reviewer question, or counterexample that would make this batch unable to count as successful. If any item cannot be answered, or if the answer depends on a required source C has not read, the condition is `critical missing`; C must not dispatch a formal implementation batch and may only perform necessary read-only diagnosis, narrow the acceptance scope, or use a `🟡 User decision` stop. Simple, one-step, low-risk work with one clear endpoint may pass this gate internally, but only when omitted answers would not materially change the result. Do not expand this gate into default full-text ingestion, whole-repo review, or fixed Full Audit.
|
|
133
135
|
|
|
136
|
+
Truth-source coverage precedes any visible `aligned` judgment, formal plan, write, dispatch, or acceptance: C only needs to cover required sources that could materially overturn this round's goal, target, platform/tool behavior, acceptance, owner, or authorization boundary, and must read back citeable anchors. If any required owner is unidentified, any required source is unread, readbacks conflict, or parent/child layer relationships can only be filled by inference, the state remains `critical missing` / `blocked`; C must not say `aligned`. Coverage may be presented as a short summary and must not require a fixed coverage table; a Mermaid layer map is only optional display for high-complexity work after coverage has passed, must not fill nodes from unread or conflicting material, and must not become mandatory acceptance.
|
|
137
|
+
|
|
134
138
|
For work that needs first public alignment or mid-course convergence, the living task brief lists at least: confirmed requirements/exclusions, safe inferences, critical gaps, latest user feedback, current batch freeze, next observable preview or decision point, and what changed from the previous version. C freezes only the next safely executable batch. Later direction may stay provisional until the user sees an intermediate result, adds information, or R produces contrary evidence. When user feedback, source readback, or R evidence changes direction, scope, deliverable shape, or acceptance, C first updates the living task brief and roadmap delta before dispatching the next batch. If an already-dispatched batch is affected, C refreezes with a new `batchId`/`payloadDigest` or supersedes the old batch first under the batch-deduplication rules.
|
|
135
139
|
|
|
136
140
|
Before dispatch, C performs one short QC pass: check that every `confirmed` item has a source, that every `safe inference` passes the counterfactual result, and that the current batch freeze has not promoted an assumption into `confirmed`. If QC fails, C must not create/reuse E1 or dispatch real work. C may only perform necessary read-only investigation, or use a `🟡 User decision` stop with at most three questions that would materially change the result.
|
|
@@ -377,7 +381,7 @@ normal efficient communication. If the assignee cannot read the large input from
|
|
|
377
381
|
C sends it exactly once in the formal `sendable_packet`; inputs that are too long or cross risk
|
|
378
382
|
boundaries are split into multiple formal batches by semantic/risk unit. If the assignee can read
|
|
379
383
|
from an authorized source of truth, the dispatch packet prefers source coordinates, digest,
|
|
380
|
-
necessary excerpts, and no-go boundaries rather than repasting the entire corpus.
|
|
384
|
+
necessary excerpts, and no-go boundaries rather than repasting the entire corpus. Before sending, C must run a dispatch-size preflight; it must not rely on a fixed public word/line limit, and instead judges sendability from the active tool schema, official errors, a conservative local budget, and whether the assignee can read authorized sources. If the packet is oversized, may exceed context/message limits, or send/create_thread rejects it with too_large/context_length/400/413 or an equivalent length failure, C may only return to `draft_packet`, switch to source coordinates plus digest plus required excerpts, an authorized artifact path plus hash, or split the work into multiple new formal batches by semantic/risk unit. Every content-changing new batch must have a new `batchId`, higher `batchSeq`, and new `payloadDigest`. C must not silently delete scope, acceptance, sources, stop conditions, or no-go boundaries to make the packet shorter, and must not use "see above", child finals, passive reads, or user relays to complete formal delivery.
|
|
381
385
|
|
|
382
386
|
A `sendable_packet` for long-running, multi-batch, high-risk, or non-simple formal implementation work must include a compact `pre_dispatch_evidence` block. It is not a new source of truth, fixed form, background monitor, or Full Audit; it only makes C's existing Controller-preflight and `outcome_anchor`/drift judgments readable to the assignee. It includes at least: an `outcome_anchor` pointer or summary; the unfinished condition this batch improves and the readable outcome difference success should create; the truth-source intake four-question summary with source anchors; required sources read and the disposition of remaining unknowns; work-lane classification; and, when a drift checkpoint trigger exists, the checkpoint conclusion, or why no trigger applies. If it is missing, contradictory, depends on unread required sources, or merely says judgment was done without readable support, the packet is not sendable and C stays at `dispatch_blocked`. If E1/R receives a formal batch without required `pre_dispatch_evidence`, it must direct-push a zero-write blocker such as `BATCH_BLOCKED_MISSING_PRE_DISPATCH_EVIDENCE` and stop; it must not write, review, or fill in C's missing judgment. Simple, one-step, low-risk work with one clear endpoint may pass with a short summary and must not be forced into a large form.
|
|
383
387
|
|
|
@@ -272,6 +272,10 @@ cycle label or guess a number.
|
|
|
272
272
|
- The create prompt for a new E1/R is a zero-write ready handshake; a complete corpus or formal
|
|
273
273
|
batch payload is sent exactly once in the formal `sendable_packet` after ready, or split into
|
|
274
274
|
multiple formal batches by semantic/risk unit.
|
|
275
|
+
- Before sending, C runs dispatch-size preflight; when the packet is oversized, may exceed
|
|
276
|
+
context/message limits, or send/create_thread rejects it with too_large/context_length/400/413
|
|
277
|
+
or an equivalent length failure, C returns to `draft_packet` and uses source coordinates plus digest plus required excerpts, an authorized artifact path plus hash, or multiple new
|
|
278
|
+
semantic/risk batches with new `batchId`, higher `batchSeq`, and new `payloadDigest`.
|
|
275
279
|
- When a task forbids file writes or external side effects but still uses E1/R, the create prompt
|
|
276
280
|
explicitly permits the formal direct-push return channel; this is CER internal communication, not
|
|
277
281
|
a project/source-root write or external side effect.
|
|
@@ -354,6 +358,9 @@ cycle label or guess a number.
|
|
|
354
358
|
- C's current batch freeze and E1/R dispatches preserve the three states, required source anchors, and counterfactual results. They must not invent user confirmation.
|
|
355
359
|
- Before a non-simple formal implementation batch, C can answer each truth-source intake question: who owns it, who actually uses it, how it takes effect, and what counterexample can disprove it. The answers are only a Controller preflight and self-contained-dispatch summary, not a second rule owner.
|
|
356
360
|
- If C cannot answer any truth-source intake question, or if an answer depends on an unread required source, that completion condition is `critical missing`. C does not dispatch a formal implementation batch and only performs necessary read-only diagnosis, narrows the acceptance scope, or stops for user decision.
|
|
361
|
+
- Task anchoring is read-only diagnosis before the focus judgment; C may tentatively list the parent outcome, target, this-round output, acceptance claim, and easily confused branches to find required sources, but must not treat anchoring itself as aligned, outcome progress, or dispatch authorization.
|
|
362
|
+
- When truth-source coverage has not passed, C must not say aligned; an unidentified required owner, unread required source, conflicting readback, or parent/child layer relation filled only by inference stays `critical missing` / `blocked`.
|
|
363
|
+
- A Mermaid layer map is only optional display for high-complexity work after truth-source coverage has passed; it must not fill nodes from unread or conflicting content and must not become mandatory acceptance.
|
|
357
364
|
- A formal packet for long-running, multi-batch, high-risk, or non-simple formal implementation work includes compact `pre_dispatch_evidence` that reads back the `outcome_anchor` pointer, target unfinished condition, expected outcome difference, truth-source intake four-question summary with source anchors, required-source read/unknown disposition, work-lane classification, and drift checkpoint conclusion or no-trigger reason; if it is missing, E1/R only returns a zero-write `BATCH_BLOCKED_MISSING_PRE_DISPATCH_EVIDENCE`.
|
|
358
365
|
- Complex ordinary, Goal, and CER Workflow tasks must not skip task preflight / layer focus merely because of their route label. When a visible focus card is needed, it is read-only and appears before formal planning, writing, dispatch, or acceptance; it does not dispatch a batch.
|
|
359
366
|
- Simple one-step low-risk work with one clear endpoint may still pass through a fast internal check and must not be forced to show a focus card or create a living task brief.
|
|
@@ -535,6 +542,9 @@ These scenarios only test the unexpected-failure gate in
|
|
|
535
542
|
- The current batch freeze or dispatch writes an unsupported assumption as `confirmed`.
|
|
536
543
|
- A non-simple formal implementation batch has not answered who owns it, who actually uses it, how it takes effect, and what counterexample can disprove it, but C still creates/reuses E1 or dispatches the implementation batch.
|
|
537
544
|
- C expands the truth-source intake gate into default full-text ingestion, whole-repo review, fixed Full Audit, a second rule owner, or a fixed form workflow.
|
|
545
|
+
- Task anchoring is treated as a focus judgment, outcome progress, acceptance evidence, or dispatch authorization.
|
|
546
|
+
- A required owner is unidentified, a required source is unread, or readbacks conflict, but C still marks `aligned` or dispatches.
|
|
547
|
+
- A Mermaid layer map is required for all complex tasks, or fills nodes from unread/conflicting content.
|
|
538
548
|
- A long-running, multi-batch, high-risk, or non-simple formal implementation packet lacks `pre_dispatch_evidence`, or only says "C already judged" without readable support, and E1/R still writes, reviews, or fills in C's missing judgment.
|
|
539
549
|
- C dispatches instead of stopping when critical endpoint, permission, or acceptance information is missing.
|
|
540
550
|
- A complex Goal task skips task preflight / layer focus only because it is not full CER.
|
|
@@ -619,6 +629,10 @@ These scenarios only test the unexpected-failure gate in
|
|
|
619
629
|
user relay as qualifying ready/result.
|
|
620
630
|
- The same complete large input is sent in both the create prompt and formal `sendable_packet`,
|
|
621
631
|
and treated as normal efficient communication.
|
|
632
|
+
- After an oversized packet or send/create_thread length rejection, C still claims dispatch,
|
|
633
|
+
reuses the old `batchId`/`payloadDigest`, or completes delivery through a child final, passive
|
|
634
|
+
read, or user relay.
|
|
635
|
+
- To shorten the packet, C silently deletes scope, acceptance, sources, stop conditions, or no-go boundaries, or uses "see above" and asks E1/R to reconstruct context.
|
|
622
636
|
- Work starts before the delivery chain is proven.
|
|
623
637
|
- Only title, fork, or one-way send is proven, without E1 `ready/result` direct-pushes.
|
|
624
638
|
- An ambiguous create timeout, error, or partial result is retried before bounded authoritative
|
|
@@ -327,6 +327,25 @@ TRUTH_SOURCE_INTAKE_UAT_REQUIREMENTS = {
|
|
|
327
327
|
"overwide_gate": "C expands the truth-source intake gate into default full-text ingestion, whole-repo review, fixed Full Audit, a second rule owner, or a fixed form workflow",
|
|
328
328
|
}
|
|
329
329
|
|
|
330
|
+
TASK_ANCHOR_COVERAGE_RUNTIME_REQUIREMENTS = (
|
|
331
|
+
"Task anchoring may happen before the focus judgment as read-only diagnosis",
|
|
332
|
+
"must not be treated as `aligned`, outcome progress, acceptance evidence, or dispatch authorization",
|
|
333
|
+
"Truth-source coverage precedes any visible `aligned` judgment, formal plan, write, dispatch, or acceptance",
|
|
334
|
+
"only needs to cover required sources that could materially overturn this round's goal, target, platform/tool behavior, acceptance, owner, or authorization boundary",
|
|
335
|
+
"any required owner is unidentified, any required source is unread, readbacks conflict",
|
|
336
|
+
"Coverage may be presented as a short summary and must not require a fixed coverage table",
|
|
337
|
+
"a Mermaid layer map is only optional display for high-complexity work after coverage has passed",
|
|
338
|
+
)
|
|
339
|
+
|
|
340
|
+
TASK_ANCHOR_COVERAGE_UAT_REQUIREMENTS = (
|
|
341
|
+
"Task anchoring is read-only diagnosis before the focus judgment",
|
|
342
|
+
"When truth-source coverage has not passed, C must not say aligned",
|
|
343
|
+
"A Mermaid layer map is only optional display for high-complexity work after truth-source coverage has passed",
|
|
344
|
+
"Task anchoring is treated as a focus judgment, outcome progress, acceptance evidence, or dispatch authorization",
|
|
345
|
+
"A required owner is unidentified, a required source is unread, or readbacks conflict, but C still marks `aligned` or dispatches",
|
|
346
|
+
"A Mermaid layer map is required for all complex tasks",
|
|
347
|
+
)
|
|
348
|
+
|
|
330
349
|
CONTROLLER_CHALLENGE_UAT_REQUIREMENTS = {
|
|
331
350
|
"section": "## Controller Long-Task Challenge Scenarios",
|
|
332
351
|
"measurable_endpoint": "lacks a measurable or readable endpoint",
|
|
@@ -368,6 +387,12 @@ SENDABLE_PACKET_REQUIREMENTS = {
|
|
|
368
387
|
"create_prompt_no_full_payload": "Do not put the complete source corpus, candidate work content, or formal batch payload in the create prompt",
|
|
369
388
|
"large_payload_once": "C sends it exactly once in the formal `sendable_packet`",
|
|
370
389
|
"large_payload_split": "inputs that are too long or cross risk boundaries are split into multiple formal batches by semantic/risk unit",
|
|
390
|
+
"dispatch_size_preflight": "Before sending, C must run a dispatch-size preflight",
|
|
391
|
+
"no_fixed_public_limit": "must not rely on a fixed public word/line limit",
|
|
392
|
+
"length_rejection_recovery": "send/create_thread rejects it with too_large/context_length/400/413 or an equivalent length failure",
|
|
393
|
+
"source_artifact_split": "switch to source coordinates plus digest plus required excerpts, an authorized artifact path plus hash",
|
|
394
|
+
"new_identity_after_split": "Every content-changing new batch must have a new `batchId`, higher `batchSeq`, and new `payloadDigest`",
|
|
395
|
+
"no_silent_trimming": "must not silently delete scope, acceptance, sources, stop conditions, or no-go boundaries",
|
|
371
396
|
"pre_dispatch_evidence": "A `sendable_packet` for long-running, multi-batch, high-risk, or non-simple formal implementation work must include a compact `pre_dispatch_evidence` block",
|
|
372
397
|
"pre_dispatch_not_new_owner": "It is not a new source of truth, fixed form, background monitor, or Full Audit",
|
|
373
398
|
"pre_dispatch_fields": "It includes at least: an `outcome_anchor` pointer or summary; the unfinished condition this batch improves and the readable outcome difference success should create; the truth-source intake four-question summary with source anchors; required sources read and the disposition of remaining unknowns; work-lane classification; and, when a drift checkpoint trigger exists, the checkpoint conclusion, or why no trigger applies",
|
|
@@ -387,6 +412,11 @@ SENDABLE_PACKET_UAT_REQUIREMENTS = {
|
|
|
387
412
|
"create_prompt_payload": "A new E1/R create prompt contains the complete source corpus, candidate work content, or formal",
|
|
388
413
|
"internal_return_channel_forbidden": "A dispatch packet both requires direct-push and treats the formal direct-push return channel as a prohibited external side effect",
|
|
389
414
|
"double_large_payload": "The same complete large input is sent in both the create prompt and formal `sendable_packet`",
|
|
415
|
+
"dispatch_size_preflight": "Before sending, C runs dispatch-size preflight",
|
|
416
|
+
"length_rejected_draft": "send/create_thread rejects it with too_large/context_length/400/413",
|
|
417
|
+
"source_artifact_split": "uses source coordinates plus digest plus required excerpts, an authorized artifact path plus hash",
|
|
418
|
+
"oversize_false_dispatch": "After an oversized packet or send/create_thread length rejection, C still claims dispatch",
|
|
419
|
+
"silent_trim": "C silently deletes scope, acceptance, sources, stop conditions, or no-go boundaries",
|
|
390
420
|
"relative_identity": "A formal dispatch uses relative wording such as `same E1`, `the E1 above`, or `next sequence`",
|
|
391
421
|
"hostid_hard_required": "Controller still hard-requires `hostId`",
|
|
392
422
|
"hostid_inferred": "derives hostId from `local`, title, sessionId, threadId shape, or an error message",
|
|
@@ -400,6 +430,11 @@ SENDABLE_PACKET_FORBIDDEN = {
|
|
|
400
430
|
"placeholder_allowed": "A sendable dispatch may retain `<...>` placeholders",
|
|
401
431
|
"create_prompt_full_payload": "The create prompt may contain the complete source corpus or formal batch payload",
|
|
402
432
|
"double_send_large_payload": "C may send the same complete large input in both the create prompt and formal `sendable_packet`",
|
|
433
|
+
"fixed_public_limit": "A fixed public word/line limit is enough to judge every Codex thread message sendable",
|
|
434
|
+
"oversize_dispatch_claim": "After send/create_thread rejects a message for length, dispatch may still be claimed",
|
|
435
|
+
"silent_trim_allowed": "C may silently delete scope, acceptance, sources, stop conditions, or no-go boundaries to shorten a packet",
|
|
436
|
+
"reuse_identity_after_split": "An oversized content split may reuse the old `batchId` and `payloadDigest`",
|
|
437
|
+
"see_above_delivery": "C may use \"see above\", child finals, passive reads, or user relays to complete formal delivery",
|
|
403
438
|
"relative_identity_allowed": "`same E1`, `the E1 above`, or `next sequence` may be used as formal dispatch identity",
|
|
404
439
|
"hostid_always_required": "Every real dispatch must include `hostId` even when the active tool schema requires only `threadId`",
|
|
405
440
|
"sessionid_infers_hostid": "hostId may be derived from sessionId, title, `local`, or an error message before continuing",
|
|
@@ -1011,6 +1046,9 @@ def validate_texts(root: Path, texts: dict[str, str]) -> list[str]:
|
|
|
1011
1046
|
for label, required in TRUTH_SOURCE_INTAKE_REQUIREMENTS.items():
|
|
1012
1047
|
if required not in preflight_owner:
|
|
1013
1048
|
findings.append(f"truth-source intake owner missing {label}")
|
|
1049
|
+
for index, required in enumerate(TASK_ANCHOR_COVERAGE_RUNTIME_REQUIREMENTS):
|
|
1050
|
+
if required not in preflight_owner:
|
|
1051
|
+
findings.append(f"task-anchor coverage runtime missing requirement_{index}")
|
|
1014
1052
|
unexpected_failure_match = re.search(
|
|
1015
1053
|
r"^## Execution Loop[ \t]*\n([\s\S]*?)(?=^## |\Z)", core, re.MULTILINE
|
|
1016
1054
|
)
|
|
@@ -1083,6 +1121,9 @@ def validate_texts(root: Path, texts: dict[str, str]) -> list[str]:
|
|
|
1083
1121
|
for label, required in TASK_PREFLIGHT_UAT_REQUIREMENTS.items():
|
|
1084
1122
|
if required not in uat:
|
|
1085
1123
|
findings.append(f"uat.md missing task-preflight counterexample {label}")
|
|
1124
|
+
for index, required in enumerate(TASK_ANCHOR_COVERAGE_UAT_REQUIREMENTS):
|
|
1125
|
+
if required not in uat:
|
|
1126
|
+
findings.append(f"uat.md missing task-anchor coverage counterexample_{index}")
|
|
1086
1127
|
for label, forbidden in TASK_PREFLIGHT_FORBIDDEN.items():
|
|
1087
1128
|
if forbidden in normalized_markdown:
|
|
1088
1129
|
findings.append(f"task-preflight fixed contradiction present {label}")
|