genesis-stack 1.1.6 → 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 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 Vibe64's optional `Resource estimates` section for its concrete
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. Vibe64 owns the grammar and a host owns admission, learned consumption
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.
@@ -69,18 +69,42 @@ Projects with different output ids or commands must review the proposal during
69
69
  preparation. A project can omit estimates and use its host's generic starting
70
70
  policy. Neither the catalog nor the project stores host observations or limits.
71
71
 
72
- ## Connected package default
73
-
74
- Node proposes Vibe64's opaque `Connected development` section containing only
75
- `- Default package type: \`npm\``. Vibe64 can inspect this default without treating
76
- it as a prepared development recipe. The project must add its real source-map,
77
- preparation and verification declarations before connected development can run;
78
- no repositories or commands are inferred from selecting Node. A project-owned
79
- section wins unchanged, including an explicit different default.
80
-
81
- For an existing current-format project whose selected Node catalog gains this
72
+ ## Connected package defaults
73
+
74
+ Each package-ecosystem language piece proposes a host's opaque
75
+ `Connected development` section containing only
76
+ `- Default package type: \`<type>\``:
77
+
78
+ | Piece | Default |
79
+ | --- | --- |
80
+ | `nodejs` | `npm` |
81
+ | `php` | `composer` |
82
+ | `python` | `pip` |
83
+ | `ruby` | `bundler` |
84
+ | `go` | `gomod` |
85
+ | `rust` | `cargo` |
86
+ | `java` | `maven` |
87
+ | `kotlin` | `gradle` |
88
+ | `csharp` | `nuget` |
89
+ | `laravel` | `composer` |
90
+
91
+ Laravel requires `php` and `nodejs`, so its proposal supersedes theirs; npm
92
+ front-end repositories can still declare an explicit `npm` type per connection.
93
+ `cpp` and `shell` propose no default: their connections use an explicit
94
+ `custom` type with a project script. Selecting several unrelated languages
95
+ leaves the section as a project decision: `genesis stack add` succeeds, reports
96
+ `STACK_SECTION_AMBIGUOUS` with each proposal, and the project authors one
97
+ section choosing its default.
98
+
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
+ declarations before connected development can run; no repositories or commands
102
+ are inferred from selecting a language. A project-owned section wins unchanged,
103
+ including an explicit different default.
104
+
105
+ For an existing current-format project whose selected catalog gains this
82
106
  proposal, Genesis reports `STACK_PROJECT_CONTRACTS_INCOMPLETE` if the project
83
107
  section is missing. Explicitly reconcile the already-selected Stack with
84
- `genesis stack add nodejs`, then review the materialized contract. Older project
108
+ `genesis stack add <component>`, then review the materialized contract. Older project
85
109
  formats use the normal `genesis migrate` workflow. Catalog updates never install
86
110
  a hidden runtime default or rewrite an existing project section.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genesis-stack",
3
- "version": "1.1.6",
3
+ "version": "1.2.1",
4
4
  "description": "The optional curated technology Stack catalog for Genesis projects.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -38,6 +38,19 @@ C and C++ translation-unit, header, callable, ownership, build, and test convent
38
38
  supplied `extensions.payments` semantics and verify signatures, deduplication,
39
39
  entitlement transitions and transactional credits using controlled fixtures.
40
40
  Native implementation remains required; guidance is not a working connector.
41
+ - This component has no package-ecosystem default and proposes no
42
+ `## Connected development` section. A connection it consumes should use an
43
+ explicit `custom` type with a project-defined script, for example a CMake
44
+ build that uses the connected source. When a project selects several
45
+ languages, its own complete `## Connected development` section chooses the
46
+ one default.
47
+ - A proven custom treatment for CMake FetchContent: the project script
48
+ configures an untracked build tree with
49
+ `-DFETCHCONTENT_SOURCE_DIR_<UPPERNAME>=<source root>`, so `CMakeLists.txt`
50
+ stays unchanged, and verifies from `compile_commands.json` that the
51
+ dependency's sources come from the connected checkout rather than a
52
+ `_deps/*-src` download. The project owns the repository-to-dependency name
53
+ mapping.
41
54
 
42
55
  ## Adoption
43
56
 
