@akagilnc/pi-workflow-roles 0.1.6076 → 0.1.6080

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.
@@ -2411,6 +2411,7 @@ var init_secretariat_contracts = __esm({
2411
2411
  "src/secretariat-contracts.ts"() {
2412
2412
  "use strict";
2413
2413
  init_terminating_infrastructure();
2414
+ init_review_submission();
2414
2415
  SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
2415
2416
  secretariatVerdictSchema = withTerminatingOutputDeclarations(
2416
2417
  Type14.Object(
@@ -2426,13 +2427,16 @@ var init_secretariat_contracts = __esm({
2426
2427
  }),
2427
2428
  evidence: Type14.Optional(Type14.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
2428
2429
  decisionGate: Type14.Unknown({
2429
- description: "\u672C\u8F6E\u9898\u76EE\uFF1A\u6BCF\u9898 question\u3001options\uFF08\u7A3F\u91CC\u505A\u6CD5\uFF0F\u53E6\u4E00\u505A\u6CD5\uFF09\u3001\u4E24\u8FB9\u4EE3\u4EF7\u3001\u5EFA\u8BAE\u3002\u539F\u6837\u7559\u5B58\u3002"
2430
+ description: "\u672C\u8F6E\u9898\u76EE\uFF1A\u6BCF\u9898 question\u3001options\uFF08\u7A3F\u91CC\u505A\u6CD5\uFF0F\u53E6\u4E00\u505A\u6CD5\uFF09\u3001\u4E24\u8FB9\u4EE3\u4EF7\u3001\u5EFA\u8BAE\u3002\u539F\u6837\u7559\u5B58\u3002\u5B58\u5E9F\u5C3A\u6807\u300C\u4E0D\u8981\u300D\u7684\u6761\u6B3E\u53E6\u5217\u4E3A\u965B\u4E0B\u62CD\u7684\u9898\uFF0C\u9644\u539F\u6587\uFF0C\u4E0D\u51FA\u7ED9\u5BB0\u76F8\u7B54\u3002"
2431
+ }),
2432
+ existence: Type14.Array(clauseExistenceRowSchema, {
2433
+ description: "\u5B58\u5E9F\u5C3A\uFF1A\u7A3F\u91CC\u6BCF\u6761\u8BA9\u673A\u5236\u5B58\u5728\u7684\u6761\u6B3E\u5404\u4E00\u884C\u2014\u2014\u660E\u5199\u673A\u5236\u7684\uFF0C\u548C\u53EA\u5199\u7ED3\u679C\u8981\u6C42\u3001\u73B0\u72B6\u4EE3\u7801\u6EE1\u8DB3\u4E0D\u4E86\u7684\uFF0C\u4E24\u7C7B\u90FD\u7B97\u2014\u2014\u5230 ADR\uFF0F\u7968\u9762\u70B9\u540D\u7684\u5E94\u7528\u6846\u67B6\u5B98\u65B9\u793A\u8303\u91CC\u770B\u4E0D\u5E26\u5B83\u65F6\u540C\u4E00\u5173\u5207\u600E\u4E48\u5904\u7406\u3002\u6709\u300C\u4E0D\u8981\u300D\u884C\uFF0C\u8FD9\u6761\u4E0D\u8FDB\u7968\u9762\uFF1A\u4E0A\u5448\u965B\u4E0B\uFF0C\u539F\u6587\u5217\u8FDB decisionGate\uFF1B\u5BB0\u76F8\u7B54\u4E0D\u4E86\u5B83\u3002\u7968\u9762\u5DF2\u5199\u3001\u524D\u8F6E\u5224\u8BCD\u8981\u6C42\u8FC7\u3001\u5BB0\u76F8\u7B54\u8FC7\u3001\u965B\u4E0B\u5BF9\u522B\u7684\u9898\u70B9\u8FC7\u5934\uFF0C\u90FD\u4E0D\u662F\u300C\u8981\u300D\u7684\u7406\u7531\u3002\u4E00\u6761\u6CA1\u6709\u4E3A\u7A7A\u6570\u7EC4\u3002"
2430
2434
  })
2431
2435
  },
2432
2436
  { additionalProperties: true }
2433
2437
  )
2434
2438
  );
2435
- secretariatVerdictSchema.required = [];
2439
+ secretariatVerdictSchema.required = ["existence"];
2436
2440
  }
2437
2441
  });
