@dailephd/my-dev-kit-lab 0.6.3 → 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.
Files changed (103) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +6 -4
  3. package/benchmarks/contracts/context-window-scaling-cases.json +220 -0
  4. package/benchmarks/projects/context-window-scaling-fixed-ts/README.md +14 -0
  5. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-1/carrier-depot-catalog-01.ts +302 -0
  6. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-1/course-module-catalog-06.ts +302 -0
  7. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-1/library-shelf-catalog-07.ts +302 -0
  8. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-1/sensor-station-catalog-05.ts +302 -0
  9. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-1/staff-rota-catalog-03.ts +302 -0
  10. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-1/supplier-contract-catalog-02.ts +302 -0
  11. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-1/vehicle-route-catalog-04.ts +302 -0
  12. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-2/archive-box-catalog-12.ts +302 -0
  13. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-2/clinic-ward-catalog-08.ts +302 -0
  14. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-2/greenhouse-bay-catalog-13.ts +302 -0
  15. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-2/harbor-berth-catalog-10.ts +302 -0
  16. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-2/kitchen-section-catalog-15.ts +302 -0
  17. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-2/market-stall-catalog-09.ts +302 -0
  18. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-2/station-platform-catalog-14.ts +302 -0
  19. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-2/workshop-bench-catalog-11.ts +302 -0
  20. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/archive-box-catalog-28.ts +302 -0
  21. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/carrier-depot-catalog-17.ts +302 -0
  22. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/clinic-ward-catalog-24.ts +302 -0
  23. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/course-module-catalog-22.ts +302 -0
  24. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/greenhouse-bay-catalog-29.ts +302 -0
  25. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/harbor-berth-catalog-26.ts +302 -0
  26. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/kitchen-section-catalog-31.ts +302 -0
  27. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/library-shelf-catalog-23.ts +302 -0
  28. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/market-stall-catalog-25.ts +302 -0
  29. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/sensor-station-catalog-21.ts +302 -0
  30. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/staff-rota-catalog-19.ts +302 -0
  31. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/station-platform-catalog-30.ts +302 -0
  32. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/supplier-contract-catalog-18.ts +302 -0
  33. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/vehicle-route-catalog-20.ts +302 -0
  34. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/warehouse-zone-catalog-16.ts +302 -0
  35. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-3/workshop-bench-catalog-27.ts +302 -0
  36. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/archive-box-catalog-44.ts +302 -0
  37. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/carrier-depot-catalog-33.ts +302 -0
  38. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/carrier-depot-catalog-49.ts +302 -0
  39. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/clinic-ward-catalog-40.ts +302 -0
  40. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/clinic-ward-catalog-56.ts +302 -0
  41. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/course-module-catalog-38.ts +302 -0
  42. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/course-module-catalog-54.ts +302 -0
  43. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/greenhouse-bay-catalog-45.ts +302 -0
  44. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/harbor-berth-catalog-42.ts +302 -0
  45. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/harbor-berth-catalog-58.ts +302 -0
  46. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/kitchen-section-catalog-47.ts +302 -0
  47. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/library-shelf-catalog-39.ts +302 -0
  48. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/library-shelf-catalog-55.ts +302 -0
  49. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/market-stall-catalog-41.ts +302 -0
  50. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/market-stall-catalog-57.ts +302 -0
  51. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/sensor-station-catalog-37.ts +302 -0
  52. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/sensor-station-catalog-53.ts +302 -0
  53. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/staff-rota-catalog-35.ts +302 -0
  54. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/staff-rota-catalog-51.ts +302 -0
  55. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/station-platform-catalog-46.ts +302 -0
  56. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/supplier-contract-catalog-34.ts +302 -0
  57. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/supplier-contract-catalog-50.ts +302 -0
  58. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/vehicle-route-catalog-36.ts +302 -0
  59. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/vehicle-route-catalog-52.ts +302 -0
  60. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/warehouse-zone-catalog-32.ts +302 -0
  61. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/warehouse-zone-catalog-48.ts +302 -0
  62. package/benchmarks/projects/context-window-scaling-fixed-ts/src/filler/tier-4/workshop-bench-catalog-43.ts +302 -0
  63. package/benchmarks/projects/context-window-scaling-fixed-ts/src/tasks/auditRedaction.ts +25 -0
  64. package/benchmarks/projects/context-window-scaling-fixed-ts/src/tasks/inventoryReservation.ts +26 -0
  65. package/benchmarks/projects/context-window-scaling-fixed-ts/src/tasks/invoiceTotals.ts +25 -0
  66. package/benchmarks/projects/context-window-scaling-fixed-ts/src/tasks/shippingQuote.ts +32 -0
  67. package/benchmarks/projects/context-window-scaling-fixed-ts/tests/tasks/auditRedaction.test.ts +17 -0
  68. package/benchmarks/projects/context-window-scaling-fixed-ts/tests/tasks/inventoryReservation.test.ts +19 -0
  69. package/benchmarks/projects/context-window-scaling-fixed-ts/tests/tasks/invoiceTotals.test.ts +14 -0
  70. package/benchmarks/projects/context-window-scaling-fixed-ts/tests/tasks/shippingQuote.test.ts +19 -0
  71. package/dist/src/cli/help.js +13 -3
  72. package/dist/src/commands/runExperimentRunCommand.js +64 -4
  73. package/dist/src/experiments/defaultRegistry.js +2 -0
  74. package/dist/src/experiments/plugins/contextWindowScaling/cliBudgets.js +31 -0
  75. package/dist/src/experiments/plugins/contextWindowScaling/config.js +84 -0
  76. package/dist/src/experiments/plugins/contextWindowScaling/contextBudget.js +43 -0
  77. package/dist/src/experiments/plugins/contextWindowScaling/evaluation.js +36 -0
  78. package/dist/src/experiments/plugins/contextWindowScaling/execution.js +187 -0
  79. package/dist/src/experiments/plugins/contextWindowScaling/executionArtifact.js +15 -0
  80. package/dist/src/experiments/plugins/contextWindowScaling/executionArtifactReader.js +186 -0
  81. package/dist/src/experiments/plugins/contextWindowScaling/index.js +14 -0
  82. package/dist/src/experiments/plugins/contextWindowScaling/metadata.js +12 -0
  83. package/dist/src/experiments/plugins/contextWindowScaling/metrics.js +149 -0
  84. package/dist/src/experiments/plugins/contextWindowScaling/plugin.js +185 -0
  85. package/dist/src/experiments/plugins/contextWindowScaling/projectProfile.js +51 -0
  86. package/dist/src/experiments/plugins/contextWindowScaling/relevantFiles.js +76 -0
  87. package/dist/src/experiments/plugins/contextWindowScaling/successEvidence.js +60 -0
  88. package/dist/src/experiments/plugins/contextWindowScaling/types.js +1 -0
  89. package/dist/src/experiments/plugins/index.js +1 -0
  90. package/dist/src/experiments/plugins/warmIndexReuse/agentEvaluation.js +1 -1
  91. package/dist/src/plots/buildContextWindowScalingPlotData.js +96 -0
  92. package/dist/src/plots/index.js +1 -0
  93. package/dist/src/plots/writePlotArtifacts.js +12 -3
  94. package/dist/src/report/experiments/buildContextWindowScalingReport.js +84 -0
  95. package/dist/src/report/experiments/buildPluginExperimentReport.js +22 -2
  96. package/dist/src/report/experiments/contextWindowScalingReportModel.js +3 -0
  97. package/dist/src/report/experiments/index.js +4 -0
  98. package/dist/src/report/experiments/renderContextWindowScalingHtml.js +99 -0
  99. package/dist/src/report/experiments/renderContextWindowScalingText.js +108 -0
  100. package/dist/src/report/experiments/renderPluginExperimentReportHtml.js +3 -0
  101. package/dist/src/report/experiments/renderPluginExperimentReportText.js +8 -0
  102. package/docs/METRICS.md +27 -1
  103. package/package.json +1 -1
