T6B Residuals¶
Classification at T6B-B (product-gate stop). No application code was changed, so these are pre-existing source/runtime facts, not regressions introduced by this tranche.
| ID | Severity | Class | Evidence | Disposition |
|---|---|---|---|---|
| T6B-F000 | S0 | Missing product contract | 30 W10 properties unsigned; 07-release-test-matrix W10 BLOCKED; STAB-014 open |
PRODUCT_DECISION_REQUIRED — blocks Phases 4–10 |
| T6B-F001 | S1 | STAB-014 tenant/FK | fee_enrollment_api.py save/delete/action browse caller IDs; lookups sudo-search students/courses without company |
OPEN — do not invent scoped service as approved policy |
| T6B-F002 | S1 | DEC-003 capability collapse | Registry prefix /api/v1/finance/ → finance.billing.view covers unmatched finance paths including enrollment mutations by prefix |
OPEN |
| T6B-F003 | S1 | Accounting inside SC-FEES | scola_fees depends on Odoo account; payment_accounting_api.py posts via account.payment.register.sudo() |
PRODUCT_DECISION_REQUIRED (items 22–23, 26) |
| T6B-F004 | S1 | FE package owner drift | financeApp.js package: "SC-FIN"; comment that SPP is always visible; no app-level moduleKey |
PRODUCT_DECISION_REQUIRED (item 29) |
| T6B-F005 | S1 | Auto-install vs live mixed DB | Declared auto_install fees bridges uninstalled on scoladev/scoladev_demo while both parents exist |
OPEN — do not install onto demo to “make topology pass” |
| T6B-F006 | S1 | Public gateway callbacks | /payment/callback/midtrans, /payment/callback/xendit auth=public; replay/signature unsigned |
PRODUCT_DECISION_REQUIRED (items 13, 15, 16, 30) |
| T6B-F007 | S1 | No refund/reversal/receipt contract | Manual payment states pending/verified/rejected; receipt template commented out | PRODUCT_DECISION_REQUIRED (items 19, 21) |
| T6B-F008 | S2 | Sudo budget at ceiling | scola_fees 21/21 |
Do not raise budget; future scoped service must stay within budget or justify |
| T6B-F009 | S2 | Dev served identity stale | Dev env SHA 3d7a213… / tree 126944f7… vs HEAD d23c2c6… / a31fe594… |
Record only; no restart this tranche |
| T6B-F010 | S2 | Golden HTTP down | :8090 connection refused; not started |
Record only |
| T6B-F011 | S2 | T0-C placeholder ≠ PKG-FEES-W10 | fees_topology_smoke.spec.ts / TOPOLOGY_CERTIFIED_INDEPENDENT is not W10 business certification |
Do not treat as Fees GREEN |
No residual is closed by documentation alone. None is a reason to promote demo or production.
Descendant T6B.1 (source + overlay runtime; not independent certification)¶
Historical PRODUCT_DECISION_REQUIRED rows were the T6B-B stop. After the signed contract they are not current-tip status for T6B.1 in-scope surfaces.
| ID | After T6B.1 | Runtime | Residual |
|---|---|---|---|
| T6B-F000 | Product contract approved | n/a | Closed as product blocker |
| T6B-F001 | Legacy enrollment save/delete/action fail-closed; W10 enroll/bill scoped | RT-W10-TEN-01 PASS | Do not re-open unsigned browse-ID policy |
| T6B-F002 | Exact /api/v1/fees/w10/* registry rows win over finance prefix |
unit + W10 NEG | Prefix /api/v1/finance/ still exists for non-W10 |
| T6B-F003 | account.payment.register path returns accounting_excluded |
RT-W10-XMD-01 PASS | Hard-dep Odoo account remains (topology) |
| T6B-F004 | SPP section package: "SC-FEES" / scola_fees; accounting stays SC-FIN |
source + UIA OFF | Treasurer FE still mixes finance.payment.setup / manage |
| T6B-F005 | Overlay clone installed scola_bundle_fees; demo/dev not mutated |
overlay only | Live mixed demo auto_install drift unchanged |
| T6B-F006 | Public callbacks gateway_excluded |
RT-W10-XMD-01 PASS | T6B.3 still required for real gateway |
| T6B-F007 | Receipt after verify; refund cap exists; maker-checker SoD; AV scan fail-closed | POS/STA/XRP/VAL PASS including EICAR | Independent T6B1-AUD-002 remains until re-audit |
| T6B-F008 | sudo 15/21 (down from 21/21) | budget PASS | Idempotency/outbox still with_user(SUPERUSER_ID) |
| T6B-F009 | Record only | not restarted | Dev served identity still stale |
| T6B-F010 | Record only | not started | Golden :8090 still down |
| T6B-F011 | PKG-FEES-W10 runtime exists | 11/11 overlay | T0-C topology smoke is still not W10 certification |
Remaining named residuals (honest; do not treat as certified-closed)¶
| ID | Severity | Residual |
|---|---|---|
| T6B-R001 | S1 closed in source/overlay | Independent T6B1-AUD-002. Proof ingest now calls clamscan fail-closed on W10 submit, /api/v1/payment/manual/<id>/proof, and scola.payment.proof create. Infected EICAR PDF → proof_infected, stored count 0. Native /my/child/.../upload website path is still a legacy alternate (contract item 30), not a W10 lifecycle. |
| T6B-R002 | S2 | FE treasurer still has finance.payment.setup / finance.payment.manage; BE treasurer does not |
| T6B-R003 | S2 | FE head_admin still has extra finance.billing.manage; BE head_admin does not get W10 manage |
| T6B-R004 | S2 | scola_fees still hard-depends Odoo account + openeducat_fees |
| T6B-R005 | S2 | T6B.2 SC-ADM↔SC-FEES bridge not implemented |
| T6B-R006 | S2 | Served-dev SHA/tree stale; scoladev not upgraded for T6B.1 |
| T6B-R007 | S3 | Portal parent W10 ACL depends on scola_parent.group_scola_parent surviving _sync_role_groups |
None of these residuals authorizes demo or production promotion.