2438
2442
 
@@ -2281,6 +2281,7 @@ var init_secretariat_contracts = __esm({
2281
2281
  "src/secretariat-contracts.ts"() {
2282
2282
  "use strict";
2283
2283
  init_terminating_infrastructure();
2284
+ init_review_submission();
2284
2285
  SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
2285
2286
  secretariatVerdictSchema = withTerminatingOutputDeclarations(
2286
2287
  Type14.Object(
@@ -2296,13 +2297,16 @@ var init_secretariat_contracts = __esm({
2296
2297
  }),
2297
2298
  evidence: Type14.Optional(Type14.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
2298
2299
  decisionGate: Type14.Unknown({
2299
- description: "\u672C\u8F6E\u9898\u76EE\uFF1A\u6BCF\u9898 question\u3001options\uFF08\u7A3F\u91CC\u505A\u6CD5\uFF0F\u53E6\u4E00\u505A\u6CD5\uFF09\u3001\u4E24\u8FB9\u4EE3\u4EF7\u3001\u5EFA\u8BAE\u3002\u539F\u6837\u7559\u5B58\u3002"
2300
+ description: "\u672C\u8F6E\u9898\u76EE\uFF1A\u6BCF\u9898 question\u3001options\uFF08\u7A3F\u91CC\u505A\u6CD5\uFF0F\u53E6\u4E00\u505A\u6CD5\uFF09\u3001\u4E24\u8FB9\u4EE3\u4EF7\u3001\u5EFA\u8BAE\u3002\u539F\u6837\u7559\u5B58\u3002\u5B58\u5E9F\u5C3A\u6807\u300C\u4E0D\u8981\u300D\u7684\u6761\u6B3E\u53E6\u5217\u4E3A\u965B\u4E0B\u62CD\u7684\u9898\uFF0C\u9644\u539F\u6587\uFF0C\u4E0D\u51FA\u7ED9\u5BB0\u76F8\u7B54\u3002"
2301
+ }),
2302
+ existence: Type14.Array(clauseExistenceRowSchema, {
2303
+ description: "\u5B58\u5E9F\u5C3A\uFF1A\u7A3F\u91CC\u6BCF\u6761\u8BA9\u673A\u5236\u5B58\u5728\u7684\u6761\u6B3E\u5404\u4E00\u884C\u2014\u2014\u660E\u5199\u673A\u5236\u7684\uFF0C\u548C\u53EA\u5199\u7ED3\u679C\u8981\u6C42\u3001\u73B0\u72B6\u4EE3\u7801\u6EE1\u8DB3\u4E0D\u4E86\u7684\uFF0C\u4E24\u7C7B\u90FD\u7B97\u2014\u2014\u5230 ADR\uFF0F\u7968\u9762\u70B9\u540D\u7684\u5E94\u7528\u6846\u67B6\u5B98\u65B9\u793A\u8303\u91CC\u770B\u4E0D\u5E26\u5B83\u65F6\u540C\u4E00\u5173\u5207\u600E\u4E48\u5904\u7406\u3002\u6709\u300C\u4E0D\u8981\u300D\u884C\uFF0C\u8FD9\u6761\u4E0D\u8FDB\u7968\u9762\uFF1A\u4E0A\u5448\u965B\u4E0B\uFF0C\u539F\u6587\u5217\u8FDB decisionGate\uFF1B\u5BB0\u76F8\u7B54\u4E0D\u4E86\u5B83\u3002\u7968\u9762\u5DF2\u5199\u3001\u524D\u8F6E\u5224\u8BCD\u8981\u6C42\u8FC7\u3001\u5BB0\u76F8\u7B54\u8FC7\u3001\u965B\u4E0B\u5BF9\u522B\u7684\u9898\u70B9\u8FC7\u5934\uFF0C\u90FD\u4E0D\u662F\u300C\u8981\u300D\u7684\u7406\u7531\u3002\u4E00\u6761\u6CA1\u6709\u4E3A\u7A7A\u6570\u7EC4\u3002"
2300
2304
  })
2301
2305
  },
2302
2306
  { additionalProperties: true }
2303
2307
  )
2304
2308
  );
2305
- secretariatVerdictSchema.required = [];
2309
+ secretariatVerdictSchema.required = ["existence"];
2306
2310
  }
2307
2311
  });