@@ -28,6 +28,29 @@ 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 host-owned `## Connected development` section names `nuget` as
32
+ the default package type. It does not declare repositories or
33
+ executable preparation. When connected development is needed, preserve that
34
+ default in the complete project-owned section and declare the application's
35
+ real Sources file and Prepare/Verify commands. An explicit `custom` connection
36
+ uses its project-defined script instead of `nuget` treatment. Do not invent a
37
+ working recipe from the component name.
38
+ - A proven NuGet treatment: Prepare writes an untracked, Git-excluded
39
+ `Directory.Build.targets` beside each consuming project that replaces the
40
+ connected `PackageReference` with a `ProjectReference` to the checkout's
41
+ project and moves the restore lock under `obj/`, so project files,
42
+ `nuget.config` and `packages.lock.json` stay unchanged and no shadow package
43
+ enters a NuGet cache. Do not restore in locked mode while connected. Verify
44
+ that `obj/project.assets.json` resolves each package as a project at its
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`.
50
+
51
+ ## Connected development
52
+
53
+ - Default package type: `nuget`
31
54
 
32
55
  ## Deslop
33
56
 
@@ -28,6 +28,27 @@ 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 host-owned `## Connected development` section names `gomod` as
32
+ the default package type. It does not declare repositories or
33
+ executable preparation. When connected development is needed, preserve that
34
+ default in the complete project-owned section and declare the application's
35
+ real Sources file and Prepare/Verify commands. An explicit `custom` connection
36
+ uses its project-defined script instead of `gomod` treatment. Do not invent a
37
+ working recipe from the component name.
38
+ - A proven Go modules treatment: Prepare writes an untracked, ignored `go.work`
39
+ at the module root with `use . <source root>...` (also ignore
40
+ `go.work.sum`). Workspace modules replace the required versions, so `go.mod`
41
+ and `go.sum` stay unchanged. Verify `go env GOWORK` and that
42
+ `go list -deps ./...` loads each connected module from its source root, then
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.
48
+
49
+ ## Connected development
50
+
51
+ - Default package type: `gomod`
31
52
 
32
53
  ## Deslop
33
54
 
@@ -28,6 +28,30 @@ 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 host-owned `## Connected development` section names `maven` as
32
+ the default package type. It does not declare repositories or
33
+ executable preparation. When connected development is needed, preserve that
34
+ default in the complete project-owned section and declare the application's
35
+ real Sources file and Prepare/Verify commands. An explicit `custom` connection
36
+ uses its project-defined script instead of `maven` treatment. Do not invent a
37
+ working recipe from the component name.
38
+ - A proven Maven treatment (Maven 3.9.3+): Prepare installs each connected
39
+ checkout into an untracked project-local repository chained in front of the
40
+ user's, `mvn -f <source root> install -Dmaven.repo.local=<project
41
+ repository> -Dmaven.repo.local.tail=<user repository>`, and writes the same
42
+ two arguments to an ignored `.mvn/maven.config`, so ordinary `mvn` commands
43
+ resolve the connected build under unchanged coordinates and `pom.xml` stays
44
+ unchanged. Verify resolves the classpath through Maven and requires the jar
45
+ to match the checkout's freshly built one. Run Prepare again after editing
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`.
51
+
52
+ ## Connected development
53
+
54
+ - Default package type: `maven`
31
55
 
32
56
  ## Deslop
33
57
 
@@ -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 authenticated Preview exists, preserve the app-owned Preview identity
90
- command, selectors, protocol, environment names, runtime, and timeout in the
91
- project's Outputs declaration. A host-saved identity name/value is not a
92
- substitute for this application contract.
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 Vibe64-owned Resource estimates proposal against the application's
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
@@ -28,6 +28,28 @@ 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 host-owned `## Connected development` section names `gradle` as
32
+ the default package type. It does not declare repositories or
33
+ executable preparation. When connected development is needed, preserve that
34
+ default in the complete project-owned section and declare the application's
35
+ real Sources file and Prepare/Verify commands. An explicit `custom` connection
36
+ uses its project-defined script instead of `gradle` treatment. Do not invent a
37
+ working recipe from the component name.
38
+ - A proven Gradle treatment: Prepare writes an ignored init script, such as
39
+ `.development/connected.init.gradle.kts`, containing
40
+ `settingsEvaluated { includeBuild("<source root>") }`, and connected launches
41
+ pass `-I <init script>`; Gradle substitutes the matching `group:name` with
42
+ the included build from source, so no tracked settings or lockfiles change.
43
+ Verify resolves `runtimeClasspath` and requires each connected artifact to
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`.
49
+
50
+ ## Connected development
51
+
52
+ - Default package type: `gradle`
31
53
 
32
54
  ## Deslop
33
55
 
@@ -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. Add the exact
55
- `php artisan migrate` or production `php artisan migrate --force` operation
56
- to the applicable project contract only when that consumer owns executing it.
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. Add the exact
55
- `php artisan migrate` or production `php artisan migrate --force` operation
56
- to the applicable project contract only when that consumer owns executing it.
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 the application's
46
- migrations and seeders, and declare their exact commands in the project setup
47
- and deployment contracts. Repeated setup must preserve records, the migration
48
- ledger, and the existing application key; do not use `migrate:fresh` or
49
- regenerate keys as routine preparation.
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
 
@@ -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,6 +67,22 @@ 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.
70
+ - The proposed host-owned `## Connected development` section names `composer` as
71
+ the default package type; because Laravel requires `php` and
72
+ `nodejs`, it supersedes their proposals. It does not declare repositories or
73
+ executable preparation. When connected development is needed, preserve that
74
+ default in the complete project-owned section and declare the application's
75
+ real Sources file and Prepare/Verify commands. An npm front-end repository can
76
+ set an explicit `npm` type for its connection, and an explicit `custom`
77
+ connection uses its project-defined script. Do not invent a working recipe
78
+ from the component name.
79
+ - A proven Composer treatment: Prepare writes an untracked derived manifest,
80
+ such as `composer.connected.json`, that adds a first `path` repository
81
+ (`symlink: true`, locked version pinned) for each connected source, copies
82
+ `composer.lock` to the matching derived lock and runs
83
+ `COMPOSER=<derived manifest> composer update <connected packages>`. The
84
+ tracked `composer.json` and `composer.lock` stay unchanged. Verify checks
85
+ `InstalledVersions::getInstallPath()` against each source root.
49
86
 
