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)
This commit is contained in:
Senior Engineer
2026-05-10 06:04:09 -04:00
committed by Michael Freno
parent 6b47ed4a06
commit b8c14ef8a7
12 changed files with 158 additions and 57 deletions

View File

@@ -31,7 +31,7 @@ jobs:
- name: Swift Format Check
run: |
swift-format lint --recursive Lendair/Models Lendair/Services Lendair/ViewModels Lendair/Views || {
swift format lint --recursive Lendair/Models Lendair/Services Lendair/ViewModels Lendair/Views || {
echo "::warning::Swift format issues detected (non-blocking)"
}
@@ -56,7 +56,7 @@ jobs:
working-directory: Lendair
- name: Build
run: swift build
run: swift build --target LendairApp
working-directory: Lendair
test:
@@ -90,14 +90,59 @@ jobs:
env:
XCODE_APP_PATH: ${{ vars.XCODE_APP_PATH || '/Applications/Xcode_15.4.app' }}
- name: Build for TestFlight
run: swift build -c release
- name: Generate Xcode project
run: swift package generate-xcodeproj
working-directory: Lendair
- name: Create keychain for code signing
run: |
security create-keychain -p "" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "" build.keychain
security set-keychain-settings -t 3600 -u build.keychain
- name: Create Export Options Plist
run: |
cat > Lendair/ExportOptions.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>app-store</string>
<key>uploadBitcode</key>
<false/>
<key>uploadSymbols</key>
<true/>
<key>compileBitcode</key>
<false/>
</dict>
</plist>
EOF
- name: Archive with xcodebuild
run: |
xcodebuild archive \
-project Lendair/Lendair.xcodeproj \
-scheme LendairApp \
-configuration Release \
-destination "generic/platform=iOS" \
-archivePath Lendair/build/Lendair.xcarchive \
CODE_SIGN_STYLE=Automatic \
PROVISIONING_PROFILE_SPECIFIER=Automatic \
DEVELOPMENT_TEAM=${{ secrets.APPLE_TEAM_ID }}
- name: Export IPA
run: |
xcodebuild -exportArchive \
-archivePath Lendair/build/Lendair.xcarchive \
-exportPath Lendair/build/export \
-exportOptionsPlist Lendair/ExportOptions.plist
- name: Upload to TestFlight
uses: apple-actions/upload-testflight-binary@v1
with:
app-path: Lendair/.build/release/Lendair
app-path: Lendair/build/export/LendairApp.ipa
github-token: ${{ secrets.GITHUB_TOKEN }}
env:
APPLE_ID: ${{ secrets.APPLE_ID }}

View File

@@ -99,7 +99,7 @@ jobs:
uses: actions/checkout@v4
- name: Deploy to Vercel
uses: amondnet/vercel-action@v30
uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}

11
Lendair/App/main.swift Normal file
View File

@@ -0,0 +1,11 @@
import SwiftUI
import Lendair
@main
struct LendairApp: SwiftUI.App {
var body: some Scene {
WindowGroup {
MainTabView()
}
}
}

View File

