You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+50Lines changed: 50 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -905,6 +905,37 @@ jobs:
905
905
906
906
The suite now includes proof-style parity tests that run the same function behavior in both legacy Java and translated Python and assert identical outputs for shared input vectors.
907
907
908
+
### What Is A Vector, Vectoring, And A Vector Runner?
909
+
910
+
In this repository, a **vector** means one structured test case: input values plus the expected output.
That single row is one vector. A vector file is a list of many such rows (normal, edge, and negative scenarios).
917
+
918
+
**Vectoring** is the testing approach where both runtimes (legacy Java and translated Python) are driven from that same shared vector dataset instead of hardcoded test values in multiple places.
919
+
920
+
Why vectoring is useful:
921
+
- Single source of truth for migration parity expectations
922
+
- Less duplicated test data across languages
923
+
- Easier reviews and audits of behavioral requirements
924
+
- Faster updates when business rules change
925
+
926
+
**Vector Runner** in this project:
927
+
- `LegacyCalculatorVectorRunner.java`reads the shared JSON vectors
928
+
- Executes the legacy Java function for each vector
929
+
- Emits per-case output (`id, actual, expected`) for parity checks
930
+
931
+
This is how we prove output equivalence:
932
+
1. Define vectors in shared JSON/CSV fixture files
933
+
2. Run legacy Java against those vectors
934
+
3. Run translated Python against those same vectors
935
+
4. Assert Java output equals Python output for each vector id
936
+
937
+
This pattern gives an explicit migration proof: same inputs, same outputs, across runtimes.
938
+
908
939
| Proof Test | What It Verifies | Location |
909
940
|---|---|---|
910
941
| Java fixture expected-value test | Legacy Java behavior is stable and explicit | `tests/correctness/test_legacy_java_python_equivalence.py` |
@@ -939,6 +970,25 @@ Fixture sources:
939
970
940
971
Practical recommendation: keep a shared vector file and run both Java and Python against it, treating Java output as the initial oracle during migration.
941
972
973
+
### Zero-Trust Solutions Matrix
974
+
975
+
| Zero-Trust Control | What It Means | Project Implementation | Evidence |
976
+
|---|---|---|---|
977
+
| Verify identity on every request | No implicit trust by network location | JWT verification + RBAC dependency checks in API routes | `tests/negative/test_rbac_enforcement.py` |
978
+
| Explicit policy decision per request | Each request must be allow/deny evaluated | Input guardrails, model lock, egress policy lock, blocked audit path | `tests/negative/test_model_blocking.py`, `tests/negative/test_egress_blocking.py`, `tests/adversarial/test_prompt_injection.py` |
979
+
| Least privilege access | Users only get required capabilities | Role-permission mapping with permission-scoped endpoints | `core/auth.py`, `tests/negative/test_rbac_enforcement.py` |
0 commit comments