2308
2312
 
@@ -9301,6 +9301,7 @@ var init_secretariat_contracts = __esm({
9301
9301
  "use strict";
9302
9302
  init_build();
9303
9303
  init_terminating_infrastructure();
9304
+ init_review_submission();
9304
9305
  SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
9305
9306
  secretariatVerdictSchema = withTerminatingOutputDeclarations(
9306
9307
  typebox_exports.Object(
@@ -9316,13 +9317,16 @@ var init_secretariat_contracts = __esm({
9316
9317
  }),
9317
9318
  evidence: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
9318
9319
  decisionGate: typebox_exports.Unknown({
9319
- description: "\u672C\u8F6E\u9898\u76EE\uFF1A\u6BCF\u9898 question\u3001options\uFF08\u7A3F\u91CC\u505A\u6CD5\uFF0F\u53E6\u4E00\u505A\u6CD5\uFF09\u3001\u4E24\u8FB9\u4EE3\u4EF7\u3001\u5EFA\u8BAE\u3002\u539F\u6837\u7559\u5B58\u3002"
9320
+ description: "\u672C\u8F6E\u9898\u76EE\uFF1A\u6BCF\u9898 question\u3001options\uFF08\u7A3F\u91CC\u505A\u6CD5\uFF0F\u53E6\u4E00\u505A\u6CD5\uFF09\u3001\u4E24\u8FB9\u4EE3\u4EF7\u3001\u5EFA\u8BAE\u3002\u539F\u6837\u7559\u5B58\u3002\u5B58\u5E9F\u5C3A\u6807\u300C\u4E0D\u8981\u300D\u7684\u6761\u6B3E\u53E6\u5217\u4E3A\u965B\u4E0B\u62CD\u7684\u9898\uFF0C\u9644\u539F\u6587\uFF0C\u4E0D\u51FA\u7ED9\u5BB0\u76F8\u7B54\u3002"
9321
+ }),
9322
+ existence: typebox_exports.Array(clauseExistenceRowSchema, {
9323
+ description: "\u5B58\u5E9F\u5C3A\uFF1A\u7A3F\u91CC\u6BCF\u6761\u8BA9\u673A\u5236\u5B58\u5728\u7684\u6761\u6B3E\u5404\u4E00\u884C\u2014\u2014\u660E\u5199\u673A\u5236\u7684\uFF0C\u548C\u53EA\u5199\u7ED3\u679C\u8981\u6C42\u3001\u73B0\u72B6\u4EE3\u7801\u6EE1\u8DB3\u4E0D\u4E86\u7684\uFF0C\u4E24\u7C7B\u90FD\u7B97\u2014\u2014\u5230 ADR\uFF0F\u7968\u9762\u70B9\u540D\u7684\u5E94\u7528\u6846\u67B6\u5B98\u65B9\u793A\u8303\u91CC\u770B\u4E0D\u5E26\u5B83\u65F6\u540C\u4E00\u5173\u5207\u600E\u4E48\u5904\u7406\u3002\u6709\u300C\u4E0D\u8981\u300D\u884C\uFF0C\u8FD9\u6761\u4E0D\u8FDB\u7968\u9762\uFF1A\u4E0A\u5448\u965B\u4E0B\uFF0C\u539F\u6587\u5217\u8FDB decisionGate\uFF1B\u5BB0\u76F8\u7B54\u4E0D\u4E86\u5B83\u3002\u7968\u9762\u5DF2\u5199\u3001\u524D\u8F6E\u5224\u8BCD\u8981\u6C42\u8FC7\u3001\u5BB0\u76F8\u7B54\u8FC7\u3001\u965B\u4E0B\u5BF9\u522B\u7684\u9898\u70B9\u8FC7\u5934\uFF0C\u90FD\u4E0D\u662F\u300C\u8981\u300D\u7684\u7406\u7531\u3002\u4E00\u6761\u6CA1\u6709\u4E3A\u7A7A\u6570\u7EC4\u3002"
9320
9324
  })
9321
9325
  },
9322
9326
  { additionalProperties: true }
9323
9327
  )
9324
9328
  );
9325
- secretariatVerdictSchema.required = [];
9329
+ secretariatVerdictSchema.required = ["existence"];
9326
9330
  }
