From 0474e2fa818f53fc1114e37a410bc5ecee8cf7f8 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Thu, 11 Jun 2026 13:38:04 +0000 Subject: [PATCH] docs: clarify NSS feature scope after namespaces --- AI.md | 4 ++++ REDESIGN.md | 24 ++++++++++++++++++++++++ TODO.md | 21 +++++++++++++++++++-- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/AI.md b/AI.md index 1f3d21b..ffae705 100644 --- a/AI.md +++ b/AI.md @@ -60,6 +60,10 @@ Namespace adaptation order: After the namespace line is underway, continue with the rest of the useful NSS areas in this order: `netware.metadata`/trustee effective rights, directory quota semantics from `dirQuotas.c`, data streams and extended attributes, object IDs/search maps/salvage, then compression and NSS authsys/eDirectory-style identity work. +NCP scope note after checking `ncp__enu.pdf`: directory disk-space restrictions are not only a NetWare 5.x feature. The old file-system-extension calls are in the NetWare 3.x/4.x scope (`22/35` Get Directory Disk Space Restriction, `22/36` Set Directory Disk Space Restriction, `22/40` Scan Directory Disk Space), and the namespace-aware `87/39` Get Directory Disk Space Restriction is in NetWare 4.x/5.x scope. Still, do not wire directory quotas into active NCP enforcement until after DOS/LONG namespaces and the file-metadata/trustee base are stable. It is OK to directly adapt the useful NSS `dirQuotas.c` pieces into libnwfs earlier, but only behind lib/CTest plausibility tests that link the library and verify the data model/check math; leave the NCP endpoints disconnected until a later dedicated patch. + +For NSS pieces that are outside the current NetWare 1.x-4.x target or that require a real backend (for example compression statistics/active compression state, eDirectory/authsys identity, and later server-management selectors), keep the adapted code dormant and covered by compile/link/logic CTests only. Do not expose fake NCP data for those features. + ## Current handoff status after patch 0222 The current accepted patch line in this chat is expected to include: diff --git a/REDESIGN.md b/REDESIGN.md index 0d1722c..6073037 100644 --- a/REDESIGN.md +++ b/REDESIGN.md @@ -3305,3 +3305,27 @@ This keeps the backend boundaries clear: - `nwquota.c/h`: NetWare metadata storage and metadata accounting. - `lnxquota.c/h`: Linux `quotactl()` access only. - future `bsdquota.c/h`: BSD-specific quota access only. + +## NSS/libnwfs feature scope after namespace work + +The next implementation line starts with NSS-derived namespaces, but the rest of +NSS should be mined in a way that keeps protocol scope and backend readiness +separate. + +Directory disk-space restrictions are a good example. They are not solely a +NetWare 5.x feature in the NCP reference: classic directory disk-space +restriction calls exist in the NetWare 3.x/4.x family, and the namespace-aware +variant exists in the NetWare 4.x family. Therefore the `dirQuotas.c` model is +worth adapting into libnwfs. However, it should first land as library code with +CTest plausibility tests only. The CTests should link libnwfs and verify the +core arithmetic and model semantics: 4K block units, unlimited values, parent +restriction scanning, smallest available restriction selection, and over-limit +result calculation. The live NCP endpoints should remain disconnected until the +DOS/LONG namespace layer and file metadata/trustee layer are stable. + +For later NSS pieces such as data streams, extended attributes, object IDs, +search maps, salvage and compression, use the same pattern: direct adaptation +into mars-nwe/libnwfs files, compile/link/logic CTests while dormant, and no +NCP-visible claims until the backend can answer truthfully. Compression in +particular must not synthesize fake current-compression files, decompression +lists or counters just to satisfy management selectors. diff --git a/TODO.md b/TODO.md index 12e58b4..0f05a68 100644 --- a/TODO.md +++ b/TODO.md @@ -2310,10 +2310,27 @@ After namespace starts, continue with the next useful NSS areas in this order: 1. NetWare/NSS file metadata and trustee effective-rights backend. 2. Directory quota semantics from `dirQuotas.c` and related create/write/rename placement in `comnFile.c`, `comnIO.c` and `comnRename.c`. + - `ncp__enu.pdf` shows directory disk-space restrictions in the current + NetWare 1.x-4.x compatibility scope: the classic `22/35`, `22/36` and + `22/40` calls are listed for NetWare 3.x/4.x/5.x, and the namespace-aware + `87/39` variant is listed for NetWare 4.x/5.x. + - Nevertheless, keep directory quotas disconnected from live NCP endpoints + for now. Adapt the useful NSS/libnwfs code early if it is low-risk, but + prove only the library model with CTest first: link libnwfs, create a small + metadata-backed directory quota object, verify 4K block rounding, parent + restriction selection, used/available arithmetic, unlimited handling, and + over-limit decisions. + - Only wire `22/35`, `22/36`, `22/40` and `87/39` after DOS/LONG namespace + and file-metadata/trustee behaviour are stable. 3. Data streams, Extended Attributes, object IDs, search maps and salvage references from `comnDataStream.c`, `extAttrBeast.c`, `objectIDStore.c`, - `searchMap.c` and related files. -4. Compression only after compressed-file attributes become a real target. + `searchMap.c` and related files. For pieces not ready for NCP exposure, add + compile/link/plausibility CTests and keep the NCP endpoints disconnected. +4. Compression material can be kept as dormant lib code or references only. + Compression-related NCPs must not fake + active compression files, decompression lists, counters or byte counts without + a real backend. Wire compression only after compressed-file attributes and + compressed stream accounting become a real target. 5. NSS authsys/eDirectory identity work only after classic bindery/NDS object-ID compatibility remains stable.