@astram/guide 0.2.19 → 0.2.21

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.
Files changed (2) hide show
  1. package/CAPABILITIES.md +17 -6
  2. package/package.json +1 -1
package/CAPABILITIES.md CHANGED
@@ -169,7 +169,10 @@ imports: [
169
169
  `GET /identity/auth-facts` feeds the frontend's permission-gated navigation.
170
170
  - **Scoped-hierarchy tenancy** (ADR-0027): a tenant is a company node; an admin's authority covers
171
171
  its subtree. Reads, updates, deletes AND creates of subtree-scoped types are walled in the query
172
- (ADR-0030, ADR-0034). Non-root admins cannot create top-level tenants.
172
+ (ADR-0030, ADR-0034). Non-root admins cannot create top-level tenants. With
173
+ `IdentityFeatureModule` wired, a session's subtree (its company and every company below) is
174
+ resolved at sign-in automatically (identity 0.24); pass `ShieldModule.forRoot({ scopeSubtreeResolver })`
175
+ only to replace identity's resolver. Without identity, reach is the active company only.
173
176
  - **No escalation**: you can grant, revoke or assign (via postings) only roles and keys you hold
174
177
  (ADR-0029); a role used outside your subtree is root-only; changing another user's email or
175
178
  status needs dominance over that user. Grant changes are audited in the same transaction.
@@ -504,15 +507,23 @@ imports: [
504
507
  - **Admin tasks for new permissions (G-027 step 4, identity 0.22):** each company gets one open
505
508
  task per active permission key with a first-seen date that no role owned by the company holds
506
509
  (directly or through `identity:<type>:*` / `identity:*`). `GET /identity/permission-announcements
507
- ?status=open|dismissed&page=&limit=` (root may add `companyUuid`) lists the tasks the caller can
508
- act on: holders of `identity:role:update` whose grant ceiling covers the key, in their active
509
- company only; root sees every company. Granting the key to any of the company's roles closes the
510
+ ?status=open|dismissed&page=&limit=&companyUuid=` lists the tasks the caller can act on: holders
511
+ of `identity:role:update` whose grant ceiling covers the key, for the companies below them (their
512
+ own company already holds what they can grant; the subtree comes with `IdentityFeatureModule`,
513
+ identity 0.24); root sees every company. On a fresh
514
+ install the keys from the very first catalogue pass raise no task (identity 0.23). Granting the key to any of the company's roles closes the
510
515
  task on the next read; `POST /identity/permission-announcements/:companyUuid/:key/dismiss`
511
516
  ("Reviewed, not needed", audited) closes it on purpose and `…/reopen` undoes that. A key removed
512
517
  and re-added by a later release opens again. Framework keys count like yours. Tasks are not
513
518
  notices: they never enter `/account/notifications`.
514
- - Not yet: the frontend-core service and the scaffold bell and Announcements icon (step 5), email
515
- delivery.
519
+ - **Frontend (G-027 step 5, frontend-core 0.10):** `createNotificationService(http)`
520
+ (`listNotifications`, `unreadNotificationCount`, `markNotificationRead`, `markAllNotificationsRead`) and
521
+ `identity.{listPermissionAnnouncements,dismissPermissionAnnouncement,reopenPermissionAnnouncement}`. The scaffolded
522
+ header has a bell (personal notices) and an Announcements icon (announcement notices, plus admin tasks for holders of
523
+ `identity:role:update`); "Grant…" opens `/access/add?key=<key>` with the key ticked; the Access form marks keys
524
+ with a caution and asks to confirm before granting them. Counts refresh on focus and every 60 s while the tab is
525
+ visible, and right after the user's own actions. Delivery is polling; there is no server push yet.
526
+ - Not yet: email delivery.
516
527
 
517
528
  ## Separation of duties (ADR-0048; core 1.12, engine 0.14, guard 0.21, identity 0.18)
518
529
  - **Declare it on the type** when the people who started or asked about a record must not
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astram/guide",
3
- "version": "0.2.19",
3
+ "version": "0.2.21",
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",