0xray 4.0.18 → 4.0.20
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/.grok-plugin/plugin.json +1 -1
- package/.xray/features.json +1 -1
- package/dist/CHANGELOG.md +25 -0
- package/dist/integrations/cursor/hooks/after-file-edit.js +6 -3
- package/dist/integrations/cursor/hooks/cursor-hook-utils.js +40 -20
- package/dist/integrations/cursor/hooks/pre-compact.js +30 -22
- package/dist/integrations/cursor/hooks/pre-tool-use.js +5 -4
- package/dist/integrations/grok/hooks/grok-hook-utils.js +3 -1
- package/dist/integrations/hermes-agent/bridge.mjs +14 -0
- package/dist/integrations/hooks/station-hook-runtime.cjs +243 -13
- package/dist/integrations/hooks/station-hook-runtime.mjs +6 -0
- package/dist/integrations/hooks/station-memory-ingest.mjs +153 -4
- package/dist/integrations/hooks/station-memory-match.mjs +8 -8
- package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/dist/nucleus/delegation-gate.js +10 -11
- package/dist/nucleus/suit-temperament.js +5 -1
- package/package.json +1 -1
- package/scripts/node/consumer-install-smoke.mjs +3 -3
- package/scripts/node/wear-vendored-repertoire.cjs +39 -1
- package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/vendor/@0xray/repertoire/AGENTS.md +8 -2
- package/vendor/@0xray/repertoire/README.md +35 -8
- package/vendor/@0xray/repertoire/data/stack-overlay.json +750 -0
- package/vendor/@0xray/repertoire/data/subject-overlay.json +297 -0
- package/vendor/@0xray/repertoire/dist/RepertoireService.d.ts +36 -1
- package/vendor/@0xray/repertoire/dist/RepertoireService.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/RepertoireService.js +108 -18
- package/vendor/@0xray/repertoire/dist/RepertoireService.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/index.d.ts +3 -1
- package/vendor/@0xray/repertoire/dist/index.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/index.js +3 -1
- package/vendor/@0xray/repertoire/dist/index.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/ingestion/groover-log-ingester.d.ts +4 -0
- package/vendor/@0xray/repertoire/dist/ingestion/groover-log-ingester.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/ingestion/groover-log-ingester.js +15 -1
- package/vendor/@0xray/repertoire/dist/ingestion/groover-log-ingester.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.d.ts +22 -8
- package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.js +56 -5
- package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/mcp/server.js +8 -13
- package/vendor/@0xray/repertoire/dist/mcp/server.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.js +24 -7
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.js +2 -1
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/paths.d.ts +65 -2
- package/vendor/@0xray/repertoire/dist/paths.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/paths.js +377 -6
- package/vendor/@0xray/repertoire/dist/paths.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.js +6 -8
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.d.ts +20 -2
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.js +121 -8
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/registry/InferenceStateManager.d.ts +2 -1
- package/vendor/@0xray/repertoire/dist/registry/InferenceStateManager.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/registry/InferenceStateManager.js +21 -3
- package/vendor/@0xray/repertoire/dist/registry/InferenceStateManager.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/registry/confidence-decay.d.ts +40 -0
- package/vendor/@0xray/repertoire/dist/registry/confidence-decay.d.ts.map +1 -0
- package/vendor/@0xray/repertoire/dist/registry/confidence-decay.js +89 -0
- package/vendor/@0xray/repertoire/dist/registry/confidence-decay.js.map +1 -0
- package/vendor/@0xray/repertoire/dist/synthesis/meta-inference-engine.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/synthesis/meta-inference-engine.js +1 -0
- package/vendor/@0xray/repertoire/dist/synthesis/meta-inference-engine.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/types.d.ts +5 -0
- package/vendor/@0xray/repertoire/dist/types.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/package.json +4 -2
- package/vendor/@0xray/repertoire/scripts/verify-synthesis-dogfood.mjs +2 -2
- package/xray/features.json +1 -1
|
@@ -0,0 +1,750 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Stack-language overlay for 0xRay 4.0 memory routing. Additive to the 8-name factory seed. Not a plant diary and not the 0.1.8 brain.",
|
|
3
|
+
"last_updated": "2026-09-20T00:00:00.000Z",
|
|
4
|
+
"source": "stack-overlay-4.0",
|
|
5
|
+
"schema_version": "1.1",
|
|
6
|
+
"implementation_guidance": {
|
|
7
|
+
"how_to_use": "hydrateWritableSignals copies the factory seed then merges these names into .xray/state/repertoire/curated_signals.json when missing. Existing project names keep their stats.",
|
|
8
|
+
"integration_points": [
|
|
9
|
+
"hydrateWritableSignals",
|
|
10
|
+
"MemoryRoutingProvider",
|
|
11
|
+
"repertoire MCP"
|
|
12
|
+
],
|
|
13
|
+
"priority_order": "stack language after factory traps. Overlay never mutates data/curated_signals.json."
|
|
14
|
+
},
|
|
15
|
+
"signals": [
|
|
16
|
+
{
|
|
17
|
+
"name": "station-survives-the-cut",
|
|
18
|
+
"definition": "Station.md is the survive-compact / host-swap card. Read it first. Do not cold-start. Compaction and host change are the same cut. Station is cascade, not the long-running KB.",
|
|
19
|
+
"tags": [
|
|
20
|
+
"station",
|
|
21
|
+
"compact",
|
|
22
|
+
"continuity",
|
|
23
|
+
"suit"
|
|
24
|
+
],
|
|
25
|
+
"priority": "high",
|
|
26
|
+
"status": "proposed",
|
|
27
|
+
"first_seen": "2026-09-20",
|
|
28
|
+
"evaluation_criteria": "Reply Reads Station and continues the ticket instead of restarting.",
|
|
29
|
+
"validation_experiment": "Compact the host and check whether the next wake Reads Station and keeps the same bc.",
|
|
30
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
31
|
+
"implementation_notes": "Station is cascade. Not the long-running KB. Do not encode OP-PROC onto Station.",
|
|
32
|
+
"example_inference_snippet": "Continue this card. Compaction and host change are the same cut. Do not cold-start.",
|
|
33
|
+
"observation_stats": {
|
|
34
|
+
"observation_count": 1,
|
|
35
|
+
"avg_confidence": 0.55,
|
|
36
|
+
"max_confidence": 0.55,
|
|
37
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
38
|
+
"governance_forced_count": 0
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"name": "repertoire-is-long-running-kb",
|
|
43
|
+
"definition": "Repertoire is the judgment organ and long-running knowledge base. Station survives the cut; Repertoire remembers named invariants across cuts. Do not pin 0.1.8. Factory seed is read-only; live writes hydrate .xray/state/repertoire/.",
|
|
44
|
+
"tags": [
|
|
45
|
+
"repertoire",
|
|
46
|
+
"memory",
|
|
47
|
+
"compact",
|
|
48
|
+
"organ"
|
|
49
|
+
],
|
|
50
|
+
"priority": "high",
|
|
51
|
+
"status": "proposed",
|
|
52
|
+
"first_seen": "2026-09-20",
|
|
53
|
+
"evaluation_criteria": "Reply treats Repertoire as the KB and Station as the cascade card.",
|
|
54
|
+
"validation_experiment": "After compact, probe stack language and expect project-local matches, not only factory traps.",
|
|
55
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
56
|
+
"implementation_notes": "Grow stack names via data/stack-overlay.json merge. Never write the tarball.",
|
|
57
|
+
"example_inference_snippet": "Station is cascade. Repertoire is the long-running KB.",
|
|
58
|
+
"observation_stats": {
|
|
59
|
+
"observation_count": 1,
|
|
60
|
+
"avg_confidence": 0.55,
|
|
61
|
+
"max_confidence": 0.55,
|
|
62
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
63
|
+
"governance_forced_count": 0
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "critic-seat-continuity",
|
|
68
|
+
"definition": "The board critic is one seat with memory. Resume bc-dd800001-2652-5e3e-b8d2-eac05b29ee86. Never spawn a second critic. Every wake they Read Station first \u2014 that is wearing the suit.",
|
|
69
|
+
"tags": [
|
|
70
|
+
"critic",
|
|
71
|
+
"board",
|
|
72
|
+
"suit",
|
|
73
|
+
"continuity"
|
|
74
|
+
],
|
|
75
|
+
"priority": "high",
|
|
76
|
+
"status": "proposed",
|
|
77
|
+
"first_seen": "2026-09-20",
|
|
78
|
+
"evaluation_criteria": "Parent resumes the same critic id and the critic Reads Station before reviewing.",
|
|
79
|
+
"validation_experiment": "Spawn a twin critic and treat that as a seat defect.",
|
|
80
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
81
|
+
"implementation_notes": "Same critic. Wear the suit. Survive.",
|
|
82
|
+
"example_inference_snippet": "Resume the standing critic. They Read Station first.",
|
|
83
|
+
"observation_stats": {
|
|
84
|
+
"observation_count": 1,
|
|
85
|
+
"avg_confidence": 0.55,
|
|
86
|
+
"max_confidence": 0.55,
|
|
87
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
88
|
+
"governance_forced_count": 0
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"name": "lead-cadence-syncopation",
|
|
93
|
+
"definition": "The lead is the conductor above grok-bot seats. Cadence is syncopation: live ticks, human cuts, compact rests, board call-and-response. Encode on disk so a peer continues without a command stream.",
|
|
94
|
+
"tags": [
|
|
95
|
+
"cadence",
|
|
96
|
+
"lead",
|
|
97
|
+
"syncopation",
|
|
98
|
+
"op-proc"
|
|
99
|
+
],
|
|
100
|
+
"priority": "high",
|
|
101
|
+
"status": "proposed",
|
|
102
|
+
"first_seen": "2026-09-20",
|
|
103
|
+
"evaluation_criteria": "Reply treats cadence as disk-encoded lead OP-PROC, not a new skill.",
|
|
104
|
+
"validation_experiment": "Probe getTaskConfidence on peer/live-loop language and expect these names.",
|
|
105
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
106
|
+
"implementation_notes": "Grow names on the project copy. Never write the tarball. Codex 69.",
|
|
107
|
+
"example_inference_snippet": "Keep the lead cadence. Live tick, not a pacer. Peer wears 0xRay and continues.",
|
|
108
|
+
"observation_stats": {
|
|
109
|
+
"observation_count": 1,
|
|
110
|
+
"avg_confidence": 0.55,
|
|
111
|
+
"max_confidence": 0.55,
|
|
112
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
113
|
+
"governance_forced_count": 0
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"name": "live-loop-not-pacer",
|
|
118
|
+
"definition": "Cloud /loop runs work now then a short timer. A 12-minute idle pacer is starvation theater. Unsubscribe before changing delay. Name stays loop-<purpose>.",
|
|
119
|
+
"tags": [
|
|
120
|
+
"loop",
|
|
121
|
+
"cadence",
|
|
122
|
+
"pacer",
|
|
123
|
+
"live"
|
|
124
|
+
],
|
|
125
|
+
"priority": "high",
|
|
126
|
+
"status": "proposed",
|
|
127
|
+
"first_seen": "2026-09-20",
|
|
128
|
+
"evaluation_criteria": "Reply treats cadence as disk-encoded lead OP-PROC, not a new skill.",
|
|
129
|
+
"validation_experiment": "Probe getTaskConfidence on peer/live-loop language and expect these names.",
|
|
130
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
131
|
+
"implementation_notes": "Unsubscribe then resubscribe. Name-dedupe is not a rewrite.",
|
|
132
|
+
"example_inference_snippet": "Cancel the 12min pacer. We are live loops.",
|
|
133
|
+
"observation_stats": {
|
|
134
|
+
"observation_count": 1,
|
|
135
|
+
"avg_confidence": 0.55,
|
|
136
|
+
"max_confidence": 0.55,
|
|
137
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
138
|
+
"governance_forced_count": 0
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "peer-wears-without-commands",
|
|
143
|
+
"definition": "A second lead instance given only worn 0xRay, Station, and Repertoire must continue the ticket. If they wait for the human to restate the rules, the encode failed.",
|
|
144
|
+
"tags": [
|
|
145
|
+
"peer",
|
|
146
|
+
"wear",
|
|
147
|
+
"station",
|
|
148
|
+
"encode"
|
|
149
|
+
],
|
|
150
|
+
"priority": "high",
|
|
151
|
+
"status": "proposed",
|
|
152
|
+
"first_seen": "2026-09-20",
|
|
153
|
+
"evaluation_criteria": "Reply treats cadence as disk-encoded lead OP-PROC, not a new skill.",
|
|
154
|
+
"validation_experiment": "Probe getTaskConfidence on peer/live-loop language and expect these names.",
|
|
155
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
156
|
+
"implementation_notes": "Four-line dispatch. Wear, then boot.",
|
|
157
|
+
"example_inference_snippet": "Spin a peer. They should do it with 0xRay and without the detailed commands.",
|
|
158
|
+
"observation_stats": {
|
|
159
|
+
"observation_count": 1,
|
|
160
|
+
"avg_confidence": 0.55,
|
|
161
|
+
"max_confidence": 0.55,
|
|
162
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
163
|
+
"governance_forced_count": 0
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "dummy-tests-skills-md",
|
|
168
|
+
"definition": "Dummy subagents exist to prove worn SKILLS.md. They Read Station, wear the suit, and exercise the catalog without product side effects. If a dummy cannot run the playbook from disk, the encode failed.",
|
|
169
|
+
"tags": [
|
|
170
|
+
"dummy",
|
|
171
|
+
"skills",
|
|
172
|
+
"wear",
|
|
173
|
+
"cadence"
|
|
174
|
+
],
|
|
175
|
+
"priority": "high",
|
|
176
|
+
"status": "proposed",
|
|
177
|
+
"first_seen": "2026-09-20",
|
|
178
|
+
"evaluation_criteria": "Reply uses a dummy to prove the worn catalog, not to ship product.",
|
|
179
|
+
"validation_experiment": "Resume dummy id, Read Station, invoke a SKILLS.md playbook, expect no npm/Railway.",
|
|
180
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
181
|
+
"implementation_notes": "Dummy is a catalog probe. Same critic is the board.",
|
|
182
|
+
"example_inference_snippet": "Dummy subagents to test SKILLS.md.",
|
|
183
|
+
"observation_stats": {
|
|
184
|
+
"observation_count": 1,
|
|
185
|
+
"avg_confidence": 0.55,
|
|
186
|
+
"max_confidence": 0.55,
|
|
187
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
188
|
+
"governance_forced_count": 0
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"name": "same-sess-wear-station",
|
|
193
|
+
"definition": "Context-aware subagents resume the same sess / bc id, wear the suit, and hold a Station.md card. Do not spawn a twin critic. Compact and host-swap are the same cut.",
|
|
194
|
+
"tags": [
|
|
195
|
+
"session",
|
|
196
|
+
"wear",
|
|
197
|
+
"station",
|
|
198
|
+
"continuity"
|
|
199
|
+
],
|
|
200
|
+
"priority": "high",
|
|
201
|
+
"status": "proposed",
|
|
202
|
+
"first_seen": "2026-09-20",
|
|
203
|
+
"evaluation_criteria": "Reply resumes known ids and Reads Station before work.",
|
|
204
|
+
"validation_experiment": "After compact, resume critic and dummy ids; expect Station keys present.",
|
|
205
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
206
|
+
"implementation_notes": "Same id. Wear first. Never twin the critic.",
|
|
207
|
+
"example_inference_snippet": "Same subagents by sess id to maintain context that wear the suite and have a station.md card.",
|
|
208
|
+
"observation_stats": {
|
|
209
|
+
"observation_count": 1,
|
|
210
|
+
"avg_confidence": 0.55,
|
|
211
|
+
"max_confidence": 0.55,
|
|
212
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
213
|
+
"governance_forced_count": 0
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"name": "npm-otp-then-poll",
|
|
218
|
+
"definition": "When npm publish is allowed: run npm publish --access public in the live TTY. Paste the clickable auth/cli URL. Never ask for a 6-digit authenticator code. Never npm logout to force a URL. If the URL expires, Ctrl-C and rerun. Wait for + pkg@version then poll npm view until live.",
|
|
219
|
+
"tags": [
|
|
220
|
+
"npm",
|
|
221
|
+
"otp",
|
|
222
|
+
"publish",
|
|
223
|
+
"gate"
|
|
224
|
+
],
|
|
225
|
+
"priority": "high",
|
|
226
|
+
"status": "proposed",
|
|
227
|
+
"first_seen": "2026-09-20",
|
|
228
|
+
"evaluation_criteria": "Reply holds after publish until npm view shows the version and does not ask for a 6-digit code.",
|
|
229
|
+
"validation_experiment": "Publish then immediately start next cut without npm view \u2014 treat as fail.",
|
|
230
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
231
|
+
"implementation_notes": "Lead stays on the CLI. No VM browser. No subagent publish.",
|
|
232
|
+
"example_inference_snippet": "Run npm publish --access public. Paste the clickable auth/cli URL. Poll npm view.",
|
|
233
|
+
"observation_stats": {
|
|
234
|
+
"observation_count": 1,
|
|
235
|
+
"avg_confidence": 0.55,
|
|
236
|
+
"max_confidence": 0.55,
|
|
237
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
238
|
+
"governance_forced_count": 0
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"name": "branch-worktree-pr",
|
|
243
|
+
"definition": "Always implement on a branch, isolate parallel streams with worktrees or user asides, and open a PR. Docs and builds ride the PR. Rollback is close or revert. Never wreck production from main.",
|
|
244
|
+
"tags": [
|
|
245
|
+
"git",
|
|
246
|
+
"branch",
|
|
247
|
+
"worktree",
|
|
248
|
+
"pr"
|
|
249
|
+
],
|
|
250
|
+
"priority": "high",
|
|
251
|
+
"status": "proposed",
|
|
252
|
+
"first_seen": "2026-09-20",
|
|
253
|
+
"evaluation_criteria": "Reply never implements on the default branch.",
|
|
254
|
+
"validation_experiment": "Direct main commit of product work \u2014 treat as fail.",
|
|
255
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
256
|
+
"implementation_notes": "cursor/<name>-<sess>. PR is the rollback wall.",
|
|
257
|
+
"example_inference_snippet": "Always use branches, worktrees, and PRs.",
|
|
258
|
+
"observation_stats": {
|
|
259
|
+
"observation_count": 1,
|
|
260
|
+
"avg_confidence": 0.55,
|
|
261
|
+
"max_confidence": 0.55,
|
|
262
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
263
|
+
"governance_forced_count": 0
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"name": "loop-until-station-done",
|
|
268
|
+
"definition": "The close is Station.md done \u2014 ticket closed, working line empty, unfinished path cleared or filed. Compact is not done. Chat summary is not done.",
|
|
269
|
+
"tags": [
|
|
270
|
+
"station",
|
|
271
|
+
"loop",
|
|
272
|
+
"close",
|
|
273
|
+
"cadence"
|
|
274
|
+
],
|
|
275
|
+
"priority": "high",
|
|
276
|
+
"status": "proposed",
|
|
277
|
+
"first_seen": "2026-09-20",
|
|
278
|
+
"evaluation_criteria": "Reply treats Station done as the close, not a timer.",
|
|
279
|
+
"validation_experiment": "Declare done while Station Working is still open \u2014 treat as fail.",
|
|
280
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
281
|
+
"implementation_notes": "Continue the card. Do not cold-start.",
|
|
282
|
+
"example_inference_snippet": "Loop until station.md is done.",
|
|
283
|
+
"observation_stats": {
|
|
284
|
+
"observation_count": 1,
|
|
285
|
+
"avg_confidence": 0.55,
|
|
286
|
+
"max_confidence": 0.55,
|
|
287
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
288
|
+
"governance_forced_count": 0
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"name": "workstreams-keep-moving",
|
|
293
|
+
"definition": "Do not use pacer timeouts as the work clock. Keep every open workstream moving. A 12-minute idle pacer is starvation theater. Park only on a human gate or a finished close.",
|
|
294
|
+
"tags": [
|
|
295
|
+
"loop",
|
|
296
|
+
"pacer",
|
|
297
|
+
"workstream",
|
|
298
|
+
"live"
|
|
299
|
+
],
|
|
300
|
+
"priority": "high",
|
|
301
|
+
"status": "proposed",
|
|
302
|
+
"first_seen": "2026-09-20",
|
|
303
|
+
"evaluation_criteria": "Reply works a real close instead of waiting on an idle timer.",
|
|
304
|
+
"validation_experiment": "Re-arm a 12min idle pacer while streams are open \u2014 treat as fail.",
|
|
305
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
306
|
+
"implementation_notes": "Live tick after a real close. Unsubscribe before changing delay.",
|
|
307
|
+
"example_inference_snippet": "Dont use pacer timeouts. Keep workstreams moving.",
|
|
308
|
+
"observation_stats": {
|
|
309
|
+
"observation_count": 1,
|
|
310
|
+
"avg_confidence": 0.55,
|
|
311
|
+
"max_confidence": 0.55,
|
|
312
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
313
|
+
"governance_forced_count": 0
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"name": "hangar-is-not-suit",
|
|
318
|
+
"definition": "A hangar is an end product (clearing, blips, groover mint). Usually no AI. Fastening a mill is optional wear, not the hangar identity. Do not invent Station on a hangar.",
|
|
319
|
+
"tags": [
|
|
320
|
+
"hangar",
|
|
321
|
+
"suit",
|
|
322
|
+
"parity"
|
|
323
|
+
],
|
|
324
|
+
"priority": "high",
|
|
325
|
+
"status": "proposed",
|
|
326
|
+
"first_seen": "2026-09-20",
|
|
327
|
+
"evaluation_criteria": "Reply treats the name as a stack invariant, not a factory trap.",
|
|
328
|
+
"validation_experiment": "Probe getTaskConfidence with the example snippet and expect this name.",
|
|
329
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
330
|
+
"implementation_notes": "Grow on the project copy. Never write the tarball.",
|
|
331
|
+
"example_inference_snippet": "Hangar is not the suit. Clearing can stay unsuitied.",
|
|
332
|
+
"observation_stats": {
|
|
333
|
+
"observation_count": 1,
|
|
334
|
+
"avg_confidence": 0.55,
|
|
335
|
+
"max_confidence": 0.55,
|
|
336
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
337
|
+
"governance_forced_count": 0
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"name": "jelly-is-dormant",
|
|
342
|
+
"definition": "Jelly and jelly-engine are the old no-code container vision. Dormant. Not the current hangar story.",
|
|
343
|
+
"tags": [
|
|
344
|
+
"jelly",
|
|
345
|
+
"dormant",
|
|
346
|
+
"hangar"
|
|
347
|
+
],
|
|
348
|
+
"priority": "high",
|
|
349
|
+
"status": "proposed",
|
|
350
|
+
"first_seen": "2026-09-20",
|
|
351
|
+
"evaluation_criteria": "Reply treats the name as a stack invariant, not a factory trap.",
|
|
352
|
+
"validation_experiment": "Probe getTaskConfidence with the example snippet and expect this name.",
|
|
353
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
354
|
+
"implementation_notes": "Grow on the project copy. Never write the tarball.",
|
|
355
|
+
"example_inference_snippet": "Jelly is dormant. Do not treat it as the hangar.",
|
|
356
|
+
"observation_stats": {
|
|
357
|
+
"observation_count": 1,
|
|
358
|
+
"avg_confidence": 0.55,
|
|
359
|
+
"max_confidence": 0.55,
|
|
360
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
361
|
+
"governance_forced_count": 0
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"name": "cursor-host-no-inject",
|
|
366
|
+
"definition": "Cursor does not inject STATION.md. Grok Reads. OpenCode injects. Wear on this host is an explicit Read of the card after compact or host-swap.",
|
|
367
|
+
"tags": [
|
|
368
|
+
"cursor",
|
|
369
|
+
"station",
|
|
370
|
+
"wear"
|
|
371
|
+
],
|
|
372
|
+
"priority": "high",
|
|
373
|
+
"status": "proposed",
|
|
374
|
+
"first_seen": "2026-09-20",
|
|
375
|
+
"evaluation_criteria": "Reply treats the name as a stack invariant, not a factory trap.",
|
|
376
|
+
"validation_experiment": "Probe getTaskConfidence with the example snippet and expect this name.",
|
|
377
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
378
|
+
"implementation_notes": "Grow on the project copy. Never write the tarball.",
|
|
379
|
+
"example_inference_snippet": "Cursor host does not inject Station. Read the card.",
|
|
380
|
+
"observation_stats": {
|
|
381
|
+
"observation_count": 1,
|
|
382
|
+
"avg_confidence": 0.55,
|
|
383
|
+
"max_confidence": 0.55,
|
|
384
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
385
|
+
"governance_forced_count": 0
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"name": "cursor-fifth-wear",
|
|
390
|
+
"definition": "Cursor is the fifth host wear. Project .cursor/hooks.json runs preToolUse, preCompact, afterFileEdit. Existing consumer file is left alone. Not a fifth chat TUI.",
|
|
391
|
+
"tags": [
|
|
392
|
+
"cursor",
|
|
393
|
+
"wear",
|
|
394
|
+
"hooks"
|
|
395
|
+
],
|
|
396
|
+
"priority": "high",
|
|
397
|
+
"status": "proposed",
|
|
398
|
+
"first_seen": "2026-09-20",
|
|
399
|
+
"evaluation_criteria": "Reply treats the name as a stack invariant, not a factory trap.",
|
|
400
|
+
"validation_experiment": "Probe getTaskConfidence with the example snippet and expect this name.",
|
|
401
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
402
|
+
"implementation_notes": "Grow on the project copy. Never write the tarball.",
|
|
403
|
+
"example_inference_snippet": "Fasten Cursor hooks on consumer postinstall.",
|
|
404
|
+
"observation_stats": {
|
|
405
|
+
"observation_count": 1,
|
|
406
|
+
"avg_confidence": 0.55,
|
|
407
|
+
"max_confidence": 0.55,
|
|
408
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
409
|
+
"governance_forced_count": 0
|
|
410
|
+
}
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"name": "factory-seed-is-not-the-brain",
|
|
414
|
+
"definition": "The 0.2 factory tarball is 8 trap names. The living brain is the project copy under .xray/state/repertoire/. data/stack-overlay.json ships stack language into that copy. Do not pin 0.1.8. Do not read node_modules seed after hydrate.",
|
|
415
|
+
"tags": [
|
|
416
|
+
"repertoire",
|
|
417
|
+
"factory",
|
|
418
|
+
"memory"
|
|
419
|
+
],
|
|
420
|
+
"priority": "high",
|
|
421
|
+
"status": "proposed",
|
|
422
|
+
"first_seen": "2026-09-20",
|
|
423
|
+
"evaluation_criteria": "Reply treats the name as a stack invariant, not a factory trap.",
|
|
424
|
+
"validation_experiment": "Probe getTaskConfidence with the example snippet and expect this name.",
|
|
425
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
426
|
+
"implementation_notes": "Factory seed SHA stays 8 names. Overlay is additive.",
|
|
427
|
+
"example_inference_snippet": "Factory seed is not the brain. Wear the project copy.",
|
|
428
|
+
"observation_stats": {
|
|
429
|
+
"observation_count": 1,
|
|
430
|
+
"avg_confidence": 0.55,
|
|
431
|
+
"max_confidence": 0.55,
|
|
432
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
433
|
+
"governance_forced_count": 0
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
"name": "board-is-seats-not-clocks",
|
|
438
|
+
"definition": "The critique board is the standing critic seat plus the lead on the main thread. Resume the same critic. Dummy tests SKILLS.md. A clock is not a reviewer.",
|
|
439
|
+
"tags": [
|
|
440
|
+
"board",
|
|
441
|
+
"critic",
|
|
442
|
+
"cadence"
|
|
443
|
+
],
|
|
444
|
+
"priority": "high",
|
|
445
|
+
"status": "proposed",
|
|
446
|
+
"first_seen": "2026-09-20",
|
|
447
|
+
"evaluation_criteria": "Reply treats the name as a stack invariant, not a factory trap.",
|
|
448
|
+
"validation_experiment": "Probe getTaskConfidence with the example snippet and expect this name.",
|
|
449
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
450
|
+
"implementation_notes": "Grow on the project copy. Never write the tarball.",
|
|
451
|
+
"example_inference_snippet": "Board is seats, not clocks. Resume the critic.",
|
|
452
|
+
"observation_stats": {
|
|
453
|
+
"observation_count": 1,
|
|
454
|
+
"avg_confidence": 0.55,
|
|
455
|
+
"max_confidence": 0.55,
|
|
456
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
457
|
+
"governance_forced_count": 0
|
|
458
|
+
}
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
"name": "event-wake-not-dual-pacer",
|
|
462
|
+
"definition": "Wake the lead on GitHub PR events. Two idle pacers (reviewer + reader) inflate context and cause compact. One live tick only after a real close. A pacer never merges or deploys.",
|
|
463
|
+
"tags": [
|
|
464
|
+
"board",
|
|
465
|
+
"pacer",
|
|
466
|
+
"cadence"
|
|
467
|
+
],
|
|
468
|
+
"priority": "high",
|
|
469
|
+
"status": "proposed",
|
|
470
|
+
"first_seen": "2026-09-20",
|
|
471
|
+
"evaluation_criteria": "Reply treats the name as a stack invariant, not a factory trap.",
|
|
472
|
+
"validation_experiment": "Probe getTaskConfidence with the example snippet and expect this name.",
|
|
473
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
474
|
+
"implementation_notes": "Grow on the project copy. Never write the tarball.",
|
|
475
|
+
"example_inference_snippet": "Do not set two idle pacers. Subscribe to the PR and resume the critic.",
|
|
476
|
+
"observation_stats": {
|
|
477
|
+
"observation_count": 1,
|
|
478
|
+
"avg_confidence": 0.55,
|
|
479
|
+
"max_confidence": 0.55,
|
|
480
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
481
|
+
"governance_forced_count": 0
|
|
482
|
+
}
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
"name": "compact-rekey-from-disk",
|
|
486
|
+
"definition": "After compact, rekey from Station + COMPACT-SURVIVAL.md + project Repertoire names. Chat summary is not the mind. Probe stack language before acting.",
|
|
487
|
+
"tags": [
|
|
488
|
+
"compact",
|
|
489
|
+
"rekey",
|
|
490
|
+
"repertoire"
|
|
491
|
+
],
|
|
492
|
+
"priority": "high",
|
|
493
|
+
"status": "proposed",
|
|
494
|
+
"first_seen": "2026-09-20",
|
|
495
|
+
"evaluation_criteria": "Reply treats the name as a stack invariant, not a factory trap.",
|
|
496
|
+
"validation_experiment": "Probe getTaskConfidence with the example snippet and expect this name.",
|
|
497
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
498
|
+
"implementation_notes": "Grow on the project copy. Never write the tarball.",
|
|
499
|
+
"example_inference_snippet": "Rekey from disk. Push knowledge into Repertoire before the next compact.",
|
|
500
|
+
"observation_stats": {
|
|
501
|
+
"observation_count": 1,
|
|
502
|
+
"avg_confidence": 0.55,
|
|
503
|
+
"max_confidence": 0.55,
|
|
504
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
505
|
+
"governance_forced_count": 0
|
|
506
|
+
}
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
"name": "human-gate-deploy",
|
|
510
|
+
"definition": "Spend, credentials, deletes, taste, and mint-rotate stay Ask-first. A board pacer never publishes. Mill-gate A through D is the ship criteria, not green CI alone.",
|
|
511
|
+
"tags": [
|
|
512
|
+
"npm",
|
|
513
|
+
"railway",
|
|
514
|
+
"gate"
|
|
515
|
+
],
|
|
516
|
+
"priority": "high",
|
|
517
|
+
"status": "proposed",
|
|
518
|
+
"first_seen": "2026-09-20",
|
|
519
|
+
"evaluation_criteria": "Reply treats the name as a stack invariant, not a factory trap.",
|
|
520
|
+
"validation_experiment": "Probe getTaskConfidence with the example snippet and expect this name.",
|
|
521
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
522
|
+
"implementation_notes": "Ask-first for spend. Mill-gate for ship.",
|
|
523
|
+
"example_inference_snippet": "Green CI is not publish. Human gate then OTP then poll.",
|
|
524
|
+
"observation_stats": {
|
|
525
|
+
"observation_count": 1,
|
|
526
|
+
"avg_confidence": 0.55,
|
|
527
|
+
"max_confidence": 0.55,
|
|
528
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
529
|
+
"governance_forced_count": 0
|
|
530
|
+
}
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
"name": "critic-reads-disk-not-commands",
|
|
534
|
+
"definition": "The standing critic Reads Station and SEATS.md Reviewer. The lead cards ticket plus PR URLs plus Wear then review. A command novel means the encode failed.",
|
|
535
|
+
"tags": [
|
|
536
|
+
"critic",
|
|
537
|
+
"dispatch",
|
|
538
|
+
"encode"
|
|
539
|
+
],
|
|
540
|
+
"priority": "high",
|
|
541
|
+
"status": "proposed",
|
|
542
|
+
"first_seen": "2026-09-20",
|
|
543
|
+
"evaluation_criteria": "Reply treats the name as a stack invariant.",
|
|
544
|
+
"validation_experiment": "Probe getTaskConfidence with the example snippet.",
|
|
545
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
546
|
+
"implementation_notes": "Four-line dispatch. Wear, then review.",
|
|
547
|
+
"example_inference_snippet": "Do not give the critic direct commands each time. They read the seat from disk.",
|
|
548
|
+
"observation_stats": {
|
|
549
|
+
"observation_count": 1,
|
|
550
|
+
"avg_confidence": 0.55,
|
|
551
|
+
"max_confidence": 0.55,
|
|
552
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
553
|
+
"governance_forced_count": 0
|
|
554
|
+
}
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
"name": "encode-when-spoken-twice",
|
|
558
|
+
"definition": "When a law has to be spoken twice, write it to SEATS.md or LEAD-CADENCE.md or an existing skill this wake. Grow a project-local Repertoire name. Do not thicken Station. Codex 69: no new SKILL.md.",
|
|
559
|
+
"tags": [
|
|
560
|
+
"encode",
|
|
561
|
+
"cadence",
|
|
562
|
+
"codex-69"
|
|
563
|
+
],
|
|
564
|
+
"priority": "high",
|
|
565
|
+
"status": "proposed",
|
|
566
|
+
"first_seen": "2026-09-20",
|
|
567
|
+
"evaluation_criteria": "Reply treats the name as a stack invariant.",
|
|
568
|
+
"validation_experiment": "Probe getTaskConfidence with the example snippet.",
|
|
569
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
570
|
+
"implementation_notes": "Hooks and listeners, not Station.",
|
|
571
|
+
"example_inference_snippet": "Monitor yourself as knowledge grows and update OP-PROC skills and docs.",
|
|
572
|
+
"observation_stats": {
|
|
573
|
+
"observation_count": 1,
|
|
574
|
+
"avg_confidence": 0.55,
|
|
575
|
+
"max_confidence": 0.55,
|
|
576
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
577
|
+
"governance_forced_count": 0
|
|
578
|
+
}
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
"name": "station-refresh-this-wake",
|
|
582
|
+
"definition": "After compact, refresh Station Working, Git SHA, and Repertoire count this wake via existing hooks. A stale card is a failed encode. Chat summary is host memory, not the organ. Do not hand-write OP-PROC onto Station.",
|
|
583
|
+
"tags": [
|
|
584
|
+
"compact",
|
|
585
|
+
"station",
|
|
586
|
+
"encode"
|
|
587
|
+
],
|
|
588
|
+
"priority": "high",
|
|
589
|
+
"status": "proposed",
|
|
590
|
+
"first_seen": "2026-09-20",
|
|
591
|
+
"evaluation_criteria": "Reply treats the name as a stack invariant.",
|
|
592
|
+
"validation_experiment": "Probe getTaskConfidence with the example snippet and expect this name.",
|
|
593
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
594
|
+
"implementation_notes": "Hook heat. Do not encode OP-PROC onto Station.",
|
|
595
|
+
"example_inference_snippet": "Refresh Station this wake so the next cut is not stale. Chat summary is not the organ.",
|
|
596
|
+
"observation_stats": {
|
|
597
|
+
"observation_count": 1,
|
|
598
|
+
"avg_confidence": 0.55,
|
|
599
|
+
"max_confidence": 0.55,
|
|
600
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
601
|
+
"governance_forced_count": 0
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
"name": "clean-ticks-every-cycle",
|
|
606
|
+
"definition": "Every cycle unsubscribe then resubscribe the live /loop timer so the prompt matches metal. subscribe_timer name-dedupe returns created false and keeps the old prompt. A delivered tick that contradicts metal is dirty \u2014 wear, rewrite, do not act.",
|
|
607
|
+
"tags": [
|
|
608
|
+
"loop",
|
|
609
|
+
"ticks",
|
|
610
|
+
"cadence"
|
|
611
|
+
],
|
|
612
|
+
"priority": "high",
|
|
613
|
+
"status": "proposed",
|
|
614
|
+
"first_seen": "2026-09-20",
|
|
615
|
+
"evaluation_criteria": "Reply rewrites the live tick after metal changes instead of trusting name-dedupe.",
|
|
616
|
+
"validation_experiment": "Change metal, fire a same-name subscribe without unsubscribe, then treat a stale prompt as fail.",
|
|
617
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
618
|
+
"implementation_notes": "Name-dedupe is not a rewrite.",
|
|
619
|
+
"example_inference_snippet": "Clean ticks every cycle. Unsubscribe then resubscribe.",
|
|
620
|
+
"observation_stats": {
|
|
621
|
+
"observation_count": 1,
|
|
622
|
+
"avg_confidence": 0.55,
|
|
623
|
+
"max_confidence": 0.55,
|
|
624
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
625
|
+
"governance_forced_count": 0
|
|
626
|
+
}
|
|
627
|
+
},
|
|
628
|
+
{
|
|
629
|
+
"name": "mill-gate-a-through-d",
|
|
630
|
+
"definition": "Ship is mill-gate A through D: A PR+CI, B pack assert-packed-dist-cli plus consumer smoke, C npm run release:docs-check, D merge plus foundry gate or foundry release --i-mean-it plus live verify. Green CI is only A.",
|
|
631
|
+
"tags": [
|
|
632
|
+
"ship",
|
|
633
|
+
"mill-gate",
|
|
634
|
+
"release"
|
|
635
|
+
],
|
|
636
|
+
"priority": "high",
|
|
637
|
+
"status": "proposed",
|
|
638
|
+
"first_seen": "2026-09-20",
|
|
639
|
+
"evaluation_criteria": "Reply treats green CI as A, not ship.",
|
|
640
|
+
"validation_experiment": "Call a green check ship without B C D \u2014 treat as fail.",
|
|
641
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
642
|
+
"implementation_notes": "Do not republish until a new D cut exists.",
|
|
643
|
+
"example_inference_snippet": "Green CI is only A. Ship is mill-gate A through D.",
|
|
644
|
+
"observation_stats": {
|
|
645
|
+
"observation_count": 1,
|
|
646
|
+
"avg_confidence": 0.55,
|
|
647
|
+
"max_confidence": 0.55,
|
|
648
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
649
|
+
"governance_forced_count": 0
|
|
650
|
+
}
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
"name": "hangar-website-not-suit-tarball",
|
|
654
|
+
"definition": "The factory website hangar is groover/website. Do not attach the 0xray tarball to website, blips, zigzag, clearing, or registry. Hangar source is not the suit.",
|
|
655
|
+
"tags": [
|
|
656
|
+
"hangar",
|
|
657
|
+
"website",
|
|
658
|
+
"railway"
|
|
659
|
+
],
|
|
660
|
+
"priority": "high",
|
|
661
|
+
"status": "proposed",
|
|
662
|
+
"first_seen": "2026-09-20",
|
|
663
|
+
"evaluation_criteria": "Reply keeps hangar deploys on hangar source.",
|
|
664
|
+
"validation_experiment": "Attach 0xRayAI/xray to the website service \u2014 treat as fail.",
|
|
665
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
666
|
+
"implementation_notes": "Website /suit is hangar UI. Governance MCP is the suit.",
|
|
667
|
+
"example_inference_snippet": "Do not deploy the xray tarball onto the website hangar.",
|
|
668
|
+
"observation_stats": {
|
|
669
|
+
"observation_count": 1,
|
|
670
|
+
"avg_confidence": 0.55,
|
|
671
|
+
"max_confidence": 0.55,
|
|
672
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
673
|
+
"governance_forced_count": 0
|
|
674
|
+
}
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
"name": "ship-notice-strips-hold-npm",
|
|
678
|
+
"definition": "When the tarball is live, Durable cannot keep saying Hold npm. cursorBootNeedsRefresh and the wear check strip that phrase. Do not write the notice onto Station.",
|
|
679
|
+
"tags": [
|
|
680
|
+
"ship",
|
|
681
|
+
"durable",
|
|
682
|
+
"hooks"
|
|
683
|
+
],
|
|
684
|
+
"priority": "high",
|
|
685
|
+
"status": "proposed",
|
|
686
|
+
"first_seen": "2026-09-20",
|
|
687
|
+
"evaluation_criteria": "Reply treats a live tarball plus Hold npm as stale heat.",
|
|
688
|
+
"validation_experiment": "Leave Hold npm on a card after npm view shows the version \u2014 treat as fail.",
|
|
689
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
690
|
+
"implementation_notes": "Existing cursorBootNeedsRefresh plus wear check. Codex 69.",
|
|
691
|
+
"example_inference_snippet": "Strip Hold npm after the tarball is live. Hook, not Station.",
|
|
692
|
+
"observation_stats": {
|
|
693
|
+
"observation_count": 1,
|
|
694
|
+
"avg_confidence": 0.55,
|
|
695
|
+
"max_confidence": 0.55,
|
|
696
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
697
|
+
"governance_forced_count": 0
|
|
698
|
+
}
|
|
699
|
+
},
|
|
700
|
+
{
|
|
701
|
+
"name": "both-path-live-verify",
|
|
702
|
+
"definition": "After a version is live, clean-room registry install both paths: brand-new install and upgrade of an existing install. npm view is not an install. Wear-check validate on both.",
|
|
703
|
+
"tags": [
|
|
704
|
+
"npm",
|
|
705
|
+
"verify",
|
|
706
|
+
"install"
|
|
707
|
+
],
|
|
708
|
+
"priority": "high",
|
|
709
|
+
"status": "proposed",
|
|
710
|
+
"first_seen": "2026-09-20",
|
|
711
|
+
"evaluation_criteria": "Reply treats both-path install as live-verify, not npm view alone.",
|
|
712
|
+
"validation_experiment": "Ship after npm view without a clean-room install \u2014 treat as fail.",
|
|
713
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
714
|
+
"implementation_notes": "Fresh plus upgrade. Then poll wear.",
|
|
715
|
+
"example_inference_snippet": "Install from the registry both fresh and upgrade. npm view is not an install.",
|
|
716
|
+
"observation_stats": {
|
|
717
|
+
"observation_count": 1,
|
|
718
|
+
"avg_confidence": 0.55,
|
|
719
|
+
"max_confidence": 0.55,
|
|
720
|
+
"last_seen": "2026-09-20T00:00:00.000Z",
|
|
721
|
+
"governance_forced_count": 0
|
|
722
|
+
}
|
|
723
|
+
},
|
|
724
|
+
{
|
|
725
|
+
"name": "groover-is-not-repertoire",
|
|
726
|
+
"definition": "Groover was a broken experiment of how Repertoire was supposed to work. Groover is not the organ. Do not grow dest from Groover field (145-name repertoire-brain, sibling groover-inference-logs) as if that is Repertoire becoming real. Name a producer with REPERTOIRE_FIELD_LOGS.",
|
|
727
|
+
"tags": [
|
|
728
|
+
"repertoire",
|
|
729
|
+
"groover",
|
|
730
|
+
"organ",
|
|
731
|
+
"hangar"
|
|
732
|
+
],
|
|
733
|
+
"priority": "high",
|
|
734
|
+
"status": "proposed",
|
|
735
|
+
"first_seen": "2026-09-21",
|
|
736
|
+
"evaluation_criteria": "Reply treats Groover as a broken experiment, not the KB.",
|
|
737
|
+
"validation_experiment": "Auto-ingest sibling Groover JSONL into dest and call that Repertoire \u2014 treat as fail.",
|
|
738
|
+
"master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
|
|
739
|
+
"implementation_notes": "discoverFieldLogDirs is env-only. Codex 69 rewire.",
|
|
740
|
+
"example_inference_snippet": "Groover is not Repertoire. Do not grow dest from Groover field.",
|
|
741
|
+
"observation_stats": {
|
|
742
|
+
"observation_count": 1,
|
|
743
|
+
"avg_confidence": 0.55,
|
|
744
|
+
"max_confidence": 0.55,
|
|
745
|
+
"last_seen": "2026-09-21T00:00:00.000Z",
|
|
746
|
+
"governance_forced_count": 0
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
]
|
|
750
|
+
}
|