9327
9331
  });
9328
9332
 
@@ -9787,6 +9787,7 @@ var init_secretariat_contracts = __esm({
9787
9787
  "use strict";
9788
9788
  init_build();
9789
9789
  init_terminating_infrastructure();
9790
+ init_review_submission();
9790
9791
  SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
9791
9792
  secretariatVerdictSchema = withTerminatingOutputDeclarations(
9792
9793
  typebox_exports.Object(
@@ -9802,13 +9803,16 @@ var init_secretariat_contracts = __esm({
9802
9803
  }),
9803
9804
  evidence: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
9804
9805
  decisionGate: typebox_exports.Unknown({
9805
- description: "\u672C\u8F6E\u9898\u76EE\uFF1A\u6BCF\u9898 question\u3001options\uFF08\u7A3F\u91CC\u505A\u6CD5\uFF0F\u53E6\u4E00\u505A\u6CD5\uFF09\u3001\u4E24\u8FB9\u4EE3\u4EF7\u3001\u5EFA\u8BAE\u3002\u539F\u6837\u7559\u5B58\u3002"
9806
+ description: "\u672C\u8F6E\u9898\u76EE\uFF1A\u6BCF\u9898 question\u3001options\uFF08\u7A3F\u91CC\u505A\u6CD5\uFF0F\u53E6\u4E00\u505A\u6CD5\uFF09\u3001\u4E24\u8FB9\u4EE3\u4EF7\u3001\u5EFA\u8BAE\u3002\u539F\u6837\u7559\u5B58\u3002\u5B58\u5E9F\u5C3A\u6807\u300C\u4E0D\u8981\u300D\u7684\u6761\u6B3E\u53E6\u5217\u4E3A\u965B\u4E0B\u62CD\u7684\u9898\uFF0C\u9644\u539F\u6587\uFF0C\u4E0D\u51FA\u7ED9\u5BB0\u76F8\u7B54\u3002"
9807
+ }),
9808
+ existence: typebox_exports.Array(clauseExistenceRowSchema, {
9809
+ description: "\u5B58\u5E9F\u5C3A\uFF1A\u7A3F\u91CC\u6BCF\u6761\u8BA9\u673A\u5236\u5B58\u5728\u7684\u6761\u6B3E\u5404\u4E00\u884C\u2014\u2014\u660E\u5199\u673A\u5236\u7684\uFF0C\u548C\u53EA\u5199\u7ED3\u679C\u8981\u6C42\u3001\u73B0\u72B6\u4EE3\u7801\u6EE1\u8DB3\u4E0D\u4E86\u7684\uFF0C\u4E24\u7C7B\u90FD\u7B97\u2014\u2014\u5230 ADR\uFF0F\u7968\u9762\u70B9\u540D\u7684\u5E94\u7528\u6846\u67B6\u5B98\u65B9\u793A\u8303\u91CC\u770B\u4E0D\u5E26\u5B83\u65F6\u540C\u4E00\u5173\u5207\u600E\u4E48\u5904\u7406\u3002\u6709\u300C\u4E0D\u8981\u300D\u884C\uFF0C\u8FD9\u6761\u4E0D\u8FDB\u7968\u9762\uFF1A\u4E0A\u5448\u965B\u4E0B\uFF0C\u539F\u6587\u5217\u8FDB decisionGate\uFF1B\u5BB0\u76F8\u7B54\u4E0D\u4E86\u5B83\u3002\u7968\u9762\u5DF2\u5199\u3001\u524D\u8F6E\u5224\u8BCD\u8981\u6C42\u8FC7\u3001\u5BB0\u76F8\u7B54\u8FC7\u3001\u965B\u4E0B\u5BF9\u522B\u7684\u9898\u70B9\u8FC7\u5934\uFF0C\u90FD\u4E0D\u662F\u300C\u8981\u300D\u7684\u7406\u7531\u3002\u4E00\u6761\u6CA1\u6709\u4E3A\u7A7A\u6570\u7EC4\u3002"
9806
9810
  })
9807
9811
  },
9808
9812
  { additionalProperties: true }
9809
9813
  )
9810
9814
  );
9811
- secretariatVerdictSchema.required = [];
9815
+ secretariatVerdictSchema.required = ["existence"];
9812
9816
  }