50
87
  ## Adoption
51
88
 
@@ -65,6 +102,7 @@ conventions. Authoritative framework documentation: https://laravel.com/docs/
65
102
  ## Workspace setup
66
103
 
67
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`
68
106
  - Prepare `Install frontend dependencies` with `nodejs` when `package.json` exists: `npm` `install`
69
107
  - Prepare `Build frontend assets` with `nodejs` when `package.json` exists: `npm` `run` `build`
70
108
 
@@ -88,6 +126,10 @@ conventions. Authoritative framework documentation: https://laravel.com/docs/
88
126
 
89
127
  - Verify `application`: `php` `artisan` `test`
90
128
 
129
+ ## Connected development
130
+
131
+ - Default package type: `composer`
132
+
91
133
  ## Deslop
92
134
 
93
135
  - Preserve Laravel's container, providers, middleware, policies, requests,
@@ -28,16 +28,25 @@ 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
-
32
- ## Adoption
33
-
34
- - The proposed `## Connected development` section declares Vibe64's default
35
- connected package type, `npm`. It does not declare repositories or executable
31
+ - The proposed host-owned `## Connected development` section names `npm` as
32
+ the default package type. It does not declare repositories or executable
36
33
  preparation. When connected development is needed, preserve that default in
37
34
  the complete project-owned section and declare the application's real source
38
35
  map, preparation and verification commands. An explicit `custom` connection
39
36
  uses its project-defined script instead of npm treatment. Do not invent a
40
37
  working recipe from the component name.
38
+ - A proven npm treatment: Prepare runs
39
+ `npm install --no-save --install-links=false <source root>...` for the
40
+ connected dependencies, which links each checkout into `node_modules` while
41
+ `package.json` and `package-lock.json` stay unchanged; Verify resolves each
42
+ package from the application root and fails unless it resolves to its
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.
47
+
48
+ ## Adoption
49
+
41
50
  - Identify the package manager from the lockfile and preserve the existing
42
51
  module system, supported Node.js version, package entrypoints, and executable
43
52
  commands.
@@ -58,7 +67,8 @@ Node.js package, command, module, dependency, and test conventions.
58
67
  `npm test`, or `npm start` exists merely because a current foundation uses it.
59
68
  - Identify every long-running process, its workdir, host/port handling,
60
69
  readiness signal, and shutdown ownership before declaring Outputs.
61
- - For Vibe64's optional Resource estimates, distinguish dependency preparation,
70
+ - For a host's optional `## Resource estimates` section (an opaque section
71
+ whose grammar belongs to that host), distinguish dependency preparation,
62
72
  startup/build, and the ready runtime of each real declared output. For an
63
73
  unmeasured Node web development target, initial planning candidates are
64
74
  startup 1024 MiB typical / 1536 MiB high and running 768 MiB typical / 1536 MiB
