Commit Graph

242 Commits

Author SHA1 Message Date
372d882175 CTO code review: FRE-5006 VoicePrint quality improvements — rework required
Reviewed commit a653c77 in ShieldAI repo. Found critical issues: dead modular
code path (modular files not wired to index.ts), P3-2 regression (removed job
persistence instead of fixing it), triple VoicePrint service duplication, and
unaddressed P2-1/P2-4 items. Detailed review in plans/FRE-5006-REVIEW-FINDINGS.md.

Disposition: REWORK REQUIRED — return to Junior Engineer.
2026-05-10 12:13:54 -04:00
27ef4ad94c Record FrenoCorp repo-scope policy in CTO memory (FRE-4529)
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 12:13:14 -04:00
97d246e98e Clean up FrenoCorp repo: move project code to correct repositories (FRE-4529)
- Removed literal $AGENT_HOME/ directory artifact
- Moved Lendair iOS code to ~/code/lendair/iOS/Lendair/
- Moved marketing/ to ~/code/scripter/
- Moved ShieldAI workflow doc to ~/code/ShieldAI/
- Moved CI/CD workflows and load-test scripts to ~/code/lendair/
- Moved web configs (vercel.json, .env.example, index.html) to ~/code/lendair/web/
- Removed root-level project configs (package.json, tsconfig.json, vite.config.ts, etc.)
- Removed shared/exports/ and scripts/
- Updated all 8 agent AGENTS.md files with Repository Rules section
- Clarified: FrenoCorp is for agent notes/memories/plans only, not project code

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 12:12:06 -04:00
d74f65b9d5 Fix error alert infinite loop in ClubsView and ChallengesView (FRE-4664)
- Replace unused lastError state with alertIsPresented boolean
- OK button now clears viewModel.error to prevent re-trigger
- Add onChange observer to show alert when error becomes non-nil
- Applies to both ClubsView.swift and ChallengesView.swift

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 10:42:40 -04:00
9b14011dfa Recover stalled issue FRE-4990 — ghost-run dedup fix verified and closed
- Verified fix commit 7cf694c5 on paperclip master resolves ghost-run dedup loop
- All 10 heartbeat-active-run-output-watchdog tests pass
- Closed FRE-4990, FRE-5042 (exclude ghost runs), and FRE-5105 (recovery)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 09:21:27 -04:00
28b180fcab CTO daily note: FRE-5106 silent run review
Reviewed stuck Junior Engineer run on FRE-4808.
Process killed, execution lock cleared.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 09:19:14 -04:00
1b5fb6b635 Fix FRE-4690 third-pass review findings
P1: Add distribution cert + provisioning profile import for TestFlight
P3: Remove --recursive from swift format lint (redundant, causes error)
P3: Revert vercel-action v25 → v30
2026-05-10 09:10:05 -04:00
a3e9855e47 FRE-5101: Close productivity review for FRE-4930 — executionAgentNameKey mismatch
Diagnosed root cause: FRE-4930's executionAgentNameKey is pinned to
Founding Engineer (paused), but issue is assigned to Security Reviewer.
Same immutability bug hit FRE-4763, FRE-4951, and FRE-4930 today.
Posted diagnostic comment on FRE-4930 with next steps.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 08:35:46 -04:00
7b50a53838 Complete productivity review FRE-4808, fix review pipeline assignments for 3 issues [FRE-5100] 2026-05-10 08:09:41 -04:00
bc7bf124f5 Fix P0-P3 code review issues for clubs and challenges (FRE-4664)
P0: Fix variable shadowing in ClubService.createClub/updateClub and
    ChallengeService.createChallenge/updateChallenge — renamed local
    'var request' to 'var urlRequest' so JSONEncoder encodes the
    typed parameter, not the URLRequest.

P1: Wire CreateClubSheet and CreateChallengeSheet to parent ViewModel —
    sheets now receive viewModel and call createClub/createChallenge
    before dismissing.

P2: Extract HTTPMethod enum to shared Utils/HTTPMethod.swift (was
    defined in NotificationService). Remove dead 'body' parameter from
    buildRequest in all three services. Add error alert UI to
    ClubsView and ChallengesView.

P3: Replace forced URL unwrap with static let defaultBaseURL in all
    three services. Fix MockChallengeService.updateChallenge to track
    updateCalled instead of always throwing notFound.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 06:42:00 -04:00
Senior Engineer
b8c14ef8a7 Fix CI/CD pipeline issues from code review FRE-4690
P1: Fix TestFlight deployment — add LendairApp executable target,
    use xcodebuild archive/export instead of swift build for IPA
P2: Fix swift-format — use built-in 'swift format lint' (Swift 5.6+)
    instead of external 'swift-format' binary