9813
9817
  });
9814
9818
 
@@ -1,5 +1,6 @@
1
1
  import { Type } from "typebox";
2
2
  import { withTerminatingOutputDeclarations } from "./package-contracts/terminating-infrastructure.js";
3
+ import { clauseExistenceRowSchema } from "./review-submission.js";
3
4
  const SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
4
5
  const secretariatVerdictSchema = withTerminatingOutputDeclarations(
5
6
  Type.Object(
@@ -15,13 +16,16 @@ const secretariatVerdictSchema = withTerminatingOutputDeclarations(
15
16
  }),
16
17
  evidence: Type.Optional(Type.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
17
18
  decisionGate: Type.Unknown({
18
- description: "\u672C\u8F6E\u9898\u76EE\uFF1A\u6BCF\u9898 question\u3001options\uFF08\u7A3F\u91CC\u505A\u6CD5\uFF0F\u53E6\u4E00\u505A\u6CD5\uFF09\u3001\u4E24\u8FB9\u4EE3\u4EF7\u3001\u5EFA\u8BAE\u3002\u539F\u6837\u7559\u5B58\u3002"
19
+ description: "\u672C\u8F6E\u9898\u76EE\uFF1A\u6BCF\u9898 question\u3001options\uFF08\u7A3F\u91CC\u505A\u6CD5\uFF0F\u53E6\u4E00\u505A\u6CD5\uFF09\u3001\u4E24\u8FB9\u4EE3\u4EF7\u3001\u5EFA\u8BAE\u3002\u539F\u6837\u7559\u5B58\u3002\u5B58\u5E9F\u5C3A\u6807\u300C\u4E0D\u8981\u300D\u7684\u6761\u6B3E\u53E6\u5217\u4E3A\u965B\u4E0B\u62CD\u7684\u9898\uFF0C\u9644\u539F\u6587\uFF0C\u4E0D\u51FA\u7ED9\u5BB0\u76F8\u7B54\u3002"
20
+ }),
21
+ existence: Type.Array(clauseExistenceRowSchema, {
22
+ description: "\u5B58\u5E9F\u5C3A\uFF1A\u7A3F\u91CC\u6BCF\u6761\u8BA9\u673A\u5236\u5B58\u5728\u7684\u6761\u6B3E\u5404\u4E00\u884C\u2014\u2014\u660E\u5199\u673A\u5236\u7684\uFF0C\u548C\u53EA\u5199\u7ED3\u679C\u8981\u6C42\u3001\u73B0\u72B6\u4EE3\u7801\u6EE1\u8DB3\u4E0D\u4E86\u7684\uFF0C\u4E24\u7C7B\u90FD\u7B97\u2014\u2014\u5230 ADR\uFF0F\u7968\u9762\u70B9\u540D\u7684\u5E94\u7528\u6846\u67B6\u5B98\u65B9\u793A\u8303\u91CC\u770B\u4E0D\u5E26\u5B83\u65F6\u540C\u4E00\u5173\u5207\u600E\u4E48\u5904\u7406\u3002\u6709\u300C\u4E0D\u8981\u300D\u884C\uFF0C\u8FD9\u6761\u4E0D\u8FDB\u7968\u9762\uFF1A\u4E0A\u5448\u965B\u4E0B\uFF0C\u539F\u6587\u5217\u8FDB decisionGate\uFF1B\u5BB0\u76F8\u7B54\u4E0D\u4E86\u5B83\u3002\u7968\u9762\u5DF2\u5199\u3001\u524D\u8F6E\u5224\u8BCD\u8981\u6C42\u8FC7\u3001\u5BB0\u76F8\u7B54\u8FC7\u3001\u965B\u4E0B\u5BF9\u522B\u7684\u9898\u70B9\u8FC7\u5934\uFF0C\u90FD\u4E0D\u662F\u300C\u8981\u300D\u7684\u7406\u7531\u3002\u4E00\u6761\u6CA1\u6709\u4E3A\u7A7A\u6570\u7EC4\u3002"
19
23
  })
20
24
  },
21
25
  { additionalProperties: true }
22
26
  )
23
27
  );