@@ -28,6 +28,27 @@ 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 host-owned `## Connected development` section names `composer` as
32
+ the default package type. It does not declare repositories or
33
+ executable preparation. When connected development is needed, preserve that
34
+ default in the complete project-owned section and declare the application's
35
+ real Sources file and Prepare/Verify commands. An explicit `custom` connection
36
+ uses its project-defined script instead of `composer` treatment. Do not invent
37
+ a working recipe from the component name.
38
+ - A proven Composer treatment: Prepare writes an untracked derived manifest,
39
+ such as `composer.connected.json`, that adds a first `path` repository
40
+ (`symlink: true`, locked version pinned) for each connected source, copies
41
+ `composer.lock` to the matching derived lock and runs
42
+ `COMPOSER=<derived manifest> composer update <connected packages>`. The
43
+ tracked `composer.json` and `composer.lock` stay unchanged. Verify checks
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.
48
+
49
+ ## Connected development
50
+
51
+ - Default package type: `composer`
31
52
 
32
53
  ## Deslop
33
54
 
@@ -28,6 +28,31 @@ 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 host-owned `## Connected development` section names `pip` as
32
+ the default package type. It does not declare repositories or executable
33
+ preparation. When connected development is needed, preserve that default in
34
+ the complete project-owned section and declare the application's real Sources
35
+ file and Prepare/Verify commands. An explicit `custom` connection uses its
36
+ project-defined script instead of `pip` treatment. Do not invent a working
37
+ recipe from the component name.
38
+ - A proven pip treatment: install into an untracked virtual environment in one
39
+ resolution, `pip install -r <requirements> -e <source root>...` (or uv's
40
+ `uv pip install --python .venv/bin/python ...`), so each editable checkout
41
+ satisfies the application's own requirement. Verify that each package's
42
+ PEP 610 `direct_url.json` is editable with the source root's `file:` URL and
43
+ that its modules import from there. Do not use `uv sync`, which needs tracked
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`.
52
+
53
+ ## Connected development
54
+
55
+ - Default package type: `pip`
31
56
 
32
57
  ## Deslop
33
58
 
@@ -28,6 +28,31 @@ 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 host-owned `## Connected development` section names `bundler` as
32
+ the default package type. It does not declare repositories or
33
+ executable preparation. When connected development is needed, preserve that
34
+ default in the complete project-owned section and declare the application's
35
+ real Sources file and Prepare/Verify commands. An explicit `custom` connection
36
+ uses its project-defined script instead of `bundler` treatment. Do not invent
37
+ a working recipe from the component name.
38
+ - A proven Bundler treatment: Prepare writes an untracked `Gemfile.connected`
39
+ that switches each connected gem to `path: <source root>` and then
40
+ `eval_gemfile`s the tracked Gemfile, seeds `Gemfile.connected.lock` from
41
+ `Gemfile.lock`, and selects it with `bundle config set --local gemfile
42
+ Gemfile.connected`. The tracked `Gemfile` and `Gemfile.lock` stay unchanged.
43
+ Launch through `bundle exec` or export `BUNDLE_GEMFILE`: a plain
44
+ `require "bundler/setup"` launch ignores that setting. `local.<gem>` covers
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.
52
+
53
+ ## Connected development
54
+
55
+ - Default package type: `bundler`
31
56
 
32
57
  ## Deslop
33
58
 
@@ -28,6 +28,28 @@ 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 host-owned `## Connected development` section names `cargo` as
32
+ the default package type. It does not declare repositories or
33
+ executable preparation. When connected development is needed, preserve that
34
+ default in the complete project-owned section and declare the application's
35
+ real Sources file and Prepare/Verify commands. An explicit `custom` connection
36
+ uses its project-defined script instead of `cargo` treatment. Do not invent a
37
+ working recipe from the component name.
38
+ - A proven Cargo treatment: Prepare writes an untracked, ignored
39
+ `.cargo/config.toml` with `[patch.crates-io]` (or `[patch."<git url>"]`)
40
+ `<crate> = { path = "<source root>" }` and `resolver.lockfile-path` pointing
41
+ at an untracked copy of `Cargo.lock`; a patch otherwise rewrites the tracked
42
+ lockfile. This requires Cargo 1.97 or later. Verify with
43
+ `cargo metadata --locked` that each crate resolves from its source root with
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.
49
+
50
+ ## Connected development
51
+
52
+ - Default package type: `cargo`
31
53
 
32
54
  ## Deslop
33
55
 
@@ -28,6 +28,11 @@ Shell script function, process, environment, portability, 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
+ - This component has no package-ecosystem default and proposes no
32
+ `## Connected development` section. A connection it consumes should use an
33
+ explicit `custom` type with a project-defined script. When a project selects
34
+ several languages, its own complete `## Connected development` section
35
+ chooses the one default.
31
36
 
32
37
  ## Deslop
33
38
 
@@ -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 Vibe64 Resource estimates in the project's existing complete
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.