P3: Create missing index.html for Vite build entry point
P3: Update vercel-action from v30 to v25 (better maintained)
2026-05-10 06:04:09 -04:00
6b47ed4a06 Close FRE-5081: mark ghost run 14acabf9 evaluation as false positive
The stale-run detector flagged the same Code Reviewer ghost run
(14acabf9, FRE-4695) for the ~11th time. Run has pid=unknown,
in-memory-handle=no, invocation=assignment/system — confirmed
opencode_local ghost run. Documented in Code Reviewer's AGENTS.md
as expected behavior. Root fixes tracked in FRE-4990 and FRE-5042.
2026-05-10 04:58:28 -04:00
5b31f088cc Fix CI/CD pipeline issues from code review FRE-4690
- web-ci.yml: Remove web/ path refs (app is at repo root), fix cache paths, update Vercel action to v30
- ios-ci.yml: Fix swift-format tool name, use debug build for PR CI, add TestFlight deployment job, use env var for Xcode path
- Scaffold package.json, tsconfig.json, vite.config.ts for web project at root
2026-05-10 04:53:24 -04:00
ad6b4c9c1c fix: Address code review findings for NotificationsView (FRE-4737)
- P0: Add default param to protocol list(params:) for compile fix
- P1: Fix onDelete async closure, implement deletion logic
- P2: Remove redundant objectWillChange.send() (Published handles it)
- P2: Make RelativeDateTimeFormatter static singleton (per-row perf)
- P3: Replace deprecated NavigationView with NavigationStack
2026-05-10 04:38:12 -04:00
c68cc9b8ee Close FRE-5021 ghost run eval as false positive, escalate FRE-4990 [FRE-5021] 2026-05-10 03:44:40 -04:00
38be3e090a Close FRE-5017: ghost run evaluation, reassign FRE-4806 to Code Reviewer
FRE-5017: Run 14acabf9 confirmed ghost run (no process, no in-memory handle).
Root cause tracked in FRE-4990 (critical). Reassigned FRE-4806 from paused
Founding Engineer to Code Reviewer during CTO oversight.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 03:37:37 -04:00
e7b951ec07 Review silent active run for Code Reviewer FRE-4989
- Closed FRE-4989 as false positive (same ghost run 14acabf9)
- Ghost run has pid unknown, no in-memory handle per FRE-4966 pattern
- FRE-4990 remains the root fix (server-side ghost-run dedup)
- Existing ghost run record keeps spawning new evaluation issues

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 02:47:31 -04:00
90c79eb6d4 FRE-4955 Review silent active run for Code Reviewer
- FRE-4955: 9th stale-run eval for Code Reviewer zombie run , marked false positive
- FRE-4954: Investigation of Code Reviewer adapter reliability closed as done. Root cause: no heartbeat/adapter config. Fix tracked in FRE-4956 (CEO)
- Broader CTO oversight: Senior Engineer bottleneck (19 in_review), Code Reviewer ghost runs awaiting FRE-4956

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 01:43:53 -04:00
6f90db8503 Add load testing job to GitHub Actions CI pipeline [FRE-4931] 2026-05-09 07:56:52 -04:00
92476653b4 Review silent active run for Code Reviewer FRE-4904
- Investigated ghost run da233115: timer/system run with no process ever started
- Code Reviewer agent healthy, run was a false positive from scheduler
- Closed issue with findings

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-09 02:14:52 -04:00
3bf7235461 Add CI/CD pipelines for Lendair (iOS + web) [FRE-4690]
- iOS: swift lint, build verification, and test on PR
- Web: typecheck, vitest tests, build, and Vercel deployment (ready for web project)
- Package.swift: defines Lendair as buildable Swift package
- Test target: LendairTests with XCTest boilerplate

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-07 22:54:21 -04:00
215f0c61ae Complete productivity review FRE-4789, break circular dependency chain [FRE-4802]
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-07 21:26:18 -04:00
0f4d4a834b Add daily note for 2026-05-07
Documents FRE-4797 false positive determination and silent active run review.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-07 21:26:12 -04:00
f0305134e8 Auto-commit 2026-05-03 22:45 2026-05-03 22:45:42 -04:00
cb55ad95e2 Add notification badge count and MainTabView with notification tab FRE-4740 FRE-4739
- Add getUnreadCount() endpoint to NotificationsServiceProtocol
- Add NotificationUnreadCountResponse model
- Add badgeCount and fetchUnreadCount() to NotificationsViewModel
- Update markAsRead/markAllAsRead to decrement badge count
- Create MainTabView with Home, Challenges, Clubs, Notifications tabs
- Add unread badge on notification tab using .badge() modifier
- Support injected ViewModel in NotificationsView for shared state
- Add badge count tests to NotificationServiceTests
- Fetch unread count on app launch and tab switch

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-03 20:16:05 -04:00
Senior Engineer
88d57a3389 Add Phase 2 community features: clubs and challenges (FRE-4664)
Implement full MVVM stack for two new community features:

