T6B Package Denominator (SC-FEES / W10)¶
Scope: SC-FEES source-declared topology only. This records the T0-E2 / T0-C closure that already exists. It does not certify W10. It does not replace a fresh disposable install proof for T6B.
Source identity: FE tree 8362e7db… / BE tree a31fe594… (T6A application trees; no T6B application edits).
Package: SC-FEES · installer scola_bundle_fees · flag scola_fees · entitlement independent of install.
Declared closure checksum: df64d2e7ca2a63e4c3f45c17e30addbe4d937734a6e2a70ec180425b8ebd1b99
What static topology already says¶
package_topology.py + package_topology_ci_check.py on this HEAD: PASS.
Standalone scola_bundle_fees declared closure (Scola modules only):
- Core:
scola_bundle_core,scola_core,scola_attendance,scola_lesson_hours,scola_news,scola_parent,scola_portal,scola_timetable - Internal:
scola_platform_support,scola_identity_admin,scola_observability,scola_leadership_hub,scola_platform - Fees:
scola_fees,scola_bundle_fees - Auto-install bridges:
scola_parent_fees_bridge,scola_portal_fees_bridge
Not in standalone Scola closure:
scola_admission/scola_admission_fees_bridgescola_account/scola_bundle_finance(SC-FIN)scola_cbt, foundation, BOS, payroll commercial SKUsscola_feespeer-SKU violations reported by the analyzer: none
Composite SC-ADM+SC-FEES is intentionally_composite; expected bridge scola_admission_fees_bridge only when both parents coexist.
T0-C suite manifest SC-FEES.json:
install_topology_status:TOPOLOGY_CERTIFIED_INDEPENDENTbusiness_workflow_status:BUSINESS_WORKFLOW_NOT_YET_CERTIFIED- placeholder selector
tests/e2e/package/fees_topology_smoke.spec.tsis notPKG-FEES-W10
What this denominator does not claim¶
| Assert from T6B prompt | Status this tranche |
|---|---|
Fresh DB install scola_bundle_fees |
NOT RUN (product gate FAIL; no disposable mutation) |
| Entitlement default OFF on fresh install | NOT RUN |
| Route/API/menu closed when entitlement OFF | NOT RUN live; source registry has featureFlag: scola_fees but FE SPP section is documented as always-visible inside a shell labeled SC-FIN |
Odoo account / openeducat_fees not pulled |
FALSE in source: scola_fees/__manifest__.py depends on both. Analyzer does not treat Odoo account as commercial SC-FIN, but Fees controllers post through account.payment.register |
| Admission bridge absent on standalone | DECLARED by auto_install depends; not proven on a fresh DB this tranche |
| Live mixed dev/demo match declared auto_install | FAIL vs contract: both parents installed, fees bridges uninstalled |
| Topology mutation CI (undeclared peer / hidden import / auto-install without parent / bridge with entitlement OFF) | Existing T0-E2 CI PASS for declared graph. Entitlement-OFF live mutation not added. Hidden Odoo account dependency is a product question, not a CI failure today |
Disposition legend (W10 surfaces)¶
T6B_SUPPORTED— intended SC-FEES leaf; not certifiedBRIDGE_ONLY— requires peer SKU and peer entitlementSC_FIN_SURFACE— accounting/BOS; must not be certified as SC-FEESLEGACY_REMOVE— native/alternate pathPRODUCT_DECISION_REQUIRED— exposed or inferred; unsignedINTERNAL— non-user
Traceability (source map, not runtime proof)¶
| Leaf/route/API/action | Actor | Capability | Tenant/scope rule | Package | Test ID | Disposition |
|---|---|---|---|---|---|---|
FE app finance SPP section |
staff | finance.billing.view |
undocumented; app package: "SC-FIN"; no moduleKey |
mixed SC-FEES/SC-FIN | RT-W10-UIA-01 |
PRODUCT_DECISION_REQUIRED |
/payment/schedule /payment/enrollment /payment/templates |
staff | billing/fees view | company? | SC-FEES intended | RT-W10-POS-01 |
T6B_SUPPORTED |
/admin/finance/konfirmasi-transfer cash receive payment-setup |
cashier/treasurer | verify / receive_cash / setup | company? | SC-FEES | RT-W10-STA-01 |
PRODUCT_DECISION_REQUIRED |
/parent/payment-list parent billing |
parent | parent billing | linked child unproven | SC-CORE+FEES bridge | RT-W10-SCP-01 |
BRIDGE_ONLY |
/accounting/* journal/invoice/recon/BOS |
finance | scola_account |
SC-FIN | SC-FIN | RT-W10-XMD-01 |
SC_FIN_SURFACE |
/api/v1/finance/fee-templates/* /fee-schedules/* |
staff | view vs manage mixed; prefix /api/v1/finance/ → view |
company helper incomplete | SC-FEES | RT-W10-NEG-01 |
PRODUCT_DECISION_REQUIRED |
/api/v1/finance/fee-enrollments/save\|delete\|action |
staff | registry view prefix; controller _can_manage |
browse ID then write; student lookup unscoped | SC-FEES | RT-W10-TEN-01 |
PRODUCT_DECISION_REQUIRED |
/api/v1/finance/accounting/* bulk-create/approve/payment-submit |
staff | finance.billing.manage under scola_fees |
account.payment.register.sudo() |
SC-FEES leaking SC-FIN | RT-W10-XMD-01 |
PRODUCT_DECISION_REQUIRED |
/api/v1/payment/manual/* /api/v1/payment/ |
payer/operator | finance.payment.manage |
invoice/company? | SC-FEES | RT-W10-POS-01 |
PRODUCT_DECISION_REQUIRED |
/payment/callback/midtrans /payment/callback/xendit |
public | public | signature/replay unsigned | SC-FEES | RT-W10-IDM-01 |
PRODUCT_DECISION_REQUIRED |
/api/v1/parent/children /parent/billing /parent/invoices/<id> |
parent | parent | child predicate | bridge | RT-W10-SCP-01 |
BRIDGE_ONLY |
/api/fees/ prefix |
staff | finance.billing.view |
— | SC-FEES | RT-W10-NEG-01 |
PRODUCT_DECISION_REQUIRED |
Native OpenEduCat fees / Odoo account.move / /web/dataset |
ACL user | native | native | alternate | RT-W10-NEG-01 |
LEGACY_REMOVE |
scola_admission_fees_bridge |
overlay | both entitlements | both parents | composite | RT-W10-XMD-01 |
BRIDGE_ONLY |
| Core smoke Fees business cases | — | — | — | Core | — | must remain absent (DEC-001) |
Topology checksum inputs¶
- FE:
financeApp.js,financeRoutes.js, parent finance fragments,apiRouteAccessRegistry.js - BE:
scola_fees,scola_bundle_fees, three fees bridges,api_route_access.pyfinance/payment rows,platform_entitlements.pySC-FEES - Tests:
PKG-FEES-W10missing; placeholderfees_topology_smoke.spec.tsis not coverage - Baseline:
T0-C-evidence/baselines/SC-FEES-closure.json
Independent recompute vs T0-C baseline¶
Recomputed closure_checksum on this HEAD equals pinned baseline df64d2e7…. Declared standalone graph did not drift. W10 business certification remains open.
T6B.1 overlay install proof (not a demo/Golden mutation)¶
Application identity: FE 2f716594ee76… / tree 8606e7bb… · BE e78d06d1ff64… / tree 6d13752c…
Disposable DB scola_t6b_audit_20260817 was created with createdb -T scola_golden (clone UUID 2bf5fd27-9390-11f1-9617-28e8d4be73f5 is expected). Installed on the clone only:
scola_bundle_fees17.0.1.0.0scola_fees17.0.1.1.0scola_parent_fees_bridgescola_accountuninstalled; Odooaccountremains asscola_feeshard-dep- Canonical Golden
scola_golden/:8090was not started and not upgraded
package_topology_ci_check.py on this tip: PASS (15 SKUs). Declared SC-FEES checksum still df64d2e7…. Adding scola_parent.group_scola_parent ACL xmlid inside scola_fees did not add a new manifest depend (scola_parent already in Core closure).
Entitlement OFF was proven live (RT-W10-UIA-01). Fresh empty-DB install scola_bundle_fees (no Golden clone) was not repeated; overlay clone + module install is the T6B.1 runtime proof.
T0-C business_workflow_status remains BUSINESS_WORKFLOW_NOT_YET_CERTIFIED until an independent auditor issues a verdict.