|
1 | | -# 2026-03-11 v1.5.56 - High-Priority Fixrisk Issue Closure (Runtime + Mobile E2E + Compliance) |
| 1 | +# 2026-03-12 v1.5.57 - Fixrisk High-Priority Closure Plan (Live) |
2 | 2 |
|
3 | 3 | ## English Document |
4 | 4 |
|
5 | 5 | ### Objective |
6 | | -Close the outstanding `fixrisk_TODO` issue tracks with enforceable code, contracts, and CI coverage while preserving large-graph readiness (>10k nodes / >1M edges). |
7 | | - |
8 | | -### Completed in This Iteration |
9 | | -- [x] Startup/runtime memory safety remains adaptive (`scripts/start-server.js`, `scripts/lib/runtime-memory-policy.js`). |
10 | | -- [x] PathBridge inbound payload policy remains large-graph aware (`src/core/PathBridge.ts`). |
11 | | -- [x] Added adaptive HTTP request-body spool threshold policy in `src/server.ts`. |
12 | | - - [x] New controls: `NOTE_CONNECTION_REQUEST_BODY_SPOOL_THRESHOLD_KB`, `NOTE_CONNECTION_REQUEST_BODY_SPOOL_STRICT`. |
13 | | - - [x] Runtime diagnostics now expose spool threshold source/recommended/effective values. |
14 | | -- [x] Closed runtime eval/pkg risk for critical paths. |
15 | | - - [x] Added `src/pkg.snapshot.safety.contract.test.ts`. |
16 | | -- [x] Provisioned Detox contract pipeline. |
| 6 | +Complete and verify all `fixrisk_TODO` closure items with executable checks, keeping robustness for large-graph workloads (>10k nodes / >1M edges). |
| 7 | + |
| 8 | +### Verified Closure Snapshot |
| 9 | +- [x] FR-001 .. FR-008 closed by code/contracts. |
| 10 | +- [x] FR-010 closed by pipeline migration to Node24-compatible action runtime (`actions/checkout@v5`, `actions/setup-node@v5` + force flag). |
| 11 | +- [x] FR-011 closed by Java 21 gate hardening: |
| 12 | + - [x] Android prereq checker now supports Java 21 candidate discovery (env slots + common local install paths, including Android Studio JBR). |
| 13 | + - [x] Migration gate provisions Java 21 for tauri-rust suite. |
| 14 | +- [x] Deferred hardening slice completed for stricter IPC schema guards on known PathBridge envelope families (`src/core/PathBridge.ts` + contracts). |
| 15 | +- [x] Deferred hardening policy slice completed: |
| 16 | + - [x] Unknown bridge type strict-reject policy is now supported (`NOTE_CONNECTION_BRIDGE_REJECT_UNKNOWN_TYPES`). |
| 17 | + - [x] Strict `configure` schema mode is now supported (`NOTE_CONNECTION_BRIDGE_STRICT_CONFIG_SCHEMA`). |
| 18 | +- [x] Deferred hardening configure-value slice completed: |
| 19 | + - [x] `configure.layout` is now enum-validated (`vertical`/`horizontal`/`radial`/`orbital`). |
| 20 | + - [x] `configure.background` now enforces safe `.exr`/`.hdr` filename rules (no traversal/path separators). |
| 21 | + - [x] `configure.bg_brightness` and `configure.reader_media_scale` now enforce runtime-safe ranges. |
| 22 | + - [x] `configure.targetId` and `configure.target_id` must match when both are present. |
| 23 | +- [x] Deferred hardening strict-policy gate slice completed: |
| 24 | + - [x] Added executable strict PathBridge verifier (`npm run verify:pathbridge:strict`). |
| 25 | + - [x] Migration/publish workflows now run a dedicated strict PathBridge schema gate. |
| 26 | + - [x] Added strict gate contract coverage (`src/pathbridge.strict.policy.contract.test.ts`). |
| 27 | +- [x] Deferred hardening mobile memory ceiling slice completed: |
| 28 | + - [x] Runtime heap policy now distinguishes `desktop`/`android`/`ios` platform ceilings. |
| 29 | + - [x] iOS Jetsam tier support added (`NOTE_CONNECTION_IOS_JETSAM_TIER`). |
| 30 | + - [x] Added iOS memory-bound contract coverage (`src/runtime.heap.policy.contract.test.ts`). |
| 31 | +- [x] Deferred hardening SBOM attestation slice completed: |
| 32 | + - [x] Added SBOM attestation generator (`npm run generate:sbom:attestation`). |
| 33 | + - [x] Added SBOM attestation verifier with strict mode (`npm run verify:sbom:attestation -- --strict 1`). |
| 34 | + - [x] Migration/publish workflows now include SBOM attestation policy gates. |
| 35 | + - [x] Release workflow now validates signing key-pair completeness and auto-enforces signature requirement when signing keys are provisioned. |
| 36 | + - [x] Signed attestation key-id lifecycle policy is now enforced (required key-id + allowlist/revocation checks) with contract coverage. |
| 37 | + - [x] Multi-key trust policy is now enforced (minimum RSA strength + rotation overlap + optional keyring policy file) with contract coverage. |
| 38 | + - [x] Signed-attestation provenance linkage is now enforced (immutable release metadata expectations + keyring schema/version pin checks) with contract coverage. |
| 39 | + - [x] Signed-attestation transparency inclusion policy is now enforced (append-only ledger + inclusion proof chain checks + schema/version pinning) with contract coverage. |
| 40 | +- [x] Deferred hardening slice completed for SBOM policy: |
| 41 | + - [x] CycloneDX SBOM generator script is now available (`npm run generate:sbom`). |
| 42 | + - [x] SBOM policy verifier is now available with strict mode (`npm run verify:sbom -- --strict 1`). |
| 43 | + - [x] Migration/publish workflows now enforce SBOM policy contracts. |
| 44 | +- [ ] FR-009 remains pending only on real-device operational evidence (tooling already closed). |
| 45 | + |
| 46 | +### Remaining High-Priority Work (FR-009 Ops Closure) |
| 47 | +1. Device acceptance gate |
| 48 | + - Run `node scripts/verify-capacitor-device-acceptance.js`. |
| 49 | + - Ensure an online authorized physical Android device is connected (emulator targets are rejected by default). |
| 50 | + - Use `NOTE_CONNECTION_ALLOW_EMULATOR_EVIDENCE=1` only for non-production emulator experiments. |
| 51 | +2. Large-graph evidence capture |
| 52 | + - Set: |
| 53 | + - `NOTE_CONNECTION_EVIDENCE_NODE_COUNT=10000` |
| 54 | + - `NOTE_CONNECTION_EVIDENCE_EDGE_COUNT=1000000` |
| 55 | + - Run `node scripts/capture-capacitor-device-evidence.js`. |
| 56 | +3. Strict evidence verification |
| 57 | + - Set: |
| 58 | + - `NOTE_CONNECTION_REQUIRE_LARGE_GRAPH_EVIDENCE=1` |
| 59 | + - `NOTE_CONNECTION_MIN_EVIDENCE_NODE_COUNT=10000` |
| 60 | + - `NOTE_CONNECTION_MIN_EVIDENCE_EDGE_COUNT=1000000` |
| 61 | + - Run `node scripts/verify-capacitor-evidence-freshness.js`. |
| 62 | +4. Consolidated closure check |
| 63 | + - Run `node scripts/verify-fixrisk-issues.js --strict-pending`. |
| 64 | + - Run `node scripts/run-fixrisk-ops-closure.js`. |
| 65 | + |
| 66 | +### Robustness Guardrails |
| 67 | +- Keep adaptive memory policy enabled (`scripts/lib/runtime-memory-policy.js`) for large-graph bursts. |
| 68 | +- Keep bounded request-body + spool policy active in server runtime. |
| 69 | +- Maintain strict contract suite baseline (`node node_modules/jest/bin/jest.js --runInBand`). |
| 70 | +- Godot SVG limitation remains active: do not depend on direct SVG import in Godot runtime paths. |
17 | 71 | - [x] Added `.detoxrc.json`, `e2e/*`, `scripts/verify-detox-pipeline.js`, `scripts/run-detox-e2e.js`. |
18 | 72 | - [x] Added CI workflow `.github/workflows/mobile-e2e-detox-contracts.yml`. |
19 | 73 | - [x] Added contract test `src/detox.pipeline.contract.test.ts`. |
|
0 commit comments