@maccesar/titools 5.2.0 → 5.2.2
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/CONTRIBUTING.md +82 -0
- package/README.md +83 -72
- package/agents/ti-pro.md +1 -1
- package/commands/ti-audit.md +2 -2
- package/docs/examples.md +91 -0
- package/docs/knowledge-index.md +57 -0
- package/lib/commands/uninstall.js +19 -16
- package/lib/commands/update.js +1 -1
- package/lib/downloader.js +1 -1
- package/lib/utils.js +2 -0
- package/package.json +4 -2
- package/skills/purgetss/references/multi-density-images.md +1 -1
- package/skills/ti-admob-unified/SKILL.md +21 -7
- package/skills/ti-admob-unified/assets/example/app.js +229 -25
- package/skills/ti-admob-unified/assets/example/lib/ads.js +30 -2
- package/skills/ti-admob-unified/assets/example/library-usage.js +33 -1
- package/skills/ti-admob-unified/references/api-reference.md +39 -16
- package/skills/ti-admob-unified/references/banners.md +9 -9
- package/skills/ti-admob-unified/references/contributing.md +14 -9
- package/skills/ti-admob-unified/references/dependencies.md +31 -25
- package/skills/ti-admob-unified/references/fullscreen.md +43 -28
- package/skills/ti-admob-unified/references/game-monetization.md +138 -7
- package/skills/ti-admob-unified/references/getting-started.md +75 -31
- package/skills/ti-admob-unified/references/index.md +5 -2
- package/skills/ti-admob-unified/references/integration.md +8 -6
- package/skills/ti-admob-unified/references/library.md +41 -10
- package/skills/ti-admob-unified/references/mediation-parity.md +17 -0
- package/skills/ti-admob-unified/references/mediation.md +22 -9
- package/skills/ti-admob-unified/references/migration.md +11 -7
- package/skills/ti-admob-unified/references/module-changelog.md +41 -11
- package/skills/ti-admob-unified/references/privacy.md +35 -8
- package/skills/ti-admob-unified/references/production.md +67 -0
- package/skills/ti-admob-unified/references/rewarded-interstitial.md +101 -0
- package/skills/ti-admob-unified/references/roadmap.md +28 -31
- package/skills/ti-admob-unified/references/source-notes.md +51 -4
- package/skills/ti-admob-unified/references/source-snapshot.json +249 -45
- package/skills/ti-admob-unified/references/third-party-notices.md +4 -4
- package/skills/ti-game/SKILL.md +23 -6
- package/skills/ti-game/references/api.md +34 -30
- package/skills/ti-game/references/debugging-performance.md +18 -9
- package/skills/ti-game/references/examples.md +103 -20
- package/skills/ti-game/references/input.md +101 -0
- package/skills/ti-game/references/patterns.md +39 -15
- package/skills/ti-game/references/physics.md +80 -52
- package/skills/ti-game/references/project-setup.md +118 -56
- package/skills/ti-game/references/recipes-action.md +107 -8
- package/skills/ti-game/references/recipes-adventure-effects.md +41 -9
- package/skills/ti-game/references/roadmap.md +10 -3
- package/skills/ti-game/references/source-notes.md +81 -0
- package/skills/ti-game/references/tilemaps.md +12 -4
- package/skills/ti-synthengine/SKILL.md +81 -95
- package/skills/ti-synthengine/assets/example/README.md +84 -0
- package/skills/ti-synthengine/assets/example/app.js +1178 -0
- package/skills/ti-synthengine/assets/example/lib/sequenceOwner.js +83 -0
- package/skills/ti-synthengine/assets/example/lib/sequenceScore.js +25 -0
- package/skills/ti-synthengine/references/advanced-examples.md +174 -0
- package/skills/ti-synthengine/references/android-sim80-correction-evidence.zip +0 -0
- package/skills/ti-synthengine/references/android-sim80-correction.json +162 -0
- package/skills/ti-synthengine/references/api.md +434 -380
- package/skills/ti-synthengine/references/audio-engine.md +157 -230
- package/skills/ti-synthengine/references/bypass-physical-recheck-evidence.zip +0 -0
- package/skills/ti-synthengine/references/examples.md +123 -253
- package/skills/ti-synthengine/references/frontier-android-evidence.zip +0 -0
- package/skills/ti-synthengine/references/frontier-ipad-evidence.zip +0 -0
- package/skills/ti-synthengine/references/frontier-physical-validation.json +1918 -0
- package/skills/ti-synthengine/references/guide.md +188 -156
- package/skills/ti-synthengine/references/performance-review-evidence.zip +0 -0
- package/skills/ti-synthengine/references/performance-review.json +1146 -0
- package/skills/ti-synthengine/references/physical-validation.json +1457 -0
- package/skills/ti-synthengine/references/recipes-interaction.md +549 -0
- package/skills/ti-synthengine/references/recipes.md +423 -599
- package/skills/ti-synthengine/references/recommendations.md +63 -113
- package/skills/ti-synthengine/references/sound-design.md +134 -258
- package/skills/ti-synthengine/references/source-notes.md +93 -105
- package/skills/ti-synthengine/references/source-snapshot.json +379 -32
- package/skills/ti-synthengine/references/stats-performance.md +64 -20
- package/skills/ti-synthengine/references/studio-validation.json +6202 -0
- package/skills/ti-synthengine/references/troubleshooting.md +109 -121
- package/skills/ti-synthengine/references/unified-bypass-performance.json +22425 -0
- package/skills/ti-synthengine/references/unified-validation.json +314 -0
- package/AGENTS-VERCEL-RESEARCH.md +0 -175
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"date": "2026-10-23",
|
|
4
|
+
"moduleVersion": "1.0.0 beta",
|
|
5
|
+
"sourceState": "Native source committed; functional docs committed; physical validation recorded with explicit failed/open criteria",
|
|
6
|
+
"baselineRevision": "937e774db7c5a924c9162cf0bbd01cb546754231",
|
|
7
|
+
"implementation": "Unified native transport and selective processing implemented on Android and iOS; eight applications and module example use final API.",
|
|
8
|
+
"acceptanceComplete": false,
|
|
9
|
+
"nativeBuilds": {
|
|
10
|
+
"android": {
|
|
11
|
+
"result": "success",
|
|
12
|
+
"command": "ti build -p android --build-only --project-dir android --log-level info",
|
|
13
|
+
"sdk": "13.4.1.GA",
|
|
14
|
+
"sourceSha256": "205a3723b49a9ddce9926541015f8859e7f50b943057af73a98e6a516cd8520c",
|
|
15
|
+
"libraries": [
|
|
16
|
+
{
|
|
17
|
+
"abi": "arm64-v8a",
|
|
18
|
+
"bytes": 136376,
|
|
19
|
+
"sha256": "ba8c549914027fd0c0292d476244359358ed37106454b4b8f8ab0661f64f1392"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"abi": "armeabi-v7a",
|
|
23
|
+
"bytes": 103036,
|
|
24
|
+
"sha256": "9b1e459a82e3a46754d5988dc8210168bb84e6eea1df1368bd9479b91d8264bc"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"abi": "x86",
|
|
28
|
+
"bytes": 151560,
|
|
29
|
+
"sha256": "b531f915c5202613af7eeda9abe4d7f9e8b7f63459a4f4f4c8665d99653bb82b"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"abi": "x86_64",
|
|
33
|
+
"bytes": 148184,
|
|
34
|
+
"sha256": "7b0581450f815af78044a1bf80e6d66de949a27a8765b0d7571d3e62e111b787"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"aarMatchesBuild": true,
|
|
38
|
+
"sourceFilesSha256": {
|
|
39
|
+
"android/jni/SynthOboeEngine.cpp": "205a3723b49a9ddce9926541015f8859e7f50b943057af73a98e6a516cd8520c",
|
|
40
|
+
"android/src/ti/synthengine/SynthStudioContract.java": "27b94bcf653d6c239bcb92f537633435c04e664a55ab17cf93ede7dea7525d86",
|
|
41
|
+
"android/src/ti/synthengine/TiSynthEngineModule.java": "d2f904dbf688c7685d541edfea9fdfefbeef5c52493bc529ac4599c6eef4371e",
|
|
42
|
+
"shared/synth_spatial.h": "ba7eb24b4d4b05281d15af72fc4b100185ead954be05e4eacd082af213b3de7b"
|
|
43
|
+
},
|
|
44
|
+
"aarSha256": "9c4c712e590d4f15e94a2ee17931c7cb506879aa3c7bddbf58bd32335f07ef45",
|
|
45
|
+
"sourceUnchangedDuringBuild": true,
|
|
46
|
+
"productionContainsDiagnosticOrRejectedExperimentCode": false
|
|
47
|
+
},
|
|
48
|
+
"ios": {
|
|
49
|
+
"result": "success",
|
|
50
|
+
"command": "ti build -p ios --build-only --no-colors --no-progress-bars",
|
|
51
|
+
"sdk": "13.4.1.GA",
|
|
52
|
+
"sourceHeaders": {
|
|
53
|
+
"capturedAt": "2026-10-23T15:07:31.653644+00:00",
|
|
54
|
+
"files": {
|
|
55
|
+
"ios/Classes/TiSynthengineContract.h": "484c2b51afbeee17fa5b539f3211256d74c8ef0ad90f0c246229b8e70befc597",
|
|
56
|
+
"ios/Classes/TiSynthengineContract.m": "1feed79cdced5214a8dadd072ba32c2e82b9aa23d85ba279ea8bb8430f1993e9",
|
|
57
|
+
"ios/Classes/TiSynthengineModule.h": "30ba0b453ce12eb2717065efa23fb5ab53f901ad0a4d21166fae7f000c66f169",
|
|
58
|
+
"ios/Classes/TiSynthengineModule.m": "b3c7df467de24658140dfb671f94764686b27066be2920634044628feb8eb85c",
|
|
59
|
+
"ios/Classes/TiSynthengineModuleAssets.h": "186faae8e50f8e36c7a24abdfef856eb5977cff34fc75f5213287ebf45c4b4b4",
|
|
60
|
+
"ios/Classes/TiSynthengineModuleAssets.m": "d90360da150669219d27ee32c773781b2079163bc6185af75c857ee583ad04e3",
|
|
61
|
+
"shared/synth_core.h": "982f819f1450d5a5860133d1b46c5ad16d04e9663a83158314ed7bba3a6ff101",
|
|
62
|
+
"shared/synth_effects.h": "1d273c2928a4e68aec81490055c10a42886b09c32558be71e37c360f619066c8",
|
|
63
|
+
"shared/synth_held.h": "c60a42b9716ad56f77844b9d7971dc3fb1d43480467147f7ac46983007681115",
|
|
64
|
+
"shared/synth_hrtf_data.h": "da3c08282e8078791856b6cc6c4fd5ecc314fc81c82d7bb9764d65a938913a3d",
|
|
65
|
+
"shared/synth_modulation.h": "dbbd9804e2d7f3530b6880ee8448a9801b401b716f27399fe7894d71d5421d9e",
|
|
66
|
+
"shared/synth_retrigger.h": "c13ad5179d7cb8e5f43def69e41e9d961805a6f34ad1b0adea1c23bd64acc547",
|
|
67
|
+
"shared/synth_sequence.h": "45c702d8f0fe9a586e4b105a3d25bdb2c75b9d81551a78edad3b13e7bf2c6a5c",
|
|
68
|
+
"shared/synth_spatial.h": "ba7eb24b4d4b05281d15af72fc4b100185ead954be05e4eacd082af213b3de7b",
|
|
69
|
+
"shared/synth_stats.h": "32e6d2a7ed2e1eb410bbcb07bfc300be8e99783169b62ecf1223fa4e47750e27",
|
|
70
|
+
"shared/synth_transport.h": "290844366ba75fee4d134d297f8cea809b44d2ab68694d415988fe3f22f189e4"
|
|
71
|
+
},
|
|
72
|
+
"aggregateSha256": "86f0b22f6f1676bd4fb1ce40cffa9e372dac71f05922febd473a18ed7335494f"
|
|
73
|
+
},
|
|
74
|
+
"sourceUnchangedDuringBuild": true,
|
|
75
|
+
"libraries": [
|
|
76
|
+
{
|
|
77
|
+
"path": "ti.synthengine.xcframework/ios-arm64/libti.synthengine.a",
|
|
78
|
+
"bytes": 302200,
|
|
79
|
+
"sha256": "e1fd2bd257a3d4541e1bed757b42e0d35498e916d93e0c4d77719373cc234263"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"path": "ti.synthengine.xcframework/ios-arm64_x86_64-maccatalyst/libti.synthengine.a",
|
|
83
|
+
"bytes": 612416,
|
|
84
|
+
"sha256": "f3ec14d634b21d6471962ce7c5d4c6a1724434c84bc2a60884e595439b990124"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"path": "ti.synthengine.xcframework/ios-arm64_x86_64-simulator/libti.synthengine.a",
|
|
88
|
+
"bytes": 604368,
|
|
89
|
+
"sha256": "43c6f95dbb9545302578987df6ab4e46c2598673bd18baa959e7d856c7ce0b32"
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"verification": {
|
|
95
|
+
"publicContractMethods": 19,
|
|
96
|
+
"nativeContractPlatforms": [
|
|
97
|
+
"Android Java",
|
|
98
|
+
"iOS Foundation"
|
|
99
|
+
],
|
|
100
|
+
"toneChordHeldCorpusCases": 118,
|
|
101
|
+
"studioCorpusCases": 109,
|
|
102
|
+
"documentationNativeScoreRecipes": 8,
|
|
103
|
+
"sharedRatesHz": [
|
|
104
|
+
16000,
|
|
105
|
+
44100,
|
|
106
|
+
48000,
|
|
107
|
+
96000,
|
|
108
|
+
192000
|
|
109
|
+
],
|
|
110
|
+
"clock": {
|
|
111
|
+
"simulatedMinutes": 10,
|
|
112
|
+
"sequences": 4,
|
|
113
|
+
"ratesTested": 5,
|
|
114
|
+
"maximumErrorSamples": 1,
|
|
115
|
+
"tempoChanges": true,
|
|
116
|
+
"swing": true,
|
|
117
|
+
"millisecondClock": true
|
|
118
|
+
},
|
|
119
|
+
"concurrency": {
|
|
120
|
+
"transportCyclesUnderThreadSanitizer": 1000,
|
|
121
|
+
"androidOnOffGenerationHandoffs": 10000
|
|
122
|
+
},
|
|
123
|
+
"render": {
|
|
124
|
+
"referenceScenarios": 9,
|
|
125
|
+
"rateWaveCases": 30,
|
|
126
|
+
"bitExact": true,
|
|
127
|
+
"effectsEpochOptimizationFiveRatesBitExact": true
|
|
128
|
+
},
|
|
129
|
+
"regressions": "Shared DSP/sequence/transport/routing/spatial, native engine, API/defaults, contracts, ownership and consumer audio checks passed; independent review findings corrected.",
|
|
130
|
+
"hostBypassScreen": "Latest-source four-case recheck: three cases within screening limits; warmed oneVoice stereo remains +3.49% total and +1.73%p95. Follow-up layout investigation did not correct the total threshold. This host screen remains open; all trials are retained.",
|
|
131
|
+
"physicalSummary": "iPad600-second renderer p95 within limit/zero measured deadline misses. Android extreme-load callback criterion failed. Frontier presentations measured on both devices; Android backend xruns and subsequent headphone distortion reported. iPad Sim80 remains perceptually clean."
|
|
132
|
+
},
|
|
133
|
+
"consumers": [
|
|
134
|
+
{
|
|
135
|
+
"name": "TiSynth-Studio",
|
|
136
|
+
"changes": [
|
|
137
|
+
"start and global tempo",
|
|
138
|
+
"identified native sequence ownership and completion",
|
|
139
|
+
"saved instruments/favorites/A/B/steps preserved",
|
|
140
|
+
"continuous held noise, low-pass bypass and compatible spatial/pan edits",
|
|
141
|
+
"latest complete sequence coalesces while previous ID retires; cancellation clears pending publication"
|
|
142
|
+
],
|
|
143
|
+
"validation": [
|
|
144
|
+
"audio14/14",
|
|
145
|
+
"sequencer7/7",
|
|
146
|
+
"saved-state/index1/1",
|
|
147
|
+
"persisted migration3/3",
|
|
148
|
+
"scoped lint passed"
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"name": "titanium-frontier",
|
|
153
|
+
"changes": [
|
|
154
|
+
"four native sequence slots",
|
|
155
|
+
"separate fanfare/extra-life ownership",
|
|
156
|
+
"selective music processing while combat and propulsion stay dry",
|
|
157
|
+
"held propulsion with continuous noise/cutoff/position edits",
|
|
158
|
+
"removed timer-jingle and granular-motor compatibility implementations",
|
|
159
|
+
"opt-in isolated transport diagnostic",
|
|
160
|
+
"coalesced complete replacement waits for native sequenceend before slot reuse"
|
|
161
|
+
],
|
|
162
|
+
"validation": [
|
|
163
|
+
"aggregate79/80; sole duplicate rejection-log failure corrected; affected regression1/1",
|
|
164
|
+
"all80 audio cases passing across aggregate and focused correction",
|
|
165
|
+
"scoped source/test lint passed"
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"name": "titanium-guardian",
|
|
170
|
+
"changes": [
|
|
171
|
+
"start32voices/4slots",
|
|
172
|
+
"effect sequences compiled to ms with explicit release onset and IDs",
|
|
173
|
+
"completion listeners and shutdown cleanup",
|
|
174
|
+
"native sustained motor only; rejected publication/edit reports false without granular fallback",
|
|
175
|
+
"latest complete sequence coalesces while previous ID retires; cancellation clears pending publication"
|
|
176
|
+
],
|
|
177
|
+
"validation": [
|
|
178
|
+
"audio-system34/34",
|
|
179
|
+
"targeted source/test lint"
|
|
180
|
+
]
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"name": "synthEngineTest",
|
|
184
|
+
"changes": [
|
|
185
|
+
"start/playSequence boundary",
|
|
186
|
+
"retro scores compile native ms payloads",
|
|
187
|
+
"preserved existing sound and app changes",
|
|
188
|
+
"latest complete sequence coalesces while previous ID retires; cancellation clears pending publication"
|
|
189
|
+
],
|
|
190
|
+
"validation": [
|
|
191
|
+
"synth_safe_regression passed",
|
|
192
|
+
"retro_1_1_regression passed",
|
|
193
|
+
"targeted source/test lint"
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"name": "Ti-Synthetizer-App",
|
|
198
|
+
"changes": [
|
|
199
|
+
"closed final native sequence dictionaries",
|
|
200
|
+
"native sequence ID ownership and sequenceend lifecycle",
|
|
201
|
+
"old saved sequence-key migration preserves user identity/name/sound",
|
|
202
|
+
"separate application score compiler, no JS note scheduler",
|
|
203
|
+
"latest complete sequence coalesces while previous ID retires; cancellation clears pending publication"
|
|
204
|
+
],
|
|
205
|
+
"validation": [
|
|
206
|
+
"boundary21/21",
|
|
207
|
+
"focused sequence UI4/4",
|
|
208
|
+
"targeted source/test lint"
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"name": "BinauralLab",
|
|
213
|
+
"changes": [
|
|
214
|
+
"start",
|
|
215
|
+
"native looping nine-position ms sequence; polling paints only",
|
|
216
|
+
"identified cancellation",
|
|
217
|
+
"latest complete sequence coalesces while previous ID retires; cancellation clears pending publication"
|
|
218
|
+
],
|
|
219
|
+
"validation": [
|
|
220
|
+
"syntax and core-rule lint"
|
|
221
|
+
]
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"name": "Simon Game",
|
|
225
|
+
"changes": [
|
|
226
|
+
"start method and test doubles; existing edits preserved"
|
|
227
|
+
],
|
|
228
|
+
"validation": [
|
|
229
|
+
"simon_audio_profile_regression passed",
|
|
230
|
+
"game_logic_regression passed",
|
|
231
|
+
"targeted source/test lint"
|
|
232
|
+
]
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"name": "sound-engine-test",
|
|
236
|
+
"changes": [
|
|
237
|
+
"start method"
|
|
238
|
+
],
|
|
239
|
+
"validation": [
|
|
240
|
+
"syntax and core-rule lint"
|
|
241
|
+
]
|
|
242
|
+
}
|
|
243
|
+
],
|
|
244
|
+
"example": {
|
|
245
|
+
"validation": [
|
|
246
|
+
"example application8/8",
|
|
247
|
+
"sequence owner5/5",
|
|
248
|
+
"real Android Java deferred payload corpus1/1",
|
|
249
|
+
"real iOS deferred payload corpus1/1",
|
|
250
|
+
"scoped static lint passed"
|
|
251
|
+
],
|
|
252
|
+
"contract": "Partial pending voice edits merge; complete scores replace obsolete source/filter fields; publication waits matching retirement event."
|
|
253
|
+
},
|
|
254
|
+
"hostLoad": {
|
|
255
|
+
"kind": "syntheticAndroidCallback",
|
|
256
|
+
"sampleRate": 48000,
|
|
257
|
+
"blockFrames": 256,
|
|
258
|
+
"simulatedSeconds": 30,
|
|
259
|
+
"blocks": 5625,
|
|
260
|
+
"voices": 32,
|
|
261
|
+
"sequences": 4,
|
|
262
|
+
"binaural": true,
|
|
263
|
+
"lfosPerVoice": 2,
|
|
264
|
+
"effects": true,
|
|
265
|
+
"loadMedian": 0.197421938,
|
|
266
|
+
"loadP95": 0.321257813,
|
|
267
|
+
"loadMax": 1.08478913,
|
|
268
|
+
"deadlineMisses": 1,
|
|
269
|
+
"nativeBytes192k": 24649584,
|
|
270
|
+
"physicalAcceptance": false
|
|
271
|
+
},
|
|
272
|
+
"memoryScope": "Counted native engine, command queue, four triple-bank sequence slots, renderer voices/tails, effects and limiter buffers at 192kHz. Excludes managed/bridge/driver/process peak allocations and does not establish the complete recovery-peak acceptance bound.",
|
|
273
|
+
"performanceReport": "unified-bypass-performance.json",
|
|
274
|
+
"pendingAcceptance": [
|
|
275
|
+
"Android maximum-load callback criterion failed; controlled ten-minute run not started",
|
|
276
|
+
"Latest-source oneVoice host bypass total-time screen remains above2% after investigation",
|
|
277
|
+
"Complete192k physical process/bridge/recovery memory bound not established",
|
|
278
|
+
"Android simulation20 renderer elapsed-work +6.91% investigation remains unresolved",
|
|
279
|
+
"Strict simulation80 equivalent-load coverage inconclusive on both devices; presentation/FPS limits met for matched Arcade/simulation20",
|
|
280
|
+
"Remaining listening cases beyond scoped manual Sim80; iPad and corrected Android short Sim80 accepted by Cesar; other listening cases remain separate"
|
|
281
|
+
],
|
|
282
|
+
"scope": {
|
|
283
|
+
"initialHostValidation": {
|
|
284
|
+
"devicesAccessed": false,
|
|
285
|
+
"consumerApplicationsBuilt": false,
|
|
286
|
+
"commitsMade": false,
|
|
287
|
+
"pushOrReleases": false
|
|
288
|
+
},
|
|
289
|
+
"currentExecution": {
|
|
290
|
+
"devicesAccessed": true,
|
|
291
|
+
"nativeModulesBuilt": [
|
|
292
|
+
"android-four-abis",
|
|
293
|
+
"ios-device-simulator-catalyst"
|
|
294
|
+
],
|
|
295
|
+
"isolatedFrontierAppsBuilt": [
|
|
296
|
+
"android",
|
|
297
|
+
"ios"
|
|
298
|
+
],
|
|
299
|
+
"allEightConsumerApplicationsBuilt": false,
|
|
300
|
+
"commitsMade": true,
|
|
301
|
+
"pushOrReleases": false
|
|
302
|
+
},
|
|
303
|
+
"interpretation": "Initial host-only scope is preserved as history. Physical reports and later delivery work have their own recorded scope; no complete multiplatform acceptance is claimed."
|
|
304
|
+
},
|
|
305
|
+
"nativeSourceCommit": "87b2c3354f182c5742cba84775b075552c80572c",
|
|
306
|
+
"physicalReport": "physical-validation.json",
|
|
307
|
+
"latestNativeMemoryAccounting": {
|
|
308
|
+
"androidRendererHostBytes192k": 24649840,
|
|
309
|
+
"nativeSourceCommit": "87b2c3354f182c5742cba84775b075552c80572c",
|
|
310
|
+
"physicalProcessAcceptance": false,
|
|
311
|
+
"scope": "Current sizeof/capacity accounting, not full process/bridge/allocator/driver peak; one-second host render only sanity-checks finite bounded samples and32activevoices."
|
|
312
|
+
},
|
|
313
|
+
"androidSim80Correction": "android-sim80-correction.json"
|
|
314
|
+
}
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
# Why AGENTS.md? (Based on Vercel's research)
|
|
2
|
-
|
|
3
|
-
This explains why we use AGENTS.md or CLAUDE.md with a compressed docs index instead of relying only on skills.
|
|
4
|
-
|
|
5
|
-
## The problem: skills alone underperform
|
|
6
|
-
|
|
7
|
-
Vercel reports that skills-only setups hit a **53-79% pass rate** on coding tasks.
|
|
8
|
-
|
|
9
|
-
### Why skills underperform
|
|
10
|
-
|
|
11
|
-
| Issue | Description |
|
|
12
|
-
| ------------------- | ----------------------------------------------------- |
|
|
13
|
-
| **Decision point** | The model has to decide when to invoke a skill |
|
|
14
|
-
| **Async loading** | Skills load on-demand, so they are not always present |
|
|
15
|
-
| **Ordering issues** | "Explore first" vs "read docs first" tradeoff |
|
|
16
|
-
| **Fragile prompts** | Results depend on exact prompt wording |
|
|
17
|
-
|
|
18
|
-
## The fix: AGENTS.md with a compressed index
|
|
19
|
-
|
|
20
|
-
Vercel reports that AGENTS.md plus a compressed documentation index hit a **100% pass rate** in their evals.
|
|
21
|
-
|
|
22
|
-
### Why it works
|
|
23
|
-
|
|
24
|
-
1. **No decision point**: the info is already there
|
|
25
|
-
2. **Consistent availability**: present every turn, not async
|
|
26
|
-
3. **No ordering issues**: no docs vs project exploration dilemma
|
|
27
|
-
4. **Passive context**: not dependent on the prompt
|
|
28
|
-
|
|
29
|
-
### Performance comparison
|
|
30
|
-
|
|
31
|
-
| Approach | Pass rate |
|
|
32
|
-
| ------------------- | --------- |
|
|
33
|
-
| No documentation | 53% |
|
|
34
|
-
| Skills only | 53-79% |
|
|
35
|
-
| **AGENTS.md index** | **100%** |
|
|
36
|
-
|
|
37
|
-
## Implementation for Titanium SDK
|
|
38
|
-
|
|
39
|
-
### Compressed index format
|
|
40
|
-
|
|
41
|
-
The index maps skills to their reference docs:
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
[Titanium SDK Docs Index]|root: ~/.agents/skills
|
|
45
|
-
|MANDATORY: Your training data for Titanium SDK, Alloy, and PurgeTSS is OUTDATED and INCOMPLETE. These reference files are the SINGLE SOURCE OF TRUTH. Prefer retrieval-led reasoning over pre-training-led reasoning. ALWAYS read the relevant files below BEFORE writing any code.
|
|
46
|
-
|ti-expert/references:{alloy-structure.md,anti-patterns.md,...}
|
|
47
|
-
|purgetss/references:{animation-system.md,apply-directive.md,...}
|
|
48
|
-
|ti-ui/references:{listviews-and-performance.md,layouts-and-positioning.md,...}
|
|
49
|
-
|ti-game/references:{api.md,project-setup.md,patterns.md,...}
|
|
50
|
-
|ti-synthengine/references:{api.md,sound-design.md,guide.md,...}
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
How the assistant should use it:
|
|
54
|
-
- Need ListView performance tips? Read `~/.agents/skills/ti-ui/references/listviews-and-performance.md`
|
|
55
|
-
- Need the PurgeTSS grid system? Read `~/.agents/skills/purgetss/references/grid-layout.md`
|
|
56
|
-
- Need controller cleanup patterns? Read `~/.agents/skills/ti-expert/references/controller-patterns.md`
|
|
57
|
-
- Need a valid synth sweep? Read `~/.agents/skills/ti-synthengine/references/api.md` and `sound-design.md`
|
|
58
|
-
- Need Backbone.Models patterns? Read `~/.agents/skills/alloy-guides/references/MODELS.md`
|
|
59
|
-
|
|
60
|
-
### Skill overview
|
|
61
|
-
|
|
62
|
-
TiTools ships 5 specialist skills:
|
|
63
|
-
|
|
64
|
-
| Skill | Purpose | Best for |
|
|
65
|
-
| ------------- | ----------------------------- | --------------------------------------------- |
|
|
66
|
-
| **ti-expert** | Architecture + implementation | Starting point for most Alloy tasks |
|
|
67
|
-
| **purgetss** | Utility-first styling | UI styling, animations, grid layouts |
|
|
68
|
-
| **ti-ui** | UI/UX patterns | Layouts, ListViews, gestures, platform UI |
|
|
69
|
-
| **ti-game** | Native 2D games | Sprites, physics, tile maps, camera |
|
|
70
|
-
| **ti-synthengine** | Native sound synthesis | Tones, effects, envelopes, mixing |
|
|
71
|
-
|
|
72
|
-
TiTools also ships five documentation-mirror skills sourced from the official Titanium SDK docs:
|
|
73
|
-
|
|
74
|
-
| Skill | Purpose | Best for |
|
|
75
|
-
| ---------------- | ----------------------------- | ---------------------------------------------- |
|
|
76
|
-
| **ti-api** | Complete API reference | Properties, methods, events, constants |
|
|
77
|
-
| **ti-guides** | SDK fundamentals | Hyperloop, distribution, tiapp.xml, CLI |
|
|
78
|
-
| **ti-howtos** | Native feature integration | Location, push, media, platform-specific APIs |
|
|
79
|
-
| **alloy-guides** | Alloy MVC reference | Models, views, controllers, widgets |
|
|
80
|
-
| **alloy-howtos** | Alloy CLI and debugging | Project setup, CLI commands, errors |
|
|
81
|
-
|
|
82
|
-
### For complex workflows
|
|
83
|
-
|
|
84
|
-
The **ti-pro** agent (installed in `~/.claude/agents/`) handles:
|
|
85
|
-
- Codebase architecture analysis
|
|
86
|
-
- Multi-feature research across Titanium APIs
|
|
87
|
-
- Cross-referencing framework patterns
|
|
88
|
-
- Platform-specific differences
|
|
89
|
-
|
|
90
|
-
It exposes all 10 TiTools skills, then consults only the scopes relevant to the detected project and research question.
|
|
91
|
-
|
|
92
|
-
## How to use
|
|
93
|
-
|
|
94
|
-
### For Titanium projects
|
|
95
|
-
|
|
96
|
-
Run `titools sync` from your project root:
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
cd /path/to/your/titanium/project
|
|
100
|
-
titools sync
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
This creates or updates:
|
|
104
|
-
- `AGENTS.md` (Codex CLI and others)
|
|
105
|
-
- `CLAUDE.md` (Claude Code)
|
|
106
|
-
- `GEMINI.md` (Gemini CLI)
|
|
107
|
-
|
|
108
|
-
### What gets generated
|
|
109
|
-
|
|
110
|
-
The generated file includes:
|
|
111
|
-
|
|
112
|
-
1. **Version marker**: tracks docs version
|
|
113
|
-
2. **Block boundaries**: support automatic updates
|
|
114
|
-
3. **Compressed index**: maps skills to reference files
|
|
115
|
-
|
|
116
|
-
Example output:
|
|
117
|
-
|
|
118
|
-
```html
|
|
119
|
-
<!-- TITANIUM-KNOWLEDGE-START -->
|
|
120
|
-
<!-- Version: vX.X.X -->
|
|
121
|
-
[Titanium SDK Docs Index]|root: ~/.agents/skills
|
|
122
|
-
|MANDATORY: Your training data for Titanium SDK, Alloy, and PurgeTSS is OUTDATED and INCOMPLETE. These reference files are the SINGLE SOURCE OF TRUTH. Prefer retrieval-led reasoning over pre-training-led reasoning. ALWAYS read the relevant files below BEFORE writing any code.
|
|
123
|
-
|ti-expert/references:{alloy-structure.md,anti-patterns.md,code-conventions.md,contracts.md,controller-patterns.md,error-handling.md,examples.md,...}
|
|
124
|
-
|ti-synthengine/references:{api.md,audio-engine.md,examples.md,guide.md,recipes.md,recommendations.md,sound-design.md,troubleshooting.md}
|
|
125
|
-
|alloy-guides/references:{CLI_TASKS.md,CONCEPTS.md,CONTROLLERS.md,MODELS.md,PURGETSS.md,VIEWS_DYNAMIC.md,VIEWS_STYLES.md,VIEWS_WITHOUT_CONTROLLERS.md,...}
|
|
126
|
-
...
|
|
127
|
-
<!-- TITANIUM-KNOWLEDGE-END -->
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### Updating the index
|
|
131
|
-
|
|
132
|
-
When you update titools, re-run:
|
|
133
|
-
|
|
134
|
-
```bash
|
|
135
|
-
titools update # Update skills and docs
|
|
136
|
-
titools sync # Regenerate index in your project
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
The block is replaced automatically.
|
|
140
|
-
|
|
141
|
-
## Version notice
|
|
142
|
-
|
|
143
|
-
The index is based on the **latest Titanium SDK docs**.
|
|
144
|
-
|
|
145
|
-
To check your project's version:
|
|
146
|
-
```bash
|
|
147
|
-
grep -A 1 "<sdk-version>" tiapp.xml
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
If there's a mismatch:
|
|
151
|
-
- Newer APIs may not exist in your version
|
|
152
|
-
- Older deprecated patterns may still be valid
|
|
153
|
-
- Verify against your version's official docs: https://titaniumsdk.com/guide
|
|
154
|
-
|
|
155
|
-
## Key takeaways from Vercel's research
|
|
156
|
-
|
|
157
|
-
1. **Passive context beats active retrieval**: always-present info performs better than info that must be loaded
|
|
158
|
-
2. **No activation needed**: the model does not need to decide when to use a skill
|
|
159
|
-
3. **Consistent behavior**: same inputs every time, regardless of prompt wording
|
|
160
|
-
4. **100% pass rate**: AGENTS.md approach achieved perfect performance in their evals
|
|
161
|
-
|
|
162
|
-
## References
|
|
163
|
-
|
|
164
|
-
- [Vercel's blog: AGENTS.md outperforms skills in our agent evals](https://vercel.com/blog/agents-md-outperforms-skills-in-our-agent-evals)
|
|
165
|
-
- [Repository: macCesar/titools](https://github.com/macCesar/titools)
|
|
166
|
-
|
|
167
|
-
## Maintenance
|
|
168
|
-
|
|
169
|
-
This approach is maintained in [titools](https://github.com/macCesar/titools).
|
|
170
|
-
|
|
171
|
-
To update your installation:
|
|
172
|
-
```bash
|
|
173
|
-
npm update -g @maccesar/titools
|
|
174
|
-
titools update
|
|
175
|
-
```
|