Skip to content

Commit 96bdcac

Browse files
committed
make-it: phase 5 implementation slices
1 parent 08d1c2e commit 96bdcac

5 files changed

Lines changed: 108 additions & 0 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Create publishable Buddy module skeleton
2+
3+
Status: ready-for-agent
4+
Type: AFK
5+
6+
## Description
7+
8+
Create the new `sentry-android-buddy` Android library module so later Buddy recording code has a proper SDK home. The module should build with the repo's Android library conventions, participate in local Maven publication, expose experimental public API status in the same style as existing Sentry modules, and stay out of the Sentry BOM.
9+
10+
## Acceptance criteria
11+
12+
- [ ] `sentry-android-buddy` is included in the Gradle build as an Android library module.
13+
- [ ] The module namespace is `io.sentry.android.buddy`.
14+
- [ ] The module follows existing Android integration module conventions for Kotlin, explicit API, test build type, variant disabling, lint, and dependencies.
15+
- [ ] The module is locally publishable through the existing Maven Local workflow.
16+
- [ ] `sentry-android-buddy` is added to Android artifact build config where needed.
17+
- [ ] `sentry-android-buddy` is explicitly excluded from `sentry-bom`.
18+
- [ ] Public Buddy APIs can use `org.jetbrains.annotations.ApiStatus.Experimental`.
19+
- [ ] A minimal smoke test or equivalent focused Gradle validation can run for the module.
20+
21+
## Comments
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Add versioned recording format and JSON serializer
2+
3+
Status: ready-for-agent
4+
Type: AFK
5+
Blocked by: 01
6+
7+
## Description
8+
9+
Add the public Buddy recording model and deterministic JSON serializer for the first version of the `sentry.mobile_flow_recording` artifact. The schema should represent developer intent, recording metadata, app/device metadata, summary information, normalized timeline items, and Sentry correlation data without depending on UI, backend ingest, or SDK callback interception.
10+
11+
## Acceptance criteria
12+
13+
- [ ] The public recording model represents flow intent, recording metadata, app metadata, device metadata, summary stats, timeline items, and Sentry correlation.
14+
- [ ] The top-level artifact serializes `type = sentry.mobile_flow_recording`, `version = 1`, `platform = android`, and `useCase = onboard_new_flow`.
15+
- [ ] Timeline item types include `recording_started`, `screen`, `step`, `breadcrumb`, and `recording_stopped`.
16+
- [ ] The MVP serializer supports `recording_started`, `screen`, `step`, and `recording_stopped` items; `breadcrumb` is reserved for later.
17+
- [ ] Serialization uses explicit field ordering and does not rely on reflection.
18+
- [ ] Public model/serializer APIs are marked `@ApiStatus.Experimental`.
19+
- [ ] Tests assert representative stable JSON shape and timeline ordering.
20+
21+
## Comments
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Implement recorder lifecycle and Sentry correlation
2+
3+
Status: ready-for-agent
4+
Type: AFK
5+
Blocked by: 02
6+
7+
## Description
8+
9+
Implement the core Buddy recorder lifecycle around the v1 recording model. The recorder should support one active flow recording at a time, explicit developer steps, summary derivation, Buddy-owned Sentry tags, and a root Sentry transaction that anchors the recording window.
10+
11+
## Acceptance criteria
12+
13+
- [ ] Starting a recording creates a recording ID, records flow intent, records `recording_started`, and enters active state.
14+
- [ ] Starting a second recording while one is active fails deterministically.
15+
- [ ] Recording a step while active appends a `step` timeline item with elapsed time and optional data.
16+
- [ ] Recording a step while inactive fails deterministically.
17+
- [ ] Stopping a recording appends `recording_stopped`, derives summary data, exits active state, and returns `BuddyFlowRecording`.
18+
- [ ] Starting a recording sets Buddy scope tags under `sentry.buddy.*`.
19+
- [ ] Starting a recording starts a root transaction named `Sentry Buddy Recording: <flow_slug>` with operation `ui.flow_recording`.
20+
- [ ] Stopping a recording finishes the root transaction and removes Buddy's known scope tags.
21+
- [ ] Sentry correlation fields include available trace/span identifiers from the root transaction.
22+
- [ ] Tests cover lifecycle, one-active-recording behavior, deterministic failures, summary derivation, Sentry tag calls, transaction finish, and tag cleanup through fakes.
23+
24+
## Comments
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Add Android lifecycle collector and public facade
2+
3+
Status: ready-for-agent
4+
Type: AFK
5+
Blocked by: 03
6+
7+
## Description
8+
9+
Expose Buddy through a tiny public facade and connect the recorder to Android Activity lifecycle callbacks. Developers should be able to explicitly install Buddy with an `Application`, start a recording, record steps, stop the recording, and get screen timeline items from Activity resumes during the active recording window.
10+
11+
## Acceptance criteria
12+
13+
- [ ] `SentryBuddy.install(application)` registers Buddy's Activity lifecycle collector.
14+
- [ ] `SentryBuddy.startRecording(intent)` delegates to the recorder and starts a recording.
15+
- [ ] `SentryBuddy.recordStep(name, data)` delegates to the active recorder.
16+
- [ ] `SentryBuddy.stopRecording()` returns the finished `BuddyFlowRecording`.
17+
- [ ] Activity resume events append `screen` timeline items only while a recording is active.
18+
- [ ] Installing Buddy is explicit; no manifest auto-init is added.
19+
- [ ] Public facade APIs are marked `@ApiStatus.Experimental`.
20+
- [ ] Tests cover facade delegation and Activity resume screen collection behavior.
21+
22+
## Comments
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Validate local artifact consumption workflow
2+
3+
Status: ready-for-agent
4+
Type: AFK
5+
Blocked by: 04
6+
7+
## Description
8+
9+
Validate the new Buddy module as a local Hackweek artifact. The result should be buildable, testable, API-dumped, and locally publishable for external sample-app consumption without adding Buddy to the Sentry BOM or treating it as a stable SDK module.
10+
11+
## Acceptance criteria
12+
13+
- [ ] The focused module test task runs successfully.
14+
- [ ] Formatting and API dump generation are run for the new public APIs.
15+
- [ ] The generated API dump reflects the experimental Buddy public API.
16+
- [ ] Maven Local publication for `sentry-android-buddy` is validated if practical.
17+
- [ ] Buddy remains excluded from `sentry-bom`.
18+
- [ ] Any command needed by an external sample app to consume the local artifact is documented in a suitable local artifact or module README if needed.
19+
20+
## Comments

0 commit comments

Comments
 (0)