saasfunnels 0.3.4 → 0.4.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/README.md CHANGED
@@ -51,7 +51,7 @@ approved set is reviewable.
51
51
  - uses: LeadEngine-ai/saasfunnels-cli/action@v0.2.1
52
52
  with:
53
53
  api-key: ${{ secrets.SAASFUNNELS_API_KEY }}
54
- cli-version: 0.2.1 # pin it; a floating version rebaselines drift
54
+ cli-version: 0.2.1 # pin it; a floating version rebaselines drift
55
55
  discovery-roots: app,lib
56
56
  ```
57
57
 
@@ -63,8 +63,8 @@ measured against a comparable scan rather than a wider or narrower one.
63
63
  Plan and pricing upload is opt-in:
64
64
 
65
65
  ```yaml
66
- plan-sources: "true"
67
- integration-id: <stripe integration id>
66
+ plan-sources: "true"
67
+ integration-id: <stripe integration id>
68
68
  ```
69
69
 
70
70
  It runs only on the default branch, requires a committed
@@ -100,7 +100,7 @@ Support: support@saasfunnels.ai
100
100
 
101
101
  Use `saasfunnels setup run` from the application repository after creating app credentials in Setup. Load `SAASFUNNELS_API_KEY` from **Developer setup access** into the local process environment. Its scopes are `developer:read` and `features:write`; it is not a browser or payment-administration key.
102
102
 
103
- The command asks before uploading structured discovery proposals. `--send` provides explicit non-interactive approval. It coordinates features, pricing extraction, and plan branches, reports progress, and waits for the Stripe catalog. Run `saasfunnels setup run --resume` after an interruption. Existing accepted stages and customer review decisions are preserved.
103
+ The command asks before uploading structured discovery proposals. `--send` provides explicit non-interactive approval. It coordinates features, pricing extraction, and plan branches, reports progress, and waits for the Stripe catalog. Run `saasfunnels setup run --resume` after an interruption. Existing accepted stages and customer review decisions are preserved. Coverage questions include a SHA-256 fingerprint of their affected files so changed application behavior can reopen an answer while unrelated file changes keep it. Only the fingerprint and bounded paths are uploaded, never source contents.
104
104
 
105
105
  The scanner reads supported application files one at a time without the old 500-file, 2 MB repository, or 200-candidate cutoffs. Generated code, tests, and symlinks are excluded. Files over 2 MB and uploads over the server limit stop with a specific recovery message.
106
106
 
@@ -119,3 +119,30 @@ Guided setup proposes supported JavaScript/TypeScript gates and static JS/TS/JSO
119
119
  A frontend scan is not evidence of complete backend coverage. Setup flags unsupported application languages, unresolved dynamic access, and optional add-on/capacity/trial declarations. Review these against the actual application's entitlement owner before confirming. Imported or dynamic pricing that cannot be statically resolved needs reviewed literal `.saasfunnels/setup-pricing.json` evidence or manual configuration; source is never executed. Arbitrary helper names and external services cannot be exhaustively discovered automatically.
120
120
 
121
121
  Feature configuration must be saved and published in Plans & pricing before Setup can confirm it. Naming an unnamed restriction records a review decision; it does not implement access. A new scanner version may require running without `--resume`; guided rescans preserve human decisions and leave local generated catalogs untouched.
122
+
123
+ ### Review prefilled configuration (Setup contract 3)
124
+
125
+ CLI 0.4.x coordinates with the guided configuration review. Run
126
+ `npx --yes saasfunnels@latest setup run` to submit proposals; workspace
127
+ administrators review and publish them in Setup. The developer key never approves
128
+ configuration or payment connections.
129
+
130
+ Supported literal pricing declarations may include `quotas` with explicit unit,
131
+ period, aggregation, and `usageSource: "customer_reported"`, plus `components`
132
+ with exact Stripe product/price IDs, included quantities and quantity sources.
133
+ Use `quantityBasis: "total"` for sources reporting all units, or `"additional"`
134
+ for sources already reporting units above the allowance. Missing semantics require
135
+ review rather than guessed defaults.
136
+
137
+ A coding agent can place reviewed declarations in `.saasfunnels/setup-pricing.json`
138
+ and question explanations in `.saasfunnels/setup-answers.json`. Explanations are
139
+ bounded `{id, fingerprint, disposition, reason}` records; disposition is
140
+ `configuration`, `not_applicable`, or `unresolved`. Configuration answers include
141
+ `configuration: [{planKey, featureKey}]` or `[{planKey, componentKey}]` referencing
142
+ corrected declarations. Required unsupported behavior must remain unresolved.
143
+ Corrected configuration belongs in the pricing
144
+ file. No source files or credentials belong in either upload.
145
+
146
+ Changes to those files or application source require a fresh run. Use `--resume`
147
+ only for unchanged interrupted work. The scan identity includes reviewed inputs
148
+ and scanner contract version, so accepted old submissions cannot hide corrections.