Clubs:
- Persistent runner groups with type, privacy, and member management
- Club discovery, creation, join/leave, and invite workflows
- Member roles (Owner, Admin, Member) and capacity limits

Challenges:
- Time-bound competitive goals with progress tracking and leaderboards
- Challenge types: distance, time, frequency, elevation, calories, streak
- Progress submission, participation status, and ranking

Files:
- Models: Club.swift, Challenge.swift
- Services: ClubService.swift, ChallengeService.swift
- ViewModels: ClubViewModel.swift, ChallengeViewModel.swift
- Views: ClubsView.swift, ClubDetailView.swift, ChallengesView.swift, ChallengeDetailView.swift
- Tests: ClubServiceTests.swift, ChallengeServiceTests.swift
- Updated README.md with new feature documentation
2026-05-03 19:10:34 -04:00
57a460761a FRE-4665: Implement Phase 3 AI training plans and premium features
- Models: TrainingPlan, Race, FamilyPlan, BeginnerMode, CommunityEvent
- Services: 5 service layers with protocol-based architecture
- ViewModels: 5 view models with @MainActor ObservableObject pattern
- Views: 10 SwiftUI views for all Phase 3 features
- Updated README with full Phase 3 documentation

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-03 15:21:01 -04:00
db23f533af Update daily notes: FRE-4541 assessment complete [FRE-4541]
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-03 13:04:34 -04:00
b898ae3763 FRE-4663: Complete code review for Nessa Phase 1 GPS tracking and activity feed
- Reviewed RouteExecutionView.swift (341 lines) - GPS tracking UI
- Reviewed ActivityFeedView.swift (93 lines) - TabView composition
- Reviewed FollowViewModel.swift (163 lines) - @Observable pattern
- Reviewed test files (448 lines total, 34 test cases)
- All code quality checks passed
- Assigned to Security Reviewer for final approval
2026-05-03 13:00:22 -04:00
Senior Engineer
57eb01f5af FRE-4738: Implement mark-as-read and mark-all-read actions
- Extract NotificationItem/NotificationType to Models/Notification.swift
- Create NotificationsServiceProtocol with testable service layer
- Implement markAsRead(id:) and markAllAsRead() with HTTP calls
- Add NotificationError enum with localized descriptions
- Update NotificationsViewModel to use protocol-based service
- Add 18 unit tests (12 ViewModel + 6 Model) with mock service
- Update README with architecture documentation
2026-05-03 12:17:15 -04:00
4f1ff9dbb0 feat: Implement NotificationsView component for Lendair iOS
- Create NotificationsView.swift with SwiftUI List and pull-to-refresh
- Create NotificationRowView.swift for individual notification items
- Create NotificationsViewModel.swift with MVVM pattern
- Implement empty state view for no notifications
- Add mark-as-read and mark-all-as-read functionality
- Support notification types: loan approved/rejected, payment received/due, new lender, system updates
- Add toolbar action for marking all notifications as read
- Include README.md with architecture documentation and integration guide