24
- secretariatVerdictSchema.required = [];
28
+ secretariatVerdictSchema.required = ["existence"];
25
29
  export {
26
30
  SECRETARIAT_OUTPUT_TOOL_NAME,
27
31
  secretariatVerdictSchema
@@ -4,6 +4,8 @@ Status: accepted
4
4
 
5
5
  交卷工具 schema 保留字段声明与 description;非审核席维持零 required(含记账位)、顶层开放额外属性的原决定。审核席的判别字段 status 则为三态枚举且必填,没有省略 status 的失败例外。审核席仍能交卷、而完成审核所需的外部依赖发生真实基础设施失败时,status 取上呈值,失败细节写入既有 infrastructureFailure;这不是放行或封驳。执行或宿主已失败、审核席无法交卷时,仍由宿主如实失败终局。
6
6
 
7
+ 例外一处(2026-10-29 陛下拍,PR #1285):各席的核旨表与存废尺表是生成必填的——符宝郎 clauses(#1195 起)、台院 ticketComplexity/mechanisms、审刑院 mechanisms/runtime、大理寺 mechanisms、给事中与中书省 existence;中书省虽非三态审核席,这张表同样必填。必填只作用于宿主生成端,包侧仍照本条只记录、不拒收。
8
+
7
9
  包侧收卷:审核席除判别字段外,其余字段不必填、不限制,允许额外属性;声明不是包侧校验授权,包不因格式拒收或判死;判别字段没填或读不出时只说读不出并附收到的值,不在重交提示里另写一套状态名。key 名字不必逐字相同,合不合格由审刑院按是否读得懂来判。
8
10
 
9
11
  宿主生成端:使用宿主原生能力;Codex strict 结构化输出要求根节点为 object、对象关闭额外属性,不能以该出口承诺模型可生成未声明字段。此项宿主缺口如实报告,不另造适配层或出口;生成端的限制不变成包侧拒收权。(#1055。三态枚举必填并撤销无 status 例外:源卷 e4b50c8e-15c7-4c92-9263-959efadb24eb.jsonl,owner uuid ddff7ae0-0b1e-44eb-b80c-96d2a3d3d239、0ddc3a4e-9a53-4565-b1cc-7ba3471d11e5、1707c6ec-ac17-4876-97d1-73b57c734259。根节点须为 object:[Structured Outputs](https://developers.openai.com/api/docs/guides/structured-outputs))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akagilnc/pi-workflow-roles",
3
- "version": "0.1.6076",
3
+ "version": "0.1.6080",
4
4
  "description": "Soul-bound workflow roles for Pi",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -6,7 +6,7 @@
6
6
 
7
7
  **一、盘现状**:出题前,打开代码和本票、本腿已有的记录、文件、接缝,对稿里每个子问题写下:现在已经由什么承担;相关接缝何时触发、那一刻手里有什么数据。稿里交给第三方库或工具承担的事,现状还包括这个库官方怎么用它:打开官方文档与官方案例,记下承担同一件事的官方做法,附链接与原句。
8
8
 
9
- **二、出题**:稿里每个难改决定各出一题——数据在哪一刻落到哪里;由包做、由腿做、由哪一席做;行为挂在哪一层接缝;新增或保留的每一本账、每个文件、每段解析。一题=稿里的做法对一个截然不同的做法。另一做法先试这几处:整样删掉、由第一步盘出的现有哪样东西承担;在数据产生那一刻落定;用宿主或生态现成的能力;第一步盘出的官方做法。两边都按今天从零设计来比,各写按《设计法》合、一致、少的代价,再写你的建议;一样东西已经存在、有人在用、改起来费事,只写进代价,不当任何一边的理由。另一做法只是换个说法、或明摆着更差的,不出题。稿里「怎么验」逐个对外契约对照《票面法》:缺正确、边界、错误哪一类样本,或输入不是真实来源会交出的样子,各出一题;契约已拍定的现在就出,不等别的题答完。一轮问完眼下能问的全部题;答案会改变的后续题留到下一轮。
9
+ **二、出题**:稿里每个难改决定各出一题——数据在哪一刻落到哪里;由包做、由腿做、由哪一席做;行为挂在哪一层接缝;新增或保留的每一本账、每个文件、每段解析。一题=稿里的做法对一个截然不同的做法。另一做法先试这几处:整样删掉、由第一步盘出的现有哪样东西承担;在数据产生那一刻落定;用宿主或生态现成的能力;第一步盘出的官方做法。两边都按今天从零设计来比,各写按《设计法》合、一致、少的代价,再写你的建议;一样东西已经存在、有人在用、改起来费事,只写进代价,不当任何一边的理由。另一做法只是换个说法、或明摆着更差的,不出题。存废尺按条款过:稿里每条让机制存在的条款各记一行进 existence——条款自己点名了状态、表、缓存、锁、依赖的是一类,只写结果要求(零重复、跨提交不重读、不建豁免、每 X 只做一次)而现状代码满足不了、得长出机制才做得到的是另一类,先打开现状代码核它做不做得到——到 ADR/票面点名的应用框架官方示范里看不带它时同一关切怎么处理;示范不带也处理得了的,这条不要,不进票面,原文列进 decisionGate 上呈陛下,不出给宰相答。票面已写、前轮判词要求过、宰相答过、陛下对别的题点过头,都不是要它的理由。稿里「怎么验」逐个对外契约对照《票面法》:缺正确、边界、错误哪一类样本,或输入不是真实来源会交出的样子,各出一题;契约已拍定的现在就出,不等别的题答完。一轮问完眼下能问的全部题;答案会改变的后续题留到下一轮。
10
10
 
11
11
  **三、读答案**:宰相的答案是待核主张——对不上代码或已立的法,摆出证据再问一次。关于库怎么用的主张,核的是官方文档与官方案例的原句;库源码只说明库能做什么,不说明该怎么用,引源码当依据的主张照官方文档再问一次。一道题里只要有一边会取代已定 ADR、与陛下原话相抵、或给用户的体验不同,整题只有陛下能拍——不论宰相选哪边,都等陛下原话。
12
12
 
@@ -8,6 +8,7 @@
8
8
  import { Type, type Static } from "typebox";
9
9
 
10
10
  import { withTerminatingOutputDeclarations } from "./package-contracts/terminating-infrastructure.ts";
11
+ import { clauseExistenceRowSchema } from "./review-submission.ts";
11
12
 
12
13
  export const SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
13
14
 
@@ -38,14 +39,20 @@ export const secretariatVerdictSchema = withTerminatingOutputDeclarations(
38
39
  evidence: Type.Optional(Type.Unknown({ description: "留存证据" })),
39
40
  decisionGate: Type.Unknown({
40
41
  description:
41
- "本轮题目:每题 question、options(稿里做法/另一做法)、两边代价、建议。原样留存。",
42
+ "本轮题目:每题 question、options(稿里做法/另一做法)、两边代价、建议。原样留存。存废尺标「不要」的条款另列为陛下拍的题,附原文,不出给宰相答。",
43
+ }),
44
+ existence: Type.Array(clauseExistenceRowSchema, {
45
+ description:
46
+ "存废尺:稿里每条让机制存在的条款各一行——明写机制的,和只写结果要求、现状代码满足不了的,两类都算——到 ADR/票面点名的应用框架官方示范里看不带它时同一关切怎么处理。有「不要」行,这条不进票面:上呈陛下,原文列进 decisionGate;宰相答不了它。票面已写、前轮判词要求过、宰相答过、陛下对别的题点过头,都不是「要」的理由。一条没有为空数组。",
42
47
  }),
43
48
  },
44
49
  { additionalProperties: true },
45
50
  ),
46
51
  );
47
- (secretariatVerdictSchema as unknown as { required: string[] }).required = [];
48
- // Reflect the declaration's empty required set and open additional properties,
49
- // including the shared terminating fields composed at runtime.
52
+ // #1134 deleted the required set for the narrative fields; the 存废尺 table is the one generation-required field,
53
+ // as it is for 给事中/台院/审刑院/大理寺 (the package still records the receipt as-is).
54
+ (secretariatVerdictSchema as unknown as { required: string[] }).required = ["existence"];
55
+ // The type stays loose: narrative fields are unrequired (ADR 0057), additional properties stay open,
56
+ // and the shared terminating fields are composed at runtime.
50
57
  export type SecretariatVerdict =
51
58
  Partial<Static<typeof secretariatVerdictSchema>> & Record<string, unknown>;