_system / plans · Ý tưởng 02 + 03 (đã có điều lệ)
DRAFT — INTERNAL. Chưa duyệt; không phân phối. Decision-forward plan for
review-hub Idea 02 (Hai pháp nhân song song) and Idea 03 (Trang Pháp lý
& Quản trị). Source:
hmt-media-review-3dv.pages.dev/ideas-roadmap/(
#idea-02,#idea-03). Both ideas stem from one fact — the workspace runstwo separately registered foundations — so they are planned together and
cross-referenced; they can still ship independently.
This plan does not lock a calendar. It locks the shape, grounds it in the
live schema/tools/hub, and surfaces the decisions that gate the build. No code
is written until §A9 / §B7 are answered. Companion to
donor-and-finance-subplan.md (Areas 3 & 4),
beneficiary-care-subplan.md (Area 1), and the
hub-access pattern in hub-access-accounts-subplan.md.
Last updated: 2026-06-13. Owner (drafting): Editor + Finance trustee. To be reviewed by: the Foundation's legal adviser / Account Custodian (entity boundaries), Coordinator, Safeguarding lead (eligibility data posture).
The legal-boundary confirmation the earlier note flagged as a planning gate (memory project_two-foundations-hmt-thanhnhan: "confirm legal boundaries from charters before planning") is now done, read from the registration papers the administrator provided (Dropbox/Document Sharing - Hieu/HMT/, read into the workspace only — not copied into the repo by this plan). The facts below come straight off the BNV-stamped charters and tax certificates.
| Quỹ Hoa Mặt Trời | Quỹ Thành Nhân | |
|---|---|---|
| English / abbr. | Sun Flower Foundation (SFF) | — |
| Legal type | Quỹ từ thiện (charity fund) | Quỹ xã hội (social fund) |
| Charter purpose (Điều 2) | Support Vietnamese citizens & households in hardship, vulnerable, or disaster/fire/epidemic/accident-affected, to rise in life and reintegrate | Promote education & training development + preserve national cultural heritage; raise human-resource quality, nurture talent |
| Who/what it funds (Điều 5) | "các đối tượng" — framed around disadvantaged individuals & households | "các đối tượng, chương trình, dự án" — recipients, programmes, projects |
| Establishment | Licence 1834/QĐ-BNV (22/5/2017); charter amended 296/QĐ-BNV (14/4/2022, replaces 2280/QĐ-BNV 25/7/2017) | 1224/QĐ-BNV (23/12/2022); operating-conditions + board recognised 573/QĐ-BNV (3/8/2023) |
| Tax ID (MST) | 0108077921 (issued 29/11/2017, Chi cục Thuế Hoàn Kiếm) | 0110331364 (issued 24/4/2023, Chi cục Thuế Hoàn Kiếm) |
| Legal status | Own legal person, own seal, own bank account, nationwide | Own legal person, own seal, own bank account, nationwide |
| Registered office | Tầng 9, Sun City, 13 Hai Bà Trưng, P. Tràng Tiền, Q. Hoàn Kiếm, Hà Nội | Same address |
| Governing law | NĐ 30/2012 → NĐ 93/2019/NĐ-CP | NĐ 93/2019/NĐ-CP |
The routing rule, restated from the charters (not invented):
households. Its charter names people in hardship as the beneficiaries; it does not** name schools, programmes, or projects as recipients.
explicitly funds programmes and projects — the legal mechanism for school-direct disbursement and for supporting students not formally recognised as poor.
So the operator's framing — school-direct → Thanh Nhân; non-poor → Thanh Nhân; recognised-poor individual/household → HMT — is a faithful operating interpretation of the two charter purposes. ⚠️ One nuance to confirm with the legal adviser (carried as D0): the HMT charter does not contain an explicit "may not grant to schools" prohibition; it simply doesn't list institutions as beneficiaries. The routing rule is therefore a scope-fit interpretation, not a quoted prohibition. The plan treats it as the working rule and flags any benefit that contradicts it, rather than hard-blocking on a clause that isn't literally in the text.
What is unchanged. Shared ops team, one management hub, Phase A, and the data firewall all stay exactly as they are. Only the money + legal layer splits into two books.
"Hai pháp nhân song song — tách dòng tài trợ theo đúng tổ chức."
Status: Ý TƯỞNG → this plan moves it to designed, decisions pending.
### ⛔ SCOPE DECISION (2026-06-13, administrator): money-in side only — **do
not touch the student/care side yet.**
The entity split, for now, applies **only to governance (Part B) + donors +
finance** (the
so-tai-chinh.sqliteregistry:donor,contribution,
inkind_contribution,operating_cost+ receipts/QR/reports/hub-finance UI).The student/care side is deferred to a later phase and is **out of current
scope**: no
entityonbenefit/register_entry, nochild.poverty_statuseligibility field, no write-time routing guard on benefits, no school-funding
(BB-tài-trợ) entity tagging, no care-bucket backfill, no
/careUI change. The142+ live student records and the sensitive poverty-recognition data are **not
touched. The care-side design below is kept but parked** (marked
DEFERRED) so it's ready when the student side is in scope.
Consequence to keep in mind: with the outflow (care) side parked, the books
track money IN per entity (and per-entity receipts/reports) but **not yet
money OUT per entity**. Full per-entity reconciliation (matching disbursements
to contributions) and the compliance routing guard arrive in the deferred
care-side phase. The school-funding bridge stays attributed to "Quỹ Thành Nhân"
in prose as it is today, just not yet modelled with an
entitycolumn.
The codebase treats the operation as one implicit fund (HMT). Concretely (from the live tools/schema):
tools/finance_registry_migrate.py,07_Quan-tri/Tai-chinh/so-tai-chinh.sqlite): tables donor, contribution, inkind_contribution, inkind_disposal, operating_cost, update_recipient, sponsorship_match. None carries an entity field.
tools/beneficiary_registry_migrate.py,…/so-dang-ky.sqlite): benefit has funding_source (→ nguon-tai-tro.yaml) and register_entry kind='funding' for school-level totals. No entity field; no beneficiary-eligibility (poverty-recognition) field.
tools/care_benefit_extract.pydefaults a funding agreement's funder to the literal "Quỹ Thành Nhân" when the BB-tài-trợ doc leaves it blank (the school-funding bridge is, in practice, already a Thanh Nhân flow — it just isn't modelled as one).
HMT-D<NNNN> donor codes, one NCBaccount (QUY HOA MAT TROI · [NCB account]), one VietQR via qr_donor.
(contribution_receipt.py, finance_report_*, the document-chrome letterhead asset is HMT-only).
So the substrate is clean and consistent — it just has no concept of which fund. Adding that concept is an additive migration, not a rebuild.
entity livesA contribution arrives before it is allocated to any beneficiary, and a disbursement leaves after. Money must not cross between the two books. So entity is a first-class field on both the inflow and the outflow, and the two are reconciled per entity (not joined by FK):
INFLOW (entity set at receipt) OUTFLOW (entity set at disbursement)
────────────────────────────── ─────────────────────────────────────
contribution.entity ─┐ benefit.entity ─┐
inkind_contribution.entity ├─ per-entity ─── register_entry(funding).entity├─ per-entity
operating_cost.entity ─┘ books (no benefit crosses entities)─┘ books
entity is on each money-flow row, not (only) on the donor. A singleperson can give to both funds, so the canonical entity lives on the contribution / inkind / operating_cost / benefit row. donor.entity exists only as a default hint (primary_entity, like the existing primary_intent), never as a silent router.
its own NCB account (charter Điều 3: separate tài khoản riêng). The bank-statement import already runs per-account CSV — so the entity of a cash contribution = the entity of the account whose statement it came from. No human tagging on the common path.
rule (§A3) is enforced at benefit_record / care_benefit_extract write time.
closing" runs once per entity. A benefit funded by entity X must trace to a contribution in entity X's book (funding_source already carries the donor/ source ref; entity is added alongside).
This is the "separate books per entity, shared ops" model the charters require (each fund files its own annual BNV/BTC report — HMT charter Điều 6.9 and Thanh Nhân charter Điều 6.9 both: report before 31/12, publish contributions before 31/3).
Scope now: only the inflow half (
contribution/inkind_contribution/
operating_cost+ thedonorhint) is built in this phase. The outflowhalf (
benefit/register_entryon the care side) and the cross-entityreconciliation are DEFERRED with the student side (scope banner above).
Two enum values, fixed: hoa-mat-troi and thanh-nhan (ASCII kebab, per naming-convention.md). A shared loader/validator in tools/_finance_common.py (finance side; the care-side validator is part of the deferred phase); the canonical entity registry is a new small file _system/config/entities.yaml (display name, legal type, MST, bank account label, letterhead asset, QR prefix, receipt-number prefix — one block per fund).
finance_registry_migrate.py)| Table | Add | Notes |
|---|---|---|
donor | primary_entity TEXT (nullable) | default hint only; nullable = "no default" |
contribution | entity TEXT NOT NULL DEFAULT 'hoa-mat-troi' | backfilled (§A7); set by import from account |
inkind_contribution | entity TEXT NOT NULL DEFAULT 'hoa-mat-troi' | |
operating_cost | entity TEXT NOT NULL DEFAULT 'hoa-mat-troi' | each fund carries its own ops costs |
Migration is the existing idempotent ALTER TABLE … ADD COLUMN pattern (ensure_* style); add indexes idx_contribution_entity, idx_inkind_entity, idx_operating_cost_entity. receipt-number becomes a per-entity sequence (today it's implicit/global) — a small receipt_seq table or a per-entity counter in entities.yaml-driven state.
beneficiary_registry_migrate.py) — ⏸ DEFERRED (student side)Out of current scope (scope banner). The rows below are the parked target
for the later care-side phase; not built now. No change to
so-dang-ky.sqlite,benefit_record.py,care_benefit_extract.py, or thechild schema in this phase.
| Table | Add (deferred) | Notes |
|---|---|---|
benefit | entity TEXT NOT NULL DEFAULT 'thanh-nhan' | ⚠️ default differs — see note |
register_entry (kind=funding) | entity TEXT | the BB-tài-trợ school-funding row |
child | poverty_status TEXT + poverty_cert_source_ref TEXT | eligibility input, §A4 (sensitive) |
Why the care-side default would be
thanh-nhan, nothoa-mat-troi(forwhen this is built): today's only populated outflow at scale is the **BB-tài-trợ
school-funding bridge**, which
care_benefit_extractalready attributes to "QuỹThành Nhân". A blanket default of
hoa-mat-troiwould mis-tag the liveschool-funding benefits. Confirm in D2 when the care phase opens.
cloud/care/seed/nguon-tai-tro.yaml) — ⏸ DEFERREDCare-side. Adding
entity:to each funding-sourcerefand the
benefit.entity == funding_source.entitycross-check belong to the deferredcare phase (D3). Not touched now.
Out of current scope. The routing guard is enforced where outflows are
written (
benefit_record.py/care_benefit_extract.py), which is the parkedstudent side. The rule is documented here so it's ready, and remains a faithful
reading of the charters (pending D0); it is not enforced in this phase.
Until the care side is built, entity attribution stops at the inflow books.
RULE (working interpretation of the charter purposes, pending D0):
recipient is a school / programme / project → MUST be thanh-nhan
beneficiary is a recognised-poor individual/hhld → MAY be hoa-mat-troi
beneficiary is NOT recognised-poor (individual) → MUST be thanh-nhan
GUARD (write-time):
benefit.entity == 'hoa-mat-troi' AND child.poverty_status NOT IN
(recognised-poor set) → BLOCK + finding
register_entry(funding, school-direct).entity == 'hoa-mat-troi'
→ BLOCK + finding
contribution disbursed from entity X funds a benefit in entity Y
→ reconciliation finding (§A8)
school) is a block with a finding the Coordinator must resolve (re-tag the entity or correct the eligibility), mirroring the QC blocking-finding pattern. An unknown eligibility (poverty_status null) is a warning, routed to triage — never a silent pass (matches care-data's "no fact without a source" posture).
claim-checker: it only fires on an outflow thatasserts an entity + recipient; a benefit with entity=thanh-nhan (the broad fund) is always in scope and needs no eligibility check.
Out of current scope. This adds a sensitive field to the live student
records and is explicitly parked by the scope decision. The design below is the
target for the care phase; **nothing about poverty-recognition is collected,
stored, or surfaced in this phase.**
The routing input is the child's poverty-recognition status (hộ nghèo / cận nghèo / hộ có hoàn cảnh khó khăn có xác nhận, etc.). This is sensitive (beneficiary-care-subplan §3, care-data.md Hard prohibitions):
xác nhận hộ nghèo / sổ hộ nghèo) is filed as a source_doc (doc_type candidate: giay-to/hoan-canh), but the precise circumstance detail is not copied into the profile body — only the scoped fact poverty_status + poverty_cert_source_ref (pointer to the doc + issuing authority + valid-until).
poverty_status surfaces only in the gated §7 "Theo dõi antoàn"-class audience of the handbook and in the entity-routing guard — not in any published report, not in donor-facing output.
firewall; consent/legal stays external (workspace-ethics §3).
poverty_status at case-selection; a backfill pass (§A7) sets it for the current cohort from existing hardship docs where present, else leaves null (→ warning, not block).
Each fund is a distinct legal person, so its outward artefacts must be its own. Driven by _system/config/entities.yaml:
| Artefact | Today | Per-entity change |
|---|---|---|
| Bank account / QR | one NCB acct; qr_donor HMT-only | each fund's own NCB acct; qr_donor --entity; transfer-note prefix per fund (e.g. HMT-D<NNNN> vs TN-D<NNNN>) — but the internal donor_id stays unified (one donor registry; entity is on the contribution) |
| Receipt PDF | contribution_receipt.py HMT chrome, global seq | per-entity letterhead + seal + per-entity receipt-number sequence; legal name + MST on the receipt = the funding entity's |
| Letterhead / Doc chrome | document-chrome.md HMT lockup only | a Thanh Nhân letterhead asset + the fund's logo; markdown_to_docx selects the masthead by entity (ties to Idea 04 / project_document-chrome-branded-output). The brand-identity zip Bộ nhận diện thương hiệu Quỹ HMT is HMT only — Thanh Nhân brand assets needed (D4) |
| Thank-you | thank_you_draft.py HMT voice | entity-aware signatory block + legal footer; the giving-line / legal name reflects the entity |
| Monthly internal report | finance_report_monthly.py | --entity scoped; default = combined view with a per-entity breakdown |
| Published transparency report | finance_report_publish.py → finance_anon_check | one report per entity (each files its own BNV/BTC return). Anonymisation membrane unchanged; the published doc carries the entity's legal identity |
app/finance_dashboard.py)In current scope, finance pages only — /care is untouched.
hoa-mat-troi / thanh-nhan chip) on every contribution,in-kind, and operating-cost row in the finance pages.
/finance/contributions, /finance/donors,/finance/inkind.
/finance/monthly/{month} gains an entity selector;the home tile shows two cash totals, one per fund, never summed into a single headline (the same discipline as cash-vs-in-kind never summing).
financemodule.
/care/analytics funding split, and inline routing-guard findings.
The idea page's open question "historical re-tagging if currently commingled." The books are not commingled in practice (different accounts) — so the backfill is a tagging pass, not an untangling. In scope now (finance only):
(if only the HMT account has history, all existing cash = hoa-mat-troi).
hoa-mat-troi where unambiguous.
--dry-run first, idempotent, backed up before any finance-DB write. Thefinance registry (so-tai-chinh.sqlite) is small; no gcsfuse care-bucket write here.
⏸ DEFERRED (care side): benefit / register_entry entity tagging and poverty_status backfill — these touch the live care bucket (gcsfuse quiesce + backup discipline, care-data.md rule 5) and are parked with the student phase.
In scope now:
confirmation) gates the routing rule, which is itself deferred — so D0 does not block the finance-side build; D1/D4/D5 do.
entities.yaml; additive migrations on thefinance registry only; enum loader/validator in _finance_common. Tests + selftest.
entity set/inferred incontribution_import_statement, donor_register, inkind_record, operating_cost_record. No care write-path, no guard.
(entities.yaml-driven); Thanh Nhân letterhead (D4).
--entity on monthly + published; one transparency reportper fund. (Per-entity reconciliation across in/out waits on the care phase.)
⏸ DEFERRED — care/student phase (separate go-ahead): care-registry migration (benefit/register_entry/poverty_status), the write-time routing guard (§A3), care-bucket backfill, BB-tài-trợ entity tagging, and /care UI. Re-opens D2/D3 and the full §A3/§A4 design.
In scope now (finance + donors):
Foundation allocate (default: inferred from which account the money lands in)?
where do they come from? (HMT brand-identity zip exists; Thanh Nhân's does not in-workspace yet. Charter Điều 1: Thanh Nhân has a registered logo.)
prefix scheme (HMT- / TN-)?
⏸ Deferred to the care/student phase (do not need answering now):
"HMT not to schools" scope-fit reading + edge cases). Gates the routing guard, which is itself deferred.
benefit.entity default — thanh-nhan vs hoa-mat-troi.nguon-tai-tro.yaml general — split per entity, or entity on the row."Trang Pháp lý & Quản trị — hồ sơ nền tảng, đăng ký, hội đồng & thành viên."
Status: Ý TƯỞNG → this plan moves it to designed, decisions pending.
There is no governance surface in the hub today. But the source documents are now filed on the Shared Drive — ✅ done 2026-06-13 (B-P1 file step): all 11 registration documents are in 5_Quan-tri-thuong-hieu/Quan-tri/Dang-ky-va-giay-phep/<entity>/, renamed to convention (the two brand-asset zips were excluded by request — they feed Idea 04 / D4). The HMT subset was already on the Drive under its original field names; this pass renamed + moved it into hoa-mat-troi/ and added the four Thanh Nhân docs into thanh-nhan/. As filed:
…/Dang-ky-va-giay-phep/hoa-mat-troi/ (HMT — quỹ từ thiện)
| Filed name | Type |
|---|---|
hmt__qd-thanh-lap__2017-05-22__1834-qd-bnv.pdf | Establishment licence + charter recognition |
hmt__qd-thanh-lap-dieu-le__2017-07-25__2280-qd-bnv.pdf | Establishment + original charter (25/7/2017) |
hmt__qd-thanh-lap-dieu-le__2017-07-25__2280-qd-bnv__ban-2.pdf | Second copy of the above |
hmt__dieu-le-sua-doi__2022-04-14__296-qd-bnv.pdf | Amended charter 2022 + recognition |
hmt__nq-hdql-thay-doi-thanh-vien-hdql.pdf | Board-change resolution |
hmt__nq-mien-nhiem-bo-nhiem-giam-doc.pdf | Director appoint/dismiss resolution |
hmt__thong-bao-mst__0108077921.pdf | Tax-ID notice (MST 0108077921) |
…/Dang-ky-va-giay-phep/thanh-nhan/ (Thanh Nhân — quỹ xã hội)
| Filed name | Type |
|---|---|
thanh-nhan__dieu-le__2022-12-23__1224-qd-bnv.pdf | Charter (recognised 1224/QĐ-BNV) |
thanh-nhan__qd-cong-nhan-hoat-dong-va-hdql__2023-08-03__573-qd-bnv.pdf | Operating-conditions + board recognition |
thanh-nhan__nq-hdql-bo-nhiem-giam-doc__2022-08-04.pdf | Director-appointment resolution |
thanh-nhan__giay-chung-nhan-mst__0110331364.pdf | Tax-registration cert (MST 0110331364) |
Excluded by request (brand assets, → Idea 04 / D4):
Bộ nhận diện thương hiệu Quỹ HMT-…zipandMô hình 8 cánh -…zipremain inthe administrator's Dropbox; the Drive already has a
Tai-san/brand band(
Logo,Mau-sac-va-kieu-chu,Mau-thiet-ke,Phong-chu) if/when they land.
This is exactly the content Idea 03 displays. With the docs filed, the remaining build is plumbing + a viewer + the catalog/governance.yaml, not new doctrine.
5_Quan-tri-thuong-hieu/Quan-tri/Dang-ky-va-giay-phep/<entity>/ (the lean-bands successor to legacy 07_Quan-tri/Dang-ky-va-giay-phep/; memory project_drive-reorg-lean-bands). The plan's earlier proposed Phap-ly-quan-tri/ band was dropped in favour of the existing Quan-tri/Dang-ky-va-giay-phep/ ("registration & licences") folder, which is the correct semantic home and already held the HMT docs. One subfolder per entity: hoa-mat-troi/, thanh-nhan/ (created 2026-06-13). Docs renamed per naming-convention.md (ASCII kebab, diacritics dropped). A sibling Bao-cao-thuong-nien/ (annual reports) already exists under Quan-tri/.
_system/config/governance/chi-muc.yaml (repoconfig the hub reads, like entities.yaml; not on Drive) — one row per doc: entity, kind (charter | establishment-decision | board-resolution | tax-cert | director-decision | seal | other), title, doc_no, issued_on, valid_until (nullable), drive_path / drive_file_id, notes. This is not beneficiary data — no two-space machine-extraction discipline required; it's a reference library, so a flat catalog + the Drive files is enough. Remaining B-P1 step (the files are filed; the catalog is not yet authored).
second small file governance.yaml per entity: legal name, English name, legal type, MST, establishment decision, charter version, registered office, legal representative, board members (name, role, term, appointment_doc_ref), Ban Kiểm soát members, Giám đốc. Seeded from the charters + board resolutions already read (see §0 + the board lists: Thanh Nhân HĐQL 2023–2028 = Nguyễn Thị Hương Lan (CT), Nguyễn Việt Sơn (PCT), Bùi Thị Bảo Anh, Nguyễn Thị An, Nguyễn Thị Cao Liên; HMT board from the NQ HDQL resolution, to be read in B-P1).
A new hub section /phap-ly ("Pháp lý & Quản trị"), or nested under the existing admin area as /quan-tri/phap-ly (the /quan-tri/* paths are already hub-own + admin-gated — the natural home; D6). Pattern follows the existing care school-doc viewer exactly:
governance.yaml facts(identity card: legal name, type, MST, establishment, office, legal rep) + the board/members table + a document list from _chi-muc.yaml.
path-guarded PDFs and renders a side-by-side viewer (/care/children/{id}/school-doc/pdf + school_doc_review.html). Lift that pattern: a GET /phap-ly/doc?path=… path-guarded server (restricted to the governance band) + a side panel, so a board member or auditor opens the charter inline without leaving the page — exactly the "documents display in a side panel similar to student file viewing" the idea asks for.
app/templates/hub/phap_ly.html (+ a small viewer partial),inheriting hub/base.html.
/quan-tri/nguoi-dung. Governance/legalrecords are institutional, not per-area operational data.
governance in care_auth.VALID_MODULES + the user-permission UI, gated read-only — same fail-closed pattern as the care/content/finance modules. D7** decides admin-only vs role-based.
recommendation**: documents are surfaced through the hub (path-guarded server), not by granting Drive ACLs — tightest firewall, nothing to revoke in Drive when a person leaves.
The idea names HR and NGO-partnerships as adjacent. Defer both; design the catalog generic enough that they slot in without rework:
agreements. A future /quan-tri/nhan-su section reusing the same catalog+viewer; would intersect the hub-access account lifecycle (hub-access-accounts-subplan). Deferred.
Hope School Đà Nẵng). A future /quan-tri/doi-tac. Deferred.
Phased scope (idea's own steer): start with registration + governance; defer HR and partnerships. This plan honours that.
…/Quan-tri/Dang-ky-va-giay-phep/<entity>/ (§B0). Firewall note honoured: Foundation-owned docs copied into the Foundation Drive, no egress; brand zips excluded.
NQ HDQL board/director resolutions to completethe board/director facts; author _system/config/entities.yaml + _system/config/governance/{governance.yaml, chi-muc.yaml} per entity.
/phap-ly (or /quan-tri/phap-ly), identity card +board table + doc list, path-guarded PDF side-panel (lift the school-doc viewer).
governance module per D7./phap-ly or nested /quan-tri/phap-ly(recommended: nested under the existing admin area)?
governance module for board/auditor accounts?
Foundation Drive governance band (…/Quan-tri/Dang-ky-va-giay-phep/<entity>/) on the administrator's instruction. (Brand-asset zips deliberately excluded.)
touches no live financial/care data, just adds a reference surface, and it publishes the entity identities (legal names, MSTs, seals, letterheads) that Idea 02's per-entity artefacts (§A5) then consume. Recommended order: Idea 03 B-P1/B-P2 first, then Idea 02.
_system/config/entities.yaml is the shared seam — authored once (from§0 + B-P1), read by both Idea 02 (receipts/QR/reports) and Idea 03 (identity card). Build it in B-P1.
student/care side of Idea 02 is parked (scope decision, top of Part A). So D0 does not block this phase — the routing guard it gates is deferred. Idea 03 proceeds immediately (descriptive); the finance-side of Idea 02 needs only D1/D4/D5.
assets that A-P4 needs (D4); track the dependency, don't block — a plain-rule masthead degrades gracefully (document-chrome.md).
either idea. Neither publishes outward; both stay behind the hub login.
Scope is now governance + donors + finance; the student/care side of Idea 02 is parked (scope decision, top of Part A).
(Idea 03). D8 resolved. D0/D2/D3 are deferred with the care phase — no need to answer now.
§B0). To finish B-P1: author _system/config/entities.yaml + governance/{governance.yaml, chi-muc.yaml} — low-risk, unblocks both ideas and gives an immediate visible result (the Legal & Governance page).
Plans section); consider updatingthe plans doc-map (_system/plans/README.md).
starts at B-P2 (page) now that B-P1's store is seeded. The care/student phase is a separate, later go-ahead.