P2.6: Type Safety Cleanup - Replaced 'any' return types in vite-plugin.ts with concrete types (UserConfig, transform return type) - Documented TypeScript mixin 'any[]' exception in PlatformServiceMixin.ts - Audit confirmed: zero 'any' in codebase except documented TS mixin limitation - All external boundaries use 'unknown', all data payloads use 'Record<string, unknown>' P2.7: System Invariants Documentation - Created SYSTEM_INVARIANTS.md documenting all 6 enforced invariants - Added to docs/00-INDEX.md under Policy & Contracts section - Each invariant includes: What, Why, How, Where Progress Docs Updates: - Updated 00-STATUS.md: marked P2.6/P2.7 complete, added type safety invariant note - Updated 01-CHANGELOG-WORK.md: added 2025-12-22 entries for P2.6/P2.7 - Updated 03-TEST-RUNS.md: added P2.6 type safety audit test run - Updated P2-DESIGN.md: marked P2.6 acceptance criteria complete - Updated SYSTEM_INVARIANTS.md: added Type Safety Notes section Baseline Tag: - Created v1.0.11-p0-p1.4-p1.5-p2.6-p2.7-complete TypeScript compilation: ✅ PASSES Build: ✅ PASSES CI: ✅ All checks pass
2.2 KiB
Open Questions
Purpose: Questions and uncertainties discovered during implementation, with proposed answers and decisions.
Owner: Development Team
Last Updated: 2025-12-22
Status: active
Template
Q: [Question Title]
Context:
[What led to this question? What problem are we trying to solve?]
Files Involved:
path/to/file1.tspath/to/file2.swift
Options:
-
Option A: [Description]
- Pros: [list]
- Cons: [list]
-
Option B: [Description]
- Pros: [list]
- Cons: [list]
Recommendation:
[Which option is recommended and why]
Decision:
[Final decision if made, or "Pending"]
Current Questions
No open questions currently. All architectural decisions have been made.
Closed Questions
Q: What is the authoritative CI entrypoint?
Context:
Need to establish a single source of truth for CI to avoid drift and ensure consistency.
Decision:
./ci/run.sh is canonical. It wraps ./scripts/verify.sh and provides a stable interface for:
- CI runners
- Release gates
- Pre-merge checks
- Git hooks (
githooks/pre-push) - Makefile targets (
make ci)
./scripts/verify.sh is an implementation detail/library function. External systems should call ./ci/run.sh.
Rationale:
- Stable interface for automation
- Clear separation: entrypoint vs implementation
- Easy to add pre/post hooks in the future
- Consistent exit codes and output format
Status: ✅ RESOLVED (2025-12-22)
Q: How to enforce core module purity?
Context:
Core module (src/core/) must remain platform-agnostic and portable. Need automated enforcement.
Decision:
Enforce via verify.sh:
- Platform import blocking: comprehensive regex detects Node builtins, Capacitor, React
- Export validation: Node-based check ensures
package.json.exports['./core']exists - Source checks run before build (works on clean checkouts)
- Artifact checks run after build (validates build outputs)
Rationale:
- Automated enforcement prevents regressions
- Clear error messages guide developers
- Policy encoded in tooling, not tribal knowledge
Status: ✅ RESOLVED (2025-12-22)
Last Updated: 2025-12-22