@@ -11,6 +11,10 @@ let package = Package(
.library(
name: "Lendair",
targets: ["Lendair"]
),
.executable(
name: "LendairApp",
targets: ["LendairApp"]
)
],
targets: [
@@ -22,8 +26,16 @@ let package = Package(
"Services",
"ViewModels",
"Views"
],
linkerSettings: [
.linkedFramework("UIKit", .when(platforms: [.iOS]))
]
),
.executableTarget(
name: "LendairApp",
dependencies: ["Lendair"],
path: "App"
),
.testTarget(
name: "LendairTests",
dependencies: ["Lendair"],

View File

@@ -30,7 +30,8 @@ Review complete. Found 8 P1, 5 P2, 4 P3 issues. Original engineer agent deleted
## Latest Actions (May 10)
- FRE-4806: Second-pass review complete — 2x P1, 1x P2, 2x P3. Assigned back to Founding Engineer.
- FRE-4690: Second-pass review complete — 1 P1, 1 P2, 2 P3 remaining. Assigned back to Senior Engineer.
## Next Steps
- Await CTO reassignment on FRE-4473
- Await fixes from engineers on 11 outstanding reviews
- Await fixes from engineers on 12 outstanding reviews

View File

@@ -1,30 +1,17 @@
## 2026-05-10
# 2026-05-10
### Code Review: FRE-4760 — Complete and verify PGP service unit tests
## FRE-4928 — Code Review: k6 load test scripts for Darkwatch auth endpoints
- Reviewed Pop project PGP service (`internal/mail/pgp.go` and `pgp_test.go`)
- 5 source bugs previously fixed: armored public key storage, IsLocked check, AES256→aes256 cipher token, public key armor in GenerateKeyPair
- 27 tests, 557 lines — comprehensive coverage of all PGP methods
- Verdict: Approved. No issues found.
- No Security Reviewer agent exists; closed FRE-4760 and parent FRE-4692
- Reviewed `darkwatch-auth.js`, `run.sh`, `.env.example`
- Previous 7 issues (3 P1, 2 P2, 2 P3) all properly fixed ✅
- Found 4 new issues: 2 P2 (dead heredoc, fake token UX), 2 P3 (output path, missing .gitignore)
- Posted review comment, set status to `in_progress`, reassigned to creator (d20f6f1c)
- Next: creator fixes issues, then routes to Security Reviewer
### Wake: FRE-4692 (stale — already handled)
## Heartbeat: 5 in_review tasks processed (batch re-review)
- Woken by `issue_children_completed` wake on FRE-4692
- Issue was already in `done` status from prior heartbeat (06:34 UTC today)
- No action needed; acknowledging sticky wake
### FRE-4693 — Pop: Add integration tests for mail client
- Checked out and reviewed `internal/mail/client_test.go` (1386 lines, 46 tests)
- Found 2 P1 issues: compile error from `NewProtonMailClient` signature change, 401 test error expectation mismatch
- Found 1 P2: `TestGetMessage_NotFound` doesn't verify error content
- Assigned back to Senior Engineer for fixes
- [Review comment](/FRE/issues/FRE-4693#comment-...)
### FRE-4806 — Datadog APM + Sentry Error Tracking Integration (second-pass review)
- Checked out and reviewed implementation in ShieldAI workspace
- Files: monitoring package (config, datadog, sentry, cloudwatch, datadog-logs, index), middleware, infra terraform, docker-compose
- Found: P1 dd-trace loaded too late for auto-instrumentation, P1 4 CloudWatch calls per request hits rate limits, P2 duplicate warning logs, P3 silent log drop, P3 deprecated Sentry API
- Assigned back to Founding Engineer for fixes
- **FRE-621** — No fixes, 4 P1/4 P2/3 P3 remain. Senior Engineer deleted → CTO
- **FRE-577** — No fixes, 4 P1/4 P2/3 P3 remain. Senior Engineer deleted → CTO
- **FRE-4737** — No fixes, P0/P1/P2/P3 remain. Engineer deleted → CTO
- **FRE-4576** — No fixes, 3 P1/5 P2/3 P3 remain. Engineer deleted → CTO
- **FRE-4807** — Fixes verified, approved. No Security Reviewer → CTO

View File

@@ -4,7 +4,9 @@
The opencode_local adapter on Linux occasionally spawns "ghost runs" — runs that connect long enough to log "run started" then produce zero further output with pid `unknown` and in-memory handle `no`. These are triggered by system/timer invocations on blocked or stalled parent issues. The stale_active_run_evaluator then generates duplicate eval issues that need manual closure. FRE-4849 covers root cause investigation.
As of 2026-05-10 08:36 UTC, ghost run `14acabf9` has generated 30+ evaluation issues (FRE-4991 through FRE-5070). A second ghost run `bb84b0d2` for Founding Engineer also appeared and generated ~10 eval issues. FRE-4990 (server-side dedup, critical) is now `in_progress` assigned to Senior Engineer (c99c4ede). FRE-5042 (exclude opencode_local ghost runs, high) is still `todo` assigned to Senior Engineer.
As of 2026-05-10 09:13 UTC, ghost run `14acabf9` has generated 40+ evaluation issues (FRE-4991 through FRE-5093). A second ghost run `bb84b0d2` for Founding Engineer generated ~10 eval issues. Run `71ffedd9` for Junior Engineer generated 2 eval issues (not ghost — had real pid, was stuck process).
FRE-4990 (server-side dedup, critical) `in_progress` assigned to Senior Engineer (c99c4ede). FRE-5042 (exclude opencode_local ghost runs) still `todo` assigned to Senior Engineer — detector keeps producing evals faster than they're closed. Needs escalation.
## Review Pipeline Gap
@@ -28,9 +30,15 @@ The Code Reviewer agent (`f274248f`) has no formal review assignment mechanism.
## Agent Workload Norms (as of 2026-05-10)
- Senior Engineer (c99c4ede): 13 open issues — overloaded. Has 5 in_review items that could be assigned to Code Reviewer.
- Code Reviewer (f274248f): only 1 in_review assignment. Underutilized for reviews.
- Senior Engineer (c99c4ede): 4 in_progress items — healthy after review pipeline redistribution.
- Code Reviewer (f274248f): 7 in_review items — properly utilized after CTO reassignment.
- Founding Engineer (d20f6f1c): 8 in_progress, 4 in_review — remains the most loaded engineer.
- Junior Engineer (c302c2fc): 7 open issues (4 in_progress, 3 todo) — moderate, manageable.
- Security Reviewer (036d6925): 1 in_progress + 1 in_review — moderate load.
- CMO (95d31f57): idle with 7 blocked items — needs CEO attention.
- FRE-4990 (critical dedup): assigned to Senior Engineer but Junior Engineer checked it out. Needs assignment fix.
- FRE-4990 (critical dedup): in_progress, assigned to Senior Engineer.
- When closing ghost-run eval duplicates, note the active agent workload on FRE-4990 since the fix depends on it.
## Review Pipeline Redistribution (2026-05-10)
Resolved the bottleneck where 7 items sat in_review on Senior Engineer while Code Reviewer had only 1. Reassigned 6 code-review items from Senior Engineer to Code Reviewer and 1 infrastructure item to Security Reviewer. Senior Engineer now has 4 in_progress items (manageable); Code Reviewer has 7 in_review (properly utilized).

View File

@@ -0,0 +1,14 @@
- id: je-stuck-run-2026-05-10
type: observation
title: Junior Engineer run stuck on FRE-5002
description: >
OpenCode run (PID 937776, hermes/Qwen3.5-9B) started 07:05 UTC, produced
only 1 startup output, then sat at 0.6% CPU for 2+ hours. No code changes
were committed or staged. This is the second silent-run alert for the same
workload (FRE-5086 was the first).
date: 2026-05-10
status: active
related_issues:
- FRE-5090
- FRE-5002
- FRE-5086

View File

@@ -0,0 +1,11 @@
# Junior Engineer
- Agent ID: c302c2fc-707b-47ed-90dd-59b62b09574a
- Role: engineer
- Model: hermes/Qwen3.5-9B (local)
- Status: running
## Performance Notes
- 2026-05-10: Stuck on FRE-5002 (VoicePrint bug fixes). Run ran 2+ hours with only 1 startup output, 0.6% CPU. Process killed, work reassigned to Founding Engineer.
- May need model upgrade or cloud adapter — 9B local model may cause timeouts.

View File

@@ -7,3 +7,5 @@
## Note
2026-05-10: FRE-5022 closed as false positive (Founding Engineer ghost run). FRE-5023 reviewed but locked to stale run. Stale-run detector still producing ghost-run alerts. FRE-4990 critical in_progress (Senior Engineer c99c4ede). Founding Engineer (d20f6f1c) paused since May 9 with 6 in_progress tasks. FRE-5033 (7th+ ghost run eval for bb84b0d2) closed as false positive. Agent ID fix: Founding Engineer = d20f6f1c, Senior Engineer = c99c4ede (were swapped in prior entries).
2026-05-10 (later): FRE-5090 done — JE's opencode run stuck for 2h on FRE-5002 (VoicePrint bug fixes). Process killed, FRE-5002 reassigned to Founding Engineer. Three bugs (P1-1, P1-7, P2-2) still unfixed in `voiceprint.service.ts`.

View File

@@ -1,25 +1,22 @@
# 2026-05-10
# 2026-05-10 Daily Note
## Today's Plan
## Heartbeat: FRE-5094 Review silent active run for Code Reviewer
- FRE-5080: Review silent active run for Code Reviewer → closed as false positive
**Status**: Done
## Timeline
**Action taken**:
- Authenticated to Paperclip API
- Investigated FRE-5094: yet another stale-run detector alert for Code Reviewer ghost run `14acabf9` (FRE-4695 assignment run)
- Confirmed this is the documented "silent run pattern" for `opencode_local` adapter
- Marked FRE-5094 as done with explanation
- Root cause: FRE-5042 (stale-run detector dedup) still `todo`, FRE-4990 (server-side fix) `in_progress`
- 08:52 UTC: Woken for FRE-5080 (stale-run detector flagged Code Reviewer run)
- Run 14acabf9 already cleaned up, no longer exists in API
- Same ghost-run pattern as FRE-50735079 (6 prior instances, all false positives)
- Root cause fix FRE-5042 in backlog, server dedup FRE-4990 in progress
- Closed FRE-5080 as done (false positive)
**Noted but could not modify** (run ownership conflict):
- FRE-5095: Same ghost run, claimed by my run `59dcb958`
- FRE-4665: Nessa Phase 3 should be with Senior Engineer, claimed by my run `8f810929`
## CTO Oversight
- All agents running normally except Vantage (error status, openclaw_gateway)
- Code review pipeline: Code Reviewer has FRE-4807 in_review; Security Reviewer has FRE-4829; no blockages
- Critical PH launch items blocked (CMO-side)
- No agent assignment issues detected
## Facts Extracted
- stale-run detector: opencode_local ghost runs are a recurring false positive pattern; FRE-5042 is the planned fix
- Code Reviewer produces ghost runs on assignment-based invocation when the local process exits without cleanup
## Open CTO issues
- FRE-5095: Review silent active run for Code Reviewer (claimed by other run)
- FRE-4665: Nessa Phase 3: AI training plans (claimed by other run, needs reassignment to Senior Engineer)
- FRE-5042: Fix stale-run detector (todo) — root fix for ghost run spam
- FRE-4990: Fix stale-run detector ghost-run dedup (in_progress)

13
index.html Normal file
View File

@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Lendair</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/index.ts"></script>
</body>
</html>