picopilot 0.1.1 → 0.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAM/B;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAehC;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAiLjC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAO9C"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAM/B;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAehC;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAuLjC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAO9C"}
@@ -103,10 +103,12 @@ One change = one pass through this loop. Do NOT skip the last step:
103
103
  2. \`picopilot tokens\` to watch the 8192-token budget.
104
104
  3. \`picopilot verify\` (the static gate: tokens + integrity). GREEN means
105
105
  well-formed, it does NOT mean the cart runs or plays.
106
- 4. **SEE it run.** Add a temporary probe to \`main.lua\` and \`picopilot run\`, then
107
- LOOK at the screenshot PNG. Remove the probe after. Or use
108
- \`picopilot playtest run\` to drive input and screenshot live gameplay with no
109
- cart edit. Probe recipe:
106
+ 4. **SEE it PLAY, not just render.** A single screenshot proves a frame draws; it
107
+ does NOT prove the game behaves. So DRIVE it and watch it change over time:
108
+ \`picopilot playtest run\` feeds input and captures live gameplay with no cart
109
+ edit, or add the temporary \`run\` probe below to grab specific frames. Capture
110
+ a sequence and compare frames so you can see MOTION and STATE CHANGE, not one
111
+ still. Probe recipe:
110
112
 
111
113
  \`\`\`lua
112
114
  -- TEMPORARY: screenshot a couple of frames, then signal done so run exits.
@@ -115,11 +117,15 @@ One change = one pass through this loop. Do NOT skip the last step:
115
117
  if t==45 then printh("__PICOPILOT_DONE__") end
116
118
  \`\`\`
117
119
 
118
- **Definition of done: you have looked at a screenshot of the running cart and it
119
- renders what you intended.** A green \`verify\` is NOT done. A \`picopilot run\`
120
- that ends in \`exitReason: timeout\` with NO screenshot is NOT proof it works, it
121
- just means the cart never self-quit; you still have not seen it. Never declare a
122
- game finished on static checks or a bare timeout alone.
120
+ **Definition of done: you have driven YOUR game's core loop and confirmed its
121
+ state actually behaves, not just that it renders.** Screenshots hide logic bugs
122
+ (state that should change on an event but does not, or does not reset when it
123
+ should). So do NOT check a fixed checklist: enumerate the state transitions YOUR
124
+ specific game defines (whatever its own actions, events, and restart do), then
125
+ drive each one and confirm the before/after state is what you intended, before
126
+ AND after a full round or restart. If reading state off the screen is hard, add
127
+ a temporary \`printh\` to dump the values and confirm them directly. A green
128
+ \`verify\`, a bare \`timeout\`, or a nice-looking title is NOT done.
123
129
 
124
130
  ## Handing the finished cart to the user
125
131
 
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;;GASG;AAEH,0FAA0F;AAC1F,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,MAAM;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CACtB,sDAAsD,YAAY,aAAa,CAC/E,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,gBAAgB,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO;IACtB,OAAO;;;;;;;;;;;;;CAaP,CAAC;AACF,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,aAAa;IAC5B,OAAO,iBAAiB,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+KP,CAAC;AACF,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC5B,OAAO;QACN,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAC;QACpC,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAC;QACtC,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC;QACxC,EAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,EAAC;KAClD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;;GASG;AAEH,0FAA0F;AAC1F,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,MAAM;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CACtB,sDAAsD,YAAY,aAAa,CAC/E,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,gBAAgB,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO;IACtB,OAAO;;;;;;;;;;;;;CAaP,CAAC;AACF,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,aAAa;IAC5B,OAAO,iBAAiB,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqLP,CAAC;AACF,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC5B,OAAO;QACN,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAC;QACpC,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAC;QACtC,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC;QACxC,EAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,EAAC;KAClD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "picopilot",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "An agent-first toolchain for PICO-8 game development, built on the incur CLI framework.",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
@@ -126,6 +126,17 @@ describe('picopilot init: AGENTS.md carries the curated PICO-8 reference', () =>
126
126
  expect(agents).toContain('__PICOPILOT_DONE__');
127
127
  // A bare timeout is explicitly NOT proof it works.
128
128
  expect(agents.toLowerCase()).toContain('timeout');
129
+ // Done means BEHAVIOUR verified, not just a rendered frame: drive the core
130
+ // loop and confirm state transitions (the bugs a screenshot hides).
131
+ const lower = agents.toLowerCase();
132
+ expect(lower).toContain('state');
133
+ expect(lower).toMatch(/behave|behaviour|behavior/);
134
+ // GENERIC, not a fixed mechanic checklist: it must tell the agent to
135
+ // enumerate ITS OWN game's transitions, so it neither assumes mechanics the
136
+ // game lacks nor checks only a canned list and misses the rest.
137
+ expect(lower).toContain('enumerate');
138
+ expect(lower).toMatch(/your (specific )?game/);
139
+ expect(lower).toContain('do not check a fixed checklist');
129
140
  });
130
141
 
131
142
  it('hands the finished cart off via `pico8 -run`, NOT `serve`', () => {
@@ -112,10 +112,12 @@ One change = one pass through this loop. Do NOT skip the last step:
112
112
  2. \`picopilot tokens\` to watch the 8192-token budget.
113
113
  3. \`picopilot verify\` (the static gate: tokens + integrity). GREEN means
114
114
  well-formed, it does NOT mean the cart runs or plays.
115
- 4. **SEE it run.** Add a temporary probe to \`main.lua\` and \`picopilot run\`, then
116
- LOOK at the screenshot PNG. Remove the probe after. Or use
117
- \`picopilot playtest run\` to drive input and screenshot live gameplay with no
118
- cart edit. Probe recipe:
115
+ 4. **SEE it PLAY, not just render.** A single screenshot proves a frame draws; it
116
+ does NOT prove the game behaves. So DRIVE it and watch it change over time:
117
+ \`picopilot playtest run\` feeds input and captures live gameplay with no cart
118
+ edit, or add the temporary \`run\` probe below to grab specific frames. Capture
119
+ a sequence and compare frames so you can see MOTION and STATE CHANGE, not one
120
+ still. Probe recipe:
119
121
 
120
122
  \`\`\`lua
121
123
  -- TEMPORARY: screenshot a couple of frames, then signal done so run exits.
@@ -124,11 +126,15 @@ One change = one pass through this loop. Do NOT skip the last step:
124
126
  if t==45 then printh("__PICOPILOT_DONE__") end
125
127
  \`\`\`
126
128
 
127
- **Definition of done: you have looked at a screenshot of the running cart and it
128
- renders what you intended.** A green \`verify\` is NOT done. A \`picopilot run\`
129
- that ends in \`exitReason: timeout\` with NO screenshot is NOT proof it works, it
130
- just means the cart never self-quit; you still have not seen it. Never declare a
131
- game finished on static checks or a bare timeout alone.
129
+ **Definition of done: you have driven YOUR game's core loop and confirmed its
130
+ state actually behaves, not just that it renders.** Screenshots hide logic bugs
131
+ (state that should change on an event but does not, or does not reset when it
132
+ should). So do NOT check a fixed checklist: enumerate the state transitions YOUR
133
+ specific game defines (whatever its own actions, events, and restart do), then
134
+ drive each one and confirm the before/after state is what you intended, before
135
+ AND after a full round or restart. If reading state off the screen is hard, add
136
+ a temporary \`printh\` to dump the values and confirm them directly. A green
137
+ \`verify\`, a bare \`timeout\`, or a nice-looking title is NOT done.
132
138
 
133
139
  ## Handing the finished cart to the user
134
140