@astram/guide 0.2.3 → 0.2.4

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/CAPABILITIES.md CHANGED
@@ -142,7 +142,9 @@ imports: [
142
142
  `server/eslint.config.mjs` fails lint on driver imports, raw pools, `.query()` and the
143
143
  framework's internal DB exports anywhere in `src/**` except `app.module.ts` and `main.ts`, and on
144
144
  uuid-named route/body inputs read without `UuidPipe` / `uuidField` (`@astram/guard`). A lint
145
- rule is a backstop, not a sandbox: do not go around it.
145
+ rule is a backstop, not a sandbox: do not go around it. The uuid check matches names only
146
+ (`id`, `uuid`, `…Id(s)`, `…Uuid(s)`): it is a nudge, not a guarantee, so put `UuidPipe` on
147
+ every uuid route param and a uuid helper on every uuid body/query field whatever its name.
146
148
  - **Gap signal** — an unsupported field type or operation throws `CapabilityNotSupportedError`
147
149
  (a Rule-4 STOP). Field types this version: `string`, `number`, `boolean`, `uuid`, `timestamp`,
148
150
  `json`.
@@ -77,7 +77,11 @@ correctly.
77
77
  answer 400 for anything that is not a strict uuid and hand you the canonical lower-case
78
78
  form. The database matches uuids ignoring case, trailing spaces and character width, so
79
79
  a raw `"<id> "` reaches the row while your exact checks in code miss it. The lint wall
80
- flags uuid-named inputs (`id`, `uuid`, `…Id(s)`, `…Uuid(s)`) read without them.
80
+ flags uuid-named inputs (`id`, `uuid`, `…Id(s)`, `…Uuid(s)`) read without them, but it is a
81
+ name-based nudge, not a guarantee: a uuid under another name (`@Param('target')`), a
82
+ destructured body, a body bound to another variable name, a value read off `req` or a param
83
+ given any other pipe passes lint unchecked. Apply the
84
+ pipe or helper to every uuid input whatever its name; a clean lint run proves nothing more.
81
85
 
82
86
  ## 4. When the framework can't do it: STOP and FLAG the gap — do NOT work around it
83
87
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astram/guide",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "license": "MIT",
5
5
  "description": "Astram framework — the AI/dev GUIDE layer (ADR-0025). Ships the framework's hard rules + capabilities manifest as installed, upgrade-refreshed docs. A consumer app's CLAUDE.md references FRAMEWORK_RULES.md from this package; `npm update` replaces it wholesale so new rules arrive cleanly, while the app's own .astram/guide/ layer is never touched. This is the framework-owned FLOOR: an app rule may tighten it, never weaken it.",
6
6
  "type": "commonjs",