@akagilnc/pi-workflow-roles 0.1.6076 → 0.1.6086

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.
@@ -1682,7 +1682,7 @@ var init_navigator_output = __esm({
1682
1682
 
1683
1683
  // src/review-submission.ts
1684
1684
  import { Type as Type5 } from "typebox";
1685
- var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, mechanismRowBase, MECHANISM_FRAMEWORK_RULE, existenceRowUnion, MECHANISM_LABELS, mechanismRowUnion, mechanismRowSchema, auditorMechanismRowSchema, clauseRowBase, CLAUSE_LABELS, clauseExistenceRowSchema, countersignSubmissionSchema, judgeMechanismRowSchema, judgeSubmissionSchema, inspectorSubmissionSchema, auditorSubmissionSchema;
1685
+ var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, adrRowBase, notaryAdrRowSchema, notaryAdrField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, mechanismRowBase, MECHANISM_FRAMEWORK_RULE, existenceRowUnion, MECHANISM_LABELS, mechanismRowUnion, mechanismRowSchema, auditorMechanismRowSchema, clauseRowBase, CLAUSE_LABELS, clauseExistenceRowSchema, countersignSubmissionSchema, judgeMechanismRowSchema, judgeSubmissionSchema, inspectorSubmissionSchema, auditorSubmissionSchema;
1686
1686
  var init_review_submission = __esm({
1687
1687
  "src/review-submission.ts"() {
1688
1688
  "use strict";
@@ -1723,7 +1723,7 @@ var init_review_submission = __esm({
1723
1723
  notaryClauseItemSchema = Type5.Object(
1724
1724
  {
1725
1725
  clause: Type5.String({
1726
- description: "\u7968\u9762\u6761\u6B3E\u539F\u6587\uFF08\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\uFF1B\u4E0D\u5408\u5E76\u3001\u4E0D\u6539\u5199\uFF09"
1726
+ description: "\u7968\u9762\u6761\u6B3E\u539F\u6587\uFF08\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\uFF1B\u4E0D\u5408\u5E76\u3001\u4E0D\u6539\u5199\uFF09\uFF1B\u7968\u9762\u70B9\u540D\u4E3A\u6CD5\u6E90\u7684 ADR \u91CC\u672C\u7968\u65B0\u5199\u6216\u6539\u8FC7\u7684\u51B3\u5B9A\u53E5\u4E5F\u7B97\u4E00\u6761\uFF0C\u524D\u7F00\u6587\u4EF6\u540D\u7167\u6284"
1727
1727
  }),
1728
1728
  ownerUuid: Type5.Union([Type5.String(), Type5.Null()], {
1729
1729
  description: "\u63A8\u51FA\u8BE5\u6761\u7684\u965B\u4E0B\u539F\u8BDD uuid\uFF1B\u65E0\u539F\u8BDD\u5219 null"
@@ -1747,14 +1747,44 @@ var init_review_submission = __esm({
1747
1747
  { additionalProperties: true }
1748
1748
  );
1749
1749
  notaryClausesField = Type5.Array(notaryClauseItemSchema, {
1750
- description: "\u7968\u9762\u9010\u6761\u6838\u65E8\u8868\uFF0C\u6BCF\u4E00\u8F6E\u90FD\u586B\uFF0C\u4E0D\u8BBA\u672C\u8F6E\u53D7\u5BA1\u7684\u662F\u7968\u9762\u8FD8\u662F\u5927\u7406\u5BFA\u7684\u5224\u8BCD\uFF1A\u73B0\u884C\u7968\u9762\u6BCF\u6761\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\u7684\u539F\u6587\u3001\u965B\u4E0B\u539F\u8BDD uuid\u3001\u63A8\u5BFC\u3001\u662F\u5426\u5728\u6700\u540E\u4E00\u7B7E\u65F6\u5C31\u5728\u8868\u91CC\u3002\u65E0\u539F\u8BDD\u5219 ownerUuid \u4E3A null\u3002\u771F\u65E0\u7968\u5BF9\u8C61\u6CA1\u6709\u7968\u9762\uFF0C\u586B\u7A7A\u6570\u7EC4\u3002"
1750
+ description: "\u7968\u9762\u9010\u6761\u6838\u65E8\u8868\uFF0C\u6BCF\u4E00\u8F6E\u90FD\u586B\uFF0C\u4E0D\u8BBA\u672C\u8F6E\u53D7\u5BA1\u7684\u662F\u7968\u9762\u8FD8\u662F\u5927\u7406\u5BFA\u7684\u5224\u8BCD\uFF1A\u73B0\u884C\u7968\u9762\u6BCF\u6761\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\u7684\u539F\u6587\uFF08\u542B\u7968\u9762\u70B9\u540D\u4E3A\u6CD5\u6E90\u7684 ADR \u91CC\u672C\u7968\u65B0\u5199\u6216\u6539\u8FC7\u7684\u51B3\u5B9A\u53E5\uFF09\u3001\u965B\u4E0B\u539F\u8BDD uuid\u3001\u63A8\u5BFC\u3001\u662F\u5426\u5728\u6700\u540E\u4E00\u7B7E\u65F6\u5C31\u5728\u8868\u91CC\u3002\u65E0\u539F\u8BDD\u5219 ownerUuid \u4E3A null\u3002\u771F\u65E0\u7968\u5BF9\u8C61\u6CA1\u6709\u7968\u9762\uFF0C\u586B\u7A7A\u6570\u7EC4\u3002"
1751
+ });
1752
+ adrRowBase = {
1753
+ ownerUuid: Type5.String({ description: "\u965B\u4E0B\u62CD\u5B9A\u90A3\u53E5\u539F\u8BDD\u7684 uuid" }),
1754
+ decided: Type5.String({
1755
+ description: "\u90A3\u53E5\u62CD\u5B9A\u4E86\u4EC0\u4E48\uFF1A\u7167\u539F\u8BCD\uFF0C\u4E0D\u6982\u62EC\u3001\u4E0D\u5408\u5E76\uFF08\u56DB\u5C42\u5206\u5DE5\u3001\u56DB\u6761\u89C4\u77E9\u3001\u8D26\u672C\u53EA\u5B58\u4E8B\u5B9E\u2026\u2026\u4E00\u6761\u4E00\u884C\uFF09"
1756
+ })
1757
+ };
1758
+ notaryAdrRowSchema = Type5.Union([
1759
+ Type5.Object(
1760
+ {
1761
+ ...adrRowBase,
1762
+ adr: Type5.String({ description: "\u843D\u5904\uFF1Adocs/adr \u6587\u4EF6\u540D\uFF0B\u6587\u5185\u627F\u8F7D\u8FD9\u6761\u62CD\u5B9A\u7684\u90A3\u4E00\u53E5\u539F\u6587\uFF08\u7167\u6284\uFF09" }),
1763
+ landed: Type5.Literal("\u843D\u4E86\uFF1AADR \u6587\u5185\u6709\u627F\u8F7D\u5B83\u7684\u53E5\u5B50")
1764
+ },
1765
+ { additionalProperties: true }
1766
+ ),
1767
+ Type5.Object(
1768
+ {
1769
+ ...adrRowBase,
1770
+ adr: Type5.Null(),
1771
+ landed: Type5.Literal(
1772
+ "\u672A\u843D\uFF1AADR \u6587\u5185\u6CA1\u6709\u627F\u8F7D\u5B83\u7684\u53E5\u5B50\uFF1B\u7968\u9762\u6761\u6B3E\u5199\u4E86\u3001CLAUDE.md \u4E00\u7C7B\u7D22\u5F15\u8BF4\u67D0\u4EFD ADR \u542B\u5B83\u3001\u5224\u8BCD\u5F15\u8FC7\u5B83\u3001ADR \u6807\u9898\u50CF\uFF0C\u90FD\u4E0D\u662F\u843D\u5904"
1773
+ )
1774
+ },
1775
+ { additionalProperties: true }
1776
+ )
1777
+ ]);
1778
+ notaryAdrField = Type5.Array(notaryAdrRowSchema, {
1779
+ description: "ADR \u843D\u5904\u8868\uFF1A\u53D7\u5BA1\u4E4B\u7269\u662F\u7ED9\u4E8B\u4E2D\u5BF9\u7968\u9762\u7684\u5224\u8BCD\uFF08\u7968\u5EAD\uFF09\u65F6\u586B\u2014\u2014\u8D77\u5C45\u5F55\u4E0E\u6E90\u5377\u91CC\u965B\u4E0B\u62CD\u5B9A\u7684\u3001\u8BE5\u8FDB ADR \u7684\u51B3\u5B9A\uFF08\u67B6\u6784\u5F62\u72B6\u3001\u5206\u5C42\u4E0E\u8FB9\u754C\u3001\u6280\u672F\u9009\u578B\u3001\u523B\u610F\u504F\u79BB\u5E38\u89C4\u7684\u505A\u6CD5\uFF1A\u96BE\u9006\u3001\u8BFB\u4EE3\u7801\u7684\u4EBA\u4F1A\u95EE\u4E3A\u4EC0\u4E48\u7684\u90A3\u7C7B\uFF09\uFF0C\u6BCF\u6761\u4E00\u884C\uFF0C\u5230 docs/adr \u91CC\u627E\u627F\u8F7D\u5B83\u7684\u90A3\u4E00\u53E5\uFF1B\u600E\u4E48\u6D4B\u3001\u600E\u4E48\u5206\u652F\u5408\u5165\u3001\u6570\u636E\u600E\u4E48\u8865\u3001\u5B57\u6BB5\u53EB\u4EC0\u4E48\u8FD9\u7C7B\u529E\u4E8B\u65B9\u6CD5\u4E0E\u7968\u5185\u7EC6\u8282\u4E0D\u5217\u3002\u6709\u300C\u672A\u843D\u300D\u884C\uFF0Cstatus \u53EA\u80FD\u662F escalate\uFF0C\u62CD\u5B9A\u539F\u6587\u4E0E\u5B83\u8BE5\u8FDB\u54EA\u4EFD ADR \u5217\u8FDB decisionGate\uFF0C\u8FDB\u4E0D\u8FDB\u7531\u965B\u4E0B\u5B9A\u3002\u53D7\u5BA1\u4E4B\u7269\u662F\u5927\u7406\u5BFA\u7684\u5224\u8BCD\u3001\u4FEE\u6CD5\u65B9\u5411\u6216\u6536\u655B\u7684\u5B9E\u73B0\u65F6\u4E3A\u7A7A\u6570\u7EC4\u3002"
1751
1780
  });
1752
1781
  notaryReviewSubmissionSchema = withTerminatingOutputDeclarations(
1753
1782
  Type5.Object(
1754
1783
  {
1755
1784
  status: reviewStatusField,
1756
1785
  ...reviewNarrativeFields,
1757
- clauses: notaryClausesField
1786
+ clauses: notaryClausesField,
1787
+ adr: notaryAdrField
1758
1788
  },
1759
1789
  { additionalProperties: true }
1760
1790
  )
@@ -2411,6 +2441,7 @@ var init_secretariat_contracts = __esm({
2411
2441
  "src/secretariat-contracts.ts"() {
2412
2442
  "use strict";
2413
2443
  init_terminating_infrastructure();
2444
+ init_review_submission();
2414
2445
  SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
2415
2446
  secretariatVerdictSchema = withTerminatingOutputDeclarations(
2416
2447
  Type14.Object(
@@ -2426,13 +2457,16 @@ var init_secretariat_contracts = __esm({
2426
2457
  }),
2427
2458
  evidence: Type14.Optional(Type14.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
2428
2459
  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"
2460
+ 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"
2461
+ }),
2462
+ existence: Type14.Array(clauseExistenceRowSchema, {
2463
+ 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
2464
  })
2431
2465
  },
2432
2466
  { additionalProperties: true }
2433
2467
  )
2434
2468
  );
2435
- secretariatVerdictSchema.required = [];
2469
+ secretariatVerdictSchema.required = ["existence"];
2436
2470
  }
2437
2471
  });
2438
2472
 
@@ -481,7 +481,7 @@ var init_terminating_infrastructure = __esm({
481
481
 
482
482
  // src/review-submission.ts
483
483
  import { Type as Type2 } from "typebox";
484
- var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, mechanismRowBase, MECHANISM_FRAMEWORK_RULE, existenceRowUnion, MECHANISM_LABELS, mechanismRowUnion, mechanismRowSchema, auditorMechanismRowSchema, clauseRowBase, CLAUSE_LABELS, clauseExistenceRowSchema, countersignSubmissionSchema, judgeMechanismRowSchema, judgeSubmissionSchema, inspectorSubmissionSchema, auditorSubmissionSchema;
484
+ var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, adrRowBase, notaryAdrRowSchema, notaryAdrField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, mechanismRowBase, MECHANISM_FRAMEWORK_RULE, existenceRowUnion, MECHANISM_LABELS, mechanismRowUnion, mechanismRowSchema, auditorMechanismRowSchema, clauseRowBase, CLAUSE_LABELS, clauseExistenceRowSchema, countersignSubmissionSchema, judgeMechanismRowSchema, judgeSubmissionSchema, inspectorSubmissionSchema, auditorSubmissionSchema;
485
485
  var init_review_submission = __esm({
486
486
  "src/review-submission.ts"() {
487
487
  "use strict";
@@ -522,7 +522,7 @@ var init_review_submission = __esm({
522
522
  notaryClauseItemSchema = Type2.Object(
523
523
  {
524
524
  clause: Type2.String({
525
- description: "\u7968\u9762\u6761\u6B3E\u539F\u6587\uFF08\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\uFF1B\u4E0D\u5408\u5E76\u3001\u4E0D\u6539\u5199\uFF09"
525
+ description: "\u7968\u9762\u6761\u6B3E\u539F\u6587\uFF08\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\uFF1B\u4E0D\u5408\u5E76\u3001\u4E0D\u6539\u5199\uFF09\uFF1B\u7968\u9762\u70B9\u540D\u4E3A\u6CD5\u6E90\u7684 ADR \u91CC\u672C\u7968\u65B0\u5199\u6216\u6539\u8FC7\u7684\u51B3\u5B9A\u53E5\u4E5F\u7B97\u4E00\u6761\uFF0C\u524D\u7F00\u6587\u4EF6\u540D\u7167\u6284"
526
526
  }),
527
527
  ownerUuid: Type2.Union([Type2.String(), Type2.Null()], {
528
528
  description: "\u63A8\u51FA\u8BE5\u6761\u7684\u965B\u4E0B\u539F\u8BDD uuid\uFF1B\u65E0\u539F\u8BDD\u5219 null"
@@ -546,14 +546,44 @@ var init_review_submission = __esm({
546
546
  { additionalProperties: true }
547
547
  );
548
548
  notaryClausesField = Type2.Array(notaryClauseItemSchema, {
549
- description: "\u7968\u9762\u9010\u6761\u6838\u65E8\u8868\uFF0C\u6BCF\u4E00\u8F6E\u90FD\u586B\uFF0C\u4E0D\u8BBA\u672C\u8F6E\u53D7\u5BA1\u7684\u662F\u7968\u9762\u8FD8\u662F\u5927\u7406\u5BFA\u7684\u5224\u8BCD\uFF1A\u73B0\u884C\u7968\u9762\u6BCF\u6761\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\u7684\u539F\u6587\u3001\u965B\u4E0B\u539F\u8BDD uuid\u3001\u63A8\u5BFC\u3001\u662F\u5426\u5728\u6700\u540E\u4E00\u7B7E\u65F6\u5C31\u5728\u8868\u91CC\u3002\u65E0\u539F\u8BDD\u5219 ownerUuid \u4E3A null\u3002\u771F\u65E0\u7968\u5BF9\u8C61\u6CA1\u6709\u7968\u9762\uFF0C\u586B\u7A7A\u6570\u7EC4\u3002"
549
+ description: "\u7968\u9762\u9010\u6761\u6838\u65E8\u8868\uFF0C\u6BCF\u4E00\u8F6E\u90FD\u586B\uFF0C\u4E0D\u8BBA\u672C\u8F6E\u53D7\u5BA1\u7684\u662F\u7968\u9762\u8FD8\u662F\u5927\u7406\u5BFA\u7684\u5224\u8BCD\uFF1A\u73B0\u884C\u7968\u9762\u6BCF\u6761\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\u7684\u539F\u6587\uFF08\u542B\u7968\u9762\u70B9\u540D\u4E3A\u6CD5\u6E90\u7684 ADR \u91CC\u672C\u7968\u65B0\u5199\u6216\u6539\u8FC7\u7684\u51B3\u5B9A\u53E5\uFF09\u3001\u965B\u4E0B\u539F\u8BDD uuid\u3001\u63A8\u5BFC\u3001\u662F\u5426\u5728\u6700\u540E\u4E00\u7B7E\u65F6\u5C31\u5728\u8868\u91CC\u3002\u65E0\u539F\u8BDD\u5219 ownerUuid \u4E3A null\u3002\u771F\u65E0\u7968\u5BF9\u8C61\u6CA1\u6709\u7968\u9762\uFF0C\u586B\u7A7A\u6570\u7EC4\u3002"
550
+ });
551
+ adrRowBase = {
552
+ ownerUuid: Type2.String({ description: "\u965B\u4E0B\u62CD\u5B9A\u90A3\u53E5\u539F\u8BDD\u7684 uuid" }),
553
+ decided: Type2.String({
554
+ description: "\u90A3\u53E5\u62CD\u5B9A\u4E86\u4EC0\u4E48\uFF1A\u7167\u539F\u8BCD\uFF0C\u4E0D\u6982\u62EC\u3001\u4E0D\u5408\u5E76\uFF08\u56DB\u5C42\u5206\u5DE5\u3001\u56DB\u6761\u89C4\u77E9\u3001\u8D26\u672C\u53EA\u5B58\u4E8B\u5B9E\u2026\u2026\u4E00\u6761\u4E00\u884C\uFF09"
555
+ })
556
+ };
557
+ notaryAdrRowSchema = Type2.Union([
558
+ Type2.Object(
559
+ {
560
+ ...adrRowBase,
561
+ adr: Type2.String({ description: "\u843D\u5904\uFF1Adocs/adr \u6587\u4EF6\u540D\uFF0B\u6587\u5185\u627F\u8F7D\u8FD9\u6761\u62CD\u5B9A\u7684\u90A3\u4E00\u53E5\u539F\u6587\uFF08\u7167\u6284\uFF09" }),
562
+ landed: Type2.Literal("\u843D\u4E86\uFF1AADR \u6587\u5185\u6709\u627F\u8F7D\u5B83\u7684\u53E5\u5B50")
563
+ },
564
+ { additionalProperties: true }
565
+ ),
566
+ Type2.Object(
567
+ {
568
+ ...adrRowBase,
569
+ adr: Type2.Null(),
570
+ landed: Type2.Literal(
571
+ "\u672A\u843D\uFF1AADR \u6587\u5185\u6CA1\u6709\u627F\u8F7D\u5B83\u7684\u53E5\u5B50\uFF1B\u7968\u9762\u6761\u6B3E\u5199\u4E86\u3001CLAUDE.md \u4E00\u7C7B\u7D22\u5F15\u8BF4\u67D0\u4EFD ADR \u542B\u5B83\u3001\u5224\u8BCD\u5F15\u8FC7\u5B83\u3001ADR \u6807\u9898\u50CF\uFF0C\u90FD\u4E0D\u662F\u843D\u5904"
572
+ )
573
+ },
574
+ { additionalProperties: true }
575
+ )
576
+ ]);
577
+ notaryAdrField = Type2.Array(notaryAdrRowSchema, {
578
+ description: "ADR \u843D\u5904\u8868\uFF1A\u53D7\u5BA1\u4E4B\u7269\u662F\u7ED9\u4E8B\u4E2D\u5BF9\u7968\u9762\u7684\u5224\u8BCD\uFF08\u7968\u5EAD\uFF09\u65F6\u586B\u2014\u2014\u8D77\u5C45\u5F55\u4E0E\u6E90\u5377\u91CC\u965B\u4E0B\u62CD\u5B9A\u7684\u3001\u8BE5\u8FDB ADR \u7684\u51B3\u5B9A\uFF08\u67B6\u6784\u5F62\u72B6\u3001\u5206\u5C42\u4E0E\u8FB9\u754C\u3001\u6280\u672F\u9009\u578B\u3001\u523B\u610F\u504F\u79BB\u5E38\u89C4\u7684\u505A\u6CD5\uFF1A\u96BE\u9006\u3001\u8BFB\u4EE3\u7801\u7684\u4EBA\u4F1A\u95EE\u4E3A\u4EC0\u4E48\u7684\u90A3\u7C7B\uFF09\uFF0C\u6BCF\u6761\u4E00\u884C\uFF0C\u5230 docs/adr \u91CC\u627E\u627F\u8F7D\u5B83\u7684\u90A3\u4E00\u53E5\uFF1B\u600E\u4E48\u6D4B\u3001\u600E\u4E48\u5206\u652F\u5408\u5165\u3001\u6570\u636E\u600E\u4E48\u8865\u3001\u5B57\u6BB5\u53EB\u4EC0\u4E48\u8FD9\u7C7B\u529E\u4E8B\u65B9\u6CD5\u4E0E\u7968\u5185\u7EC6\u8282\u4E0D\u5217\u3002\u6709\u300C\u672A\u843D\u300D\u884C\uFF0Cstatus \u53EA\u80FD\u662F escalate\uFF0C\u62CD\u5B9A\u539F\u6587\u4E0E\u5B83\u8BE5\u8FDB\u54EA\u4EFD ADR \u5217\u8FDB decisionGate\uFF0C\u8FDB\u4E0D\u8FDB\u7531\u965B\u4E0B\u5B9A\u3002\u53D7\u5BA1\u4E4B\u7269\u662F\u5927\u7406\u5BFA\u7684\u5224\u8BCD\u3001\u4FEE\u6CD5\u65B9\u5411\u6216\u6536\u655B\u7684\u5B9E\u73B0\u65F6\u4E3A\u7A7A\u6570\u7EC4\u3002"
550
579
  });
551
580
  notaryReviewSubmissionSchema = withTerminatingOutputDeclarations(
552
581
  Type2.Object(
553
582
  {
554
583
  status: reviewStatusField,
555
584
  ...reviewNarrativeFields,
556
- clauses: notaryClausesField
585
+ clauses: notaryClausesField,
586
+ adr: notaryAdrField
557
587
  },
558
588
  { additionalProperties: true }
559
589
  )
@@ -2281,6 +2311,7 @@ var init_secretariat_contracts = __esm({
2281
2311
  "src/secretariat-contracts.ts"() {
2282
2312
  "use strict";
2283
2313
  init_terminating_infrastructure();
2314
+ init_review_submission();
2284
2315
  SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
2285
2316
  secretariatVerdictSchema = withTerminatingOutputDeclarations(
2286
2317
  Type14.Object(
@@ -2296,13 +2327,16 @@ var init_secretariat_contracts = __esm({
2296
2327
  }),
2297
2328
  evidence: Type14.Optional(Type14.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
2298
2329
  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"
2330
+ 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"
2331
+ }),
2332
+ existence: Type14.Array(clauseExistenceRowSchema, {
2333
+ 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
2334
  })
2301
2335
  },
2302
2336
  { additionalProperties: true }
2303
2337
  )
2304
2338
  );
2305
- secretariatVerdictSchema.required = [];
2339
+ secretariatVerdictSchema.required = ["existence"];
2306
2340
  }
2307
2341
  });
2308
2342
 
@@ -8707,7 +8707,7 @@ var init_navigator_output = __esm({
8707
8707
  });
8708
8708
 
8709
8709
  // src/review-submission.ts
8710
- var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, mechanismRowBase, MECHANISM_FRAMEWORK_RULE, existenceRowUnion, MECHANISM_LABELS, mechanismRowUnion, mechanismRowSchema, auditorMechanismRowSchema, clauseRowBase, CLAUSE_LABELS, clauseExistenceRowSchema, countersignSubmissionSchema, judgeMechanismRowSchema, judgeSubmissionSchema, inspectorSubmissionSchema, auditorSubmissionSchema;
8710
+ var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, adrRowBase, notaryAdrRowSchema, notaryAdrField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, mechanismRowBase, MECHANISM_FRAMEWORK_RULE, existenceRowUnion, MECHANISM_LABELS, mechanismRowUnion, mechanismRowSchema, auditorMechanismRowSchema, clauseRowBase, CLAUSE_LABELS, clauseExistenceRowSchema, countersignSubmissionSchema, judgeMechanismRowSchema, judgeSubmissionSchema, inspectorSubmissionSchema, auditorSubmissionSchema;
8711
8711
  var init_review_submission = __esm({
8712
8712
  "src/review-submission.ts"() {
8713
8713
  "use strict";
@@ -8749,7 +8749,7 @@ var init_review_submission = __esm({
8749
8749
  notaryClauseItemSchema = typebox_exports.Object(
8750
8750
  {
8751
8751
  clause: typebox_exports.String({
8752
- description: "\u7968\u9762\u6761\u6B3E\u539F\u6587\uFF08\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\uFF1B\u4E0D\u5408\u5E76\u3001\u4E0D\u6539\u5199\uFF09"
8752
+ description: "\u7968\u9762\u6761\u6B3E\u539F\u6587\uFF08\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\uFF1B\u4E0D\u5408\u5E76\u3001\u4E0D\u6539\u5199\uFF09\uFF1B\u7968\u9762\u70B9\u540D\u4E3A\u6CD5\u6E90\u7684 ADR \u91CC\u672C\u7968\u65B0\u5199\u6216\u6539\u8FC7\u7684\u51B3\u5B9A\u53E5\u4E5F\u7B97\u4E00\u6761\uFF0C\u524D\u7F00\u6587\u4EF6\u540D\u7167\u6284"
8753
8753
  }),
8754
8754
  ownerUuid: typebox_exports.Union([typebox_exports.String(), typebox_exports.Null()], {
8755
8755
  description: "\u63A8\u51FA\u8BE5\u6761\u7684\u965B\u4E0B\u539F\u8BDD uuid\uFF1B\u65E0\u539F\u8BDD\u5219 null"
@@ -8773,14 +8773,44 @@ var init_review_submission = __esm({
8773
8773
  { additionalProperties: true }
8774
8774
  );
8775
8775
  notaryClausesField = typebox_exports.Array(notaryClauseItemSchema, {
8776
- description: "\u7968\u9762\u9010\u6761\u6838\u65E8\u8868\uFF0C\u6BCF\u4E00\u8F6E\u90FD\u586B\uFF0C\u4E0D\u8BBA\u672C\u8F6E\u53D7\u5BA1\u7684\u662F\u7968\u9762\u8FD8\u662F\u5927\u7406\u5BFA\u7684\u5224\u8BCD\uFF1A\u73B0\u884C\u7968\u9762\u6BCF\u6761\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\u7684\u539F\u6587\u3001\u965B\u4E0B\u539F\u8BDD uuid\u3001\u63A8\u5BFC\u3001\u662F\u5426\u5728\u6700\u540E\u4E00\u7B7E\u65F6\u5C31\u5728\u8868\u91CC\u3002\u65E0\u539F\u8BDD\u5219 ownerUuid \u4E3A null\u3002\u771F\u65E0\u7968\u5BF9\u8C61\u6CA1\u6709\u7968\u9762\uFF0C\u586B\u7A7A\u6570\u7EC4\u3002"
8776
+ description: "\u7968\u9762\u9010\u6761\u6838\u65E8\u8868\uFF0C\u6BCF\u4E00\u8F6E\u90FD\u586B\uFF0C\u4E0D\u8BBA\u672C\u8F6E\u53D7\u5BA1\u7684\u662F\u7968\u9762\u8FD8\u662F\u5927\u7406\u5BFA\u7684\u5224\u8BCD\uFF1A\u73B0\u884C\u7968\u9762\u6BCF\u6761\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\u7684\u539F\u6587\uFF08\u542B\u7968\u9762\u70B9\u540D\u4E3A\u6CD5\u6E90\u7684 ADR \u91CC\u672C\u7968\u65B0\u5199\u6216\u6539\u8FC7\u7684\u51B3\u5B9A\u53E5\uFF09\u3001\u965B\u4E0B\u539F\u8BDD uuid\u3001\u63A8\u5BFC\u3001\u662F\u5426\u5728\u6700\u540E\u4E00\u7B7E\u65F6\u5C31\u5728\u8868\u91CC\u3002\u65E0\u539F\u8BDD\u5219 ownerUuid \u4E3A null\u3002\u771F\u65E0\u7968\u5BF9\u8C61\u6CA1\u6709\u7968\u9762\uFF0C\u586B\u7A7A\u6570\u7EC4\u3002"
8777
+ });
8778
+ adrRowBase = {
8779
+ ownerUuid: typebox_exports.String({ description: "\u965B\u4E0B\u62CD\u5B9A\u90A3\u53E5\u539F\u8BDD\u7684 uuid" }),
8780
+ decided: typebox_exports.String({
8781
+ description: "\u90A3\u53E5\u62CD\u5B9A\u4E86\u4EC0\u4E48\uFF1A\u7167\u539F\u8BCD\uFF0C\u4E0D\u6982\u62EC\u3001\u4E0D\u5408\u5E76\uFF08\u56DB\u5C42\u5206\u5DE5\u3001\u56DB\u6761\u89C4\u77E9\u3001\u8D26\u672C\u53EA\u5B58\u4E8B\u5B9E\u2026\u2026\u4E00\u6761\u4E00\u884C\uFF09"
8782
+ })
8783
+ };
8784
+ notaryAdrRowSchema = typebox_exports.Union([
8785
+ typebox_exports.Object(
8786
+ {
8787
+ ...adrRowBase,
8788
+ adr: typebox_exports.String({ description: "\u843D\u5904\uFF1Adocs/adr \u6587\u4EF6\u540D\uFF0B\u6587\u5185\u627F\u8F7D\u8FD9\u6761\u62CD\u5B9A\u7684\u90A3\u4E00\u53E5\u539F\u6587\uFF08\u7167\u6284\uFF09" }),
8789
+ landed: typebox_exports.Literal("\u843D\u4E86\uFF1AADR \u6587\u5185\u6709\u627F\u8F7D\u5B83\u7684\u53E5\u5B50")
8790
+ },
8791
+ { additionalProperties: true }
8792
+ ),
8793
+ typebox_exports.Object(
8794
+ {
8795
+ ...adrRowBase,
8796
+ adr: typebox_exports.Null(),
8797
+ landed: typebox_exports.Literal(
8798
+ "\u672A\u843D\uFF1AADR \u6587\u5185\u6CA1\u6709\u627F\u8F7D\u5B83\u7684\u53E5\u5B50\uFF1B\u7968\u9762\u6761\u6B3E\u5199\u4E86\u3001CLAUDE.md \u4E00\u7C7B\u7D22\u5F15\u8BF4\u67D0\u4EFD ADR \u542B\u5B83\u3001\u5224\u8BCD\u5F15\u8FC7\u5B83\u3001ADR \u6807\u9898\u50CF\uFF0C\u90FD\u4E0D\u662F\u843D\u5904"
8799
+ )
8800
+ },
8801
+ { additionalProperties: true }
8802
+ )
8803
+ ]);
8804
+ notaryAdrField = typebox_exports.Array(notaryAdrRowSchema, {
8805
+ description: "ADR \u843D\u5904\u8868\uFF1A\u53D7\u5BA1\u4E4B\u7269\u662F\u7ED9\u4E8B\u4E2D\u5BF9\u7968\u9762\u7684\u5224\u8BCD\uFF08\u7968\u5EAD\uFF09\u65F6\u586B\u2014\u2014\u8D77\u5C45\u5F55\u4E0E\u6E90\u5377\u91CC\u965B\u4E0B\u62CD\u5B9A\u7684\u3001\u8BE5\u8FDB ADR \u7684\u51B3\u5B9A\uFF08\u67B6\u6784\u5F62\u72B6\u3001\u5206\u5C42\u4E0E\u8FB9\u754C\u3001\u6280\u672F\u9009\u578B\u3001\u523B\u610F\u504F\u79BB\u5E38\u89C4\u7684\u505A\u6CD5\uFF1A\u96BE\u9006\u3001\u8BFB\u4EE3\u7801\u7684\u4EBA\u4F1A\u95EE\u4E3A\u4EC0\u4E48\u7684\u90A3\u7C7B\uFF09\uFF0C\u6BCF\u6761\u4E00\u884C\uFF0C\u5230 docs/adr \u91CC\u627E\u627F\u8F7D\u5B83\u7684\u90A3\u4E00\u53E5\uFF1B\u600E\u4E48\u6D4B\u3001\u600E\u4E48\u5206\u652F\u5408\u5165\u3001\u6570\u636E\u600E\u4E48\u8865\u3001\u5B57\u6BB5\u53EB\u4EC0\u4E48\u8FD9\u7C7B\u529E\u4E8B\u65B9\u6CD5\u4E0E\u7968\u5185\u7EC6\u8282\u4E0D\u5217\u3002\u6709\u300C\u672A\u843D\u300D\u884C\uFF0Cstatus \u53EA\u80FD\u662F escalate\uFF0C\u62CD\u5B9A\u539F\u6587\u4E0E\u5B83\u8BE5\u8FDB\u54EA\u4EFD ADR \u5217\u8FDB decisionGate\uFF0C\u8FDB\u4E0D\u8FDB\u7531\u965B\u4E0B\u5B9A\u3002\u53D7\u5BA1\u4E4B\u7269\u662F\u5927\u7406\u5BFA\u7684\u5224\u8BCD\u3001\u4FEE\u6CD5\u65B9\u5411\u6216\u6536\u655B\u7684\u5B9E\u73B0\u65F6\u4E3A\u7A7A\u6570\u7EC4\u3002"
8777
8806
  });
8778
8807
  notaryReviewSubmissionSchema = withTerminatingOutputDeclarations(
8779
8808
  typebox_exports.Object(
8780
8809
  {
8781
8810
  status: reviewStatusField,
8782
8811
  ...reviewNarrativeFields,
8783
- clauses: notaryClausesField
8812
+ clauses: notaryClausesField,
8813
+ adr: notaryAdrField
8784
8814
  },
8785
8815
  { additionalProperties: true }
8786
8816
  )
@@ -9301,6 +9331,7 @@ var init_secretariat_contracts = __esm({
9301
9331
  "use strict";
9302
9332
  init_build();
9303
9333
  init_terminating_infrastructure();
9334
+ init_review_submission();
9304
9335
  SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
9305
9336
  secretariatVerdictSchema = withTerminatingOutputDeclarations(
9306
9337
  typebox_exports.Object(
@@ -9316,13 +9347,16 @@ var init_secretariat_contracts = __esm({
9316
9347
  }),
9317
9348
  evidence: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
9318
9349
  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"
9350
+ 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"
9351
+ }),
9352
+ existence: typebox_exports.Array(clauseExistenceRowSchema, {
9353
+ 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
9354
  })
9321
9355
  },
9322
9356
  { additionalProperties: true }
9323
9357
  )
9324
9358
  );
9325
- secretariatVerdictSchema.required = [];
9359
+ secretariatVerdictSchema.required = ["existence"];
9326
9360
  }
9327
9361
  });
9328
9362
 
@@ -9197,7 +9197,7 @@ var init_navigator_output = __esm({
9197
9197
  });
9198
9198
 
9199
9199
  // src/review-submission.ts
9200
- var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, mechanismRowBase, MECHANISM_FRAMEWORK_RULE, existenceRowUnion, MECHANISM_LABELS, mechanismRowUnion, mechanismRowSchema, auditorMechanismRowSchema, clauseRowBase, CLAUSE_LABELS, clauseExistenceRowSchema, countersignSubmissionSchema, judgeMechanismRowSchema, judgeSubmissionSchema, inspectorSubmissionSchema, auditorSubmissionSchema;
9200
+ var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, adrRowBase, notaryAdrRowSchema, notaryAdrField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, mechanismRowBase, MECHANISM_FRAMEWORK_RULE, existenceRowUnion, MECHANISM_LABELS, mechanismRowUnion, mechanismRowSchema, auditorMechanismRowSchema, clauseRowBase, CLAUSE_LABELS, clauseExistenceRowSchema, countersignSubmissionSchema, judgeMechanismRowSchema, judgeSubmissionSchema, inspectorSubmissionSchema, auditorSubmissionSchema;
9201
9201
  var init_review_submission = __esm({
9202
9202
  "src/review-submission.ts"() {
9203
9203
  "use strict";
@@ -9239,7 +9239,7 @@ var init_review_submission = __esm({
9239
9239
  notaryClauseItemSchema = typebox_exports.Object(
9240
9240
  {
9241
9241
  clause: typebox_exports.String({
9242
- description: "\u7968\u9762\u6761\u6B3E\u539F\u6587\uFF08\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\uFF1B\u4E0D\u5408\u5E76\u3001\u4E0D\u6539\u5199\uFF09"
9242
+ description: "\u7968\u9762\u6761\u6B3E\u539F\u6587\uFF08\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\uFF1B\u4E0D\u5408\u5E76\u3001\u4E0D\u6539\u5199\uFF09\uFF1B\u7968\u9762\u70B9\u540D\u4E3A\u6CD5\u6E90\u7684 ADR \u91CC\u672C\u7968\u65B0\u5199\u6216\u6539\u8FC7\u7684\u51B3\u5B9A\u53E5\u4E5F\u7B97\u4E00\u6761\uFF0C\u524D\u7F00\u6587\u4EF6\u540D\u7167\u6284"
9243
9243
  }),
9244
9244
  ownerUuid: typebox_exports.Union([typebox_exports.String(), typebox_exports.Null()], {
9245
9245
  description: "\u63A8\u51FA\u8BE5\u6761\u7684\u965B\u4E0B\u539F\u8BDD uuid\uFF1B\u65E0\u539F\u8BDD\u5219 null"
@@ -9263,14 +9263,44 @@ var init_review_submission = __esm({
9263
9263
  { additionalProperties: true }
9264
9264
  );
9265
9265
  notaryClausesField = typebox_exports.Array(notaryClauseItemSchema, {
9266
- description: "\u7968\u9762\u9010\u6761\u6838\u65E8\u8868\uFF0C\u6BCF\u4E00\u8F6E\u90FD\u586B\uFF0C\u4E0D\u8BBA\u672C\u8F6E\u53D7\u5BA1\u7684\u662F\u7968\u9762\u8FD8\u662F\u5927\u7406\u5BFA\u7684\u5224\u8BCD\uFF1A\u73B0\u884C\u7968\u9762\u6BCF\u6761\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\u7684\u539F\u6587\u3001\u965B\u4E0B\u539F\u8BDD uuid\u3001\u63A8\u5BFC\u3001\u662F\u5426\u5728\u6700\u540E\u4E00\u7B7E\u65F6\u5C31\u5728\u8868\u91CC\u3002\u65E0\u539F\u8BDD\u5219 ownerUuid \u4E3A null\u3002\u771F\u65E0\u7968\u5BF9\u8C61\u6CA1\u6709\u7968\u9762\uFF0C\u586B\u7A7A\u6570\u7EC4\u3002"
9266
+ description: "\u7968\u9762\u9010\u6761\u6838\u65E8\u8868\uFF0C\u6BCF\u4E00\u8F6E\u90FD\u586B\uFF0C\u4E0D\u8BBA\u672C\u8F6E\u53D7\u5BA1\u7684\u662F\u7968\u9762\u8FD8\u662F\u5927\u7406\u5BFA\u7684\u5224\u8BCD\uFF1A\u73B0\u884C\u7968\u9762\u6BCF\u6761\u6539\u53D8\u5B9E\u9645\u884C\u4E3A\u7684\u6761\u6B3E\u7684\u539F\u6587\uFF08\u542B\u7968\u9762\u70B9\u540D\u4E3A\u6CD5\u6E90\u7684 ADR \u91CC\u672C\u7968\u65B0\u5199\u6216\u6539\u8FC7\u7684\u51B3\u5B9A\u53E5\uFF09\u3001\u965B\u4E0B\u539F\u8BDD uuid\u3001\u63A8\u5BFC\u3001\u662F\u5426\u5728\u6700\u540E\u4E00\u7B7E\u65F6\u5C31\u5728\u8868\u91CC\u3002\u65E0\u539F\u8BDD\u5219 ownerUuid \u4E3A null\u3002\u771F\u65E0\u7968\u5BF9\u8C61\u6CA1\u6709\u7968\u9762\uFF0C\u586B\u7A7A\u6570\u7EC4\u3002"
9267
+ });
9268
+ adrRowBase = {
9269
+ ownerUuid: typebox_exports.String({ description: "\u965B\u4E0B\u62CD\u5B9A\u90A3\u53E5\u539F\u8BDD\u7684 uuid" }),
9270
+ decided: typebox_exports.String({
9271
+ description: "\u90A3\u53E5\u62CD\u5B9A\u4E86\u4EC0\u4E48\uFF1A\u7167\u539F\u8BCD\uFF0C\u4E0D\u6982\u62EC\u3001\u4E0D\u5408\u5E76\uFF08\u56DB\u5C42\u5206\u5DE5\u3001\u56DB\u6761\u89C4\u77E9\u3001\u8D26\u672C\u53EA\u5B58\u4E8B\u5B9E\u2026\u2026\u4E00\u6761\u4E00\u884C\uFF09"
9272
+ })
9273
+ };
9274
+ notaryAdrRowSchema = typebox_exports.Union([
9275
+ typebox_exports.Object(
9276
+ {
9277
+ ...adrRowBase,
9278
+ adr: typebox_exports.String({ description: "\u843D\u5904\uFF1Adocs/adr \u6587\u4EF6\u540D\uFF0B\u6587\u5185\u627F\u8F7D\u8FD9\u6761\u62CD\u5B9A\u7684\u90A3\u4E00\u53E5\u539F\u6587\uFF08\u7167\u6284\uFF09" }),
9279
+ landed: typebox_exports.Literal("\u843D\u4E86\uFF1AADR \u6587\u5185\u6709\u627F\u8F7D\u5B83\u7684\u53E5\u5B50")
9280
+ },
9281
+ { additionalProperties: true }
9282
+ ),
9283
+ typebox_exports.Object(
9284
+ {
9285
+ ...adrRowBase,
9286
+ adr: typebox_exports.Null(),
9287
+ landed: typebox_exports.Literal(
9288
+ "\u672A\u843D\uFF1AADR \u6587\u5185\u6CA1\u6709\u627F\u8F7D\u5B83\u7684\u53E5\u5B50\uFF1B\u7968\u9762\u6761\u6B3E\u5199\u4E86\u3001CLAUDE.md \u4E00\u7C7B\u7D22\u5F15\u8BF4\u67D0\u4EFD ADR \u542B\u5B83\u3001\u5224\u8BCD\u5F15\u8FC7\u5B83\u3001ADR \u6807\u9898\u50CF\uFF0C\u90FD\u4E0D\u662F\u843D\u5904"
9289
+ )
9290
+ },
9291
+ { additionalProperties: true }
9292
+ )
9293
+ ]);
9294
+ notaryAdrField = typebox_exports.Array(notaryAdrRowSchema, {
9295
+ description: "ADR \u843D\u5904\u8868\uFF1A\u53D7\u5BA1\u4E4B\u7269\u662F\u7ED9\u4E8B\u4E2D\u5BF9\u7968\u9762\u7684\u5224\u8BCD\uFF08\u7968\u5EAD\uFF09\u65F6\u586B\u2014\u2014\u8D77\u5C45\u5F55\u4E0E\u6E90\u5377\u91CC\u965B\u4E0B\u62CD\u5B9A\u7684\u3001\u8BE5\u8FDB ADR \u7684\u51B3\u5B9A\uFF08\u67B6\u6784\u5F62\u72B6\u3001\u5206\u5C42\u4E0E\u8FB9\u754C\u3001\u6280\u672F\u9009\u578B\u3001\u523B\u610F\u504F\u79BB\u5E38\u89C4\u7684\u505A\u6CD5\uFF1A\u96BE\u9006\u3001\u8BFB\u4EE3\u7801\u7684\u4EBA\u4F1A\u95EE\u4E3A\u4EC0\u4E48\u7684\u90A3\u7C7B\uFF09\uFF0C\u6BCF\u6761\u4E00\u884C\uFF0C\u5230 docs/adr \u91CC\u627E\u627F\u8F7D\u5B83\u7684\u90A3\u4E00\u53E5\uFF1B\u600E\u4E48\u6D4B\u3001\u600E\u4E48\u5206\u652F\u5408\u5165\u3001\u6570\u636E\u600E\u4E48\u8865\u3001\u5B57\u6BB5\u53EB\u4EC0\u4E48\u8FD9\u7C7B\u529E\u4E8B\u65B9\u6CD5\u4E0E\u7968\u5185\u7EC6\u8282\u4E0D\u5217\u3002\u6709\u300C\u672A\u843D\u300D\u884C\uFF0Cstatus \u53EA\u80FD\u662F escalate\uFF0C\u62CD\u5B9A\u539F\u6587\u4E0E\u5B83\u8BE5\u8FDB\u54EA\u4EFD ADR \u5217\u8FDB decisionGate\uFF0C\u8FDB\u4E0D\u8FDB\u7531\u965B\u4E0B\u5B9A\u3002\u53D7\u5BA1\u4E4B\u7269\u662F\u5927\u7406\u5BFA\u7684\u5224\u8BCD\u3001\u4FEE\u6CD5\u65B9\u5411\u6216\u6536\u655B\u7684\u5B9E\u73B0\u65F6\u4E3A\u7A7A\u6570\u7EC4\u3002"
9267
9296
  });
9268
9297
  notaryReviewSubmissionSchema = withTerminatingOutputDeclarations(
9269
9298
  typebox_exports.Object(
9270
9299
  {
9271
9300
  status: reviewStatusField,
9272
9301
  ...reviewNarrativeFields,
9273
- clauses: notaryClausesField
9302
+ clauses: notaryClausesField,
9303
+ adr: notaryAdrField
9274
9304
  },
9275
9305
  { additionalProperties: true }
9276
9306
  )
@@ -9787,6 +9817,7 @@ var init_secretariat_contracts = __esm({
9787
9817
  "use strict";
9788
9818
  init_build();
9789
9819
  init_terminating_infrastructure();
9820
+ init_review_submission();
9790
9821
  SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
9791
9822
  secretariatVerdictSchema = withTerminatingOutputDeclarations(
9792
9823
  typebox_exports.Object(
@@ -9802,13 +9833,16 @@ var init_secretariat_contracts = __esm({
9802
9833
  }),
9803
9834
  evidence: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
9804
9835
  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"
9836
+ 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"
9837
+ }),
9838
+ existence: typebox_exports.Array(clauseExistenceRowSchema, {
9839
+ 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
9840
  })
9807
9841
  },
9808
9842
  { additionalProperties: true }
9809
9843
  )
9810
9844
  );
9811
- secretariatVerdictSchema.required = [];
9845
+ secretariatVerdictSchema.required = ["existence"];
9812
9846
  }
9813
9847
  });
9814
9848
 
@@ -41,7 +41,7 @@ export const reviewSubmissionSchema = withTerminatingOutputDeclarations(Type.Obj
41
41
  */
42
42
  export const notaryClauseItemSchema = Type.Object({
43
43
  clause: Type.String({
44
- description: "票面条款原文(改变实际行为的条款;不合并、不改写)",
44
+ description: "票面条款原文(改变实际行为的条款;不合并、不改写);票面点名为法源的 ADR 里本票新写或改过的决定句也算一条,前缀文件名照抄",
45
45
  }),
46
46
  ownerUuid: Type.Union([Type.String(), Type.Null()], {
47
47
  description: "推出该条的陛下原话 uuid;无原话则 null",
@@ -60,7 +60,34 @@ export const notaryClauseItemSchema = Type.Object({
60
60
  }),
61
61
  }, { additionalProperties: true });
62
62
  export const notaryClausesField = Type.Array(notaryClauseItemSchema, {
63
- description: "票面逐条核旨表,每一轮都填,不论本轮受审的是票面还是大理寺的判词:现行票面每条改变实际行为的条款的原文、陛下原话 uuid、推导、是否在最后一签时就在表里。无原话则 ownerUuid 为 null。真无票对象没有票面,填空数组。",
63
+ description: "票面逐条核旨表,每一轮都填,不论本轮受审的是票面还是大理寺的判词:现行票面每条改变实际行为的条款的原文(含票面点名为法源的 ADR 里本票新写或改过的决定句)、陛下原话 uuid、推导、是否在最后一签时就在表里。无原话则 ownerUuid 为 null。真无票对象没有票面,填空数组。",
64
+ });
65
+ /**
66
+ * Notary ADR-landing row (2026-10-30, 陛下: summoned by the countersign gate, the notary checks the grill's ADR
67
+ * against the owner's words). One row per owner decision at the direction/design/decision level; two row shapes,
68
+ * no third: the ADR text carries the sentence (adr filled, 落了) or it does not (adr null, 未落). A ticket clause,
69
+ * a CLAUDE.md index line, a verdict citation or an ADR title is not a landing.
70
+ */
71
+ const adrRowBase = {
72
+ ownerUuid: Type.String({ description: "陛下拍定那句原话的 uuid" }),
73
+ decided: Type.String({
74
+ description: "那句拍定了什么:照原词,不概括、不合并(四层分工、四条规矩、账本只存事实……一条一行)",
75
+ }),
76
+ };
77
+ export const notaryAdrRowSchema = Type.Union([
78
+ Type.Object({
79
+ ...adrRowBase,
80
+ adr: Type.String({ description: "落处:docs/adr 文件名+文内承载这条拍定的那一句原文(照抄)" }),
81
+ landed: Type.Literal("落了:ADR 文内有承载它的句子"),
82
+ }, { additionalProperties: true }),
83
+ Type.Object({
84
+ ...adrRowBase,
85
+ adr: Type.Null(),
86
+ landed: Type.Literal("未落:ADR 文内没有承载它的句子;票面条款写了、CLAUDE.md 一类索引说某份 ADR 含它、判词引过它、ADR 标题像,都不是落处"),
87
+ }, { additionalProperties: true }),
88
+ ]);
89
+ export const notaryAdrField = Type.Array(notaryAdrRowSchema, {
90
+ description: "ADR 落处表:受审之物是给事中对票面的判词(票庭)时填——起居录与源卷里陛下拍定的、该进 ADR 的决定(架构形状、分层与边界、技术选型、刻意偏离常规的做法:难逆、读代码的人会问为什么的那类),每条一行,到 docs/adr 里找承载它的那一句;怎么测、怎么分支合入、数据怎么补、字段叫什么这类办事方法与票内细节不列。有「未落」行,status 只能是 escalate,拍定原文与它该进哪份 ADR 列进 decisionGate,进不进由陛下定。受审之物是大理寺的判词、修法方向或收敛的实现时为空数组。",
64
91
  });
65
92
  /**
66
93
  * Notary generation schema (#1195): shared review face plus
@@ -70,6 +97,7 @@ export const notaryReviewSubmissionSchema = withTerminatingOutputDeclarations(Ty
70
97
  status: reviewStatusField,
71
98
  ...reviewNarrativeFields,
72
99
  clauses: notaryClausesField,
100
+ adr: notaryAdrField,
73
101
  }, { additionalProperties: true }));
74
102
  /** Inspector whole-ticket complexity row: one quality-law deletion clause, answered for the whole ticket. */
75
103
  export const ticketComplexityRowSchema = Type.Object({
@@ -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 起)与 adr(ADR 落处表,#1286 起)、台院 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.6086",
4
4
  "description": "Soul-bound workflow roles for Pi",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
package/souls/notary.md CHANGED
@@ -20,9 +20,11 @@
20
20
  键值已写进 ADR、票面已过庭、判词已引用,都不算原话,不豁免。
21
21
  任一病成立,点名该条驳回;拿不准陛下本意的,上呈。
22
22
 
23
+ **三、ADR 落处**:受审之物是票面本身(票庭)那一轮,再做一张表:起居录与源卷里陛下拍定的、该进 ADR 的决定——架构形状、分层与边界、技术选型、刻意偏离常规的做法,难逆、读代码的人会问为什么的那类——每条一行,到 docs/adr 里找承载它的那一句;怎么测、怎么分支合入、数据怎么补、字段叫什么这类办事方法与票内细节不列。落处只认 ADR 文内的句子:票面条款写了、CLAUDE.md 一类索引说某份 ADR「含」它、判词引过它、ADR 标题像,都不是落处。陛下说过要写进 ADR 的(「更新/新增到 adr」一类)而 ADR 里没有那句,是漏写;没说过的也照列,进不进 ADR 由陛下定。有未落的行,status 只能是 escalate,拍定原文与它该进哪份 ADR 列进 decisionGate。反过来,票面点名为法源的 ADR 里本票新写或改过的决定句也是条款,照条款表的规矩找原话(没动的句子不列);ADR 里有、原话推不出的,同为加戏。
24
+
23
25
  方法:按条封驳。
24
26
  取证按《审法·取证授权》与《取证边界》。无法解决的上抛陛下。
25
27
 
26
28
  ## 结论
27
29
 
28
- 结论三态,裁的是被审衙门这一轮的判词站不站得住(票庭是给事中,大理寺庭是大理寺),条款表是你的依据:'converged'(署)——站得住,不论它署了票还是封驳了票:它署了票,而条款表每条都有 uuid 且推导成立;或它封驳了票、退签发方改,而你也查出该改的地方。'continue'(封驳)——站不住,要被审衙门改判重交:它署了票,而条款表查出与原话相抵的条款;或它封驳的理由在原话上不成立。'escalate'(上呈)——有条款 ownerUuid 为 null(无原话),或有条款是最后一签后才出现在票面上(未过庭),陛下定。
30
+ 结论三态,裁的是被审衙门这一轮的判词站不站得住(票庭是给事中,大理寺庭是大理寺),条款表是你的依据:'converged'(署)——站得住,不论它署了票还是封驳了票:它署了票,而条款表每条都有 uuid 且推导成立;或它封驳了票、退签发方改,而你也查出该改的地方。'continue'(封驳)——站不住,要被审衙门改判重交:它署了票,而条款表查出与原话相抵的条款;或它封驳的理由在原话上不成立。'escalate'(上呈)——有条款 ownerUuid 为 null(无原话),或有条款是最后一签后才出现在票面上(未过庭),或 ADR 落处表有未落的拍定,陛下定。
@@ -6,7 +6,7 @@
6
6
 
7
7
  **一、盘现状**:出题前,打开代码和本票、本腿已有的记录、文件、接缝,对稿里每个子问题写下:现在已经由什么承担;相关接缝何时触发、那一刻手里有什么数据。稿里交给第三方库或工具承担的事,现状还包括这个库官方怎么用它:打开官方文档与官方案例,记下承担同一件事的官方做法,附链接与原句。
8
8
 
9
- **二、出题**:稿里每个难改决定各出一题——数据在哪一刻落到哪里;由包做、由腿做、由哪一席做;行为挂在哪一层接缝;新增或保留的每一本账、每个文件、每段解析。一题=稿里的做法对一个截然不同的做法。另一做法先试这几处:整样删掉、由第一步盘出的现有哪样东西承担;在数据产生那一刻落定;用宿主或生态现成的能力;第一步盘出的官方做法。两边都按今天从零设计来比,各写按《设计法》合、一致、少的代价,再写你的建议;一样东西已经存在、有人在用、改起来费事,只写进代价,不当任何一边的理由。另一做法只是换个说法、或明摆着更差的,不出题。稿里「怎么验」逐个对外契约对照《票面法》:缺正确、边界、错误哪一类样本,或输入不是真实来源会交出的样子,各出一题;契约已拍定的现在就出,不等别的题答完。一轮问完眼下能问的全部题;答案会改变的后续题留到下一轮。
9
+ **二、出题**:稿里每个难改决定各出一题——数据在哪一刻落到哪里;由包做、由腿做、由哪一席做;行为挂在哪一层接缝;新增或保留的每一本账、每个文件、每段解析。一题=稿里的做法对一个截然不同的做法。另一做法先试这几处:整样删掉、由第一步盘出的现有哪样东西承担;在数据产生那一刻落定;用宿主或生态现成的能力;第一步盘出的官方做法。两边都按今天从零设计来比,各写按《设计法》合、一致、少的代价,再写你的建议;一样东西已经存在、有人在用、改起来费事,只写进代价,不当任何一边的理由。另一做法只是换个说法、或明摆着更差的,不出题。存废尺按条款过:稿里每条让机制存在的条款各记一行进 existence——条款自己点名了状态、表、缓存、锁、依赖的是一类,只写结果要求(零重复、跨提交不重读、不建豁免、每 X 只做一次)而现状代码满足不了、得长出机制才做得到的是另一类,先打开现状代码核它做不做得到——到 ADR/票面点名的应用框架官方示范里看不带它时同一关切怎么处理;示范不带也处理得了的,这条不要,不进票面,原文列进 decisionGate 上呈陛下,不出给宰相答。票面已写、前轮判词要求过、宰相答过、陛下对别的题点过头,都不是要它的理由。稿里「怎么验」逐个对外契约对照《票面法》:缺正确、边界、错误哪一类样本,或输入不是真实来源会交出的样子,各出一题;契约已拍定的现在就出,不等别的题答完。一轮问完眼下能问的全部题;答案会改变的后续题留到下一轮。
10
10
 
11
11
  **三、读答案**:宰相的答案是待核主张——对不上代码或已立的法,摆出证据再问一次。关于库怎么用的主张,核的是官方文档与官方案例的原句;库源码只说明库能做什么,不说明该怎么用,引源码当依据的主张照官方文档再问一次。一道题里只要有一边会取代已定 ADR、与陛下原话相抵、或给用户的体验不同,整题只有陛下能拍——不论宰相选哪边,都等陛下原话。
12
12
 
@@ -58,7 +58,7 @@ export const reviewSubmissionSchema = withTerminatingOutputDeclarations(
58
58
  export const notaryClauseItemSchema = Type.Object(
59
59
  {
60
60
  clause: Type.String({
61
- description: "票面条款原文(改变实际行为的条款;不合并、不改写)",
61
+ description: "票面条款原文(改变实际行为的条款;不合并、不改写);票面点名为法源的 ADR 里本票新写或改过的决定句也算一条,前缀文件名照抄",
62
62
  }),
63
63
  ownerUuid: Type.Union([Type.String(), Type.Null()], {
64
64
  description: "推出该条的陛下原话 uuid;无原话则 null",
@@ -87,7 +87,45 @@ export const notaryClauseItemSchema = Type.Object(
87
87
 
88
88
  export const notaryClausesField = Type.Array(notaryClauseItemSchema, {
89
89
  description:
90
- "票面逐条核旨表,每一轮都填,不论本轮受审的是票面还是大理寺的判词:现行票面每条改变实际行为的条款的原文、陛下原话 uuid、推导、是否在最后一签时就在表里。无原话则 ownerUuid 为 null。真无票对象没有票面,填空数组。",
90
+ "票面逐条核旨表,每一轮都填,不论本轮受审的是票面还是大理寺的判词:现行票面每条改变实际行为的条款的原文(含票面点名为法源的 ADR 里本票新写或改过的决定句)、陛下原话 uuid、推导、是否在最后一签时就在表里。无原话则 ownerUuid 为 null。真无票对象没有票面,填空数组。",
91
+ });
92
+
93
+ /**
94
+ * Notary ADR-landing row (2026-10-30, 陛下: summoned by the countersign gate, the notary checks the grill's ADR
95
+ * against the owner's words). One row per owner decision at the direction/design/decision level; two row shapes,
96
+ * no third: the ADR text carries the sentence (adr filled, 落了) or it does not (adr null, 未落). A ticket clause,
97
+ * a CLAUDE.md index line, a verdict citation or an ADR title is not a landing.
98
+ */
99
+ const adrRowBase = {
100
+ ownerUuid: Type.String({ description: "陛下拍定那句原话的 uuid" }),
101
+ decided: Type.String({
102
+ description: "那句拍定了什么:照原词,不概括、不合并(四层分工、四条规矩、账本只存事实……一条一行)",
103
+ }),
104
+ };
105
+ export const notaryAdrRowSchema = Type.Union([
106
+ Type.Object(
107
+ {
108
+ ...adrRowBase,
109
+ adr: Type.String({ description: "落处:docs/adr 文件名+文内承载这条拍定的那一句原文(照抄)" }),
110
+ landed: Type.Literal("落了:ADR 文内有承载它的句子"),
111
+ },
112
+ { additionalProperties: true },
113
+ ),
114
+ Type.Object(
115
+ {
116
+ ...adrRowBase,
117
+ adr: Type.Null(),
118
+ landed: Type.Literal(
119
+ "未落:ADR 文内没有承载它的句子;票面条款写了、CLAUDE.md 一类索引说某份 ADR 含它、判词引过它、ADR 标题像,都不是落处",
120
+ ),
121
+ },
122
+ { additionalProperties: true },
123
+ ),
124
+ ]);
125
+
126
+ export const notaryAdrField = Type.Array(notaryAdrRowSchema, {
127
+ description:
128
+ "ADR 落处表:受审之物是给事中对票面的判词(票庭)时填——起居录与源卷里陛下拍定的、该进 ADR 的决定(架构形状、分层与边界、技术选型、刻意偏离常规的做法:难逆、读代码的人会问为什么的那类),每条一行,到 docs/adr 里找承载它的那一句;怎么测、怎么分支合入、数据怎么补、字段叫什么这类办事方法与票内细节不列。有「未落」行,status 只能是 escalate,拍定原文与它该进哪份 ADR 列进 decisionGate,进不进由陛下定。受审之物是大理寺的判词、修法方向或收敛的实现时为空数组。",
91
129
  });
92
130
 
93
131
  /**
@@ -100,6 +138,7 @@ export const notaryReviewSubmissionSchema = withTerminatingOutputDeclarations(
100
138
  status: reviewStatusField,
101
139
  ...reviewNarrativeFields,
102
140
  clauses: notaryClausesField,
141
+ adr: notaryAdrField,
103
142
  },
104
143
  { additionalProperties: true },
105
144
  ),
@@ -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>;