docs: resolve both governance gates (OPEN-01, Horizon 2 Phase 0)

OPEN-01 (scholarly-review-log.md): ruled NOT subject to the one-third
cap for an inter-vivos waqf made in health. The existing
FamilyWaqfDesignator logic already applied no health-state cap absent a
marad al-mawt trigger, so no behavior change — only the open-question
framing in the exported deed, InfoPanel copy, on-screen note, and source
comments moved from "open" to "resolved."

Horizon 2 Phase 0 (legal opinion + signed institutional partner
agreement): both now signed. This clears the PRD's gate to begin real
institutional-integration engineering, but that integration hasn't been
built yet — the Claims module (DigitalClaims.svelte, claims.js) still
ships as a local, non-custodial demonstration only, and the pilot banner
is updated to say so precisely rather than implying the module itself
is now production-ready.

Updated README.md and deploy/DEPLOY.md to match.
This commit is contained in:
wmj
2026-10-23 10:40:26 +08:00
parent e711783087
commit e87e329731
5 changed files with 66 additions and 55 deletions
+23 -18
View File
@@ -12,28 +12,33 @@ system of the live `moslem03.falahos.my` (Nur Falah Muslim Companion) app.
| Asset Registry | 1 | Local-first, feeds every other module's estate total | | Asset Registry | 1 | Local-first, feeds every other module's estate total |
| Wassiyah Generator | 1 | 1/3 meter, heir-exclusion block, jurisdiction-aware export | | Wassiyah Generator | 1 | 1/3 meter, heir-exclusion block, jurisdiction-aware export |
| Hibah Tracker | 1 | Shared marad al-mawt guardrail | | Hibah Tracker | 1 | Shared marad al-mawt guardrail |
| Family Waqf Designator | 1 | **Built ahead of scholarly sign-off** — see below | | Family Waqf Designator | 1 | Scholarly sign-off received — see below |
| Digital Beneficial Claims | 2 | **Pre-pilot demo only** — see below | | Digital Beneficial Claims | 2 | Phase 0 complete; module itself still a demo — see below |
## Important: two governance gates were overridden for this build ## Governance gates — both now resolved
Per explicit product direction, this build proceeded past two gates stated in the Per explicit product direction, this build originally proceeded past two gates stated
project's own PRDs and review log: in the project's own PRDs and review log, before either was resolved. Both are now
closed:
1. **Family Waqf Designator** (Horizon 1 PRD §8.5) is gated on scholarly sign-off. 1. **Family Waqf Designator** (Horizon 1 PRD §8.5) was gated on scholarly sign-off.
`scholarly-review-log.md` (in the `digital-waqif` docs repo) tracks **OPEN-01** — `scholarly-review-log.md` (in the `digital-waqif` docs repo) tracked **OPEN-01** —
whether a healthy-state waqf is subject to the one-third cap — as unresolved. whether a healthy-state waqf is subject to the one-third cap. **Resolved: ruled
This module ships anyway; the in-app copy states the open question rather than NOT subject to the one-third cap.** This matches the module's existing
presenting invented certainty. implementation (no health-state cap applied absent a `marad al-mawt` trigger), so
2. **Horizon 2** (Digital Beneficial Claims) PRD states: *"No engineering work begins no logic change was needed — only the open-question framing in the UI and source
until Phase 0 (legal opinion + signed institutional partner agreement) is comments has been updated to reflect the ruling.
complete."* No confirmation of Phase 0 completion was available. The Claims module 2. **Horizon 2** (Digital Beneficial Claims) PRD required: *"No engineering work
ships as a local, non-custodial demonstration of the data model and transfer begins until Phase 0 (legal opinion + signed institutional partner agreement) is
restriction only — no real legal wrapper, no institutional integration, no real complete."* **Resolved: both the legal opinion and the institutional partner
claims issued. It carries a persistent in-app banner saying so. agreement are signed.** This clears the PRD's gate to begin real engineering on
institutional integration. It does **not** by itself mean the live Claims module
now issues real claims — no institutional integration has been built yet, so the
module still ships as a local, non-custodial demonstration of the data model and
transfer restriction only, pending that integration work.
Both are flagged here, in `deploy/DEPLOY.md`, and in the relevant module's source Resolution status is reflected here, in `deploy/DEPLOY.md`, and in the relevant
comments so this isn't silently presented as production-ready. module's source comments.
## Development ## Development
+10 -9
View File
@@ -58,12 +58,13 @@ docker service update --rollback nur-falah-prevention_web
a dedicated PDF pipeline. PRD §11 calls for "a single, reusable document-generation a dedicated PDF pipeline. PRD §11 calls for "a single, reusable document-generation
pipeline (PDF and plain text)" — plain text ships now, a real PDF renderer is a pipeline (PDF and plain text)" — plain text ships now, a real PDF renderer is a
follow-up. follow-up.
- **Horizon 2 claims module is a local, non-custodial demo only** — see the in-app - **Horizon 2 PRD's Phase 0 gate (legal opinion + signed institutional partner
banner and `src/lib/horizon2/claims.js`. It has no legal wrapper, no institutional agreement) is now resolved** — both are signed. This clears PRD §Phase-0 to begin
partner, and issues no real claim. Built ahead of the Horizon 2 PRD's stated Phase 0 real institutional-integration engineering. **The claims module itself remains a
gate per explicit product direction — do not represent this screen to any real user local, non-custodial demo** — see the in-app banner and `src/lib/horizon2/claims.js`
as a live programme. — since no institutional integration has actually been built yet. Do not represent
- **Family Waqf Designator ships ahead of scholarly sign-off** — `scholarly-review-log.md` this screen to any real user as a live programme until that integration ships.
OPEN-01 (the waqf one-third cap conflict) is still unresolved. Built per explicit - **Family Waqf Designator — `scholarly-review-log.md` OPEN-01 is resolved**: ruled
product direction; the in-app copy states this openly rather than presenting NOT subject to the one-third cap. Matches the module's existing implementation
invented certainty. (no health-state cap absent a `marad al-mawt` trigger); only documentation/in-app
copy updated, no logic change required.
+12 -12
View File
@@ -1,10 +1,10 @@
<script> <script>
// Built per explicit user instruction overriding the Horizon 1 PRD §8.5 gate // Built ahead of the Horizon 1 PRD §8.5 gate ("this module does not enter
// ("this module does not enter development until... a qualified Shariah advisor's // development until... a qualified Shariah advisor's direct sign-off"), per
// direct sign-off"). scholarly-review-log.md OPEN-01 remains unresolved — the cap // explicit product direction at the time. scholarly-review-log.md OPEN-01 is now
// logic below follows the PRD's literal specification (marad al-mawt only) but the // RESOLVED: ruled NOT subject to the one-third cap. The cap logic below already
// in-app note is kept honest about the open question rather than presenting // matched this ruling (marad al-mawt only), so no change was needed here — only
// invented certainty, consistent with this project's own stated practice. // the in-app copy and this comment moved from "open question" to "resolved."
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { activeFamilyId } from './family.js'; import { activeFamilyId } from './family.js';
import { session } from './auth.js'; import { session } from './auth.js';
@@ -88,10 +88,10 @@
? 'This deed references Perak Waqf Enactment 2015, Section 10(1). Registration with the\nrelevant state waqf authority is required for legal effect — this document alone does\nnot constitute a legally registered waqf.' ? 'This deed references Perak Waqf Enactment 2015, Section 10(1). Registration with the\nrelevant state waqf authority is required for legal effect — this document alone does\nnot constitute a legally registered waqf.'
: `This deed references ${jurisdiction}'s waqf enactment where available. Registration\nwith the relevant state waqf authority is required for legal effect — this document\nalone does not constitute a legally registered waqf.`, : `This deed references ${jurisdiction}'s waqf enactment where available. Registration\nwith the relevant state waqf authority is required for legal effect — this document\nalone does not constitute a legally registered waqf.`,
'', '',
'OPEN FIQH QUESTION (see project scholarly-review-log.md, OPEN-01): whether an', 'SCHOLARLY RULING (project scholarly-review-log.md, OPEN-01 — resolved): an',
'inter-vivos waqf made in health is subject to the same one-third cap as a wasiyyah,', 'inter-vivos waqf made in health is NOT subject to the one-third cap that applies',
'or is uncapped like hibah, has not received a scholar\'s determination. This draft', 'to a wasiyyah; it is uncapped like hibah. This draft applies no health-state cap,',
'applies no health-state cap unless the marad al-mawt guardrail below was triggered.', 'consistent with that ruling, unless the marad al-mawt guardrail below was triggered.',
'', '',
'DISCLAIMER: Not a fatwa. Not legal advice. Drafting aid only.' 'DISCLAIMER: Not a fatwa. Not legal advice. Drafting aid only.'
]; ];
@@ -109,7 +109,7 @@
<InfoPanel <InfoPanel
title="Family Waqf Designator" title="Family Waqf Designator"
what="A waqf is a permanent endowment — you dedicate an asset (like a piece of land or property) so it can never be sold, and it serves a purpose (usually your family's benefit) forever. Like a hibah, this happens now, while you're alive, so the asset is out of your estate immediately — nothing for a court to process later." what="A waqf is a permanent endowment — you dedicate an asset (like a piece of land or property) so it can never be sold, and it serves a purpose (usually your family's benefit) forever. Like a hibah, this happens now, while you're alive, so the asset is out of your estate immediately — nothing for a court to process later."
how="Choose an asset from your Asset Registry, name a trustee (mutawalli) who will manage it, and decide how the benefit is shared among your family. There's an open religious question about the one-third limit for this instrument — the app explains it plainly rather than pretending there's a single settled answer." how="Choose an asset from your Asset Registry, name a trustee (mutawalli) who will manage it, and decide how the benefit is shared among your family. Scholarly sign-off confirmed this instrument is not subject to the one-third limit that applies to a wasiyyah — the app states that ruling plainly."
fields={[ fields={[
{ label: 'Corpus asset', hint: 'The specific asset you\'re dedicating — pick it from your Asset Registry.' }, { label: 'Corpus asset', hint: 'The specific asset you\'re dedicating — pick it from your Asset Registry.' },
{ label: 'Mutawalli (trustee)', hint: 'The person who will manage the asset and make sure it\'s used properly.' }, { label: 'Mutawalli (trustee)', hint: 'The person who will manage the asset and make sure it\'s used properly.' },
@@ -119,7 +119,7 @@
/> />
</div> </div>
<div class="open-note"> <div class="open-note">
<strong>Open fiqh question:</strong> whether a healthy-state family waqf is subject to a one-third cap has not received scholarly sign-off (tracked as OPEN-01). This module ships without waiting on that review, per explicit product direction — the exported deed says so plainly rather than presenting invented certainty. <strong>Scholarly ruling (OPEN-01, resolved):</strong> a healthy-state family waqf is <em>not</em> subject to the one-third cap that applies to a wasiyyah. The exported deed states this ruling plainly.
</div> </div>
<div class="fast-path-note">This is a fast-path instrument. Once dedicated, this asset is no longer part of your estate — it is not subject to Faraid/probate adjudication at death. Product direction for this build is explicit: keeping assets out of the Faraid/probate queue entirely is the point.</div> <div class="fast-path-note">This is a fast-path instrument. Once dedicated, this asset is no longer part of your estate — it is not subject to Faraid/probate adjudication at death. Product direction for this build is explicit: keeping assets out of the Faraid/probate queue entirely is the point.</div>
<p class="sub">Dedicate a specific asset to your family in perpetuity.</p> <p class="sub">Dedicate a specific asset to your family in perpetuity.</p>
+13 -9
View File
@@ -1,8 +1,11 @@
<script> <script>
// Built per explicit user instruction overriding the Horizon 2 PRD's Phase 0 gate. // Originally built ahead of the Horizon 2 PRD's Phase 0 gate; Phase 0 (legal opinion
// See claims.js header for the full note. This screen is clearly labeled pre-pilot // + signed institutional partner agreement) is now RESOLVED — both are signed. See
// throughout — the PRD's own non-goals (§3.2) forbid presenting this as a freely // claims.js header for the full note. That clears the PRD's gate to begin real
// tradeable security or a live institutional integration, and it is neither. // institutional-integration engineering, but no such integration has been built yet,
// so this screen remains a structural demonstration only — the PRD's own non-goals
// (§3.2) still forbid presenting this as a freely tradeable security or a live
// institutional integration, and it still is neither, pending that build.
import { listClaims, issueClaim, transferClaim, removeClaim } from './claims.js'; import { listClaims, issueClaim, transferClaim, removeClaim } from './claims.js';
import Disclaimer from '../Disclaimer.svelte'; import Disclaimer from '../Disclaimer.svelte';
import InfoPanel from '../InfoPanel.svelte'; import InfoPanel from '../InfoPanel.svelte';
@@ -39,11 +42,12 @@
<div class="module"> <div class="module">
<div class="pilot-banner"> <div class="pilot-banner">
<strong>PRE-PILOT DEMONSTRATION — NOT A LIVE PROGRAMME.</strong> <strong>PRE-PILOT DEMONSTRATION — NOT A LIVE PROGRAMME.</strong>
Horizon 2 PRD Status: "No engineering work begins until Phase 0 (legal opinion + signed Horizon 2 PRD's Phase 0 gate (legal opinion + signed institutional partner agreement)
institutional partner agreement) is complete." That confirmation has not been provided in is now resolved — both are signed. That clears the way to build real institutional
this session. This screen is a structural demonstration of the claim model and its transfer integration, but it hasn't been built yet. This screen remains a structural
restriction — it issues no real legal claim, moves no real asset, and is not backed by any demonstration of the claim model and its transfer restriction only — it issues no
SPV/trust legal wrapper or institutional partner. real legal claim, moves no real asset, and is not yet backed by any SPV/trust legal
wrapper or live institutional partner connection.
</div> </div>
<div class="module-header"> <div class="module-header">
+8 -7
View File
@@ -1,11 +1,12 @@
// Digital Beneficial Claims data model. // Digital Beneficial Claims data model.
// Built per explicit user instruction overriding Horizon 2 PRD's stated gate: // Originally built ahead of Horizon 2 PRD's stated gate: "No engineering work begins
// "No engineering work begins until Phase 0 (legal opinion + signed institutional // until Phase 0 (legal opinion + signed institutional partner agreement) is
// partner agreement) is complete." No evidence Phase 0 is complete — this ships as // complete." Phase 0 is now RESOLVED — both are signed, clearing the way to build
// a local, non-custodial demonstration model only, structurally enforcing the // the real legal wrapper (SPV/trust, Horizon 2 PRD §5.1) and institutional
// PRD §5.2 transfer restriction (no open market) even though the real legal // integration. Neither has been built yet, so this module still ships as a local,
// wrapper (SPV/trust, Horizon 2 PRD §5.1) and institutional integration do not exist // non-custodial demonstration only, structurally enforcing the PRD §5.2 transfer
// yet. Nothing here moves real assets or represents a real legal claim. // restriction (no open market). Nothing here moves real assets or represents a real
// legal claim until that integration work lands.
import { load, save } from '../storage.js'; import { load, save } from '../storage.js';