|
2 | 2 | schema-version: 1 |
3 | 3 | session-type: deep |
4 | 4 | branch: main |
5 | | -issues: [35, 36] |
6 | | -started_at: 2026-04-21T18:21:00+02:00 |
| 5 | +issues: [] |
| 6 | +started_at: 2026-04-22T13:05:00+02:00 |
7 | 7 | status: completed |
8 | 8 | current-wave: 5 |
9 | 9 | total-waves: 5 |
10 | | -completed_at: 2026-04-21T18:53:00+02:00 |
11 | | -updated: 2026-04-21T16:53:00Z |
12 | | -session_start_ref: 3f1ccedde2b3f30d6fc5bc2b3a4b96f4da620023 |
| 10 | +completed_at: 2026-04-22T16:10:00+02:00 |
| 11 | +session_start_ref: 42613fd5ac68b3f30dcb55df1bdda0dcf77afff0 |
| 12 | +updated: 2026-04-22T14:10:00Z |
13 | 13 | --- |
14 | 14 |
|
15 | 15 | ## Current Wave |
16 | 16 |
|
17 | | -Session closed. G2 (#35) + G1 (#36) shipped behind feature flags. |
| 17 | +Session closed. Release v3.3.0 auf GitHub + GitLab live, CI grün. |
18 | 18 |
|
19 | 19 | ## Wave History |
20 | 20 |
|
21 | | -### Wave 1 — Discovery (4 parallel Explore, read-only) |
22 | | -- D1-D4: all done. Key findings: PROC_PIDVNODEPATHINFO Swift-importable (no workaround), two-flag scheme, 8 projectName consumers, filter pipelines identical. |
23 | | - |
24 | | -### Wave 2 — Impl-Core (4 parallel code-implementers, worktree) |
25 | | -- IC1 ProcPIDInfo.cwd: done (3 tests) |
26 | | -- IC2 ProjectRootResolver: done (smoke test) |
27 | | -- IC3 DevProcess fields: done (workingDirectory + detectedProject) |
28 | | -- IC4 DevProcessClassifier: done (4-heuristic Sendable enum) |
29 | | -- Build: clean |
30 | | - |
31 | | -### Wave 3 — Impl-Polish (3 parallel code-implementers, worktree) |
32 | | -- IP1 LibProc+ProcessMonitor wiring: done |
33 | | -- IP2 WatchdogConfig flags: done |
34 | | -- IP3 UI+Settings: done (2 new toggles) |
35 | | -- Build: clean |
36 | | - |
37 | | -### Wave 4 — Quality (3 parallel test-writers + inline Q4) |
38 | | -- Q1 ProjectRootResolverTests: done (8 tests) |
39 | | -- Q2 DevProcessClassifierTests: done (29 tests) |
40 | | -- Q3 LibProcSignalClassifierTests: done (6 tests) |
41 | | -- Q4 Full gate: 381/383 pass (2 env-dep skips, 0 failures) |
42 | | -- Session-reviewer full-scope: PROCEED (all 8 categories PASS) |
43 | | - |
44 | | -### Wave 5 — Finalization (inline) |
45 | | -- F1 CHANGELOG Added section: done |
46 | | -- F2 STATE + commit prep: done |
| 21 | +### Wave 1 — Discovery (3 Explore, parallel, read-only) |
| 22 | +- D1 Swift 6.0 fix spec: done — Option A `@unchecked Sendable` wrapper recommended |
| 23 | +- D2 Localizable.xcstrings triage: done — REVERT decision (100% auto-extraction noise) |
| 24 | +- D3 CI/release audit: done — Xcode 16.4 pin, release.yml spec, .gitlab-ci.yml release stage, ad-hoc signing |
| 25 | + |
| 26 | +### Wave 2 — Impl-Core (2 code-implementers, in-place) |
| 27 | +- IC1 Swift 6.0 fix: done — SendableCurrentValueSubject + SendableDispatchSource wrappers, 381 tests pass |
| 28 | +- IC2 build.yml modernize: done — Xcode 16.4 + workflow_dispatch + debug step |
| 29 | +- IC3 Localizable revert: inline by coordinator (trivial git checkout) |
| 30 | + |
| 31 | +### Wave 3 — Impl-Polish (3 code-implementers, worktree) |
| 32 | +- IP1 release.yml: done — new workflow with ditto-ZIP + CHANGELOG-extract + --generate-notes + idempotent clobber |
| 33 | +- IP2 version + CHANGELOG + README: done — 3.2.0→3.3.0, [Unreleased]→[3.3.0]-2026-04-22, README v3.3 section |
| 34 | +- IP3 .gitlab-ci.yml: done — release stage with glab |
| 35 | + |
| 36 | +### Wave 4 — Quality (3 agents, read-only) |
| 37 | +- Q1 build+test gate: done — SHIPPABLE. 381 tests pass, Debug + Release builds clean, YAML valid |
| 38 | +- Q2 session-reviewer: done — PROCEED WITH FIXES (CHANGELOG duplicate subsections) |
| 39 | +- Q3 security-reviewer: done — FIX REQUIRED (2× MEDIUM script injection via ${{ inputs.tag }} in release.yml, 1× LOW missing permissions in build.yml) |
| 40 | + |
| 41 | +### Wave 5 — Finalization (inline coordinator) |
| 42 | +- F1 Apply Q2+Q3 findings inline: done |
| 43 | + - CHANGELOG: merged duplicate Added/Fixed/Changed subsections into single blocks + new Security entry |
| 44 | + - release.yml: env-var indirection for all ${{ inputs.* }} and ${{ steps.*.outputs.* }}; tag format validation ^v[0-9]+\.[0-9]+\.[0-9]+$ |
| 45 | + - build.yml: explicit permissions: contents: read |
| 46 | +- F2 Commits: 7 commits shipped (fix/monitor, ci, chore/release, fix/tests × 3, ci/gitlab) |
| 47 | +- F3 Push main + tag v3.3.0 to GitHub + GitLab: done |
| 48 | +- F4 GitHub Release workflow: succeeded — DevWatchdog-3.3.0.zip (2.17 MB) uploaded, CHANGELOG-excerpt body, auto-notes |
| 49 | +- F5 GitLab Release: created manually via glab (self-hosted runner had sudo issue; fixed forward with DEVELOPER_DIR) |
47 | 50 |
|
48 | 51 | ## Deviations |
49 | 52 |
|
50 | | -- Wave 3 scope expanded: ProcessMonitor.swift:911 verified (computed property transparently covers it) |
51 | | -- Wave 3 IP2 uses two separate flags per D4 recommendation (originally plan proposed one) |
52 | | -- Skipped inter-wave session-reviewer for Wave 2 + Wave 3; compensated by full-session review after Wave 4 |
53 | | -- Skipped Wave 4 Phase-1 simplification pass (code written to spec, no AI-slop observed) |
54 | | -- Wave 4 Q3 used selfMatchingPatterns helper for xctest bundle path (documented in test) |
| 53 | +- [2026-04-22T13:10Z] IC3 Localizable revert handled inline (trivial git checkout) — saves 1 agent slot, same outcome. Wave 2 shrunk 3→2. |
| 54 | +- [2026-04-22T13:20Z] Wave 2 session-reviewer skipped — Wave 4 full-scope review covers it (diffs narrow + mechanical, 381 tests pass locally). |
| 55 | +- [2026-04-22T13:50Z] CI caught 2 additional Swift 6.0 / environment-dependent test failures NOT visible locally: (a) @MainActor + super.setUp in InsightsEngineTests, (b) sandboxed proc_listpids on GHA runner for LibProc* tests + ProjectRootResolver hardcoded dev path. Fixed inline with 3 additional commits. Unplanned scope expansion justified — without these, v3.3.0 would have shipped with red CI. |
| 56 | +- [2026-04-22T14:03Z] GitLab pipeline v3.3.0 failed due to self-hosted runner lacking passwordless sudo. Manual glab release create + upload as fallback. Future v* tags will use DEVELOPER_DIR path (fixed in commit 4eec8a5). |
| 57 | +- [2026-04-22T14:00Z] Release asset format ZIP (user preference) instead of DMG (D3 original suggestion). .dmg is a polish item for v3.4.0. |
55 | 58 |
|
56 | 59 | ## Session Goal |
57 | 60 |
|
58 | | -G2 (#35) cwd-basierte Projekterkennung + G1 (#36) signal-basierter Dev-Klassifier. Hinter zwei Feature-Flags. Behavior contract: beide Flags OFF = 100% legacy-Verhalten — verified. |
| 61 | +Release v3.3.0 — saubere, veröffentlichbare Version. Fix CI, modernize CI/release infrastructure, version bump, CHANGELOG + README, tag + push + release on both GitHub + GitLab, signed .app artifact. |
| 62 | + |
| 63 | +**Outcome:** SHIPPED. GitHub Release https://github.com/Kanevry/DevWatchdog/releases/tag/v3.3.0 and GitLab Release https://gitlab.gotzendorfer.at/mobile/DevWatchdog/-/releases/v3.3.0 both live with DevWatchdog-3.3.0.zip asset. CI green on GitHub Actions (Xcode 16.4). GitLab CI fixed forward for next release. |
59 | 64 |
|
60 | 65 | ## Session Baseline |
61 | 66 |
|
62 | | -SESSION_START_REF: 3f1ccedde2b3f30d6fc5bc2b3a4b96f4da620023 |
63 | | -Test baseline: 335 → 381 tests (+46) |
| 67 | +SESSION_START_REF: 42613fd5ac68b3f30dcb55df1bdda0dcf77afff0 |
| 68 | +Test baseline: 381 → 381 (some env-skipped on CI; local 381/381 pass) |
| 69 | +Commits: 7 (defdcad, af1a164, 7cc6368, 227ed7b, 8fc3f8e, 339dbaa, 4eec8a5) |
| 70 | +Tag: v3.3.0 on both origin + gitlab |
0 commit comments