@@ -0,0 +1,302 @@
1
+ // Scale-only filler (tier-3). Ordinary catalog data for a market stall listing.
2
+ // It is unrelated to every task under src/tasks and exists only to add repository context.
3
+
4
+ export interface MarketStallRecord25 {
5
+ id: string;
6
+ label: string;
7
+ capacity: number;
8
+ priority: number;
9
+ active: boolean;
10
+ notes: string;
11
+ }
12
+
13
+ export const marketStallRecords25: readonly MarketStallRecord25[] = [
14
+ {
15
+ id: "mar-25-001",
16
+ label: "central row 1",
17
+ capacity: 34,
18
+ priority: 4,
19
+ active: false,
20
+ notes: "northern market stall entry reviewed in cycle 5"
21
+ },
22
+ {
23
+ id: "mar-25-002",
24
+ label: "northern annex 2",
25
+ capacity: 94,
26
+ priority: 3,
27
+ active: false,
28
+ notes: "northern market stall entry reviewed in cycle 9"
29
+ },
30
+ {
31
+ id: "mar-25-003",
32
+ label: "central row 3",
33
+ capacity: 98,
34
+ priority: 3,
35
+ active: false,
36
+ notes: "northern market stall entry reviewed in cycle 9"
37
+ },
38
+ {
39
+ id: "mar-25-004",
40
+ label: "granite annex 4",
41
+ capacity: 40,
42
+ priority: 5,
43
+ active: false,
44
+ notes: "northern market stall entry reviewed in cycle 9"
45
+ },
46
+ {
47
+ id: "mar-25-005",
48
+ label: "central hall 5",
49
+ capacity: 50,
50
+ priority: 5,
51
+ active: false,
52
+ notes: "granite market stall entry reviewed in cycle 9"
53
+ },
54
+ {
55
+ id: "mar-25-006",
56
+ label: "central hall 6",
57
+ capacity: 80,
58
+ priority: 4,
59
+ active: false,
60
+ notes: "granite market stall entry reviewed in cycle 1"
61
+ },
62
+ {
63
+ id: "mar-25-007",
64
+ label: "northern annex 7",
65
+ capacity: 38,
66
+ priority: 2,
67
+ active: false,
68
+ notes: "northern market stall entry reviewed in cycle 9"
69
+ },
70
+ {
71
+ id: "mar-25-008",
72
+ label: "northern row 8",
73
+ capacity: 20,
74
+ priority: 1,
75
+ active: false,
76
+ notes: "northern market stall entry reviewed in cycle 1"
77
+ },
78
+ {
79
+ id: "mar-25-009",
80
+ label: "granite row 9",
81
+ capacity: 26,
82
+ priority: 1,
83
+ active: false,
84
+ notes: "granite market stall entry reviewed in cycle 1"
85
+ },
86
+ {
87
+ id: "mar-25-010",
88
+ label: "granite hall 10",
89
+ capacity: 12,
90
+ priority: 3,
91
+ active: false,
92
+ notes: "central market stall entry reviewed in cycle 1"
93
+ },
94
+ {
95
+ id: "mar-25-011",
96
+ label: "central annex 11",
97
+ capacity: 98,
98
+ priority: 3,
99
+ active: false,
100
+ notes: "northern market stall entry reviewed in cycle 1"
101
+ },
102
+ {
103
+ id: "mar-25-012",
104
+ label: "granite annex 12",
105
+ capacity: 48,
106
+ priority: 4,
107
+ active: false,
108
+ notes: "central market stall entry reviewed in cycle 9"
109
+ },
110
+ {
111
+ id: "mar-25-013",
112
+ label: "northern row 13",
113
+ capacity: 52,
114
+ priority: 1,
115
+ active: false,
116
+ notes: "central market stall entry reviewed in cycle 1"
117
+ },
118
+ {
119
+ id: "mar-25-014",
120
+ label: "central row 14",
121
+ capacity: 12,
122
+ priority: 4,
123
+ active: false,
124
+ notes: "granite market stall entry reviewed in cycle 9"
125
+ },
126
+ {
127
+ id: "mar-25-015",
128
+ label: "granite annex 15",
129
+ capacity: 82,
130
+ priority: 2,
131
+ active: false,
132
+ notes: "granite market stall entry reviewed in cycle 5"
133
+ },
134
+ {
135
+ id: "mar-25-016",
136
+ label: "central row 16",
137
+ capacity: 98,
138
+ priority: 1,
139
+ active: false,
140
+ notes: "central market stall entry reviewed in cycle 9"
141
+ },
142
+ {
143
+ id: "mar-25-017",
144
+ label: "central annex 17",
145
+ capacity: 74,
146
+ priority: 2,
147
+ active: false,
148
+ notes: "central market stall entry reviewed in cycle 5"
149
+ },
150
+ {
151
+ id: "mar-25-018",
152
+ label: "central row 18",
153
+ capacity: 24,
154
+ priority: 5,
155
+ active: false,
156
+ notes: "central market stall entry reviewed in cycle 5"
157
+ },
158
+ {
159
+ id: "mar-25-019",
160
+ label: "northern row 19",
161
+ capacity: 46,
162
+ priority: 1,
163
+ active: false,
164
+ notes: "granite market stall entry reviewed in cycle 9"
165
+ },
166
+ {
167
+ id: "mar-25-020",
168
+ label: "central annex 20",
169
+ capacity: 12,
170
+ priority: 5,
171
+ active: false,
172
+ notes: "central market stall entry reviewed in cycle 5"
173
+ },
174
+ {
175
+ id: "mar-25-021",
176
+ label: "central annex 21",
177
+ capacity: 34,
178
+ priority: 3,
179
+ active: false,
180
+ notes: "northern market stall entry reviewed in cycle 5"
181
+ },
182
+ {
183
+ id: "mar-25-022",
184
+ label: "granite row 22",
185
+ capacity: 16,
186
+ priority: 5,
187
+ active: false,
188
+ notes: "granite market stall entry reviewed in cycle 5"
189
+ },
190
+ {
191
+ id: "mar-25-023",
192
+ label: "granite annex 23",
193
+ capacity: 34,
194
+ priority: 3,
195
+ active: false,
196
+ notes: "central market stall entry reviewed in cycle 9"
197
+ },
198
+ {
199
+ id: "mar-25-024",
200
+ label: "central hall 24",
201
+ capacity: 74,
202
+ priority: 3,
203
+ active: false,
204
+ notes: "granite market stall entry reviewed in cycle 9"
205
+ },
206
+ {
207
+ id: "mar-25-025",
208
+ label: "central hall 25",
209
+ capacity: 78,
210
+ priority: 2,
211
+ active: false,
212
+ notes: "northern market stall entry reviewed in cycle 9"
213
+ },
214
+ {
215
+ id: "mar-25-026",
216
+ label: "central row 26",
217
+ capacity: 66,
218
+ priority: 3,
219
+ active: false,
220
+ notes: "granite market stall entry reviewed in cycle 5"
221
+ },
222
+ {
223
+ id: "mar-25-027",
224
+ label: "granite annex 27",
225
+ capacity: 22,
226
+ priority: 1,
227
+ active: false,
228
+ notes: "northern market stall entry reviewed in cycle 1"
229
+ },
230
+ {
231
+ id: "mar-25-028",
232
+ label: "northern row 28",
233
+ capacity: 14,
234
+ priority: 3,
235
+ active: false,
236
+ notes: "granite market stall entry reviewed in cycle 5"
237
+ },
238
+ {
239
+ id: "mar-25-029",
240
+ label: "northern hall 29",
241
+ capacity: 94,
242
+ priority: 5,
243
+ active: false,
244
+ notes: "central market stall entry reviewed in cycle 5"
245
+ },
246
+ {
247
+ id: "mar-25-030",
248
+ label: "granite row 30",
249
+ capacity: 18,
250
+ priority: 5,
251
+ active: false,
252
+ notes: "northern market stall entry reviewed in cycle 1"
253
+ },
254
+ {
255
+ id: "mar-25-031",
256
+ label: "granite row 31",
257
+ capacity: 10,
258
+ priority: 4,
259
+ active: false,
260
+ notes: "northern market stall entry reviewed in cycle 5"
261
+ },
262
+ {
263
+ id: "mar-25-032",
264
+ label: "northern row 32",
265
+ capacity: 30,
266
+ priority: 3,
267
+ active: false,
268
+ notes: "northern market stall entry reviewed in cycle 5"
269
+ },
270
+ {
271
+ id: "mar-25-033",
272
+ label: "riverside annex 33",
273
+ capacity: 52,
274
+ priority: 2,
275
+ active: false,
276
+ notes: "central market stall entry reviewed in cycle 5"
277
+ },
278
+ {
279
+ id: "mar-25-034",
280
+ label: "granite annex 34",
281
+ capacity: 82,
282
+ priority: 5,
283
+ active: false,
284
+ notes: "granite market stall entry reviewed in cycle 5"
285
+ }
286
+ ];
287
+
288
+ export function findMarketStallRecord25(id: string): MarketStallRecord25 | undefined {
289
+ return marketStallRecords25.find((record) => record.id === id);
290
+ }
291
+
292
+ export function listMarketStallActiveRecords25(): MarketStallRecord25[] {
293
+ return marketStallRecords25.filter((record) => record.active);
294
+ }
295
+
296
+ export function totalMarketStallCapacity25(): number {
297
+ return marketStallRecords25.reduce((sum, record) => sum + record.capacity, 0);
298
+ }
299
+
300
+ export function countMarketStallByPriority25(priority: number): number {
301
+ return marketStallRecords25.filter((record) => record.priority === priority).length;
302
+ }
@@ -0,0 +1,302 @@
1
+ // Scale-only filler (tier-3). Ordinary catalog data for a sensor station listing.
2
+ // It is unrelated to every task under src/tasks and exists only to add repository context.
3
+
4
+ export interface SensorStationRecord21 {
5
+ id: string;
6
+ label: string;
7
+ capacity: number;
8
+ priority: number;
9
+ active: boolean;
10
+ notes: string;
11
+ }
12
+
13
+ export const sensorStationRecords21: readonly SensorStationRecord21[] = [
14
+ {
15
+ id: "sen-21-001",
16
+ label: "granite hall 1",
17
+ capacity: 26,
18
+ priority: 1,
19
+ active: false,
20
+ notes: "central sensor station entry reviewed in cycle 5"
21
+ },
22
+ {
23
+ id: "sen-21-002",
24
+ label: "granite hall 2",
25
+ capacity: 14,
26
+ priority: 5,
27
+ active: false,
28
+ notes: "northern sensor station entry reviewed in cycle 9"
29
+ },
30
+ {
31
+ id: "sen-21-003",
32
+ label: "central hall 3",
33
+ capacity: 96,
34
+ priority: 3,
35
+ active: false,
36
+ notes: "central sensor station entry reviewed in cycle 1"
37
+ },
38
+ {
39
+ id: "sen-21-004",
40
+ label: "northern hall 4",
41
+ capacity: 56,
42
+ priority: 2,
43
+ active: false,
44
+ notes: "northern sensor station entry reviewed in cycle 5"
45
+ },
46
+ {
47
+ id: "sen-21-005",
48
+ label: "northern annex 5",
49
+ capacity: 12,
50
+ priority: 1,
51
+ active: false,
52
+ notes: "central sensor station entry reviewed in cycle 1"
53
+ },
54
+ {
55
+ id: "sen-21-006",
56
+ label: "granite annex 6",
57
+ capacity: 48,
58
+ priority: 3,
59
+ active: false,
60
+ notes: "granite sensor station entry reviewed in cycle 9"
61
+ },
62
+ {
63
+ id: "sen-21-007",
64
+ label: "granite hall 7",
65
+ capacity: 32,
66
+ priority: 5,
67
+ active: false,
68
+ notes: "granite sensor station entry reviewed in cycle 9"
69
+ },
70
+ {
71
+ id: "sen-21-008",
72
+ label: "northern row 8",
73
+ capacity: 84,
74
+ priority: 4,
75
+ active: false,
76
+ notes: "granite sensor station entry reviewed in cycle 1"
77
+ },
78
+ {
79
+ id: "sen-21-009",
80
+ label: "northern hall 9",
81
+ capacity: 20,
82
+ priority: 1,
83
+ active: false,
84
+ notes: "central sensor station entry reviewed in cycle 5"
85
+ },
86
+ {
87
+ id: "sen-21-010",
88
+ label: "northern row 10",
89
+ capacity: 44,
90
+ priority: 3,
91
+ active: false,
92
+ notes: "granite sensor station entry reviewed in cycle 1"
93
+ },
94
+ {
95
+ id: "sen-21-011",
96
+ label: "central hall 11",
97
+ capacity: 48,
98
+ priority: 3,
99
+ active: false,
100
+ notes: "central sensor station entry reviewed in cycle 1"
101
+ },
102
+ {
103
+ id: "sen-21-012",
104
+ label: "central row 12",
105
+ capacity: 80,
106
+ priority: 5,
107
+ active: false,
108
+ notes: "northern sensor station entry reviewed in cycle 1"
109
+ },
110
+ {
111
+ id: "sen-21-013",
112
+ label: "granite row 13",
113
+ capacity: 84,
114
+ priority: 1,
115
+ active: false,
116
+ notes: "central sensor station entry reviewed in cycle 5"
117
+ },
118
+ {
119
+ id: "sen-21-014",
120
+ label: "granite row 14",
121
+ capacity: 80,
122
+ priority: 5,
123
+ active: false,
124
+ notes: "northern sensor station entry reviewed in cycle 5"
125
+ },
126
+ {
127
+ id: "sen-21-015",
128
+ label: "central annex 15",
129
+ capacity: 22,
130
+ priority: 1,
131
+ active: false,
132
+ notes: "granite sensor station entry reviewed in cycle 9"
133
+ },
134
+ {
135
+ id: "sen-21-016",
136
+ label: "central row 16",
137
+ capacity: 94,
138
+ priority: 5,
139
+ active: false,
140
+ notes: "granite sensor station entry reviewed in cycle 1"
141
+ },
142
+ {
143
+ id: "sen-21-017",
144
+ label: "granite hall 17",
145
+ capacity: 72,
146
+ priority: 2,
147
+ active: false,
148
+ notes: "granite sensor station entry reviewed in cycle 9"
149
+ },
150
+ {
151
+ id: "sen-21-018",
152
+ label: "northern hall 18",
153
+ capacity: 76,
154
+ priority: 1,
155
+ active: false,
156
+ notes: "granite sensor station entry reviewed in cycle 9"
157
+ },
158
+ {
159
+ id: "sen-21-019",
160
+ label: "granite annex 19",
161
+ capacity: 68,
162
+ priority: 3,
163
+ active: false,
164
+ notes: "central sensor station entry reviewed in cycle 9"
165
+ },
166
+ {
167
+ id: "sen-21-020",
168
+ label: "central annex 20",
169
+ capacity: 42,
170
+ priority: 5,
171
+ active: false,
172
+ notes: "granite sensor station entry reviewed in cycle 1"
173
+ },
174
+ {
175
+ id: "sen-21-021",
176
+ label: "central row 21",
177
+ capacity: 16,
178
+ priority: 2,
179
+ active: false,
180
+ notes: "granite sensor station entry reviewed in cycle 5"
181
+ },
182
+ {
183
+ id: "sen-21-022",
184
+ label: "central row 22",
185
+ capacity: 80,
186
+ priority: 4,
187
+ active: false,
188
+ notes: "granite sensor station entry reviewed in cycle 5"
189
+ },
190
+ {
191
+ id: "sen-21-023",
192
+ label: "northern hall 23",
193
+ capacity: 30,
194
+ priority: 3,
195
+ active: false,
196
+ notes: "central sensor station entry reviewed in cycle 5"
197
+ },
198
+ {
199
+ id: "sen-21-024",
200
+ label: "central hall 24",
201
+ capacity: 62,
202
+ priority: 3,
203
+ active: false,
204
+ notes: "central sensor station entry reviewed in cycle 5"
205
+ },
206
+ {
207
+ id: "sen-21-025",
208
+ label: "central hall 25",
209
+ capacity: 30,
210
+ priority: 2,
211
+ active: false,
212
+ notes: "northern sensor station entry reviewed in cycle 9"
213
+ },
214
+ {
215
+ id: "sen-21-026",
216
+ label: "central annex 26",
217
+ capacity: 72,
218
+ priority: 3,
219
+ active: false,
220
+ notes: "granite sensor station entry reviewed in cycle 5"
221
+ },
222
+ {
223
+ id: "sen-21-027",
224
+ label: "central row 27",
225
+ capacity: 38,
226
+ priority: 2,
227
+ active: false,
228
+ notes: "northern sensor station entry reviewed in cycle 5"
229
+ },
230
+ {
231
+ id: "sen-21-028",
232
+ label: "northern hall 28",
233
+ capacity: 64,
234
+ priority: 5,
235
+ active: false,
236
+ notes: "northern sensor station entry reviewed in cycle 9"
237
+ },
238
+ {
239
+ id: "sen-21-029",
240
+ label: "northern row 29",
241
+ capacity: 60,
242
+ priority: 2,
243
+ active: false,
244
+ notes: "granite sensor station entry reviewed in cycle 5"
245
+ },
246
+ {
247
+ id: "sen-21-030",
248
+ label: "northern annex 30",
249
+ capacity: 52,
250
+ priority: 1,
251
+ active: false,
252
+ notes: "northern sensor station entry reviewed in cycle 5"
253
+ },
254
+ {
255
+ id: "sen-21-031",
256
+ label: "granite annex 31",
257
+ capacity: 86,
258
+ priority: 3,
259
+ active: false,
260
+ notes: "central sensor station entry reviewed in cycle 5"
261
+ },
262
+ {
263
+ id: "sen-21-032",
264
+ label: "granite row 32",
265
+ capacity: 68,
266
+ priority: 2,
267
+ active: false,
268
+ notes: "northern sensor station entry reviewed in cycle 9"
269
+ },
270
+ {
271
+ id: "sen-21-033",
272
+ label: "central hall 33",
273
+ capacity: 80,
274
+ priority: 2,
275
+ active: false,
276
+ notes: "central sensor station entry reviewed in cycle 1"
277
+ },
278
+ {
279
+ id: "sen-21-034",
280
+ label: "northern row 34",
281
+ capacity: 96,
282
+ priority: 1,
283
+ active: false,
284
+ notes: "granite sensor station entry reviewed in cycle 5"
285
+ }
286
+ ];
287
+
288
+ export function findSensorStationRecord21(id: string): SensorStationRecord21 | undefined {
289
+ return sensorStationRecords21.find((record) => record.id === id);
290
+ }
291
+
292
+ export function listSensorStationActiveRecords21(): SensorStationRecord21[] {
293
+ return sensorStationRecords21.filter((record) => record.active);
294
+ }
295
+
296
+ export function totalSensorStationCapacity21(): number {
297
+ return sensorStationRecords21.reduce((sum, record) => sum + record.capacity, 0);
298
+ }
299
+
300
+ export function countSensorStationByPriority21(priority: number): number {
301
+ return sensorStationRecords21.filter((record) => record.priority === priority).length;
302
+ }