skill-family-engineering-kit 0.5.0 → 0.7.0
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/CHANGELOG.md +43 -0
- package/CHANGELOG.zh-CN.md +43 -0
- package/README.md +19 -10
- package/README.zh-CN.md +19 -10
- package/docs/agents/capability-catalog.en.json +243 -17
- package/docs/agents/capability-catalog.json +179 -13
- package/docs/agents/capability-catalog.zh-CN.json +243 -17
- package/docs/architecture/index.html +3 -3
- package/docs/en/migration/index.html +32 -87
- package/docs/en/reference/failure-and-side-effect-matrix/index.html +1 -1
- package/docs/integration/audit/index.html +2 -1
- package/docs/integration/audit/version-compatibility/index.html +66 -3
- package/docs/migration/index.html +32 -87
- package/docs/public/status/index.html +3 -3
- package/docs/reference/api/engineering-kit/index.html +117 -12
- package/docs/reference/api/harness/index.html +83 -3
- package/docs/reference/failure-and-side-effect-matrix/index.html +1 -1
- package/docs/search/search_index.json +1 -1
- package/package.json +6 -4
- package/profile-spi/extension-spi.json +162 -0
- package/profile-spi/index.mjs +574 -0
- package/profile-spi/profile-adoption.schema.json +120 -0
- package/profile-spi/profile-descriptor.schema.json +99 -0
- package/profile-spi/rule-baseline-catalog.json +50 -0
- package/release-notes/0.6.0.yaml +25 -0
- package/release-notes/0.7.0.yaml +23 -0
- package/src/adopt-plan.mjs +81 -159
- package/src/check.mjs +443 -19
- package/src/cli.mjs +80 -1
- package/src/core-check.mjs +8 -4
- package/src/entry-check.mjs +384 -0
- package/src/errors.mjs +21 -0
- package/src/index.mjs +36 -6
- package/src/projection.mjs +298 -45
- package/src/relock.mjs +397 -0
- package/src/skeleton.mjs +162 -4
|
@@ -180,6 +180,30 @@
|
|
|
180
180
|
"packages/skill-family-contracts/test/audit-surface.test.mjs"
|
|
181
181
|
]
|
|
182
182
|
},
|
|
183
|
+
{
|
|
184
|
+
"id": "foundation.contracts.token-estimate-consumption",
|
|
185
|
+
"package": "skill-family-contracts",
|
|
186
|
+
"layer": "contracts",
|
|
187
|
+
"since": "0.6.0",
|
|
188
|
+
"stability": "stable",
|
|
189
|
+
"entrypoints": [
|
|
190
|
+
"TOKEN_ESTIMATE_CONSUMPTION (packages/skill-family-contracts/src/token-estimate-consumption.mjs)",
|
|
191
|
+
"TOKEN_ESTIMATE_CONSUMPTION_REASONS (packages/skill-family-contracts/src/token-estimate-consumption.mjs)",
|
|
192
|
+
"TOKEN_ESTIMATE_CONSUMPTION_ERROR_KIND (packages/skill-family-contracts/src/token-estimate-consumption.mjs)",
|
|
193
|
+
"consumeTokenEstimate (packages/skill-family-contracts/src/token-estimate-consumption.mjs)",
|
|
194
|
+
"consumeTokenEstimateStrict (packages/skill-family-contracts/src/token-estimate-consumption.mjs)"
|
|
195
|
+
],
|
|
196
|
+
"sourceRefs": [
|
|
197
|
+
"packages/skill-family-contracts/src/token-estimate-consumption.mjs",
|
|
198
|
+
"packages/skill-family-contracts/src/schemas/token-estimate-record.schema.json"
|
|
199
|
+
],
|
|
200
|
+
"positiveTestRefs": [
|
|
201
|
+
"packages/skill-family-contracts/test/token-estimate-consumption.test.mjs"
|
|
202
|
+
],
|
|
203
|
+
"negativeTestRefs": [
|
|
204
|
+
"packages/skill-family-contracts/test/token-estimate-consumption.test.mjs"
|
|
205
|
+
]
|
|
206
|
+
},
|
|
183
207
|
{
|
|
184
208
|
"id": "foundation.harness.contract-validation",
|
|
185
209
|
"package": "skill-family-harness-node",
|
|
@@ -486,16 +510,26 @@
|
|
|
486
510
|
"since": "0.3.0",
|
|
487
511
|
"stability": "stable",
|
|
488
512
|
"entrypoints": [
|
|
489
|
-
"estimateTokenUpperBound (packages/skill-family-harness-node/src/token-estimate.mjs)"
|
|
513
|
+
"estimateTokenUpperBound (packages/skill-family-harness-node/src/token-estimate.mjs)",
|
|
514
|
+
"estimateTokens (packages/skill-family-harness-node/src/token-estimate.mjs)",
|
|
515
|
+
"isCjkCodePoint (packages/skill-family-harness-node/src/token-estimate.mjs)",
|
|
516
|
+
"CJK_CODE_POINT_RANGES (packages/skill-family-harness-node/src/token-estimate.mjs)",
|
|
517
|
+
"TOKEN_ESTIMATOR_ID (packages/skill-family-harness-node/src/token-estimate.mjs)",
|
|
518
|
+
"TOKEN_ESTIMATOR_VERSION (packages/skill-family-harness-node/src/token-estimate.mjs)",
|
|
519
|
+
"TOKEN_ESTIMATION_ALGORITHM (packages/skill-family-harness-node/src/token-estimate.mjs)",
|
|
520
|
+
"tokenEstimateCliMain (packages/skill-family-harness-node/src/token-estimate-cli.mjs)"
|
|
490
521
|
],
|
|
491
522
|
"sourceRefs": [
|
|
492
|
-
"packages/skill-family-harness-node/src/token-estimate.mjs"
|
|
523
|
+
"packages/skill-family-harness-node/src/token-estimate.mjs",
|
|
524
|
+
"packages/skill-family-harness-node/src/token-estimate-cli.mjs"
|
|
493
525
|
],
|
|
494
526
|
"positiveTestRefs": [
|
|
495
|
-
"packages/skill-family-harness-node/test/token-estimate.test.mjs"
|
|
527
|
+
"packages/skill-family-harness-node/test/token-estimate.test.mjs",
|
|
528
|
+
"packages/skill-family-harness-node/test/token-estimator.test.mjs"
|
|
496
529
|
],
|
|
497
530
|
"negativeTestRefs": [
|
|
498
|
-
"packages/skill-family-harness-node/test/token-estimate.test.mjs"
|
|
531
|
+
"packages/skill-family-harness-node/test/token-estimate.test.mjs",
|
|
532
|
+
"packages/skill-family-harness-node/test/token-estimator.test.mjs"
|
|
499
533
|
]
|
|
500
534
|
},
|
|
501
535
|
{
|
|
@@ -520,6 +554,75 @@
|
|
|
520
554
|
"packages/skill-family-harness-node/test/budget-guard.test.mjs"
|
|
521
555
|
]
|
|
522
556
|
},
|
|
557
|
+
{
|
|
558
|
+
"id": "foundation.harness.supervise-process",
|
|
559
|
+
"package": "skill-family-harness-node",
|
|
560
|
+
"layer": "harness",
|
|
561
|
+
"since": "0.6.0",
|
|
562
|
+
"stability": "stable",
|
|
563
|
+
"entrypoints": [
|
|
564
|
+
"superviseProcess (packages/skill-family-harness-node/src/supervise-process.mjs)",
|
|
565
|
+
"validateTimeoutPolicy (packages/skill-family-harness-node/src/supervise-process.mjs)",
|
|
566
|
+
"WATCHDOG_REASONS (packages/skill-family-harness-node/src/supervise-process.mjs)",
|
|
567
|
+
"TERMINATION_REASONS (packages/skill-family-harness-node/src/supervise-process.mjs)",
|
|
568
|
+
"PROCESS_STATUSES (packages/skill-family-harness-node/src/supervise-process.mjs)",
|
|
569
|
+
"ENVELOPE_GUARANTEES (packages/skill-family-harness-node/src/supervise-process.mjs)"
|
|
570
|
+
],
|
|
571
|
+
"sourceRefs": [
|
|
572
|
+
"packages/skill-family-harness-node/src/supervise-process.mjs",
|
|
573
|
+
"packages/skill-family-contracts/src/schemas/watchdog-termination-envelope.schema.json",
|
|
574
|
+
"packages/skill-family-contracts/src/schemas/timeout-policy.schema.json"
|
|
575
|
+
],
|
|
576
|
+
"positiveTestRefs": [
|
|
577
|
+
"packages/skill-family-harness-node/test/supervise-process-lifecycle.test.mjs",
|
|
578
|
+
"packages/skill-family-harness-node/test/supervise-process-terminal.test.mjs",
|
|
579
|
+
"packages/skill-family-harness-node/test/supervise-process-validation.test.mjs"
|
|
580
|
+
],
|
|
581
|
+
"negativeTestRefs": [
|
|
582
|
+
"packages/skill-family-harness-node/test/supervise-process-vanish.test.mjs",
|
|
583
|
+
"packages/skill-family-harness-node/test/supervise-process-evidence.test.mjs",
|
|
584
|
+
"packages/skill-family-harness-node/test/supervise-process-purity.test.mjs"
|
|
585
|
+
]
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
"id": "foundation.harness.strict-read",
|
|
589
|
+
"package": "skill-family-harness-node",
|
|
590
|
+
"layer": "harness",
|
|
591
|
+
"since": "0.6.0",
|
|
592
|
+
"stability": "stable",
|
|
593
|
+
"entrypoints": [
|
|
594
|
+
"readFileStrict (packages/skill-family-harness-node/src/strict-read.mjs)"
|
|
595
|
+
],
|
|
596
|
+
"sourceRefs": [
|
|
597
|
+
"packages/skill-family-harness-node/src/strict-read.mjs"
|
|
598
|
+
],
|
|
599
|
+
"positiveTestRefs": [
|
|
600
|
+
"packages/skill-family-harness-node/test/strict-read.test.mjs"
|
|
601
|
+
],
|
|
602
|
+
"negativeTestRefs": [
|
|
603
|
+
"packages/skill-family-harness-node/test/strict-read.test.mjs"
|
|
604
|
+
]
|
|
605
|
+
},
|
|
606
|
+
{
|
|
607
|
+
"id": "foundation.harness.url-credential-redaction",
|
|
608
|
+
"package": "skill-family-harness-node",
|
|
609
|
+
"layer": "harness",
|
|
610
|
+
"since": "0.6.0",
|
|
611
|
+
"stability": "stable",
|
|
612
|
+
"entrypoints": [
|
|
613
|
+
"redactUrlCredentials (packages/skill-family-harness-node/src/url-redaction.mjs)",
|
|
614
|
+
"REDACTED_URL_PLACEHOLDER (packages/skill-family-harness-node/src/url-redaction.mjs)"
|
|
615
|
+
],
|
|
616
|
+
"sourceRefs": [
|
|
617
|
+
"packages/skill-family-harness-node/src/url-redaction.mjs"
|
|
618
|
+
],
|
|
619
|
+
"positiveTestRefs": [
|
|
620
|
+
"packages/skill-family-harness-node/test/url-redaction.test.mjs"
|
|
621
|
+
],
|
|
622
|
+
"negativeTestRefs": [
|
|
623
|
+
"packages/skill-family-harness-node/test/url-redaction.test.mjs"
|
|
624
|
+
]
|
|
625
|
+
},
|
|
523
626
|
{
|
|
524
627
|
"id": "foundation.harness.errors",
|
|
525
628
|
"package": "skill-family-harness-node",
|
|
@@ -574,7 +677,7 @@
|
|
|
574
677
|
"stability": "stable",
|
|
575
678
|
"entrypoints": [
|
|
576
679
|
"planAdoption (packages/skill-family-engineering-kit/src/adopt-plan.mjs)",
|
|
577
|
-
"
|
|
680
|
+
"buildProfileDraft (packages/skill-family-engineering-kit/src/adopt-plan.mjs)",
|
|
578
681
|
"evaluateMigrationCompletion (packages/skill-family-engineering-kit/src/migration.mjs)",
|
|
579
682
|
"validateException (packages/skill-family-engineering-kit/src/migration.mjs)",
|
|
580
683
|
"assessLegacyExitList (packages/skill-family-engineering-kit/src/migration.mjs)",
|
|
@@ -600,17 +703,23 @@
|
|
|
600
703
|
"since": "0.2.0",
|
|
601
704
|
"stability": "stable",
|
|
602
705
|
"entrypoints": [
|
|
706
|
+
"buildProjectionClosure (packages/skill-family-engineering-kit/src/projection.mjs)",
|
|
603
707
|
"runProjection (packages/skill-family-engineering-kit/src/projection.mjs)",
|
|
604
|
-
"loadProjectionManifest (packages/skill-family-engineering-kit/src/projection.mjs)"
|
|
708
|
+
"loadProjectionManifest (packages/skill-family-engineering-kit/src/projection.mjs)",
|
|
709
|
+
"PROJECTION_AUTHORITY_BINDING_KINDS (packages/skill-family-engineering-kit/src/projection.mjs)"
|
|
605
710
|
],
|
|
606
711
|
"sourceRefs": [
|
|
607
712
|
"packages/skill-family-engineering-kit/src/projection.mjs"
|
|
608
713
|
],
|
|
609
714
|
"positiveTestRefs": [
|
|
610
|
-
"packages/skill-family-engineering-kit/test/projection.test.mjs"
|
|
715
|
+
"packages/skill-family-engineering-kit/test/projection.test.mjs",
|
|
716
|
+
"packages/skill-family-engineering-kit/test/projection-external-authority.test.mjs",
|
|
717
|
+
"packages/skill-family-engineering-kit/test/projection-closure-builder.test.mjs"
|
|
611
718
|
],
|
|
612
719
|
"negativeTestRefs": [
|
|
613
|
-
"packages/skill-family-engineering-kit/test/projection.test.mjs"
|
|
720
|
+
"packages/skill-family-engineering-kit/test/projection.test.mjs",
|
|
721
|
+
"packages/skill-family-engineering-kit/test/projection-external-authority.test.mjs",
|
|
722
|
+
"packages/skill-family-engineering-kit/test/projection-closure-builder.test.mjs"
|
|
614
723
|
]
|
|
615
724
|
},
|
|
616
725
|
{
|
|
@@ -621,7 +730,8 @@
|
|
|
621
730
|
"stability": "stable",
|
|
622
731
|
"entrypoints": [
|
|
623
732
|
"runChecks (packages/skill-family-engineering-kit/src/check.mjs)",
|
|
624
|
-
"runCoreCheck (packages/skill-family-engineering-kit/src/core-check.mjs)"
|
|
733
|
+
"runCoreCheck (packages/skill-family-engineering-kit/src/core-check.mjs)",
|
|
734
|
+
"isContainedDeclaration (packages/skill-family-engineering-kit/src/core-check.mjs)"
|
|
625
735
|
],
|
|
626
736
|
"sourceRefs": [
|
|
627
737
|
"packages/skill-family-engineering-kit/src/check.mjs",
|
|
@@ -685,6 +795,7 @@
|
|
|
685
795
|
"stability": "unstable",
|
|
686
796
|
"entrypoints": [
|
|
687
797
|
"describeHost (packages/skill-family-engineering-kit/src/host-profiles.mjs)",
|
|
798
|
+
"loadHostRegistry (packages/skill-family-engineering-kit/src/host-profiles.mjs)",
|
|
688
799
|
"probeHost (packages/skill-family-engineering-kit/src/host.mjs)",
|
|
689
800
|
"buildHostAdapter (packages/skill-family-engineering-kit/src/host.mjs)",
|
|
690
801
|
"materializeHostBuild (packages/skill-family-engineering-kit/src/host.mjs)",
|
|
@@ -715,6 +826,7 @@
|
|
|
715
826
|
"loadLicensingProfile (packages/skill-family-engineering-kit/src/licensing.mjs)",
|
|
716
827
|
"listLicensingProfiles (packages/skill-family-engineering-kit/src/licensing.mjs)",
|
|
717
828
|
"validateLicensingProfile (packages/skill-family-engineering-kit/src/licensing.mjs)",
|
|
829
|
+
"bundledProfilesRoot (packages/skill-family-engineering-kit/src/licensing.mjs)",
|
|
718
830
|
"generateLicenseContent (packages/skill-family-engineering-kit/src/licensing.mjs)",
|
|
719
831
|
"generateNoticeContent (packages/skill-family-engineering-kit/src/licensing.mjs)",
|
|
720
832
|
"generateIdentityRecord (packages/skill-family-engineering-kit/src/licensing.mjs)"
|
|
@@ -752,6 +864,50 @@
|
|
|
752
864
|
"packages/skill-family-engineering-kit/test/identity-check.test.mjs"
|
|
753
865
|
]
|
|
754
866
|
},
|
|
867
|
+
{
|
|
868
|
+
"id": "foundation.kit.entry-check",
|
|
869
|
+
"package": "skill-family-engineering-kit",
|
|
870
|
+
"layer": "engineering-kit",
|
|
871
|
+
"since": "0.6.0",
|
|
872
|
+
"stability": "stable",
|
|
873
|
+
"entrypoints": [
|
|
874
|
+
"runEntryContractCheck (packages/skill-family-engineering-kit/src/entry-check.mjs)",
|
|
875
|
+
"checkEntriesAction (packages/skill-family-engineering-kit/src/entry-check.mjs)",
|
|
876
|
+
"ENTRY_CONTRACT_DECLARATION_PATH (packages/skill-family-engineering-kit/src/entry-check.mjs)",
|
|
877
|
+
"ENTRY_CONTRACT_DECLARATION_KIND (packages/skill-family-engineering-kit/src/entry-check.mjs)"
|
|
878
|
+
],
|
|
879
|
+
"sourceRefs": [
|
|
880
|
+
"packages/skill-family-engineering-kit/src/entry-check.mjs"
|
|
881
|
+
],
|
|
882
|
+
"positiveTestRefs": [
|
|
883
|
+
"packages/skill-family-engineering-kit/test/entry-check.test.mjs"
|
|
884
|
+
],
|
|
885
|
+
"negativeTestRefs": [
|
|
886
|
+
"packages/skill-family-engineering-kit/test/entry-check.test.mjs"
|
|
887
|
+
]
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
"id": "foundation.kit.relock",
|
|
891
|
+
"package": "skill-family-engineering-kit",
|
|
892
|
+
"layer": "engineering-kit",
|
|
893
|
+
"since": "0.6.0",
|
|
894
|
+
"stability": "stable",
|
|
895
|
+
"entrypoints": [
|
|
896
|
+
"runRelock (packages/skill-family-engineering-kit/src/relock.mjs)",
|
|
897
|
+
"relockAction (packages/skill-family-engineering-kit/src/relock.mjs)",
|
|
898
|
+
"RELOCK_LOCK_PATH_PATTERN (packages/skill-family-engineering-kit/src/relock.mjs)",
|
|
899
|
+
"RELOCK_REPORT_KIND (packages/skill-family-engineering-kit/src/relock.mjs)"
|
|
900
|
+
],
|
|
901
|
+
"sourceRefs": [
|
|
902
|
+
"packages/skill-family-engineering-kit/src/relock.mjs"
|
|
903
|
+
],
|
|
904
|
+
"positiveTestRefs": [
|
|
905
|
+
"packages/skill-family-engineering-kit/test/relock.test.mjs"
|
|
906
|
+
],
|
|
907
|
+
"negativeTestRefs": [
|
|
908
|
+
"packages/skill-family-engineering-kit/test/relock.test.mjs"
|
|
909
|
+
]
|
|
910
|
+
},
|
|
755
911
|
{
|
|
756
912
|
"id": "foundation.kit.cli",
|
|
757
913
|
"package": "skill-family-engineering-kit",
|
|
@@ -781,17 +937,27 @@
|
|
|
781
937
|
"since": "0.2.0",
|
|
782
938
|
"stability": "stable",
|
|
783
939
|
"entrypoints": [
|
|
784
|
-
"verifyProfile (profiles/spi/index.mjs)"
|
|
940
|
+
"verifyProfile (profiles/spi/index.mjs)",
|
|
941
|
+
"skill-family-engineering-kit/profile-spi (packages/skill-family-engineering-kit/profile-spi/index.mjs)"
|
|
785
942
|
],
|
|
786
943
|
"sourceRefs": [
|
|
787
944
|
"profiles/spi/index.mjs",
|
|
788
|
-
"profiles/spi/extension-spi.json"
|
|
945
|
+
"profiles/spi/extension-spi.json",
|
|
946
|
+
"profiles/spi/profile-adoption.schema.json",
|
|
947
|
+
"profiles/spi/rule-baseline-catalog.json",
|
|
948
|
+
"packages/skill-family-engineering-kit/profile-spi/index.mjs",
|
|
949
|
+
"packages/skill-family-engineering-kit/profile-spi/extension-spi.json",
|
|
950
|
+
"packages/skill-family-engineering-kit/profile-spi/profile-adoption.schema.json",
|
|
951
|
+
"packages/skill-family-engineering-kit/profile-spi/profile-descriptor.schema.json",
|
|
952
|
+
"packages/skill-family-engineering-kit/profile-spi/rule-baseline-catalog.json"
|
|
789
953
|
],
|
|
790
954
|
"positiveTestRefs": [
|
|
791
|
-
"fixtures/generic-profile-extension-conformance/verify.mjs"
|
|
955
|
+
"fixtures/generic-profile-extension-conformance/verify.mjs",
|
|
956
|
+
"packages/skill-family-engineering-kit/test/profile-spi-public.test.mjs"
|
|
792
957
|
],
|
|
793
958
|
"negativeTestRefs": [
|
|
794
|
-
"fixtures/generic-profile-extension-conformance/verify.mjs"
|
|
959
|
+
"fixtures/generic-profile-extension-conformance/verify.mjs",
|
|
960
|
+
"packages/skill-family-engineering-kit/test/profile-spi-public.test.mjs"
|
|
795
961
|
]
|
|
796
962
|
},
|
|
797
963
|
{
|
|
@@ -282,6 +282,42 @@
|
|
|
282
282
|
"领域审计语义:转独立审计消费者"
|
|
283
283
|
]
|
|
284
284
|
},
|
|
285
|
+
{
|
|
286
|
+
"id": "foundation.contracts.token-estimate-consumption",
|
|
287
|
+
"intent": "定义 token 估算记录的最小消费合同:哪个字段承载数值估算、退化的裸整数形态与失败关闭的拒绝语义",
|
|
288
|
+
"useWhen": [
|
|
289
|
+
"需要从 token-estimate-record 提取数值估算并校验降级形态",
|
|
290
|
+
"需要拒绝估算器不可混用或目标字段缺失的记录"
|
|
291
|
+
],
|
|
292
|
+
"doNotUseWhen": [
|
|
293
|
+
"需要生成估算记录(归 harness estimateTokens)",
|
|
294
|
+
"需要解释估算结果的业务含义"
|
|
295
|
+
],
|
|
296
|
+
"prerequisites": [],
|
|
297
|
+
"inputs": [
|
|
298
|
+
"token-estimate-record 文档或其退化裸整数形态"
|
|
299
|
+
],
|
|
300
|
+
"outputs": [
|
|
301
|
+
"消费结果(数值估算与来源标识)或失败关闭拒绝"
|
|
302
|
+
],
|
|
303
|
+
"sideEffects": [
|
|
304
|
+
"纯函数,无文件系统、Git、网络或进程副作用"
|
|
305
|
+
],
|
|
306
|
+
"failureSemantics": [
|
|
307
|
+
"估算器不匹配或字段缺失时以稳定错误种类失败关闭",
|
|
308
|
+
"拒绝结果携带 closed 枚举原因,不静默降级"
|
|
309
|
+
],
|
|
310
|
+
"invariants": [
|
|
311
|
+
"不同估算器结果不得静默混用",
|
|
312
|
+
"消费合同不新增顶层对象类"
|
|
313
|
+
],
|
|
314
|
+
"ownedByCaller": [
|
|
315
|
+
"估算的触发时机与结果的业务解释"
|
|
316
|
+
],
|
|
317
|
+
"routeElsewhere": [
|
|
318
|
+
"估算记录生成:foundation.harness.token-estimation"
|
|
319
|
+
]
|
|
320
|
+
},
|
|
285
321
|
{
|
|
286
322
|
"id": "foundation.harness.contract-validation",
|
|
287
323
|
"intent": "在 Node 运行时解析契约上下文并复用 Contracts 校验器,校验契约文档并缓存校验器实例",
|
|
@@ -794,13 +830,14 @@
|
|
|
794
830
|
},
|
|
795
831
|
{
|
|
796
832
|
"id": "foundation.harness.token-estimation",
|
|
797
|
-
"intent": "
|
|
833
|
+
"intent": "对文本内容给出确定性估算:UTF-8 字节数上界与按 CJK 码位/空白切分的词元数估算;均为无模型、无网络、无 tokenizer 依赖的纯函数,结果携带估算器身份与版本",
|
|
798
834
|
"useWhen": [
|
|
799
835
|
"需要在不调用模型的前提下给文本内容的消耗上界",
|
|
800
|
-
"
|
|
836
|
+
"需要中英混排、纯 CJK 或纯 ASCII 输入下确定性、可重放的词元数估算",
|
|
837
|
+
"需要契约化、可校验、无时间戳的估算结果对象,并要求记录结果出自哪个估算器"
|
|
801
838
|
],
|
|
802
839
|
"doNotUseWhen": [
|
|
803
|
-
"
|
|
840
|
+
"需要目标模型 tokenizer 的真实 token 计数或语义估算(估算原语不承诺精度)"
|
|
804
841
|
],
|
|
805
842
|
"prerequisites": [
|
|
806
843
|
"输入为 JavaScript 字符串"
|
|
@@ -809,16 +846,20 @@
|
|
|
809
846
|
"文本字符串"
|
|
810
847
|
],
|
|
811
848
|
"outputs": [
|
|
812
|
-
"token-estimate-result 契约对象(inputBytes 与 upperBound 相等)"
|
|
849
|
+
"token-estimate-result 契约对象(inputBytes 与 upperBound 相等)",
|
|
850
|
+
"词元估算记录(含估算器 id、版本、算法标识与切分统计;tokens 等于 CJK 字符数加 OTHER 段数)"
|
|
813
851
|
],
|
|
814
852
|
"sideEffects": [
|
|
815
|
-
"
|
|
853
|
+
"无:纯函数,零依赖;CLI 仅读取命令行参数、文件或 stdin,仅写 stdout"
|
|
816
854
|
],
|
|
817
855
|
"failureSemantics": [
|
|
818
|
-
"非字符串输入抛 TypeError"
|
|
856
|
+
"非字符串输入抛 TypeError",
|
|
857
|
+
"CLI 参数错误退出码 2,成功退出码 0"
|
|
819
858
|
],
|
|
820
859
|
"invariants": [
|
|
821
|
-
"
|
|
860
|
+
"同输入同输出,确定性字节计数与确定性切分",
|
|
861
|
+
"每个 CJK 码位计 1 词元并终结其前的 OTHER 段;空白字符不贡献词元",
|
|
862
|
+
"每条估算记录携带估算器 id 与版本(SFA-CONTEXT-028),不同估算器结果不得静默混用",
|
|
822
863
|
"guarantees 为封闭枚举,结果无时间戳"
|
|
823
864
|
],
|
|
824
865
|
"ownedByCaller": [
|
|
@@ -865,6 +906,117 @@
|
|
|
865
906
|
"定价与计费语义:留在消费者"
|
|
866
907
|
]
|
|
867
908
|
},
|
|
909
|
+
{
|
|
910
|
+
"id": "foundation.harness.supervise-process",
|
|
911
|
+
"intent": "监督单个有界子进程的完整生命周期:消费者提供超时策略,SIGTERM 至 SIGKILL 升级、终态进度观察与封闭枚举终止证据",
|
|
912
|
+
"useWhen": [
|
|
913
|
+
"需要让子进程在有硬上限与确定性终止证据的有界生命周期内运行",
|
|
914
|
+
"需要可直接机械映射的封闭枚举 watchdog/termination 原因"
|
|
915
|
+
],
|
|
916
|
+
"doNotUseWhen": [
|
|
917
|
+
"需要监督器重试或重启进程(workflow-orchestration 排除)"
|
|
918
|
+
],
|
|
919
|
+
"prerequisites": [
|
|
920
|
+
"消费者提供命令、cwd 与含 maxSeconds 和 killGraceSeconds 的超时策略"
|
|
921
|
+
],
|
|
922
|
+
"inputs": [
|
|
923
|
+
"命令/参数/cwd、超时策略、可选的进度与终态进度路径、可选的预算与长工具钩子、可选的证据路径"
|
|
924
|
+
],
|
|
925
|
+
"outputs": [
|
|
926
|
+
"每次调用恰好一个冻结的 watchdog-termination-envelope(单写者)"
|
|
927
|
+
],
|
|
928
|
+
"sideEffects": [
|
|
929
|
+
"生成并终止被监督进程及其进程组",
|
|
930
|
+
"可选地在 evidencePath 持久化监督痕迹与最终信封"
|
|
931
|
+
],
|
|
932
|
+
"failureSemantics": [
|
|
933
|
+
"策略形状错误抛出 SFC2004 + timeout-policy-invalid;机制失败以 SFC2004 + supervise-process-failed 拒绝并在 details 携带终止证据;外部进程消失按 no_terminal_result 失败关闭"
|
|
934
|
+
],
|
|
935
|
+
"invariants": [
|
|
936
|
+
"机制不持有任何超时数值、预算阈值或重启策略",
|
|
937
|
+
"存活只由显式事件与进程组探测确认;ps 绝不用于存活猜测"
|
|
938
|
+
],
|
|
939
|
+
"ownedByCaller": [
|
|
940
|
+
"命令本身、超时数值、预算阈值、终态记录语义与任何重启策略"
|
|
941
|
+
],
|
|
942
|
+
"routeElsewhere": [
|
|
943
|
+
"重启/重试编排:workflow-orchestration 排除,留在上层编排层"
|
|
944
|
+
]
|
|
945
|
+
},
|
|
946
|
+
{
|
|
947
|
+
"id": "foundation.harness.strict-read",
|
|
948
|
+
"intent": "以收容、不跟随符号链接、常规文件身份复核与 sha256 摘要回执读取一个已存在的权威文件",
|
|
949
|
+
"useWhen": [
|
|
950
|
+
"需要读取冻结权威文件并绑定其字节摘要",
|
|
951
|
+
"需要在交付前校验权威文件与已冻结摘要一致"
|
|
952
|
+
],
|
|
953
|
+
"doNotUseWhen": [
|
|
954
|
+
"需要读取目录或符号链接目标",
|
|
955
|
+
"需要写入或替换文件(归严格写入路径)"
|
|
956
|
+
],
|
|
957
|
+
"prerequisites": [],
|
|
958
|
+
"inputs": [
|
|
959
|
+
"收容根目录与相对路径;可选 expectedSha256 冻结摘要"
|
|
960
|
+
],
|
|
961
|
+
"outputs": [
|
|
962
|
+
"文件内容与读取字节的 sha256 摘要回执"
|
|
963
|
+
],
|
|
964
|
+
"sideEffects": [
|
|
965
|
+
"只读文件系统访问(lstat/open/read)"
|
|
966
|
+
],
|
|
967
|
+
"failureSemantics": [
|
|
968
|
+
"符号链接、非常规文件或摘要不符时失败关闭且不交付内容",
|
|
969
|
+
"路径逃逸在任何读取之前被收容层拒绝"
|
|
970
|
+
],
|
|
971
|
+
"invariants": [
|
|
972
|
+
"O_NOFOLLOW 打开,身份检查后交换的链接不会被跟随",
|
|
973
|
+
"回执摘要只覆盖实际读到的字节"
|
|
974
|
+
],
|
|
975
|
+
"ownedByCaller": [
|
|
976
|
+
"冻结摘要的来源与信任锚",
|
|
977
|
+
"读取失败后的处置策略"
|
|
978
|
+
],
|
|
979
|
+
"routeElsewhere": [
|
|
980
|
+
"写入与发布:foundation.harness.atomic-write"
|
|
981
|
+
]
|
|
982
|
+
},
|
|
983
|
+
{
|
|
984
|
+
"id": "foundation.harness.url-credential-redaction",
|
|
985
|
+
"intent": "在任何 URL 数值到达磁盘或日志之前剥离其 userinfo 凭证部分",
|
|
986
|
+
"useWhen": [
|
|
987
|
+
"需要持久化或记录可能携带凭证的 URL",
|
|
988
|
+
"需要把不可解析输入安全退化为占位符"
|
|
989
|
+
],
|
|
990
|
+
"doNotUseWhen": [
|
|
991
|
+
"需要保留或解析凭证本身(凭证不应进入 Foundation)",
|
|
992
|
+
"需要处理非 URL 形态的密钥材料"
|
|
993
|
+
],
|
|
994
|
+
"prerequisites": [],
|
|
995
|
+
"inputs": [
|
|
996
|
+
"任意字符串输入(URL 或非 URL)"
|
|
997
|
+
],
|
|
998
|
+
"outputs": [
|
|
999
|
+
"脱敏后的 URL 字符串或 REDACTED_URL_PLACEHOLDER 不透明占位符"
|
|
1000
|
+
],
|
|
1001
|
+
"sideEffects": [
|
|
1002
|
+
"纯函数,无副作用"
|
|
1003
|
+
],
|
|
1004
|
+
"failureSemantics": [
|
|
1005
|
+
"不可解析输入退化为不透明占位符,绝不泄漏原文",
|
|
1006
|
+
"输出不携带任何 userinfo 字节"
|
|
1007
|
+
],
|
|
1008
|
+
"invariants": [
|
|
1009
|
+
"脱敏发生在任何落盘或日志写入之前",
|
|
1010
|
+
"占位符是封闭常量,不携带输入信息"
|
|
1011
|
+
],
|
|
1012
|
+
"ownedByCaller": [
|
|
1013
|
+
"哪些输入值按 URL 处理",
|
|
1014
|
+
"脱敏后数值的下游用途"
|
|
1015
|
+
],
|
|
1016
|
+
"routeElsewhere": [
|
|
1017
|
+
"凭据管理与轮换:调用方安全边界"
|
|
1018
|
+
]
|
|
1019
|
+
},
|
|
868
1020
|
{
|
|
869
1021
|
"id": "foundation.harness.errors",
|
|
870
1022
|
"intent": "定义 Harness 机制错误类型与稳定错误类,统一错误分类",
|
|
@@ -939,7 +1091,7 @@
|
|
|
939
1091
|
"intent": "对已存在的存量仓做严格只读盘点(分类、嵌套仓发现、迁移清单、完成判定),不写文件、不自动迁移",
|
|
940
1092
|
"useWhen": [
|
|
941
1093
|
"需要把存量仓分类为 direct-adoption / compatibility-layer / keep-business / foundation-gap",
|
|
942
|
-
"需要为迁移生成
|
|
1094
|
+
"需要为迁移生成 profile 草稿(采用声明与 overrides)或完成判定"
|
|
943
1095
|
],
|
|
944
1096
|
"doNotUseWhen": [
|
|
945
1097
|
"需要自动改写存量仓(禁止写文件、禁止自动迁移)"
|
|
@@ -951,7 +1103,7 @@
|
|
|
951
1103
|
"目标根、迁移清单路径"
|
|
952
1104
|
],
|
|
953
1105
|
"outputs": [
|
|
954
|
-
"采用分类、完成判定、
|
|
1106
|
+
"采用分类、完成判定、profile 草稿(仅输出,不落盘)"
|
|
955
1107
|
],
|
|
956
1108
|
"sideEffects": [
|
|
957
1109
|
"无文件写入(严格只读)",
|
|
@@ -984,7 +1136,8 @@
|
|
|
984
1136
|
"投影清单已登记"
|
|
985
1137
|
],
|
|
986
1138
|
"inputs": [
|
|
987
|
-
"投影清单、目标根"
|
|
1139
|
+
"投影清单、目标根",
|
|
1140
|
+
"计划闭包(previousOwnedClosure / externalCandidateClosure)经公共入口 buildProjectionClosure 构造,不复刻 Kit 私有排序、序列化与摘要算法"
|
|
988
1141
|
],
|
|
989
1142
|
"outputs": [
|
|
990
1143
|
"投影文件(仅在校验全部通过时)"
|
|
@@ -1009,7 +1162,7 @@
|
|
|
1009
1162
|
},
|
|
1010
1163
|
{
|
|
1011
1164
|
"id": "foundation.kit.check",
|
|
1012
|
-
"intent": "只诊断不修复:运行 contracts/drift/closure/version/docs/git/identity
|
|
1165
|
+
"intent": "只诊断不修复:运行 contracts/drift/closure/version/docs/git/identity/boundary/platform 九类检查,输出发现(findings)",
|
|
1013
1166
|
"useWhen": [
|
|
1014
1167
|
"需要发现工程不一致但不自动修改",
|
|
1015
1168
|
"需要按 --only 缩小检查范围"
|
|
@@ -1019,7 +1172,7 @@
|
|
|
1019
1172
|
],
|
|
1020
1173
|
"prerequisites": [],
|
|
1021
1174
|
"inputs": [
|
|
1022
|
-
"--only 取值:contracts|drift|closure|version|docs|git|identity"
|
|
1175
|
+
"--only 取值:contracts|drift|closure|version|docs|git|identity|boundary|platform"
|
|
1023
1176
|
],
|
|
1024
1177
|
"outputs": [
|
|
1025
1178
|
"发现清单;退出码 findings=1、mechanism=2"
|
|
@@ -1031,7 +1184,7 @@
|
|
|
1031
1184
|
"findings 退出码 1;mechanism 拒绝退出码 2"
|
|
1032
1185
|
],
|
|
1033
1186
|
"invariants": [
|
|
1034
|
-
"CHECK_CLASSES
|
|
1187
|
+
"CHECK_CLASSES 为九类闭集,不扩张"
|
|
1035
1188
|
],
|
|
1036
1189
|
"ownedByCaller": [
|
|
1037
1190
|
"发现项的业务处置"
|
|
@@ -1218,6 +1371,77 @@
|
|
|
1218
1371
|
"自动修复:调用方"
|
|
1219
1372
|
]
|
|
1220
1373
|
},
|
|
1374
|
+
{
|
|
1375
|
+
"id": "foundation.kit.entry-check",
|
|
1376
|
+
"intent": "读取入口契约声明,并对每个入口执行物理存在、逻辑名一致、人工入口注册、副作用类别与令牌预算五项检查",
|
|
1377
|
+
"useWhen": [
|
|
1378
|
+
"需要校验入口契约声明与物理 SKILL.md 的一致性",
|
|
1379
|
+
"需要检查入口逻辑名、副作用类别与令牌预算"
|
|
1380
|
+
],
|
|
1381
|
+
"doNotUseWhen": [
|
|
1382
|
+
"需要修复声明或入口(check 只诊断不修复)"
|
|
1383
|
+
],
|
|
1384
|
+
"prerequisites": [],
|
|
1385
|
+
"inputs": [
|
|
1386
|
+
"项目根(携带 skill-family.entry-contract.json 与 package.json)"
|
|
1387
|
+
],
|
|
1388
|
+
"outputs": [
|
|
1389
|
+
"入口检查报告(kind skill-family.entry-check-report)与 findings"
|
|
1390
|
+
],
|
|
1391
|
+
"sideEffects": [
|
|
1392
|
+
"只读读取声明、package.json 与入口文件"
|
|
1393
|
+
],
|
|
1394
|
+
"failureSemantics": [
|
|
1395
|
+
"声明缺失时作为数据而非发现",
|
|
1396
|
+
"各项检查失败产出不同 kind 的 finding"
|
|
1397
|
+
],
|
|
1398
|
+
"invariants": [
|
|
1399
|
+
"不修改任何文件",
|
|
1400
|
+
"不新增第五个顶层命令,落在 check entries 子动作"
|
|
1401
|
+
],
|
|
1402
|
+
"ownedByCaller": [
|
|
1403
|
+
"声明与入口的整改"
|
|
1404
|
+
],
|
|
1405
|
+
"routeElsewhere": [
|
|
1406
|
+
"自动整改:调用方"
|
|
1407
|
+
]
|
|
1408
|
+
},
|
|
1409
|
+
{
|
|
1410
|
+
"id": "foundation.kit.relock",
|
|
1411
|
+
"intent": "运行受控 relock 事务:将新手写文件登记进 .foundation/file-registry.json,并以当前字节重算 skill-family.managed-file-lock.json,单次 fail-closed 操作",
|
|
1412
|
+
"useWhen": [
|
|
1413
|
+
"需要把新手写文件纳入闭域而不手改 registry",
|
|
1414
|
+
"需要在登记后以当前字节重算受管文件锁"
|
|
1415
|
+
],
|
|
1416
|
+
"doNotUseWhen": [
|
|
1417
|
+
"需要合法化已漂移的受管字节(relock 拒绝漂移)",
|
|
1418
|
+
"需要登记符号链接或非常规文件(拒绝)"
|
|
1419
|
+
],
|
|
1420
|
+
"prerequisites": [],
|
|
1421
|
+
"inputs": [
|
|
1422
|
+
"携带 .foundation/file-registry.json 与 skill-family.managed-file-lock.json 的项目根"
|
|
1423
|
+
],
|
|
1424
|
+
"outputs": [
|
|
1425
|
+
"relock 报告(kind skill-family.relock-report)"
|
|
1426
|
+
],
|
|
1427
|
+
"sideEffects": [
|
|
1428
|
+
"只写两个受收容状态文档:registry 与受管文件锁"
|
|
1429
|
+
],
|
|
1430
|
+
"failureSemantics": [
|
|
1431
|
+
"每次拒绝都零写入,目标不被触碰",
|
|
1432
|
+
"半更新状态绝不呈现为成功"
|
|
1433
|
+
],
|
|
1434
|
+
"invariants": [
|
|
1435
|
+
"不新增第五个顶层命令,落在 check relock 子动作",
|
|
1436
|
+
"新锁先绑定新 registry 字节,再提交任一文档"
|
|
1437
|
+
],
|
|
1438
|
+
"ownedByCaller": [
|
|
1439
|
+
"relock 前对已漂移受管字节的对账"
|
|
1440
|
+
],
|
|
1441
|
+
"routeElsewhere": [
|
|
1442
|
+
"自动整改:调用方"
|
|
1443
|
+
]
|
|
1444
|
+
},
|
|
1221
1445
|
{
|
|
1222
1446
|
"id": "foundation.kit.cli",
|
|
1223
1447
|
"intent": "提供 skill-family-kit CLI 入口,分派四个顶层命令与子动作,并在入口处拒绝变更旗标",
|
|
@@ -1256,10 +1480,11 @@
|
|
|
1256
1480
|
},
|
|
1257
1481
|
{
|
|
1258
1482
|
"id": "foundation.profile.extension-spi",
|
|
1259
|
-
"intent": "
|
|
1483
|
+
"intent": "声明宿主与项目形态差异的扩展机制,并消费 skill-family-engineering-kit/profile-spi 公共投影:把 differences(adds/overrides/removes)与开放扩展点(host-projection/artifact-render/surface-scan)作为纯数据 Profile 输入校验",
|
|
1260
1484
|
"useWhen": [
|
|
1261
1485
|
"需要声明项目形态差异而不改公共核心",
|
|
1262
|
-
"需要把扩展点数据资源注入稳定 SPI"
|
|
1486
|
+
"需要把扩展点数据资源注入稳定 SPI",
|
|
1487
|
+
"需要从 skill-family-engineering-kit/profile-spi 加载公共 SPI Schema 并调用 verifyProfile"
|
|
1263
1488
|
],
|
|
1264
1489
|
"doNotUseWhen": [
|
|
1265
1490
|
"需要把业务语义塞进公共核心(coreOwned 目标禁入)",
|
|
@@ -1272,7 +1497,7 @@
|
|
|
1272
1497
|
"profileRoot、descriptorRelPath"
|
|
1273
1498
|
],
|
|
1274
1499
|
"outputs": [
|
|
1275
|
-
"SPI 结果码(SPE0000/1001..
|
|
1500
|
+
"SPI 结果码(SPE0000/1001..1007),以及公共 base/extended Schema 加载器"
|
|
1276
1501
|
],
|
|
1277
1502
|
"sideEffects": [
|
|
1278
1503
|
"无副作用(只读校验 Profile)"
|
|
@@ -1283,7 +1508,8 @@
|
|
|
1283
1508
|
],
|
|
1284
1509
|
"invariants": [
|
|
1285
1510
|
"coreOwned = packages/commands/namespacePrefixes 为禁入目标",
|
|
1286
|
-
"entrypoint 必须为 JSON 数据资源"
|
|
1511
|
+
"entrypoint 必须为 JSON 数据资源",
|
|
1512
|
+
"公共投影中的三个 SPI JSON 资源与 Contracts base Schema 保持逐字节一致"
|
|
1287
1513
|
],
|
|
1288
1514
|
"ownedByCaller": [
|
|
1289
1515
|
"差异的业务语义"
|
|
@@ -1972,7 +1972,7 @@ Contracts(结构、协议、错误码、协议名登记)
|
|
|
1972
1972
|
<tbody>
|
|
1973
1973
|
<tr>
|
|
1974
1974
|
<td>Contracts</td>
|
|
1975
|
-
<td>结构、协议、错误码、协议名登记;
|
|
1975
|
+
<td>结构、协议、错误码、协议名登记;24 类顶层对象;9 条 mandatory rule</td>
|
|
1976
1976
|
<td>业务字段语义、领域审计、远端写入、模型生成</td>
|
|
1977
1977
|
</tr>
|
|
1978
1978
|
<tr>
|
|
@@ -2077,12 +2077,12 @@ Contracts(结构、协议、错误码、协议名登记)
|
|
|
2077
2077
|
<p>三包结构保持、不拆第四包(FND-ADR-007);制品治理采用 artifact-graph CLI 与版本锁(FND-ADR-006)。</p>
|
|
2078
2078
|
<h2 id="首版预算">首版预算<a class="headerlink" href="#首版预算" title="Permanent link">¶</a></h2>
|
|
2079
2079
|
<ul>
|
|
2080
|
-
<li>顶层 Contracts 对象:
|
|
2080
|
+
<li>顶层 Contracts 对象:30 类(完整清单以 <code>packages/skill-family-contracts/src/registry.json</code> 为唯一真源):project-manifest、profile-descriptor、managed-file-lock、operation-request、operation-result、migration-manifest、adapter-source、report-model、report-binding、host-descriptor、host-registry、host-capability-fact、host-probe-result、adapter-build-manifest、host-operation-plan、host-operation-receipt、state-event-envelope、state-snapshot-metadata、token-estimate-result、surface-scan-policy、declared-read-surface-result、structured-scan-policy(FND-ADR-010/011)、timeout-policy、watchdog-termination-envelope(FND-ADR-012,append-only 保持 1.5.0)、public-boundary-declaration、platform-difference-registry、observation-scope、profile-adoption-declaration、audit-baseline-pin、token-estimate-record(审计规则裁决与整改 1.6.0 纳入);</li>
|
|
2081
2081
|
<li>Kit 顶层命令:4 个(scaffold、adopt-plan、projection、check);</li>
|
|
2082
2082
|
<li>强制机械规则:当前 9 条,预算不超过 20 条,绝对上限 30 条;CR-001 对登记表内全部 Schema 做统一编译;</li>
|
|
2083
2083
|
<li>叶子包:3 个(skill-family-contracts、skill-family-harness-node、skill-family-engineering-kit);</li>
|
|
2084
2084
|
<li>Schema 校验器:Ajv 8.20.0(精确版本 pin),支持 draft-07 与 2020-12 双方言;</li>
|
|
2085
|
-
<li>kernel 协议:skill-family.kernel.operation(stable),Contracts 版本 1.
|
|
2085
|
+
<li>kernel 协议:skill-family.kernel.operation(stable),Contracts 版本 1.6.0;</li>
|
|
2086
2086
|
<li>默认运行时语言:Node;第二语言实现首版为 0。</li>
|
|
2087
2087
|
</ul>
|
|
2088
2088
|
<p>任何新增组件必须说明删除它会导致的两个以上真实消费者重复实现,并通过独立 fixture 验证。</p>
|