Next: Connect tRPC notifications router for data fetching
2026-05-03 12:11:00 -04:00
428ab17539 Record FRE-4744 recovery assessment and resolution
FRE-629 was correctly blocked on Cloudflare (FRE-4597). Recovery issue closed as done.
2026-05-03 11:59:00 -04:00
bb8b2e1c9e FRE-4706: Complete unblocking of FRE-4639 liveness incident
Pushed FRE-4639 build warnings fix to gt/master. All iOS audit stabilization issues now live on main branch.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-03 01:13:09 -04:00
0ba3dac4c6 FRE-4546: Add Lendair scope definition memory and daily note
- Daily note for 2026-05-03 with scope definition work
- New Lendair project entity in knowledge graph
- Atomic facts from codebase audit

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-02 21:49:09 -04:00
806b8c2da3 FRE-4661: Resume after liveness incident resolved, confirmed in_review
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-02 21:04:43 -04:00
11cfc25e2f FRE-4661: Update daily notes with PR workflow implementation
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-02 19:42:18 -04:00
e8d00bde6f FRE-4661: Implement ShieldAI PR workflow recommendations
- Add Gitea PR template with code review checklist
- Add CODEOWNERS file for review assignment policy
- Update shieldai-workflow.md with implemented workflow
- Add branch-protection-rules.yaml for gt/master protection

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-02 19:39:49 -04:00
5fe0664650 FRE-4604: Add unit tests for voiceprint and api package - code review complete
Reviewed voiceprint service files from FRE-4510 commit. Identified 8 test coverage areas. Code quality good with clean architecture.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-02 18:19:11 -04:00
c67280a801 current - with may->june scripter debut 2026-05-02 16:07:58 -04:00
222507ba69 Configure Junior Engineer session rotation policy FRE-4577
- Updated AGENTS.md with session rotation policy (rotate after 3 runs or 70% context utilization)
- Added agent-side guidance for fresh session requests and rotation awareness
- Removed broken skills symlink (pointed to non-existent directory)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-02 12:36:16 -04:00
ce9c89905a FRE-4540: Board responded — close issue, create revival child issues
Board decisions: Nessa (keep), Lendair (keep)
- FRE-4545 → Founding Engineer: Nessa scope definition
- FRE-4546 → Senior Engineer: Lendair scope definition
- FRE-4540 marked done, 3 child issues created for revived projects
- 5 projects archived (no code changes)
2026-05-02 11:39:27 -04:00
ce40a59d9c FRE-4540: Pop revival child issue created, board interaction posted
- Child issue FRE-4542 created for Pop scope definition → Founding Engineer
- Board interaction created asking about Nessa and Lendair future
- 5 archive projects documented
- Awaiting board input to close out remaining decisions
2026-05-02 11:37:36 -04:00
12d6433bff FRE-4540: Dormant/backlog project review — archive or revive assessment
Reviewed all 8 dormant/backlog projects against strategic alignment,
recent activity, dev investment, maintenance burden, and revival path.

Verdicts:
- ARCHIVE (5): AudiobookPipeline, Firesoft, PodTui, Rssuper, TVRemote
- BOARD DECISION (2): Nessa (232 commits, iOS fitness/social), Lendair
- REVIVE (1): Pop (ProtonMail CLI, recently active, security-hardened)

Plan document: plans/FRE-4540-dormant-project-review.md
2026-05-02 11:34:31 -04:00
78ec8d4d83 drop 2026-05-02 11:23:27 -04:00
fe065fee08 final cleanup 2026-05-02 11:22:44 -04:00
fd98536a27 FRE-4529: Strip ShieldAI configs from FrenoCorp
Removed root-level ShieldAI config files left behind after Phase A1:
- check-identity.js, docker-compose.yml, Dockerfile, drizzle.config.ts
- package-lock.json, tsconfig.base.json, vite.config.ts, vitest.config.ts
- turbo.json

Rewrote package.json and tsconfig.json for FrenoCorp identity.
Only agents/, analysis/, memory/, plans/ remain.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-02 11:22:11 -04:00
d6b9d96c39 Phase C: Prune FrenoCorp to only owned code after ShieldAI/Scripter migration
Removed ShieldAI artifacts:
- apps/api/, apps/web/, apps/mobile/
- packages/ (all 8 shared packages)
- services/voiceprint-ml/
- server/alerts/, server/webrtc/
- examples/

Removed Scripter artifacts:
- marketing/
- tasks/

Updated root configs:
- Renamed package.json from shieldsai-monorepo to frenocorp
- Updated tsconfig.json to include agents/ instead of src/
- Updated vite.config.ts aliases to reference agents/, analysis/, plans/
2026-05-02 10:34:58 -04:00
0cc005414d FRE-4534: Remove remaining scripter overlap items from FrenoCorp
All scripter code has been migrated to ~/code/scripter. This removes
the overlap items (src/, src-tauri/, server/trpc/, marketing/,
docs/, public/, dist/, index.html) with favor-newer policy applied.

All FrenoCorp-unique files archived to scripter/trpc/legacy/ for
reference. Scripter repo's modular tRPC structure supersedes the
flat-router format.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-02 10:26:08 -04:00
4e07718e69 FRE-4534: Remove standalone scripter files moved to ~/code/scripter
- brand/ (identity.md)
- scripts/ (deploy, export, load-test, outreach)
- server/types/ (project.ts — re-exported Drizzle types)
- server/websocket/ (Yjs CRDT sync server)
- .eslintrc.json (TypeScript ESLint config)
- FRE-4510-IMPLEMENTATION.md
- Merged FrenoCorp .gitignore entries into scripter's .gitignore

Cross-dependent items (src/, src-tauri/, server/trpc/, marketing/,
public/, dist/, docs/, .gitignore) delegated to FRE-4535 for
favor-newer comparison.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-02 10:20:01 -04:00
078e19790b ignore 2026-05-02 09:46:13 -04:00