@ssheleg/sheleg-dev 0.11.0 → 0.11.1

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/CHANGELOG.md CHANGED
@@ -4,6 +4,48 @@ All notable changes to this project are documented here.
4
4
  Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
5
  Versioning: [SemVer](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## v0.11.1 — the evals stop being a plan, and the last tails get their receipts
8
+
9
+ The 2026-08-29 skill audit left four tails (DEV-06 through DEV-08, DEV-10), and the
10
+ eval suite's own RESULTS.md opened with "authored, schema-validated, never executed
11
+ against a model". This release closes all four; that sentence is replaced by two dated
12
+ model runs and the method that produced them.
13
+
14
+ - **The behavioral evals cover all seven skills and carry dated runs** (DEV-10, board
15
+ B-103). Three scenarios are authored for the skills that had none — `crypto-payments`
16
+ (crediting under hostile deliveries), `error-tracking` (scrubbing layers and release
17
+ parity), `frontend-performance` (vitals moved and proven) — bringing `scenarios.json`
18
+ to six, green under `evals_validate.py` with the planted-defect self-test still
19
+ caught. Then the whole suite was executed on 2026-08-31: 14 trigger queries × 3 fresh
20
+ subagent sessions × 2 models (haiku, sonnet — 84 blind probes), plus all six
21
+ scenarios' expected-behavior lines scored against fresh sonnet implementation designs.
22
+ Haiku: train 23/24, validation 15/18. Sonnet: train 23/24, validation 16/18; scenario
23
+ lines 23/24 (s01's design named no refund-path test). Two findings are recorded
24
+ rather than tuned away: "Explain what LCP means" (q13, a negative case) pulls
25
+ `frontend-performance` in 5 of 6 runs across both models, and one sonnet run routed
26
+ the crypto implementation query to `task-pipeline` — coexistence changes routing,
27
+ exactly as the eval README warns. Method and its limits: `test/evals/RESULTS.md`.
28
+ - **`ad-tracking`'s last two undated vendor facts were re-verified, and one was stale**
29
+ (DEV-06, B-104). The Enhanced Conversions step said `Tools → Conversions → …` — the
30
+ pre-redesign console path; checked 2026-08-31 against
31
+ `support.google.com/google-ads/answer/13258081`, the live path is **Goals →
32
+ Conversions → Settings → Enhanced conversions**, and the step now states it with its
33
+ date. The `_gcl_aw` claim was true but incomplete: the cookie's ~90-day default life
34
+ and the Safari ITP cap (JS-set cookies live 7 days, 24 hours after a link-decorated
35
+ navigation — which a gclid landing is) now sit beside the redirect-survival claim,
36
+ dated. Body ~4726 tokens of the 4750 house working limit.
37
+ - **`google-signin` stops pointing installers at a private repository** (DEV-07,
38
+ B-102). The third sentence a reader met cited `web/server.py:1657` in the Prowl repo
39
+ as the live reference implementation — an address no installer can resolve (M-07).
40
+ The shipped `references/full-guide.md` FastAPI + JS skeleton is the reference
41
+ implementation, and the sentence now says so.
42
+ - **`google-auth` states the major its own examples require** (DEV-08, B-101). The ADC
43
+ and JWT examples call `client.fetch()` while `npm install google-auth-library` pinned
44
+ nothing, so a reader on 9.x copied a method their client does not have. Checked
45
+ 2026-08-31 against the library's CHANGELOG: the fetch-compatible API landed in
46
+ **10.1.0** (2025-06-12, PR #1939), `client.request()` is the 9.x form and survives in
47
+ the current 11.x. The install block now carries the floor, the fallback and the date.
48
+
7
49
  ## v0.11.0 — a trigger literal gets one home, and four facts get their dates
8
50
 
9
51
  The 2026-08-29 skill audit found the pack's two Google skills advertising the same
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ssheleg/sheleg-dev",
3
- "version": "0.11.0",
3
+ "version": "0.11.1",
4
4
  "description": "Seven integration skills for the layer a product reaches once it has users: Stripe subscription billing and cancellation retention, crypto payments, ad and conversion tracking under Consent Mode v2, Google sign-in and the wider Google auth surface, error tracking, and Core Web Vitals. This package is the installer CLI.",
5
5
  "bin": {
6
6
  "sheleg-dev": "bin/sheleg-dev.js"
@@ -3,7 +3,7 @@
3
3
  "name": "sheleg-dev",
4
4
  "displayName": "Sheleg Dev",
5
5
  "description": "The integration layer a product needs once it has users: Stripe subscription billing reconciled into your own database, crypto payments that survive over-payment and duplicate webhooks, ad and conversion tracking under Consent Mode v2, Google sign-in with the account-linking guards, the wider Google auth surface, and Core Web Vitals work that moves the score, and Sentry error tracking wired so it does not forward your own credentials to a third party and so a stack trace names the commit that caused it.",
6
- "version": "0.11.0",
6
+ "version": "0.11.1",
7
7
  "author": {
8
8
  "name": "ssheleg",
9
9
  "url": "https://x.com/sshlg93"
@@ -180,7 +180,10 @@ gtag('set', 'user_data', {
180
180
  });
181
181
  ```
182
182
 
183
- 3. Enable in Google Ads console: Tools → Conversions → Enhanced conversions → Turn on
183
+ 3. Enable in the Google Ads console: **Goals → Conversions → Settings →
184
+ Enhanced conversions → "Turn on enhanced conversions"** (checked 2026-08-31
185
+ against `support.google.com/google-ads/answer/13258081`; the old
186
+ Tools → Conversions path is gone from the redesigned UI)
184
187
 
185
188
  ### user_id (Cross-Device Tracking)
186
189
 
@@ -195,7 +198,11 @@ gtag('config', 'G-XXXXXXXXXX', {
195
198
 
196
199
  ### gclid Preservation Through External Redirects
197
200
 
198
- The `gclid` from Google Ads auto-tagging is stored in the `_gcl_aw` first-party cookie. This cookie persists across external redirects (e.g. Stripe Checkout → return URL) because it's set on your domain. No additional code needed.
201
+ The `gclid` from Google Ads auto-tagging is stored in the `_gcl_aw` first-party
202
+ cookie (~90-day default life). It survives external redirects (Stripe Checkout →
203
+ return URL) because only expiry ends a cookie on your own domain — no extra code.
204
+ Checked 2026-08-31; the caveat is Safari, where ITP caps JS-set cookies at 7
205
+ days — 24 hours after a link-decorated navigation, which a gclid landing is.
199
206
 
200
207
  ### Google Ads console setup
201
208
 
@@ -27,6 +27,11 @@ npm install google-auth-library
27
27
  npm install googleapis
28
28
  ```
29
29
 
30
+ The `client.fetch()` calls below require google-auth-library **≥ 10.1.0** (the
31
+ fetch-compatible API landed in 10.1.0, 2025-06-12); on 9.x use
32
+ `client.request()` with the same arguments. Checked 2026-08-31: latest is 11.x
33
+ and keeps both methods.
34
+
30
35
  ### Python
31
36
 
32
37
  - `google-auth` — core auth library (google.oauth2, google.auth, credentials, transport)
@@ -17,9 +17,8 @@ description: >-
17
17
  Condensed operating instructions. Full narrative guide with diagrams, token
18
18
  anatomy, troubleshooting table, and a copy-paste FastAPI + JS skeleton:
19
19
  [references/full-guide.md](references/full-guide.md) — read it when
20
- implementing from scratch. A live reference implementation exists in the
21
- Prowl repo (`0xDEV`): `web/auth.py`, `web/server.py:1657`
22
- (`/api/auth/google`), `web/static/js/app.js:16-110`.
20
+ implementing from scratch; its FastAPI + JS skeleton is the reference
21
+ implementation this skill ships.
23
22
 
24
23
  ## Pick the right flow first
25
24