@ogygie/cli 0.7.0 → 0.8.0
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/dist/cli.js +18 -1
- package/package.json +2 -2
- package/templates/project/AGENTS.md +27 -12
package/dist/cli.js
CHANGED
|
@@ -14649,9 +14649,14 @@ var HttpRouteSchema = external_exports.object({
|
|
|
14649
14649
|
"Cache roots this mutation stales BEYOND its own path root (cross-feature dependency, read by the manifest-derived client \u2014 never guessed in a screen). Each value must be an existing feature name or route root"
|
|
14650
14650
|
)
|
|
14651
14651
|
});
|
|
14652
|
+
var SharedTableKindSchema = external_exports.enum(["reference", "ownerless"]);
|
|
14652
14653
|
var DbTableDeclarationSchema = external_exports.union([
|
|
14653
14654
|
external_exports.string(),
|
|
14654
|
-
external_exports.object({
|
|
14655
|
+
external_exports.object({
|
|
14656
|
+
name: external_exports.string(),
|
|
14657
|
+
shared: external_exports.literal(true),
|
|
14658
|
+
sharedKind: SharedTableKindSchema.optional()
|
|
14659
|
+
})
|
|
14655
14660
|
]);
|
|
14656
14661
|
var FeatureManifestSchema = external_exports.object({
|
|
14657
14662
|
name: FeatureNameSchema,
|
|
@@ -15569,6 +15574,18 @@ var governedChecksumsByVersion = {
|
|
|
15569
15574
|
"scripts/verify-manifest.ts": "1adca9edee11e54ccaf0511012411516c52c68a32f686ca320c7e437afb22c7c",
|
|
15570
15575
|
"scripts/verify-specs.ts": "ccf09c04155e5e88fa9acd4a5db33c2c79e85923b2d92e8e866fe9cbc4cdf342",
|
|
15571
15576
|
"tsconfig.base.json": "0f8919e9ed8bbc88e0308fa2fa91471dabb18d1df721bd78c04076597eba89a2"
|
|
15577
|
+
},
|
|
15578
|
+
"0.8.0": {
|
|
15579
|
+
".github/workflows/ogygie-gates.yml": "48c40efe9fe66dd0f9c3b94287026d80eae9afd6782b5833fdf8846d8662babf",
|
|
15580
|
+
"AGENTS.md": "e44f635c0b203a0040098425f217c5a29c47e57280a3545b60d640aea0d59a70",
|
|
15581
|
+
"CLAUDE.md": "785ee8d90e368806d8cf0b4d84a15f29d1dc961168bda86cf1a6c60a923c8c9b",
|
|
15582
|
+
"scripts/lint-interdits.ts": "d859e132b7020942a5211f5419b10045170dee6afba3f50ca5642570a5c4a683",
|
|
15583
|
+
"scripts/ogygie-design-brief.ts": "aba1585717b30808dd0bc8930a37a1ad2d83ee6869f969dbd06ca595e37a4a89",
|
|
15584
|
+
"scripts/ogygie-impact.ts": "0dd3ff8cdd57e6cff0dfec1c669fce53fde9ae43f0784ed114771c83d1f8b357",
|
|
15585
|
+
"scripts/verify-contracts.ts": "725cae269e78ecdaa1923553c3097d8d96277824b5bd79a9a40284c6246036b7",
|
|
15586
|
+
"scripts/verify-manifest.ts": "1adca9edee11e54ccaf0511012411516c52c68a32f686ca320c7e437afb22c7c",
|
|
15587
|
+
"scripts/verify-specs.ts": "ccf09c04155e5e88fa9acd4a5db33c2c79e85923b2d92e8e866fe9cbc4cdf342",
|
|
15588
|
+
"tsconfig.base.json": "0f8919e9ed8bbc88e0308fa2fa91471dabb18d1df721bd78c04076597eba89a2"
|
|
15572
15589
|
}
|
|
15573
15590
|
};
|
|
15574
15591
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ogygie/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Ogygie framework CLI: deterministic scaffolding (init), governed-file upgrades (upgrade) and lockstep verification (check) for Ogygie products.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"tsx": "^4.20.0",
|
|
23
23
|
"typescript": "^5.8.0",
|
|
24
24
|
"zod": "^4.0.0",
|
|
25
|
-
"@ogygie/core": "0.
|
|
25
|
+
"@ogygie/core": "0.8.0"
|
|
26
26
|
},
|
|
27
27
|
"scripts": {
|
|
28
28
|
"typecheck": "tsc -p tsconfig.json",
|
|
@@ -381,22 +381,37 @@ par vigilance.
|
|
|
381
381
|
tenant** (second rempart : même une requête buggée ne peut pas lire un
|
|
382
382
|
autre tenant). Toute migration créant une table tenant inclut sa policy RLS —
|
|
383
383
|
le template de migration l'impose.
|
|
384
|
-
4. Les tables
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
384
|
+
4. Les tables SANS PROPRIÉTAIRE TENANT sont déclarées explicitement au manifeste
|
|
385
|
+
sous la forme objet `{ "name": "<table>", "shared": true, "sharedKind": "..." }`
|
|
386
|
+
(clés anglaises : le manifeste est machine-lisible). Elles échappent alors à
|
|
387
|
+
la règle 3 (pas de colonne tenant, pas de policy RLS tenant) ET à la règle 2 :
|
|
388
|
+
n'ayant aucune colonne sur laquelle filtrer, elles se lisent hors de
|
|
389
|
+
`tenantDb`.
|
|
390
|
+
|
|
391
|
+
**Deux natures, et une seule est écrivable par l'API** (D8). La nature se
|
|
392
|
+
déclare au manifeste, parce qu'une information de sécurité vit sur la carte :
|
|
393
|
+
- **`reference`** — connaissance universelle qu'aucun tenant ne possède,
|
|
394
|
+
chargée par un script d'extraction depuis une source externe versionnée.
|
|
395
|
+
**Côté API elle est en LECTURE SEULE** : seul le script d'extraction
|
|
396
|
+
l'alimente. C'est le défaut quand `sharedKind` est absent, et le sens
|
|
397
|
+
historique de `shared: true`.
|
|
398
|
+
- **`ownerless`** — donnée produite par l'API elle-même, sans propriétaire
|
|
399
|
+
parce qu'elle naît avant tout compte. **Sa feature l'écrit.** N'ayant pas
|
|
400
|
+
de tenant pour rempart, elle en porte un autre : ses lignes ne se lisent
|
|
401
|
+
que par un **secret non devinable** (jeton), jamais par un identifiant
|
|
402
|
+
énumérable ni séquentiel. Une table `ownerless` sans ce secret est une
|
|
403
|
+
violation — et comme aucun gate ne sait le vérifier, la spec de la feature
|
|
404
|
+
doit dire OÙ vit ce secret et comment il est produit.
|
|
405
|
+
|
|
406
|
+
Ce droit se paie comptant, et les gates vérifient ce qu'ils peuvent au lieu
|
|
407
|
+
de faire confiance :
|
|
392
408
|
- une feature ne gagne l'accès brut à la base que si TOUTES ses tables sont
|
|
393
409
|
partagées (lint-interdits, dérivé du manifeste) — une seule table tenant
|
|
394
410
|
dans la même feature le lui retire ;
|
|
395
411
|
- une table déclarée partagée qui porte encore la colonne tenant casse
|
|
396
|
-
verify-manifest (`SHARED_TABLE_WITH_TENANT_COLUMN`)
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
La liste des tables partagées du produit est dans `AGENTS.product.md`.
|
|
412
|
+
verify-manifest (`SHARED_TABLE_WITH_TENANT_COLUMN`).
|
|
413
|
+
La liste des tables partagées du produit, avec leur nature, est dans
|
|
414
|
+
`AGENTS.product.md`.
|
|
400
415
|
|
|
401
416
|
### Template repository (le SEUL accès DB autorisé)
|
|
402
417
|
```ts
|