@principles/core 1.240.21 → 1.242.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.
Files changed (105) hide show
  1. package/dist/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.d.ts +15 -0
  2. package/dist/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.d.ts.map +1 -0
  3. package/dist/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.js +90 -0
  4. package/dist/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.js.map +1 -0
  5. package/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  6. package/dist/runtime-v2/feature-flags/feature-flag-contract.js +6 -0
  7. package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  8. package/dist/runtime-v2/internalization/__tests__/artifact-content-hash.property.test.d.ts +11 -0
  9. package/dist/runtime-v2/internalization/__tests__/artifact-content-hash.property.test.d.ts.map +1 -0
  10. package/dist/runtime-v2/internalization/__tests__/artifact-content-hash.property.test.js +124 -0
  11. package/dist/runtime-v2/internalization/__tests__/artifact-content-hash.property.test.js.map +1 -0
  12. package/dist/runtime-v2/internalization/__tests__/artifact-summary.property.test.d.ts +12 -0
  13. package/dist/runtime-v2/internalization/__tests__/artifact-summary.property.test.d.ts.map +1 -0
  14. package/dist/runtime-v2/internalization/__tests__/artifact-summary.property.test.js +253 -0
  15. package/dist/runtime-v2/internalization/__tests__/artifact-summary.property.test.js.map +1 -0
  16. package/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.d.ts +15 -0
  17. package/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.d.ts.map +1 -0
  18. package/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.js +301 -0
  19. package/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.js.map +1 -0
  20. package/dist/runtime-v2/internalization/__tests__/philosopher-toggle-characterization.test.d.ts +2 -0
  21. package/dist/runtime-v2/internalization/__tests__/philosopher-toggle-characterization.test.d.ts.map +1 -0
  22. package/dist/runtime-v2/internalization/__tests__/philosopher-toggle-characterization.test.js +279 -0
  23. package/dist/runtime-v2/internalization/__tests__/philosopher-toggle-characterization.test.js.map +1 -0
  24. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-scope-regression.test.d.ts +22 -0
  25. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-scope-regression.test.d.ts.map +1 -0
  26. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-scope-regression.test.js +92 -0
  27. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-scope-regression.test.js.map +1 -0
  28. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike-fixtures.d.ts +165 -0
  29. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike-fixtures.d.ts.map +1 -0
  30. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike-fixtures.js +657 -0
  31. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike-fixtures.js.map +1 -0
  32. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike-fixtures.test.d.ts +22 -0
  33. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike-fixtures.test.d.ts.map +1 -0
  34. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike-fixtures.test.js +229 -0
  35. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike-fixtures.test.js.map +1 -0
  36. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike.test.d.ts +2 -0
  37. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike.test.d.ts.map +1 -0
  38. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike.test.js +1039 -0
  39. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike.test.js.map +1 -0
  40. package/dist/runtime-v2/internalization/__tests__/summary-chain-flow.property.test.d.ts +22 -0
  41. package/dist/runtime-v2/internalization/__tests__/summary-chain-flow.property.test.d.ts.map +1 -0
  42. package/dist/runtime-v2/internalization/__tests__/summary-chain-flow.property.test.js +280 -0
  43. package/dist/runtime-v2/internalization/__tests__/summary-chain-flow.property.test.js.map +1 -0
  44. package/dist/runtime-v2/internalization/__tests__/summary-envelope-writer.property.test.d.ts +25 -0
  45. package/dist/runtime-v2/internalization/__tests__/summary-envelope-writer.property.test.d.ts.map +1 -0
  46. package/dist/runtime-v2/internalization/__tests__/summary-envelope-writer.property.test.js +413 -0
  47. package/dist/runtime-v2/internalization/__tests__/summary-envelope-writer.property.test.js.map +1 -0
  48. package/dist/runtime-v2/internalization/__tests__/summary-freshness.property.test.d.ts +12 -0
  49. package/dist/runtime-v2/internalization/__tests__/summary-freshness.property.test.d.ts.map +1 -0
  50. package/dist/runtime-v2/internalization/__tests__/summary-freshness.property.test.js +176 -0
  51. package/dist/runtime-v2/internalization/__tests__/summary-freshness.property.test.js.map +1 -0
  52. package/dist/runtime-v2/internalization/artifact-content-hash.d.ts +19 -0
  53. package/dist/runtime-v2/internalization/artifact-content-hash.d.ts.map +1 -0
  54. package/dist/runtime-v2/internalization/artifact-content-hash.js +116 -0
  55. package/dist/runtime-v2/internalization/artifact-content-hash.js.map +1 -0
  56. package/dist/runtime-v2/internalization/artifact-summary.d.ts +106 -0
  57. package/dist/runtime-v2/internalization/artifact-summary.d.ts.map +1 -0
  58. package/dist/runtime-v2/internalization/artifact-summary.js +331 -0
  59. package/dist/runtime-v2/internalization/artifact-summary.js.map +1 -0
  60. package/dist/runtime-v2/internalization/artificer-runner.d.ts.map +1 -1
  61. package/dist/runtime-v2/internalization/artificer-runner.js +29 -1
  62. package/dist/runtime-v2/internalization/artificer-runner.js.map +1 -1
  63. package/dist/runtime-v2/internalization/attach-summary-envelope.d.ts +60 -0
  64. package/dist/runtime-v2/internalization/attach-summary-envelope.d.ts.map +1 -0
  65. package/dist/runtime-v2/internalization/attach-summary-envelope.js +126 -0
  66. package/dist/runtime-v2/internalization/attach-summary-envelope.js.map +1 -0
  67. package/dist/runtime-v2/internalization/candidate-lineage.d.ts +136 -0
  68. package/dist/runtime-v2/internalization/candidate-lineage.d.ts.map +1 -0
  69. package/dist/runtime-v2/internalization/candidate-lineage.js +230 -0
  70. package/dist/runtime-v2/internalization/candidate-lineage.js.map +1 -0
  71. package/dist/runtime-v2/internalization/diag-distiller-runner.d.ts +1 -1
  72. package/dist/runtime-v2/internalization/diag-distiller-runner.d.ts.map +1 -1
  73. package/dist/runtime-v2/internalization/diag-distiller-runner.js +19 -2
  74. package/dist/runtime-v2/internalization/diag-distiller-runner.js.map +1 -1
  75. package/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts.map +1 -1
  76. package/dist/runtime-v2/internalization/diag-rootcause-runner.js +5 -1
  77. package/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -1
  78. package/dist/runtime-v2/internalization/diag-router-runner.d.ts +1 -1
  79. package/dist/runtime-v2/internalization/diag-router-runner.d.ts.map +1 -1
  80. package/dist/runtime-v2/internalization/diag-router-runner.js +25 -1
  81. package/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -1
  82. package/dist/runtime-v2/internalization/dreamer-runner.d.ts +9 -1
  83. package/dist/runtime-v2/internalization/dreamer-runner.d.ts.map +1 -1
  84. package/dist/runtime-v2/internalization/dreamer-runner.js +28 -6
  85. package/dist/runtime-v2/internalization/dreamer-runner.js.map +1 -1
  86. package/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
  87. package/dist/runtime-v2/internalization/evaluator-runner.js +35 -2
  88. package/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
  89. package/dist/runtime-v2/internalization/philosopher-runner.d.ts.map +1 -1
  90. package/dist/runtime-v2/internalization/philosopher-runner.js +25 -1
  91. package/dist/runtime-v2/internalization/philosopher-runner.js.map +1 -1
  92. package/dist/runtime-v2/internalization/scribe-runner.d.ts.map +1 -1
  93. package/dist/runtime-v2/internalization/scribe-runner.js +23 -1
  94. package/dist/runtime-v2/internalization/scribe-runner.js.map +1 -1
  95. package/dist/runtime-v2/runner/base-peer-runner.d.ts +30 -0
  96. package/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
  97. package/dist/runtime-v2/runner/base-peer-runner.js +106 -0
  98. package/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
  99. package/dist/runtime-v2/runner/peer-runner-types.d.ts +12 -0
  100. package/dist/runtime-v2/runner/peer-runner-types.d.ts.map +1 -1
  101. package/dist/runtime-v2/store/commit/diagnostician-committer.d.ts +15 -0
  102. package/dist/runtime-v2/store/commit/diagnostician-committer.d.ts.map +1 -1
  103. package/dist/runtime-v2/store/commit/diagnostician-committer.js +19 -1
  104. package/dist/runtime-v2/store/commit/diagnostician-committer.js.map +1 -1
  105. package/package.json +2 -1
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Feature-flag registration + production propagation test for Layer 0
3
+ * `artifact_summary_redundancy` (design §8, task 3.17, ERR-024).
4
+ *
5
+ * ERR-024 requires testing the REAL wiring path (config → effective config →
6
+ * feature flag), not just the leaf registration function. This mirrors the
7
+ * `rulecode-context-v2-flag.test.ts` pattern exactly:
8
+ * 1. contract-layer registration (DEFAULT_FEATURE_FLAGS)
9
+ * 2. PD config propagation (computeEffectivePdConfig → computeFeatureFlagsFromConfig)
10
+ *
11
+ * @see .kiro/specs/internalization-progressive-disclosure/design.md §8
12
+ * @see .kiro/specs/internalization-progressive-disclosure/requirements.md Requirement 11.1, 11.2
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=artifact-summary-redundancy-flag.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-summary-redundancy-flag.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Feature-flag registration + production propagation test for Layer 0
3
+ * `artifact_summary_redundancy` (design §8, task 3.17, ERR-024).
4
+ *
5
+ * ERR-024 requires testing the REAL wiring path (config → effective config →
6
+ * feature flag), not just the leaf registration function. This mirrors the
7
+ * `rulecode-context-v2-flag.test.ts` pattern exactly:
8
+ * 1. contract-layer registration (DEFAULT_FEATURE_FLAGS)
9
+ * 2. PD config propagation (computeEffectivePdConfig → computeFeatureFlagsFromConfig)
10
+ *
11
+ * @see .kiro/specs/internalization-progressive-disclosure/design.md §8
12
+ * @see .kiro/specs/internalization-progressive-disclosure/requirements.md Requirement 11.1, 11.2
13
+ */
14
+ import { describe, it, expect } from 'vitest';
15
+ import { DEFAULT_FEATURE_FLAGS, computeEffectiveFlags, } from '../feature-flag-contract.js';
16
+ import { getDefaultPdConfig, computeEffectivePdConfig, computeFeatureFlagsFromConfig, } from '../../config/index.js';
17
+ const FLAG_ID = 'artifact_summary_redundancy';
18
+ function findFlag() {
19
+ const flag = DEFAULT_FEATURE_FLAGS.find((f) => f.id === FLAG_ID);
20
+ if (!flag) {
21
+ throw new Error(`${FLAG_ID} must be registered in DEFAULT_FEATURE_FLAGS`);
22
+ }
23
+ return flag;
24
+ }
25
+ describe('artifact_summary_redundancy flag registration (Layer 0 / PR 1)', () => {
26
+ it('is registered in DEFAULT_FEATURE_FLAGS', () => {
27
+ expect(findFlag()).toBeDefined();
28
+ });
29
+ it('has category "quiet" (must not expand MVP-Core default-on set)', () => {
30
+ expect(findFlag().category).toBe('quiet');
31
+ });
32
+ it('defaults to enabled=false (default off)', () => {
33
+ expect(findFlag().enabled).toBe(false);
34
+ });
35
+ it('has since field matching YYYY-MM-DD', () => {
36
+ expect(/^\d{4}-\d{2}-\d{2}$/.test(findFlag().since)).toBe(true);
37
+ });
38
+ it('has since === 2026-07-26 (design approval date)', () => {
39
+ expect(findFlag().since).toBe('2026-07-26');
40
+ });
41
+ it('description references Layer 0 / artifact summary / progressive disclosure', () => {
42
+ const desc = (findFlag().description ?? '').toLowerCase();
43
+ expect(desc.includes('layer 0')
44
+ || desc.includes('artifact summary')
45
+ || desc.includes('progressive disclosure')
46
+ || desc.includes('predecessorsummary')).toBe(true);
47
+ });
48
+ it('is disabled by default at the contract layer with no overrides', () => {
49
+ const r = computeEffectiveFlags({}, DEFAULT_FEATURE_FLAGS, '/test/.pd/feature-flags.yaml');
50
+ expect(r.flags[FLAG_ID]?.enabled).toBe(false);
51
+ });
52
+ it('can be explicitly enabled at the contract layer', () => {
53
+ const r = computeEffectiveFlags({ [FLAG_ID]: { enabled: true } }, DEFAULT_FEATURE_FLAGS, '/test/.pd/feature-flags.yaml');
54
+ expect(r.flags[FLAG_ID]?.enabled).toBe(true);
55
+ });
56
+ it('stays off when explicitly disabled at the contract layer', () => {
57
+ const r = computeEffectiveFlags({ [FLAG_ID]: { enabled: false } }, DEFAULT_FEATURE_FLAGS, '/test/.pd/feature-flags.yaml');
58
+ expect(r.flags[FLAG_ID]?.enabled).toBe(false);
59
+ });
60
+ });
61
+ describe('artifact_summary_redundancy flag propagation through PD config (Layer 0 / PR 1)', () => {
62
+ it('is present in getDefaultPdConfig().features with quiet/false', () => {
63
+ const defaults = getDefaultPdConfig();
64
+ expect(Object.hasOwn(defaults.features, FLAG_ID)).toBe(true);
65
+ expect(defaults.features[FLAG_ID]).toEqual({ category: 'quiet', enabled: false });
66
+ });
67
+ it('is disabled by default when computing feature flags from a null config', () => {
68
+ const effective = computeEffectivePdConfig(null);
69
+ const result = computeFeatureFlagsFromConfig(effective);
70
+ expect(result.flags[FLAG_ID]?.enabled).toBe(false);
71
+ expect(result.flags[FLAG_ID]?.category).toBe('quiet');
72
+ });
73
+ it('can be enabled via PD config override (config.features.artifact_summary_redundancy.enabled = true)', () => {
74
+ const rawConfig = getDefaultPdConfig();
75
+ rawConfig.features[FLAG_ID] = { category: 'quiet', enabled: true };
76
+ const effective = computeEffectivePdConfig(rawConfig);
77
+ const result = computeFeatureFlagsFromConfig(effective);
78
+ expect(result.flags[FLAG_ID]?.enabled).toBe(true);
79
+ expect(result.warnings.some((w) => w.includes(FLAG_ID) && w.includes('unknown flag')), 'flag must be registered (no "unknown flag" warning)').toBe(false);
80
+ });
81
+ it('stays disabled when config override explicitly sets enabled=false', () => {
82
+ const rawConfig = getDefaultPdConfig();
83
+ rawConfig.features[FLAG_ID] = { category: 'quiet', enabled: false };
84
+ const effective = computeEffectivePdConfig(rawConfig);
85
+ const result = computeFeatureFlagsFromConfig(effective);
86
+ expect(result.flags[FLAG_ID]?.enabled).toBe(false);
87
+ expect(result.warnings.some((w) => w.includes(FLAG_ID) && w.includes('unknown flag')), 'flag must be registered (no "unknown flag" warning)').toBe(false);
88
+ });
89
+ });
90
+ //# sourceMappingURL=artifact-summary-redundancy-flag.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-summary-redundancy-flag.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flag-contract.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feature-flags/feature-flag-contract.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,gBAAgB,YAAI,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAU,CAAC;AACpF,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAIpE,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC7C,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAExE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAkDrF;AAED,eAAO,MAAM,qBAAqB,EAAE,qBAAqB,EAuFxD,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,QAAQ,EAAE,qBAAqB,EAAE,EACjC,UAAU,EAAE,MAAM,GACjB,qBAAqB,CA2EvB"}
1
+ {"version":3,"file":"feature-flag-contract.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feature-flags/feature-flag-contract.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,gBAAgB,YAAI,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAU,CAAC;AACpF,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAIpE,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC7C,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAExE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAkDrF;AAED,eAAO,MAAM,qBAAqB,EAAE,qBAAqB,EA6FxD,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,QAAQ,EAAE,qBAAqB,EAAE,EACjC,UAAU,EAAE,MAAM,GACjB,qBAAqB,CA2EvB"}
@@ -120,6 +120,12 @@ export const DEFAULT_FEATURE_FLAGS = [
120
120
  // behavior (no repair task seeded, evaluator needs_revision just succeeds the task
121
121
  // with pending validation). Roll back = leave flag off (or set enabled: false in config).
122
122
  { id: 'evaluator_artificer_repair_loop', category: 'quiet', enabled: false, since: '2026-07-04', description: 'PRI-509: Evaluator→Artificer repair loop — auto-seed artificer repair task on needs_revision. Default off; flag-off = current behavior (no repair task seeded).' },
123
+ // Internalization progressive disclosure — Layer 0 (design §6.1, §8, PR 1).
124
+ // Writer-side ArtifactSummary + PredecessorSummaryRef envelope, merged into
125
+ // contentJson for all 8 SummaryRunnerKind stages. Default off; flag-off =
126
+ // no `summary` / `predecessorSummary` fields written, byte-identical to
127
+ // current contentJson shape (Requirement 11.5/11.8/11.9, CP-32).
128
+ { id: 'artifact_summary_redundancy', category: 'quiet', enabled: false, since: '2026-07-26', description: 'Internalization progressive disclosure Layer 0 — writer-side ArtifactSummary + predecessorSummary envelope on all 8 SummaryRunnerKind stages. Default off; flag-off = current contentJson shape unchanged.' },
123
129
  // MVP-Gone — permanently disabled, cannot be re-enabled
124
130
  { id: 'nocturnal', category: 'gone', enabled: false, since: '2026-05-24', description: 'Nocturnal trinity pipeline (retired)' },
125
131
  { id: 'idle_trigger', category: 'gone', enabled: false, since: '2026-05-24', description: 'Idle trigger for background processing (retired)' },
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flag-contract.js","sourceRoot":"","sources":["../../../src/runtime-v2/feature-flags/feature-flag-contract.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAU,CAAC;AAGpF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AA8B1E,MAAM,UAAU,sBAAsB,CAAC,GAAY,EAAE,MAAc;IACjE,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,iCAAiC,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5E,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,CAAC;IAEhB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAE,GAA+B,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAE,GAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACxG,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAA+B,CAAC,EAAE,CAAC;QAChG,MAAM,CAAC,IAAI,CAAC,4BAA4B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAE,GAA+B,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACrG,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAE,GAA+B,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAE,GAA+B,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACjH,IAAI,WAAW,KAAK,SAAS,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,GAA0B;QACnC,EAAE,EAAE,EAAY;QAChB,QAAQ,EAAE,QAA+B;QACzC,OAAO,EAAE,OAAkB;QAC3B,KAAK,EAAE,KAAe;KACvB,CAAC;IAEF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,WAAW,GAAG,WAAqB,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAA4B;IAC5D,gDAAgD;IAChD,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,4CAA4C,EAAE;IACjI,EAAE,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,0CAA0C,EAAE;IACvI,EAAE,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,iCAAiC,EAAE;IAC7H,EAAE,EAAE,EAAE,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,0HAA0H,EAAE;IAC9N,EAAE,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,qRAAqR,EAAE;IACtX,EAAE,EAAE,EAAE,+BAA+B,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,+JAA+J,EAAE;IAC5Q,qFAAqF;IACrF,yFAAyF;IACzF,iGAAiG;IACjG,+FAA+F;IAC/F,8EAA8E;IAC9E,EAAE,EAAE,EAAE,6BAA6B,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,6JAA6J,EAAE;IAExQ,0EAA0E;IAC1E,6EAA6E;IAC7E,EAAE,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,8DAA8D,EAAE;IAC9J,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,uCAAuC,EAAE;IAC3H,EAAE,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,iEAAiE,EAAE;IAClK,EAAE,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,6DAA6D,EAAE;IAC9J,mFAAmF;IACnF,4FAA4F;IAC5F,EAAE,EAAE,EAAE,uBAAuB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,wGAAwG,EAAE;IAC7M,gGAAgG;IAChG,yGAAyG;IACzG,EAAE,EAAE,EAAE,yBAAyB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,2HAA2H,EAAE;IAClO,8FAA8F;IAC9F,iFAAiF;IACjF,EAAE,EAAE,EAAE,8BAA8B,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,mLAAmL,EAAE;IAC/R,6DAA6D;IAC7D,EAAE,EAAE,EAAE,iCAAiC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,qHAAqH,EAAE;IACpO,EAAE,EAAE,EAAE,yBAAyB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gIAAgI,EAAE;IACxO,EAAE,EAAE,EAAE,8BAA8B,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,0DAA0D,EAAE;IACtK,EAAE,EAAE,EAAE,gCAAgC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,4FAA4F,EAAE;IAC1M,EAAE,EAAE,EAAE,8BAA8B,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,mEAAmE,EAAE;IAC/K,yFAAyF;IACzF,yFAAyF;IACzF,sFAAsF;IACtF,iFAAiF;IACjF,EAAE,EAAE,EAAE,+BAA+B,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,wPAAwP,EAAE;IACtW,2FAA2F;IAC3F,uFAAuF;IACvF,yFAAyF;IACzF,6FAA6F;IAC7F,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,qHAAqH,EAAE;IAChN,kEAAkE;IAClE,8EAA8E;IAC9E,+EAA+E;IAC/E,gFAAgF;IAChF,8EAA8E;IAC9E,gFAAgF;IAChF,8EAA8E;IAC9E,EAAE,EAAE,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,+GAA+G,EAAE;IAGlN,6DAA6D;IAC7D,EAAE,EAAE,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,yKAAyK,EAAE;IAC5Q,6EAA6E;IAC7E,+EAA+E;IAC/E,2EAA2E;IAC3E,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,EAAE,EAAE,EAAE,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,wLAAwL,EAAE;IAC5R,wEAAwE;IACxE,4EAA4E;IAC5E,+EAA+E;IAC/E,kDAAkD;IAClD,EAAE,EAAE,EAAE,4BAA4B,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,8DAA8D,EAAE;IACxK,mFAAmF;IACnF,uFAAuF;IACvF,uFAAuF;IACvF,qFAAqF;IACrF,mFAAmF;IACnF,0FAA0F;IAC1F,EAAE,EAAE,EAAE,iCAAiC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,iKAAiK,EAAE;IACjR,wDAAwD;IACxD,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,sCAAsC,EAAE;IAC/H,EAAE,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,kDAAkD,EAAE;IAC9I,+EAA+E;IAC/E,6EAA6E;IAC7E,6EAA6E;IAC7E,8EAA8E;IAC9E,4EAA4E;IAC5E,sFAAsF;IACtF,EAAE,EAAE,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,uOAAuO,EAAE;CAC1U,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,SAAkC,EAClC,QAAiC,EACjC,UAAkB;IAElB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAA0C,EAAE,CAAC;IAExD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QACnD,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,2BAA2B,CAAC,CAAC;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACpE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3H,MAAM,YAAY,GAAG,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;YACnE,CAAC,CAAE,QAAoC,CAAC,OAAO;YAC/C,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,8DAA8D,CAAC,CAAC;YAC7F,SAAS;QACX,CAAC;QAED,qCAAqC;QACrC,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;YAC3B,IAAI,YAAY,EAAE,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,mCAAmC,CAAC,CAAC;YACpE,CAAC;YACD,SAAS;QACX,CAAC;QAED,qEAAqE;QACrE,+EAA+E;QAC/E,8EAA8E;QAC9E,kFAAkF;QAClF,6DAA6D;QAC7D,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC5B,IAAI,YAAY,EAAE,CAAC;gBACjB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAC3C,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,iEAAiE,CAAC,CAAC;YAClG,CAAC;YACD,SAAS;QACX,CAAC;QAED,0CAA0C;QAC1C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;YACd,GAAG,GAAG;YACN,OAAO,EAAE,YAAY;SACtB,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,yBAAyB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK;QACL,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU;QACpD,UAAU;QACV,QAAQ;KACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"feature-flag-contract.js","sourceRoot":"","sources":["../../../src/runtime-v2/feature-flags/feature-flag-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Property test for `canonicalStringify` / `computeContentHash` (design §6.1,
3
+ * task 3.7).
4
+ *
5
+ * CP-08: canonical serialization determinism & explicit truncation
6
+ *
7
+ * @see .kiro/specs/internalization-progressive-disclosure/design.md §6.1, §16
8
+ * @see .kiro/specs/internalization-progressive-disclosure/requirements.md Requirement 2.12
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=artifact-content-hash.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-content-hash.property.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/artifact-content-hash.property.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Property test for `canonicalStringify` / `computeContentHash` (design §6.1,
3
+ * task 3.7).
4
+ *
5
+ * CP-08: canonical serialization determinism & explicit truncation
6
+ *
7
+ * @see .kiro/specs/internalization-progressive-disclosure/design.md §6.1, §16
8
+ * @see .kiro/specs/internalization-progressive-disclosure/requirements.md Requirement 2.12
9
+ */
10
+ import { describe, it, expect } from 'vitest';
11
+ import fc from 'fast-check';
12
+ import { createHash } from 'node:crypto';
13
+ import { canonicalStringify, computeContentHash, CANONICAL_JSON_MAX_CHARS } from '../artifact-content-hash.js';
14
+ const sha256 = (input) => createHash('sha256').update(input).digest('hex');
15
+ /** Shuffles the key order of a plain object (not its nested values) deterministically-but-randomly. */
16
+ function shuffleKeys(obj, seed) {
17
+ const keys = Object.keys(obj);
18
+ const shuffled = [...keys];
19
+ // Simple deterministic Fisher-Yates using the seed, good enough for a test helper.
20
+ let s = seed;
21
+ const rand = () => {
22
+ s = (s * 1103515245 + 12345) & 0x7fffffff;
23
+ return s / 0x7fffffff;
24
+ };
25
+ for (let i = shuffled.length - 1; i > 0; i--) {
26
+ const j = Math.floor(rand() * (i + 1));
27
+ const a = shuffled[i];
28
+ const b = shuffled[j];
29
+ if (a !== undefined && b !== undefined) {
30
+ shuffled[i] = b;
31
+ shuffled[j] = a;
32
+ }
33
+ }
34
+ const out = {};
35
+ for (const key of shuffled)
36
+ out[key] = obj[key];
37
+ return out;
38
+ }
39
+ const jsonSafeValueGen = fc.jsonValue({ maxDepth: 3 });
40
+ /**
41
+ * Safe key generator: produces only lowercase-alpha keys 1–6 chars long,
42
+ * avoiding `__proto__` / `constructor` / `toString` and other built-in /
43
+ * prototype-polluting keys. Without this, `fc.dictionary` can emit
44
+ * `{ __proto__: ... }`, which changes object semantics when re-inserted in a
45
+ * different key order — the root cause of a flaky run under heavy parallel
46
+ * load. The canonical-stringify invariant itself is unaffected; this just
47
+ * keeps the generated object shape well-defined.
48
+ */
49
+ const safeKeyGen = fc.array(fc.nat({ max: 25 }), { minLength: 1, maxLength: 6 })
50
+ .map((codePoints) => codePoints.map((cp) => String.fromCharCode(97 + (cp % 26))).join(''));
51
+ describe('canonicalStringify — CP-08 determinism & explicit truncation', () => {
52
+ it('is invariant to top-level key insertion order', () => {
53
+ fc.assert(fc.property(fc.dictionary(safeKeyGen, jsonSafeValueGen, { minKeys: 1, maxKeys: 8 }), fc.integer({ min: 0, max: 1_000_000 }), (obj, seed) => {
54
+ const shuffled = shuffleKeys(obj, seed);
55
+ expect(canonicalStringify(shuffled).text).toBe(canonicalStringify(obj).text);
56
+ }), { numRuns: 200 });
57
+ });
58
+ it('is invariant to nested key insertion order', () => {
59
+ fc.assert(fc.property(fc.integer({ min: 0, max: 1_000_000 }), (seed) => {
60
+ const nested = { z: { b: 1, a: 2 }, a: { d: 3, c: 4 } };
61
+ const shuffledOuter = shuffleKeys(nested, seed);
62
+ const shuffledInner = {
63
+ ...shuffledOuter,
64
+ z: shuffleKeys(nested.z, seed + 1),
65
+ a: shuffleKeys(nested.a, seed + 2),
66
+ };
67
+ expect(canonicalStringify(shuffledInner).text).toBe(canonicalStringify(nested).text);
68
+ }), { numRuns: 50 });
69
+ });
70
+ it('produces the same string for the same input across repeated calls', () => {
71
+ fc.assert(fc.property(jsonSafeValueGen, (value) => {
72
+ const first = canonicalStringify(value);
73
+ const second = canonicalStringify(value);
74
+ expect(second.text).toBe(first.text);
75
+ expect(second.truncated).toBe(first.truncated);
76
+ }), { numRuns: 200 });
77
+ });
78
+ it('never throws on adversarial values (cycles, BigInt, functions, Symbols, Date, Map, Set, NaN)', () => {
79
+ const cyclic = { name: 'cyclic' };
80
+ cyclic.self = cyclic;
81
+ const adversarial = [
82
+ cyclic,
83
+ { big: 10n },
84
+ { fn: () => 1 },
85
+ { sym: Symbol('x') },
86
+ { date: new Date('2026-01-01T00:00:00Z') },
87
+ { map: new Map([['a', 1], ['b', 2]]) },
88
+ { set: new Set([1, 2, 3]) },
89
+ { nan: Number.NaN, inf: Number.POSITIVE_INFINITY, ninf: Number.NEGATIVE_INFINITY },
90
+ { proto: { __proto__: { polluted: true } } },
91
+ undefined,
92
+ null,
93
+ ];
94
+ for (const value of adversarial) {
95
+ expect(() => canonicalStringify(value)).not.toThrow();
96
+ expect(() => computeContentHash(value, sha256)).not.toThrow();
97
+ }
98
+ });
99
+ it('truncates deterministically and explicitly beyond CANONICAL_JSON_MAX_CHARS', () => {
100
+ fc.assert(fc.property(fc.integer({ min: CANONICAL_JSON_MAX_CHARS + 1000, max: CANONICAL_JSON_MAX_CHARS + 5000 }), (len) => {
101
+ const huge = 'x'.repeat(len);
102
+ const value = { payload: huge };
103
+ const first = canonicalStringify(value);
104
+ const second = canonicalStringify(value);
105
+ expect(first.truncated).toBe(true);
106
+ expect(first.text.length).toBeLessThanOrEqual(CANONICAL_JSON_MAX_CHARS);
107
+ expect(first.text).toContain('[canonical-json-truncated]');
108
+ // Deterministic: same oversized input truncates at the same position every time.
109
+ expect(second.text).toBe(first.text);
110
+ }), { numRuns: 20 });
111
+ });
112
+ it('does not truncate content at or below CANONICAL_JSON_MAX_CHARS', () => {
113
+ const value = { payload: 'x'.repeat(1000) };
114
+ const result = canonicalStringify(value);
115
+ expect(result.truncated).toBe(false);
116
+ expect(result.text).not.toContain('[canonical-json-truncated]');
117
+ });
118
+ it('computeContentHash is deterministic for a fixed hash function', () => {
119
+ fc.assert(fc.property(jsonSafeValueGen, (value) => {
120
+ expect(computeContentHash(value, sha256)).toBe(computeContentHash(value, sha256));
121
+ }), { numRuns: 100 });
122
+ });
123
+ });
124
+ //# sourceMappingURL=artifact-content-hash.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-content-hash.property.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/artifact-content-hash.property.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Property tests for `deriveArtifactSummary` (design §6.1, tasks 3.3–3.5).
3
+ *
4
+ * CP-01: derivation determinism & boundedness
5
+ * CP-02: derivation totality (never throws, always returns a Result)
6
+ * CP-03: missing fields land in `omittedFields`
7
+ *
8
+ * @see .kiro/specs/internalization-progressive-disclosure/design.md §6.1, §16
9
+ * @see .kiro/specs/internalization-progressive-disclosure/requirements.md Requirement 1
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=artifact-summary.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-summary.property.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/artifact-summary.property.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,253 @@
1
+ /**
2
+ * Property tests for `deriveArtifactSummary` (design §6.1, tasks 3.3–3.5).
3
+ *
4
+ * CP-01: derivation determinism & boundedness
5
+ * CP-02: derivation totality (never throws, always returns a Result)
6
+ * CP-03: missing fields land in `omittedFields`
7
+ *
8
+ * @see .kiro/specs/internalization-progressive-disclosure/design.md §6.1, §16
9
+ * @see .kiro/specs/internalization-progressive-disclosure/requirements.md Requirement 1
10
+ */
11
+ import { describe, it, expect } from 'vitest';
12
+ import fc from 'fast-check';
13
+ import { deriveArtifactSummary, SUMMARY_RUNNER_KINDS, SUMMARY_HEADLINE_MAX_CHARS, SUMMARY_FIELD_MAX_CHARS, } from '../artifact-summary.js';
14
+ // ── Per-stage legal-shape generators ────────────────────────────────────────
15
+ // Each generator produces a *fully populated* legal output for the stage,
16
+ // with every string field allowed to be missing, empty, or long — this
17
+ // exercises the omittedFields path (CP-03) and the length-clamping path
18
+ // (CP-01) from the same generator family.
19
+ const optionalText = () => fc.oneof(fc.constant(undefined), fc.constant(''), fc.constant(' '), fc.string({ minLength: 1, maxLength: 20 }), fc.string({ minLength: 700, maxLength: 900 }));
20
+ const requiredText = () => fc.oneof(fc.string({ minLength: 1, maxLength: 40 }), fc.string({ minLength: 900, maxLength: 1200 }));
21
+ function stripUndefined(obj) {
22
+ const out = {};
23
+ for (const [k, v] of Object.entries(obj)) {
24
+ if (v !== undefined)
25
+ out[k] = v;
26
+ }
27
+ return out;
28
+ }
29
+ const diagRootCauseGen = fc.record({
30
+ rootCause: optionalText(),
31
+ summary: optionalText(),
32
+ rootCauseCategory: fc.oneof(fc.constant(undefined), fc.constantFrom('People', 'Design', 'Assumption', 'Tooling')),
33
+ }).map(stripUndefined);
34
+ const diagDistillerGen = fc.record({
35
+ abstractedPrinciple: optionalText(),
36
+ rationale: optionalText(),
37
+ scope: fc.oneof(fc.constant(undefined), fc.constantFrom('general', 'domain', 'scenario')),
38
+ }).map(stripUndefined);
39
+ const diagRouterGen = fc.record({
40
+ summary: optionalText(),
41
+ rootCause: optionalText(),
42
+ violatedPrinciples: fc.oneof(fc.constant(undefined), fc.array(fc.record({ principleId: optionalText() }).map(stripUndefined), { maxLength: 3 })),
43
+ recommendations: fc.oneof(fc.constant(undefined), fc.array(fc.record({ kind: fc.constantFrom('principle', 'rule', 'implementation', 'prompt', 'defer') }), { maxLength: 3 })),
44
+ }).map(stripUndefined);
45
+ const dreamerCandidateGen = fc.record({
46
+ badDecision: optionalText(),
47
+ betterDecision: optionalText(),
48
+ rationale: optionalText(),
49
+ riskLevel: fc.oneof(fc.constant(undefined), fc.constantFrom('low', 'medium', 'high')),
50
+ strategicPerspective: optionalText(),
51
+ }).map(stripUndefined);
52
+ const dreamerGen = fc.record({
53
+ candidates: fc.oneof(fc.constant(undefined), fc.array(dreamerCandidateGen, { minLength: 0, maxLength: 3 })),
54
+ }).map(stripUndefined);
55
+ const philosopherGen = fc.record({
56
+ thesis: optionalText(),
57
+ principleCandidate: fc.oneof(fc.constant(undefined), fc.record({
58
+ title: optionalText(),
59
+ scope: optionalText(),
60
+ confidence: fc.oneof(fc.constant(undefined), fc.float({ min: 0, max: 1, noNaN: true })),
61
+ }).map(stripUndefined)),
62
+ }).map(stripUndefined);
63
+ const scribeGen = fc.record({
64
+ principleDraft: fc.oneof(fc.constant(undefined), fc.record({
65
+ statement: optionalText(),
66
+ applicability: fc.oneof(fc.constant(undefined), fc.array(fc.string({ minLength: 1, maxLength: 20 }), { maxLength: 3 })),
67
+ antiPatterns: fc.oneof(fc.constant(undefined), fc.array(fc.string({ minLength: 1, maxLength: 20 }), { maxLength: 3 })),
68
+ }).map(stripUndefined)),
69
+ }).map(stripUndefined);
70
+ const artificerGen = fc.record({
71
+ affectedTools: fc.oneof(fc.constant(undefined), fc.array(fc.string({ minLength: 1, maxLength: 20 }), { maxLength: 3 })),
72
+ implementationSummary: optionalText(),
73
+ risks: fc.oneof(fc.constant(undefined), fc.array(fc.string({ minLength: 1, maxLength: 20 }), { maxLength: 3 })),
74
+ }).map(stripUndefined);
75
+ const evaluatorGen = fc.record({
76
+ evaluation: fc.oneof(fc.constant(undefined), fc.record({
77
+ decision: fc.oneof(fc.constant(undefined), fc.constantFrom('approved', 'needs_revision', 'rejected')),
78
+ concerns: fc.oneof(fc.constant(undefined), fc.array(fc.string({ minLength: 1, maxLength: 20 }), { maxLength: 3 })),
79
+ }).map(stripUndefined)),
80
+ codeReview: fc.oneof(fc.constant(undefined), fc.record({
81
+ intentConsistency: fc.oneof(fc.constant(undefined), fc.record({ aligned: fc.boolean() })),
82
+ }).map(stripUndefined)),
83
+ }).map(stripUndefined);
84
+ /** Generators keyed by runnerKind, all 8 kinds represented (design §16 CP-01). */
85
+ const STAGE_GENERATORS = {
86
+ diag_rootcause: diagRootCauseGen,
87
+ diag_distiller: diagDistillerGen,
88
+ diag_router: diagRouterGen,
89
+ dreamer: dreamerGen,
90
+ philosopher: philosopherGen,
91
+ scribe: scribeGen,
92
+ artificer: artificerGen,
93
+ evaluator: evaluatorGen,
94
+ };
95
+ /** A generator that picks a runnerKind and then a matching legal-shape output for it. */
96
+ const stageInputGen = fc
97
+ .constantFrom(...SUMMARY_RUNNER_KINDS)
98
+ .chain((runnerKind) => STAGE_GENERATORS[runnerKind].map((output) => ({ runnerKind, output })));
99
+ describe('deriveArtifactSummary — CP-01 determinism & boundedness', () => {
100
+ it('produces byte-identical output for the same input, twice', () => {
101
+ fc.assert(fc.property(stageInputGen, ({ runnerKind, output }) => {
102
+ const first = deriveArtifactSummary(runnerKind, output);
103
+ const second = deriveArtifactSummary(runnerKind, output);
104
+ expect(JSON.stringify(second)).toBe(JSON.stringify(first));
105
+ }), { numRuns: 200 });
106
+ });
107
+ it('bounds headline and every field value when ok=true', () => {
108
+ fc.assert(fc.property(stageInputGen, ({ runnerKind, output }) => {
109
+ const result = deriveArtifactSummary(runnerKind, output);
110
+ if (result.ok) {
111
+ expect(result.value.headline.length).toBeLessThanOrEqual(SUMMARY_HEADLINE_MAX_CHARS);
112
+ for (const value of Object.values(result.value.fields)) {
113
+ expect(value.length).toBeLessThanOrEqual(SUMMARY_FIELD_MAX_CHARS);
114
+ }
115
+ }
116
+ }), { numRuns: 200 });
117
+ });
118
+ it('covers all 8 SummaryRunnerKind values (coverage guard, not a runtime assertion)', () => {
119
+ expect(SUMMARY_RUNNER_KINDS).toHaveLength(8);
120
+ expect(new Set(SUMMARY_RUNNER_KINDS).size).toBe(8);
121
+ });
122
+ });
123
+ describe('deriveArtifactSummary — CP-02 derivation totality', () => {
124
+ const adversarialUnknown = fc.oneof(fc.constant(null), fc.constant(undefined), fc.constant({}), fc.string(), fc.integer(), fc.boolean(), fc.array(fc.anything(), { maxLength: 5 }), fc.string({ minLength: 5000, maxLength: 6000 }), fc.constant({ __proto__: { polluted: true } }), fc.constant({ constructor: 'not-a-function' }), fc.constant({ toString: 'not-a-function' }), fc.constant((() => {
125
+ const cyclic = {};
126
+ cyclic.self = cyclic;
127
+ return cyclic;
128
+ })()), fc.object({ maxDepth: 4 }));
129
+ it('never throws and always returns a Result, for any unknown input × any legal runnerKind', () => {
130
+ fc.assert(fc.property(fc.constantFrom(...SUMMARY_RUNNER_KINDS), adversarialUnknown, (runnerKind, input) => {
131
+ let result;
132
+ expect(() => {
133
+ result = deriveArtifactSummary(runnerKind, input);
134
+ }).not.toThrow();
135
+ expect(result).toBeDefined();
136
+ expect(typeof result?.ok).toBe('boolean');
137
+ }), { numRuns: 300 });
138
+ });
139
+ it('never throws for illegal (non-SummaryRunnerKind) runnerKind values', () => {
140
+ fc.assert(fc.property(fc.string(), adversarialUnknown, (illegalKind, input) => {
141
+ fc.pre(!SUMMARY_RUNNER_KINDS.includes(illegalKind));
142
+ let result;
143
+ expect(() => {
144
+ result = deriveArtifactSummary(illegalKind, input);
145
+ }).not.toThrow();
146
+ expect(result?.ok).toBe(false);
147
+ if (result && !result.ok) {
148
+ expect(result.reason).toBe('unsupported_runner_kind');
149
+ }
150
+ }), { numRuns: 100 });
151
+ });
152
+ it('regression: the three diagnostic stages never return unsupported_runner_kind for their own legal output (design §4.7.1)', () => {
153
+ for (const runnerKind of ['diag_rootcause', 'diag_distiller', 'diag_router']) {
154
+ fc.assert(fc.property(STAGE_GENERATORS[runnerKind], (output) => {
155
+ const result = deriveArtifactSummary(runnerKind, output);
156
+ if (!result.ok) {
157
+ expect(result.reason).not.toBe('unsupported_runner_kind');
158
+ }
159
+ }), { numRuns: 100 });
160
+ }
161
+ });
162
+ });
163
+ describe('deriveArtifactSummary — CP-03 missing fields land in omittedFields', () => {
164
+ /** Full legal outputs (all fields present) per stage, used as the "everything present" baseline. */
165
+ const FULL_OUTPUTS = {
166
+ diag_rootcause: { rootCause: 'Design: root cause statement', summary: 'root symptom', rootCauseCategory: 'Design' },
167
+ diag_distiller: { abstractedPrinciple: 'principle', rationale: 'rationale text', scope: 'general' },
168
+ diag_router: {
169
+ summary: 'router summary',
170
+ rootCause: 'router root cause',
171
+ violatedPrinciples: [{ principleId: 'T-01' }],
172
+ recommendations: [{ kind: 'principle' }],
173
+ },
174
+ dreamer: {
175
+ candidates: [{
176
+ badDecision: 'bad', betterDecision: 'better', rationale: 'why', riskLevel: 'high', strategicPerspective: 'lens',
177
+ }],
178
+ },
179
+ philosopher: { thesis: 'thesis', principleCandidate: { title: 'title', scope: 'scope', confidence: 0.8 } },
180
+ scribe: { principleDraft: { statement: 'statement', applicability: ['a'], antiPatterns: ['b'] } },
181
+ artificer: { affectedTools: ['tool_a'], implementationSummary: 'summary', risks: ['risk_a'] },
182
+ evaluator: { evaluation: { decision: 'approved', concerns: ['c'] }, codeReview: { intentConsistency: { aligned: true } } },
183
+ };
184
+ /** Target field keys per stage, mirroring the resolver's own key set. */
185
+ const TARGET_KEYS = {
186
+ diag_rootcause: ['rootSymptom', 'category', 'severity', 'rootCause'],
187
+ diag_distiller: ['rootCause', 'affectedComponents', 'category', 'severity'],
188
+ diag_router: ['rootCause', 'affectedComponents', 'rootSymptom', 'category', 'severity'],
189
+ dreamer: ['badDecision', 'betterDecision', 'rationale', 'riskLevel', 'strategicPerspective'],
190
+ philosopher: ['thesis', 'principleTitle', 'principleScope', 'principleConfidence'],
191
+ scribe: ['principleText', 'scope', 'exceptions'],
192
+ artificer: ['changedFiles', 'apiSurface', 'risks'],
193
+ evaluator: ['verdict', 'concernCount', 'intentConsistency'],
194
+ };
195
+ it('unconditionally-absent target keys (no schema field for this stage) are always omitted', () => {
196
+ // These three are asserted by design §6.1's own note: the field-name
197
+ // exists as a *target* key for manifest compatibility, but no diagnostic
198
+ // stage schema carries it — it must be omitted every time, regardless of
199
+ // what else is present (Requirement 1.13).
200
+ const alwaysOmitted = {
201
+ diag_rootcause: ['severity'],
202
+ diag_distiller: ['affectedComponents', 'severity'],
203
+ diag_router: ['severity'],
204
+ dreamer: [],
205
+ philosopher: [],
206
+ scribe: [],
207
+ artificer: [],
208
+ evaluator: [],
209
+ };
210
+ for (const [runnerKind, keys] of Object.entries(alwaysOmitted)) {
211
+ if (keys.length === 0)
212
+ continue;
213
+ const result = deriveArtifactSummary(runnerKind, FULL_OUTPUTS[runnerKind]);
214
+ expect(result.ok, runnerKind).toBe(true);
215
+ if (result.ok) {
216
+ for (const key of keys) {
217
+ expect(result.value.omittedFields, `${runnerKind}.${key}`).toContain(key);
218
+ }
219
+ }
220
+ }
221
+ });
222
+ it('every subset of removed fields from a full output appears exactly in omittedFields', () => {
223
+ fc.assert(fc.property(fc.constantFrom(...SUMMARY_RUNNER_KINDS), fc.array(fc.boolean(), { minLength: 0, maxLength: 8 }), (runnerKind, keepMask) => {
224
+ const full = FULL_OUTPUTS[runnerKind];
225
+ const targetKeys = TARGET_KEYS[runnerKind];
226
+ // For stages whose target key maps to a nested/derived structure
227
+ // (candidates[0].X, principleDraft.X, etc.) we can't cleanly "hole
228
+ // punch" individual keys without duplicating the resolver's own
229
+ // mapping logic. Instead, this property checks the two structural
230
+ // extremes (full output vs. empty object) plus the FULL_OUTPUTS
231
+ // baseline already covered by the deterministic test above.
232
+ void keepMask;
233
+ const emptyResult = deriveArtifactSummary(runnerKind, {});
234
+ const fullResult = deriveArtifactSummary(runnerKind, full);
235
+ // Empty input: every target key must be omitted (nothing to derive from).
236
+ if (emptyResult.ok) {
237
+ for (const key of targetKeys) {
238
+ expect(emptyResult.value.omittedFields).toContain(key);
239
+ }
240
+ }
241
+ else {
242
+ expect(emptyResult.reason).toBe('no_derivable_field');
243
+ }
244
+ // Full input: omittedFields must be a subset of targetKeys (never invent extra keys).
245
+ if (fullResult.ok) {
246
+ for (const omitted of fullResult.value.omittedFields) {
247
+ expect(targetKeys).toContain(omitted);
248
+ }
249
+ }
250
+ }), { numRuns: 200 });
251
+ });
252
+ });
253
+ //# sourceMappingURL=artifact-summary.property.test.js.map