genesis-stack 1.2.0 → 1.2.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 +5 -5
- package/package.json +1 -1
- package/stacks/pieces/csharp.md +6 -2
- package/stacks/pieces/go.md +6 -2
- package/stacks/pieces/java.md +6 -2
- package/stacks/pieces/jskit.md +15 -5
- package/stacks/pieces/kotlin.md +6 -2
- package/stacks/pieces/laravel-mysql.md +4 -3
- package/stacks/pieces/laravel-postgresql.md +4 -3
- package/stacks/pieces/laravel-sqlite.md +8 -5
- package/stacks/pieces/laravel.md +24 -2
- package/stacks/pieces/nodejs.md +7 -3
- package/stacks/pieces/php.md +5 -2
- package/stacks/pieces/python.md +9 -2
- package/stacks/pieces/ruby.md +8 -2
- package/stacks/pieces/rust.md +6 -2
- package/stacks/pieces/vue.md +7 -1
package/README.md
CHANGED
|
@@ -56,10 +56,10 @@ own schema changes and preservation of existing data during adoption.
|
|
|
56
56
|
|
|
57
57
|
## Resource-estimate proposals
|
|
58
58
|
|
|
59
|
-
JSKIT proposes
|
|
59
|
+
JSKIT proposes a host's optional `Resource estimates` section for its concrete
|
|
60
60
|
`app` output and Workspace setup. The startup, running and preparation values
|
|
61
61
|
are initial planning estimates, not measured minima, reservations or memory
|
|
62
|
-
limits.
|
|
62
|
+
limits. The consuming host owns the grammar, admission, learned consumption
|
|
63
63
|
and owner settings; Genesis only materializes and transports the exact text.
|
|
64
64
|
|
|
65
65
|
Node and Vue contribute adoption guidance without competing section proposals.
|
|
@@ -71,7 +71,7 @@ policy. Neither the catalog nor the project stores host observations or limits.
|
|
|
71
71
|
|
|
72
72
|
## Connected package defaults
|
|
73
73
|
|
|
74
|
-
Each package-ecosystem language piece proposes
|
|
74
|
+
Each package-ecosystem language piece proposes a host's opaque
|
|
75
75
|
`Connected development` section containing only
|
|
76
76
|
`- Default package type: \`<type>\``:
|
|
77
77
|
|
|
@@ -96,8 +96,8 @@ leaves the section as a project decision: `genesis stack add` succeeds, reports
|
|
|
96
96
|
`STACK_SECTION_AMBIGUOUS` with each proposal, and the project authors one
|
|
97
97
|
section choosing its default.
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
recipe. The project must add its real source-map, preparation and verification
|
|
99
|
+
A host can inspect this default without treating it as a prepared development
|
|
100
|
+
recipe; the consuming host owns the grammar. The project must add its real source-map, preparation and verification
|
|
101
101
|
declarations before connected development can run; no repositories or commands
|
|
102
102
|
are inferred from selecting a language. A project-owned section wins unchanged,
|
|
103
103
|
including an explicit different default.
|
package/package.json
CHANGED
package/stacks/pieces/csharp.md
CHANGED
|
@@ -28,8 +28,8 @@ C# namespace, public type, dependency, lifecycle, and test conventions.
|
|
|
28
28
|
supplied `extensions.payments` semantics and verify signatures, deduplication,
|
|
29
29
|
entitlement transitions and transactional credits using controlled fixtures.
|
|
30
30
|
Native implementation remains required; guidance is not a working connector.
|
|
31
|
-
- The proposed `## Connected development` section
|
|
32
|
-
|
|
31
|
+
- The proposed host-owned `## Connected development` section names `nuget` as
|
|
32
|
+
the default package type. It does not declare repositories or
|
|
33
33
|
executable preparation. When connected development is needed, preserve that
|
|
34
34
|
default in the complete project-owned section and declare the application's
|
|
35
35
|
real Sources file and Prepare/Verify commands. An explicit `custom` connection
|
|
@@ -43,6 +43,10 @@ C# namespace, public type, dependency, lifecycle, and test conventions.
|
|
|
43
43
|
enters a NuGet cache. Do not restore in locked mode while connected. Verify
|
|
44
44
|
that `obj/project.assets.json` resolves each package as a project at its
|
|
45
45
|
source root.
|
|
46
|
+
- Running a web process: bind the supplied listen host and port, trust forwarded
|
|
47
|
+
headers only from a loopback proxy, and read secrets from the environment.
|
|
48
|
+
ASP.NET Core: call `UseForwardedHeaders` with the loopback addresses in
|
|
49
|
+
`KnownProxies`, and take the listen URL from `ASPNETCORE_URLS` or `--urls`.
|
|
46
50
|
|
|
47
51
|
## Connected development
|
|
48
52
|
|
package/stacks/pieces/go.md
CHANGED
|
@@ -28,8 +28,8 @@ Go package, exported callable, interface, concurrency, resource, and test conven
|
|
|
28
28
|
supplied `extensions.payments` semantics and verify signatures, deduplication,
|
|
29
29
|
entitlement transitions and transactional credits using controlled fixtures.
|
|
30
30
|
Native implementation remains required; guidance is not a working connector.
|
|
31
|
-
- The proposed `## Connected development` section
|
|
32
|
-
|
|
31
|
+
- The proposed host-owned `## Connected development` section names `gomod` as
|
|
32
|
+
the default package type. It does not declare repositories or
|
|
33
33
|
executable preparation. When connected development is needed, preserve that
|
|
34
34
|
default in the complete project-owned section and declare the application's
|
|
35
35
|
real Sources file and Prepare/Verify commands. An explicit `custom` connection
|
|
@@ -41,6 +41,10 @@ Go package, exported callable, interface, concurrency, resource, and test conven
|
|
|
41
41
|
and `go.sum` stay unchanged. Verify `go env GOWORK` and that
|
|
42
42
|
`go list -deps ./...` loads each connected module from its source root, then
|
|
43
43
|
`go build ./...`. Do not set `-mod=mod` or run `go work sync` while connected.
|
|
44
|
+
- Running a web process: bind the supplied listen host and port, trust forwarded
|
|
45
|
+
headers only from a loopback proxy, and read secrets from the environment.
|
|
46
|
+
Take the listen address from an argument or environment variable rather than
|
|
47
|
+
hard-coding it.
|
|
44
48
|
|
|
45
49
|
## Connected development
|
|
46
50
|
|
package/stacks/pieces/java.md
CHANGED
|
@@ -28,8 +28,8 @@ Java package, public type, dependency, lifecycle, and test conventions.
|
|
|
28
28
|
supplied `extensions.payments` semantics and verify signatures, deduplication,
|
|
29
29
|
entitlement transitions and transactional credits using controlled fixtures.
|
|
30
30
|
Native implementation remains required; guidance is not a working connector.
|
|
31
|
-
- The proposed `## Connected development` section
|
|
32
|
-
|
|
31
|
+
- The proposed host-owned `## Connected development` section names `maven` as
|
|
32
|
+
the default package type. It does not declare repositories or
|
|
33
33
|
executable preparation. When connected development is needed, preserve that
|
|
34
34
|
default in the complete project-owned section and declare the application's
|
|
35
35
|
real Sources file and Prepare/Verify commands. An explicit `custom` connection
|
|
@@ -44,6 +44,10 @@ Java package, public type, dependency, lifecycle, and test conventions.
|
|
|
44
44
|
unchanged. Verify resolves the classpath through Maven and requires the jar
|
|
45
45
|
to match the checkout's freshly built one. Run Prepare again after editing
|
|
46
46
|
connected source.
|
|
47
|
+
- Running a web process: bind the supplied listen host and port, trust forwarded
|
|
48
|
+
headers only from a loopback proxy, and read secrets from the environment.
|
|
49
|
+
Spring Boot: set `server.address`/`server.port` from the supplied values and
|
|
50
|
+
`server.forward-headers-strategy=framework`.
|
|
47
51
|
|
|
48
52
|
## Connected development
|
|
49
53
|
|
package/stacks/pieces/jskit.md
CHANGED
|
@@ -44,6 +44,14 @@ https://mobily-enterprises.github.io/jskit-ai/
|
|
|
44
44
|
- Keep resource-load and field errors in context, but route transient
|
|
45
45
|
user-command failures through JSKIT's shared non-layout-shifting action
|
|
46
46
|
feedback/snackbar path.
|
|
47
|
+
- When declared, `TEST_DB_NAME` is the exact disposable integration database and
|
|
48
|
+
`BROWSER_TEST_DB_NAME` is a separate reusable browser-fixture database whose
|
|
49
|
+
migration ledger survives routine runs. Never reset `DB_NAME`, share these
|
|
50
|
+
identities, or point a test runner's `DB_NAME` elsewhere to pass safety checks.
|
|
51
|
+
Routine browser-test startup reuses the isolated test schema, applies only
|
|
52
|
+
pending migrations and resets fixtures deterministically; it does not drop or
|
|
53
|
+
rebuild the database or run a production frontend build per check. Keep
|
|
54
|
+
fresh-schema migration checks separate.
|
|
47
55
|
|
|
48
56
|
- When application integrations are requested or `integrations.json` exists,
|
|
49
57
|
treat that file as the application-owned configuration used by both editor
|
|
@@ -86,15 +94,17 @@ https://mobily-enterprises.github.io/jskit-ai/
|
|
|
86
94
|
- Inspect existing setup and database preparation for both migration discovery
|
|
87
95
|
and an app-owned idempotent seed. Never infer `db:prepare` from the selected
|
|
88
96
|
component when the script or preparation file does not exist.
|
|
89
|
-
- When
|
|
90
|
-
command, selectors, protocol, environment names,
|
|
91
|
-
|
|
92
|
-
substitute for this application
|
|
97
|
+
- When the project declares an application-owned identity exchange for a host's
|
|
98
|
+
browser preview, preserve its command, selectors, protocol, environment names,
|
|
99
|
+
runtime and timeout in the project's existing section.
|
|
100
|
+
A host-saved identity name/value is not a substitute for this application
|
|
101
|
+
contract.
|
|
93
102
|
- Treat generator descriptors, receipts, sync commands, legacy service
|
|
94
103
|
locators, and retired tool manifests as migration evidence only. Translate
|
|
95
104
|
live facts into current source/Stack and report remaining port work; do not
|
|
96
105
|
add compatibility readers or claim adoption performed the port.
|
|
97
|
-
- Review the
|
|
106
|
+
- Review the proposed `## Resource estimates` section (a host-owned opaque
|
|
107
|
+
section whose grammar belongs to the consuming host) against the application's
|
|
98
108
|
actual Outputs target ids and Workspace setup. Its initial Node development
|
|
99
109
|
estimates are planning hints, not measured requirements, hard memory limits,
|
|
100
110
|
or a promise of available capacity. Keep startup/build and ready runtime
|
package/stacks/pieces/kotlin.md
CHANGED
|
@@ -28,8 +28,8 @@ Kotlin package, public callable, coroutine, nullability, build, and test convent
|
|
|
28
28
|
supplied `extensions.payments` semantics and verify signatures, deduplication,
|
|
29
29
|
entitlement transitions and transactional credits using controlled fixtures.
|
|
30
30
|
Native implementation remains required; guidance is not a working connector.
|
|
31
|
-
- The proposed `## Connected development` section
|
|
32
|
-
|
|
31
|
+
- The proposed host-owned `## Connected development` section names `gradle` as
|
|
32
|
+
the default package type. It does not declare repositories or
|
|
33
33
|
executable preparation. When connected development is needed, preserve that
|
|
34
34
|
default in the complete project-owned section and declare the application's
|
|
35
35
|
real Sources file and Prepare/Verify commands. An explicit `custom` connection
|
|
@@ -42,6 +42,10 @@ Kotlin package, public callable, coroutine, nullability, build, and test convent
|
|
|
42
42
|
the included build from source, so no tracked settings or lockfiles change.
|
|
43
43
|
Verify resolves `runtimeClasspath` and requires each connected artifact to
|
|
44
44
|
come from an included build inside its source root.
|
|
45
|
+
- Running a web process: bind the supplied listen host and port, trust forwarded
|
|
46
|
+
headers only from a loopback proxy, and read secrets from the environment.
|
|
47
|
+
Spring Boot: set `server.address`/`server.port` from the supplied values and
|
|
48
|
+
`server.forward-headers-strategy=framework`.
|
|
45
49
|
|
|
46
50
|
## Connected development
|
|
47
51
|
|
|
@@ -51,9 +51,10 @@ Laravel MySQL connection, migration, Eloquent, and database environment conventi
|
|
|
51
51
|
|
|
52
52
|
## Guidance
|
|
53
53
|
|
|
54
|
-
- Use Laravel's application-owned migrations and seeders.
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
- Use Laravel's application-owned migrations and seeders. The laravel piece's
|
|
55
|
+
proposed setup runs `php artisan migrate`; production deployment runs
|
|
56
|
+
`php artisan migrate --force` in its migration step. Never use routine
|
|
57
|
+
`migrate:fresh`.
|
|
57
58
|
- Keep the project Resource contract aligned with `config/database.php` if the
|
|
58
59
|
application deliberately changes Laravel's conventional environment names.
|
|
59
60
|
|
|
@@ -51,9 +51,10 @@ Laravel PostgreSQL connection, migration, Eloquent, and database environment con
|
|
|
51
51
|
|
|
52
52
|
## Guidance
|
|
53
53
|
|
|
54
|
-
- Use Laravel's application-owned migrations and seeders.
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
- Use Laravel's application-owned migrations and seeders. The laravel piece's
|
|
55
|
+
proposed setup runs `php artisan migrate`; production deployment runs
|
|
56
|
+
`php artisan migrate --force` in its migration step. Never use routine
|
|
57
|
+
`migrate:fresh`.
|
|
57
58
|
- Keep the project Resource contract aligned with `config/database.php` if the
|
|
58
59
|
application deliberately changes Laravel's conventional environment names.
|
|
59
60
|
|
|
@@ -42,11 +42,14 @@ Laravel SQLite connection, migration, and database filename conventions.
|
|
|
42
42
|
with any application-specific names. Laravel expects an absolute filename;
|
|
43
43
|
preserve a host-supplied value. For standalone setup, create the selected file
|
|
44
44
|
only if absent and configure its absolute path before migration.
|
|
45
|
-
- Verify the selected PHP runtime includes `pdo_sqlite`. Use
|
|
46
|
-
migrations and seeders
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
- Verify the selected PHP runtime includes `pdo_sqlite`. Use Laravel's
|
|
46
|
+
application-owned migrations and seeders. The laravel piece's proposed setup
|
|
47
|
+
runs `php artisan migrate`; production deployment runs
|
|
48
|
+
`php artisan migrate --force` in its migration step. Never use routine
|
|
49
|
+
`migrate:fresh`. `migrate --no-interaction` creates a missing SQLite file at
|
|
50
|
+
the configured absolute path. Repeated setup must preserve records, the
|
|
51
|
+
migration ledger, and the application key supplied through the environment
|
|
52
|
+
(see laravel); do not regenerate keys as routine preparation.
|
|
50
53
|
- Consult the installed Laravel version's SQLite configuration documentation at
|
|
51
54
|
`https://laravel.com/docs/database#sqlite-configuration`.
|
|
52
55
|
|
package/stacks/pieces/laravel.md
CHANGED
|
@@ -20,6 +20,27 @@ conventions. Authoritative framework documentation: https://laravel.com/docs/
|
|
|
20
20
|
values and secrets outside Git.
|
|
21
21
|
- Use Laravel's built-in `/up` health route unless the application deliberately
|
|
22
22
|
changes it and updates its project Outputs contract.
|
|
23
|
+
- `APP_KEY` is required. Generate it once with
|
|
24
|
+
`php artisan key:generate --show` and supply it through the environment
|
|
25
|
+
facility as a secret. Never commit it, and never run `key:generate` without
|
|
26
|
+
`--show` against a generated or shared environment file. Rotating it
|
|
27
|
+
invalidates sessions and encrypted data.
|
|
28
|
+
- The proposed Workspace setup runs `php artisan migrate --force` after Composer
|
|
29
|
+
installation. Setup never uses `migrate:fresh`; development sets
|
|
30
|
+
`APP_ENV=local`.
|
|
31
|
+
- A production deployment runs, in order:
|
|
32
|
+
`composer install --no-dev --optimize-autoloader --no-interaction`,
|
|
33
|
+
`npm ci` and `npm run build`, optionally `php artisan config:cache` and
|
|
34
|
+
`php artisan route:cache`, then `php artisan migrate --force`, then serves the
|
|
35
|
+
application on the listen address the host supplies. Readiness is `/up`;
|
|
36
|
+
`vendor` and `node_modules` are recreated rather than restored.
|
|
37
|
+
- Behind a local reverse proxy, trust only its loopback address (Laravel 11+:
|
|
38
|
+
`$middleware->trustProxies(at: ['127.0.0.1', '::1'])` in
|
|
39
|
+
`bootstrap/app.php`; older versions: `TrustProxies::$proxies`) so `url()`,
|
|
40
|
+
`asset()` and redirects use the forwarded scheme, host and port. Set
|
|
41
|
+
`APP_URL` for console-generated URLs. A stale `public/hot` makes `@vite`
|
|
42
|
+
point at a stopped development server: delete it when `npm run dev` is not
|
|
43
|
+
running.
|
|
23
44
|
|
|
24
45
|
- When application integrations are requested or `integrations.json` exists,
|
|
25
46
|
read the application-owned file and the selected provider's supplied static
|
|
@@ -46,8 +67,8 @@ conventions. Authoritative framework documentation: https://laravel.com/docs/
|
|
|
46
67
|
never accept an administrator flag from JSON. Keep commands usable from an
|
|
47
68
|
ordinary CLI outside the editor. Verify with native tests and controlled
|
|
48
69
|
provider fixtures; no Node or JSKIT runtime is required for integrations.
|
|
49
|
-
- The proposed `## Connected development` section
|
|
50
|
-
|
|
70
|
+
- The proposed host-owned `## Connected development` section names `composer` as
|
|
71
|
+
the default package type; because Laravel requires `php` and
|
|
51
72
|
`nodejs`, it supersedes their proposals. It does not declare repositories or
|
|
52
73
|
executable preparation. When connected development is needed, preserve that
|
|
53
74
|
default in the complete project-owned section and declare the application's
|
|
@@ -81,6 +102,7 @@ conventions. Authoritative framework documentation: https://laravel.com/docs/
|
|
|
81
102
|
## Workspace setup
|
|
82
103
|
|
|
83
104
|
- Prepare `Install PHP dependencies` with `php` when `composer.json` exists: `composer` `install` `--no-interaction`
|
|
105
|
+
- Prepare `Migrate database` with `php` when `artisan` exists: `php` `artisan` `migrate` `--force` `--no-interaction`
|
|
84
106
|
- Prepare `Install frontend dependencies` with `nodejs` when `package.json` exists: `npm` `install`
|
|
85
107
|
- Prepare `Build frontend assets` with `nodejs` when `package.json` exists: `npm` `run` `build`
|
|
86
108
|
|
package/stacks/pieces/nodejs.md
CHANGED
|
@@ -28,8 +28,8 @@ Node.js package, command, module, dependency, and test conventions.
|
|
|
28
28
|
supplied `extensions.payments` semantics and verify signatures, deduplication,
|
|
29
29
|
entitlement transitions and transactional credits using controlled fixtures.
|
|
30
30
|
Native implementation remains required; guidance is not a working connector.
|
|
31
|
-
- The proposed `## Connected development` section
|
|
32
|
-
|
|
31
|
+
- The proposed host-owned `## Connected development` section names `npm` as
|
|
32
|
+
the default package type. It does not declare repositories or executable
|
|
33
33
|
preparation. When connected development is needed, preserve that default in
|
|
34
34
|
the complete project-owned section and declare the application's real source
|
|
35
35
|
map, preparation and verification commands. An explicit `custom` connection
|
|
@@ -41,6 +41,9 @@ Node.js package, command, module, dependency, and test conventions.
|
|
|
41
41
|
`package.json` and `package-lock.json` stay unchanged; Verify resolves each
|
|
42
42
|
package from the application root and fails unless it resolves to its
|
|
43
43
|
connected source root. An ordinary `npm ci` restores the published packages.
|
|
44
|
+
- Long-running web processes accept their listen host and port from arguments
|
|
45
|
+
or the environment rather than hard-coding them, and fail if the port is
|
|
46
|
+
taken instead of silently choosing another.
|
|
44
47
|
|
|
45
48
|
## Adoption
|
|
46
49
|
|
|
@@ -64,7 +67,8 @@ Node.js package, command, module, dependency, and test conventions.
|
|
|
64
67
|
`npm test`, or `npm start` exists merely because a current foundation uses it.
|
|
65
68
|
- Identify every long-running process, its workdir, host/port handling,
|
|
66
69
|
readiness signal, and shutdown ownership before declaring Outputs.
|
|
67
|
-
- For
|
|
70
|
+
- For a host's optional `## Resource estimates` section (an opaque section
|
|
71
|
+
whose grammar belongs to that host), distinguish dependency preparation,
|
|
68
72
|
startup/build, and the ready runtime of each real declared output. For an
|
|
69
73
|
unmeasured Node web development target, initial planning candidates are
|
|
70
74
|
startup 1024 MiB typical / 1536 MiB high and running 768 MiB typical / 1536 MiB
|
package/stacks/pieces/php.md
CHANGED
|
@@ -28,8 +28,8 @@ PHP package, namespace, callable, dependency, and test conventions.
|
|
|
28
28
|
supplied `extensions.payments` semantics and verify signatures, deduplication,
|
|
29
29
|
entitlement transitions and transactional credits using controlled fixtures.
|
|
30
30
|
Native implementation remains required; guidance is not a working connector.
|
|
31
|
-
- The proposed `## Connected development` section
|
|
32
|
-
|
|
31
|
+
- The proposed host-owned `## Connected development` section names `composer` as
|
|
32
|
+
the default package type. It does not declare repositories or
|
|
33
33
|
executable preparation. When connected development is needed, preserve that
|
|
34
34
|
default in the complete project-owned section and declare the application's
|
|
35
35
|
real Sources file and Prepare/Verify commands. An explicit `custom` connection
|
|
@@ -42,6 +42,9 @@ PHP package, namespace, callable, dependency, and test conventions.
|
|
|
42
42
|
`COMPOSER=<derived manifest> composer update <connected packages>`. The
|
|
43
43
|
tracked `composer.json` and `composer.lock` stay unchanged. Verify checks
|
|
44
44
|
`InstalledVersions::getInstallPath()` against each source root.
|
|
45
|
+
- Running a web process: bind the supplied listen host and port, trust forwarded
|
|
46
|
+
headers only from a loopback proxy, and read secrets from the environment. The
|
|
47
|
+
built-in server is `php -S <host>:<port> -t public` for development only.
|
|
45
48
|
|
|
46
49
|
## Connected development
|
|
47
50
|
|
package/stacks/pieces/python.md
CHANGED
|
@@ -28,8 +28,8 @@ Python package, module, callable, dependency, and test conventions.
|
|
|
28
28
|
supplied `extensions.payments` semantics and verify signatures, deduplication,
|
|
29
29
|
entitlement transitions and transactional credits using controlled fixtures.
|
|
30
30
|
Native implementation remains required; guidance is not a working connector.
|
|
31
|
-
- The proposed `## Connected development` section
|
|
32
|
-
|
|
31
|
+
- The proposed host-owned `## Connected development` section names `pip` as
|
|
32
|
+
the default package type. It does not declare repositories or executable
|
|
33
33
|
preparation. When connected development is needed, preserve that default in
|
|
34
34
|
the complete project-owned section and declare the application's real Sources
|
|
35
35
|
file and Prepare/Verify commands. An explicit `custom` connection uses its
|
|
@@ -42,6 +42,13 @@ Python package, module, callable, dependency, and test conventions.
|
|
|
42
42
|
PEP 610 `direct_url.json` is editable with the source root's `file:` URL and
|
|
43
43
|
that its modules import from there. Do not use `uv sync`, which needs tracked
|
|
44
44
|
`[tool.uv.sources]` and lockfile changes.
|
|
45
|
+
- Running a web process: bind the supplied listen host and port, trust forwarded
|
|
46
|
+
headers only from a loopback proxy, and read secrets from the environment.
|
|
47
|
+
Django: set `ALLOWED_HOSTS` and `CSRF_TRUSTED_ORIGINS` for the served origin
|
|
48
|
+
(`ALLOWED_HOSTS` also lists the loopback host the proxy connects to),
|
|
49
|
+
`SECURE_PROXY_SSL_HEADER` and `USE_X_FORWARDED_HOST` only behind that trusted
|
|
50
|
+
proxy, and read `SECRET_KEY` from the environment. Flask uses Werkzeug's
|
|
51
|
+
`ProxyFix`; Uvicorn uses `--proxy-headers --forwarded-allow-ips 127.0.0.1`.
|
|
45
52
|
|
|
46
53
|
## Connected development
|
|
47
54
|
|
package/stacks/pieces/ruby.md
CHANGED
|
@@ -28,8 +28,8 @@ Ruby module, class, callable, dependency, lifecycle, and test conventions.
|
|
|
28
28
|
supplied `extensions.payments` semantics and verify signatures, deduplication,
|
|
29
29
|
entitlement transitions and transactional credits using controlled fixtures.
|
|
30
30
|
Native implementation remains required; guidance is not a working connector.
|
|
31
|
-
- The proposed `## Connected development` section
|
|
32
|
-
|
|
31
|
+
- The proposed host-owned `## Connected development` section names `bundler` as
|
|
32
|
+
the default package type. It does not declare repositories or
|
|
33
33
|
executable preparation. When connected development is needed, preserve that
|
|
34
34
|
default in the complete project-owned section and declare the application's
|
|
35
35
|
real Sources file and Prepare/Verify commands. An explicit `custom` connection
|
|
@@ -43,6 +43,12 @@ Ruby module, class, callable, dependency, lifecycle, and test conventions.
|
|
|
43
43
|
Launch through `bundle exec` or export `BUNDLE_GEMFILE`: a plain
|
|
44
44
|
`require "bundler/setup"` launch ignores that setting. `local.<gem>` covers
|
|
45
45
|
only git sources. Verify that each spec loads from its source root.
|
|
46
|
+
- Running a web process: bind the supplied listen host and port, trust forwarded
|
|
47
|
+
headers only from a loopback proxy, and read secrets from the environment.
|
|
48
|
+
Rails: allow the served host and the proxy's loopback host in `config.hosts`
|
|
49
|
+
(Rails honours `X-Forwarded-Host`), read `SECRET_KEY_BASE` from the
|
|
50
|
+
environment (generate it with `bin/rails secret`), and use
|
|
51
|
+
`bin/rails db:prepare` for setup.
|
|
46
52
|
|
|
47
53
|
## Connected development
|
|
48
54
|
|
package/stacks/pieces/rust.md
CHANGED
|
@@ -28,8 +28,8 @@ Rust module, public item, ownership, error, async, Cargo, and test conventions.
|
|
|
28
28
|
supplied `extensions.payments` semantics and verify signatures, deduplication,
|
|
29
29
|
entitlement transitions and transactional credits using controlled fixtures.
|
|
30
30
|
Native implementation remains required; guidance is not a working connector.
|
|
31
|
-
- The proposed `## Connected development` section
|
|
32
|
-
|
|
31
|
+
- The proposed host-owned `## Connected development` section names `cargo` as
|
|
32
|
+
the default package type. It does not declare repositories or
|
|
33
33
|
executable preparation. When connected development is needed, preserve that
|
|
34
34
|
default in the complete project-owned section and declare the application's
|
|
35
35
|
real Sources file and Prepare/Verify commands. An explicit `custom` connection
|
|
@@ -42,6 +42,10 @@ Rust module, public item, ownership, error, async, Cargo, and test conventions.
|
|
|
42
42
|
lockfile. This requires Cargo 1.97 or later. Verify with
|
|
43
43
|
`cargo metadata --locked` that each crate resolves from its source root with
|
|
44
44
|
no registry source, then `cargo build --locked`.
|
|
45
|
+
- Running a web process: bind the supplied listen host and port, trust forwarded
|
|
46
|
+
headers only from a loopback proxy, and read secrets from the environment.
|
|
47
|
+
Take the listen address from an argument or environment variable rather than
|
|
48
|
+
hard-coding it.
|
|
45
49
|
|
|
46
50
|
## Connected development
|
|
47
51
|
|
package/stacks/pieces/vue.md
CHANGED
|
@@ -29,6 +29,12 @@ conventions. Authoritative framework documentation: https://vuejs.org/
|
|
|
29
29
|
the subject and verifies webhooks. A successful browser redirect is not proof
|
|
30
30
|
of payment. Preserve drafts, focus, pending/error states and selected accounts
|
|
31
31
|
across responsive changes; use the project's established resource composables.
|
|
32
|
+
- Start the Vite development server on the supplied address with
|
|
33
|
+
`--host <host> --port <port> --strictPort`. Behind a proxy that rewrites Host
|
|
34
|
+
to loopback, keep Vite's default `allowedHosts` and HMR client settings; the
|
|
35
|
+
HMR client connects through the page's own origin. Do not set
|
|
36
|
+
`allowedHosts: true` or hard-code `server.hmr.host`, `clientPort` or `origin`
|
|
37
|
+
unless that proxy requires it.
|
|
32
38
|
|
|
33
39
|
### Reactive state hydration
|
|
34
40
|
|
|
@@ -48,5 +54,5 @@ conventions. Authoritative framework documentation: https://vuejs.org/
|
|
|
48
54
|
working host-managed browser contract during adoption.
|
|
49
55
|
- Attribute a Vue build/dev server's memory to its actual Node output target.
|
|
50
56
|
Vue selection does not create a second service or another memory charge.
|
|
51
|
-
Review any
|
|
57
|
+
Review any host-owned Resource estimates in the project's existing complete
|
|
52
58
|
section; this piece does not propose a competing section alongside a framework.
|