You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: replace placeholder personas with defined stakeholder personas in PRD (#1396)
* docs: replace placeholder personas with defined stakeholder personas in PRD
Replace the three illustrative placeholder personas (Sarah Meyer, Marcus
Klein, Jing Liu) with four agreed stakeholder personas — Anna Becker
(Project Manager), Dr. Jonas Weber (Researcher), Laura Hoffmann (Data
Steward), and Dr. Minh Tran (Data Scientist) — using a consistent
Role / Primary need / Pain point structure.
* docs: implement Feature layer governance with complete fixes
Add Feature ID schema (DOMAIN-FEAT-NN) as an intermediate traceability level
between Requirements and Stories. This establishes clear governance hierarchy:
PRD → Requirements → Features → Stories → Tasks → Implementation
Key changes:
* Add Feature ID Schema section to AGENTS.md §0 with rules and examples
* Define Feature structure: ID, Title, Requirement IDs, Description, Rationale,
Acceptance Criteria, Status, Dependencies, Child Stories
* Add .github/ISSUE_TEMPLATE/feature.yml GitHub issue template
- Required fields: feature_id, requirement_ids, description, scope
- Optional fields: notes, dependencies, child_stories
* Update story.yml with required parent_feature field (first required field)
* Update AGENTS.md traceability rules to mandate Feature parent for Stories
* Add Feature, Story, Task sequencing rules to prevent orphaned issues
* Update Section 11 (Agent Patterns) with Feature creation guidance
* Update Section 12 (Human Review Gates) with Feature slug change guardrails
* Add docs/requirements-guide.md with comprehensive authoring conventions
- Requirement ID scheme and examples
- Requirement format template and field definitions
- When to create/edit/retire requirements
- Common pitfalls and best practices
* Add 12 x "### Features" placeholder subsections to all domains
in docs/requirements.md
* Fix terminology: "Scheme" → "Schema" for consistency (Requirement ID
and Feature ID schemas)
* Fix domain list: add USER and COMM (now 12/12 domains complete)
* Fix zero-padding rule: "at least two digits" → "exactly two digits"
with explicit invalid examples (1, 010)
* Fix story.yml Notes placeholder to clarify cross-story dependencies
vs parent Feature link
* Add AGENTS.md §13 Key Files entry for requirements-guide.md
* Add missing --- section separator before AGENTS.md §1
This establishes unambiguous traceability from PRD through implementation,
enables release planning at the Feature level, and prevents Stories from
becoming orphaned requirements.
Backward compatible: existing requirements, stories, and tasks remain valid.
---------
Co-authored-by: Sven F. <9976560+sven1103@users.noreply.github.com>
Co-authored-by: Sven Fillinger <sven.fillinger@qbic.uni-tuebingen.de>
Co-authored-by: KochTobi <kochtobi@users.noreply.github.com>
description: A named, user-visible capability that groups related Stories
3
+
title: "[Feature] "
4
+
labels: ["type:feature"]
5
+
body:
6
+
- type: input
7
+
id: feature_id
8
+
attributes:
9
+
label: Feature ID
10
+
description: "A unique FEAT-<SLUG> identifier for this feature (e.g., FEAT-SAMPLE-REGISTRATION). The slug must be uppercase, hyphen-separated, and stable — do not change it once Stories reference this Feature."
11
+
placeholder: "FEAT-SAMPLE-REGISTRATION"
12
+
validations:
13
+
required: true
14
+
15
+
- type: input
16
+
id: requirement_ids
17
+
attributes:
18
+
label: Requirement IDs
19
+
description: "Reference one or more functional (R) or non-functional (NFR) requirement IDs from docs/requirements.md. At least one R-<NN> or NFR-<NN> ID is required. Constraint IDs (C-<NN>) must NOT be the sole references — they may appear in notes only."
20
+
placeholder: "SAMPLE-R-01, SAMPLE-NFR-01"
21
+
validations:
22
+
required: true
23
+
24
+
- type: textarea
25
+
id: description
26
+
attributes:
27
+
label: Description
28
+
description: "High-level summary of the user-visible capability this Feature delivers. What can a user do once this Feature is complete?"
29
+
placeholder: |
30
+
Researchers can register biological samples into the system individually or in batches,
to an existing experiment. Registered samples are immediately available for measurement
33
+
assignment and downstream analysis workflows.
34
+
validations:
35
+
required: true
36
+
37
+
- type: textarea
38
+
id: scope
39
+
attributes:
40
+
label: Scope / Boundaries
41
+
description: "Explicitly state what is in scope and what is out of scope for this Feature. This prevents scope creep and clarifies what Stories belong here."
42
+
placeholder: |
43
+
In scope:
44
+
- Individual sample registration via UI form
45
+
- Batch sample registration via XLSX/TSV upload
46
+
- Linking samples to an existing experiment
47
+
- Validation of required metadata fields
48
+
49
+
Out of scope:
50
+
- Sample deletion (covered by FEAT-SAMPLE-MANAGEMENT)
51
+
- Measurement assignment (covered by FEAT-MEASUREMENT-UPLOAD)
52
+
- OpenBIS synchronisation (covered by FEAT-LAB-INTEGRATION)
53
+
validations:
54
+
required: true
55
+
56
+
- type: textarea
57
+
id: notes
58
+
attributes:
59
+
label: Notes & Context (optional)
60
+
description: "Dependencies on other Features, related ADRs, constraints that influence design, or links to PRD sections."
61
+
placeholder: |
62
+
- Depends on: FEAT-USER-AUTH (users must be authenticated before registering samples)
63
+
- Related PRD section: §4.2 Sample Registration
64
+
- Architectural constraint: SAMPLE-C-01 (all samples must be assigned a QBiC barcode)
65
+
- ADR reference: ADR-012 (Batch upload file format selection)
Copy file name to clipboardExpand all lines: AGENTS.md
+111-6Lines changed: 111 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,27 @@
8
8
9
9
## 0. Requirements and Issue Governance
10
10
11
-
### Requirement ID Scheme
11
+
### Governance Hierarchy
12
+
13
+
The governance model for this project follows a strict top-down traceability chain:
14
+
15
+
```
16
+
PRD (docs/prd.md)
17
+
└── Features (.github/ISSUE_TEMPLATE/feature.yml)
18
+
└── Stories (.github/ISSUE_TEMPLATE/story.yml)
19
+
└── Tasks (.github/ISSUE_TEMPLATE/task.yml)
20
+
└── Implementation (code, PRs)
21
+
```
22
+
23
+
-**PRD** defines product vision, user personas, and business objectives.
24
+
-**Features** group related Stories under a named, user-visible capability. A Feature references one or more requirement IDs and describes the high-level scope.
25
+
-**Stories** describe user-facing workflows derived from a Feature. Each Story references a parent Feature and one or more requirement IDs.
26
+
-**Tasks** are concrete technical work items derived from a Story.
27
+
-**Implementation** traces back through Tasks → Stories → Features → Requirements → PRD.
28
+
29
+
---
30
+
31
+
### Requirement ID Schema
12
32
13
33
All requirements must follow the domain-based ID structure:
14
34
@@ -17,7 +37,7 @@ All requirements must follow the domain-based ID structure:
17
37
Where:
18
38
19
39
-**DOMAIN** --- functional area (e.g. `API`, `PROJECT`, `SAMPLE`,
- One requirement may be referenced by multiple stories.
42
62
- A story may reference multiple requirement IDs when a single user workflow spans multiple requirements. If a story spans more than two domains, consider splitting it.
43
63
- Constraints (`C`) influence architecture and must not be referenced in Stories. Reference `C-<NN>` IDs only in Task Technical Notes.
44
-
- The sequential number `<NN>` must be zero-padded to at least two digits (e.g., `01`, `02`, `10`). IDs without zero-padding are invalid.
64
+
- The sequential number `<NN>` must be zero-padded to exactly two digits (e.g., `01`, `02`, `10`). IDs without zero-padding are invalid (e.g., `1`, `010`).
65
+
66
+
---
67
+
68
+
### Feature ID Schema
69
+
70
+
Features are identified using a short, human-readable slug:
71
+
72
+
FEAT-<SLUG>
73
+
74
+
Where:
75
+
76
+
-**SLUG** --- a concise, uppercase, hyphen-separated identifier describing the user-visible capability (e.g., `FEAT-SAMPLE-REGISTRATION`, `FEAT-FAIR-EXPORT`, `FEAT-USER-AUTH`).
77
+
78
+
#### Examples
79
+
80
+
FEAT-SAMPLE-REGISTRATION
81
+
FEAT-FAIR-EXPORT
82
+
FEAT-USER-AUTH
83
+
FEAT-MEASUREMENT-UPLOAD
84
+
85
+
#### Rules
86
+
87
+
- Feature slugs must be unique across the project.
88
+
- Feature slugs must be stable; do not rename a Feature once Stories reference it.
89
+
- A Feature must reference at least one requirement ID (`R-<NN>` or `NFR-<NN>`).
90
+
- Constraints (`C-<NN>`) must not be used as the sole reference in a Feature — they may appear in Feature notes but Features must cite at least one `R` or `NFR` ID.
91
+
- One Feature may group multiple Stories across different domains, provided the Stories share a coherent user-visible purpose.
45
92
46
93
---
47
94
@@ -80,13 +127,39 @@ When creating issues, use the correct template for the scenario.
Use when creating issues for a **named, user-visible capability** that groups multiple related Stories.
133
+
134
+
Required fields:
135
+
136
+
-**Feature ID**
137
+
- A unique `FEAT-<SLUG>` identifier (e.g., `FEAT-SAMPLE-REGISTRATION`)
138
+
-**Requirement IDs**
139
+
- At least one `R-<NN>` or `NFR-<NN>` reference
140
+
-**Description**
141
+
- High-level summary of the user-visible capability
142
+
-**Scope / Boundaries**
143
+
- What is in scope and what is explicitly out of scope for this Feature
144
+
145
+
Rules:
146
+
147
+
- A Feature must be created before any Story references it.
148
+
- A Feature slug must be unique and stable — do not rename it once Stories reference it.
149
+
- Features must not reference Constraint IDs (`C-<NN>`) as their sole requirement references.
150
+
- One Feature may span multiple domains if the user-visible capability is coherent.
151
+
152
+
---
153
+
83
154
#### Story (`.github/ISSUE_TEMPLATE/story.yml`)
84
155
85
156
Use when creating issues for **user-facing functionality** derived from
86
157
the PRD or requirements.
87
158
88
159
Required fields:
89
160
161
+
-**Parent Feature**
162
+
- Link to the parent Feature issue (e.g. `#101`)
90
163
-**Requirement IDs**
91
164
- At least one `R-<NN>` reference
92
165
- May include related `NFR-<NN>`
@@ -98,6 +171,7 @@ Required fields:
98
171
Rules:
99
172
100
173
- Stories describe value and workflow context.
174
+
- Stories must reference a parent Feature. Create the Feature first if one does not exist.
101
175
- Stories must not introduce new system capabilities not covered by an
102
176
existing requirement.
103
177
- If new capability is needed, update `docs/requirements.md` first. A change introduces **new capability** if it enables a user or system to perform an action that was not previously possible, or if it changes the externally observable behavior of an existing capability in a way not described by any existing requirement.
@@ -129,18 +203,21 @@ Rules:
129
203
130
204
---
131
205
132
-
#### Story and Task Sequencing
206
+
#### Feature, Story, and Task Sequencing
133
207
208
+
- A Feature must be created before any Story references it. Create the Feature first.
209
+
- A Story must always reference a parent Feature. Never create a Story without a parent Feature issue.
134
210
- A Task must always be preceded by a Story. Create the Story first, then create the Task referencing it.
135
211
- Never create a Task without a parent Story issue.
136
-
- If no parent Story exists for a piece of work (e.g., when acting on a direct implementation request), create the Story first before proceeding with implementation.
212
+
- If no parent Feature exists for a piece of work (e.g., when acting on a direct implementation request), create the Feature first, then the Story, then the Task.
137
213
- A single Story may have multiple Tasks; a Task must not span multiple Stories.
138
214
139
215
---
140
216
141
217
### Traceability Rules
142
218
143
219
- Every Story must reference at least one functional requirement ID (`R-<NN>`).
220
+
- Every Story must reference a parent Feature issue.
144
221
- Every Task must reference:
145
222
- A parent Story
146
223
- At least one requirement ID
@@ -165,6 +242,22 @@ When editing requirements:
165
242
166
243
**Agent rule — requirement changes require human approval:** Before modifying `docs/requirements.md`, an agent must: (1) pause and confirm the change with a human reviewer (see Section 12); (2) create a dedicated PR for the requirement change alone — do not bundle requirement changes with implementation changes; (3) include the mandatory changelog entry in the PR description per the rules above.
167
244
245
+
---
246
+
247
+
### Feature Edits
248
+
249
+
When editing or retiring a Feature:
250
+
251
+
- Use a Pull Request.
252
+
- Include a changelog entry in the PR description summarizing:
253
+
- Added / Modified / Retired Feature IDs
254
+
- Reason for change
255
+
- Impact on dependent Stories (list affected Story issues)
256
+
257
+
**Agent rule — Feature slug changes require human approval:** A Feature slug must never be renamed once Stories reference it. Before retiring or splitting a Feature, an agent must: (1) pause and confirm with a human reviewer; (2) list all Story issues that reference the Feature in the PR description; (3) update Story issues to reference the replacement Feature if applicable.
258
+
259
+
260
+
---
168
261
169
262
## 1. Project Overview
170
263
@@ -513,13 +606,21 @@ When working on this codebase, an AI agent should:
513
606
514
607
### Before making changes
515
608
516
-
0.**Check `docs/requirements.md`** to confirm the change is covered by an existing requirement. If the change introduces new system capability not covered by any existing requirement, update `docs/requirements.md` first (see "Requirements and Issue Governance"). If `docs/requirements.md` does not exist, do not create it — pause and notify a human reviewer.
609
+
0.**Check `docs/requirements.md`** to confirm the change is covered by an existing requirement. If the change introduces new system capability not covered by any existing requirement, update `docs/requirements.md` first (see "Requirements and Issue Governance"). If `docs/requirements.md` does not exist, do not create it — pause and notify a human reviewer. Then confirm a parent Feature issue exists before creating any Story or Task.
517
610
1.**Identify the bounded context** the change belongs to (`identity`, `project-management`,
518
611
`finances`, or cross-cutting).
519
612
2.**Identify the layer** (`domain`, `application`, `infrastructure`, `views`/UI).
520
613
3. Check `ExceptionHandling.md` and `service_api.md` for patterns relevant to the change.
521
614
4. Read existing tests in the same module before writing new code.
522
615
616
+
### Creating Features
617
+
618
+
- Before creating a Story, confirm a parent Feature issue exists. If none exists, create the Feature first using `.github/ISSUE_TEMPLATE/feature.yml`.
619
+
- A Feature must reference at least one `R-<NN>` or `NFR-<NN>` requirement ID.
620
+
- Do not create a Feature whose sole requirement reference is a Constraint (`C-<NN>`).
621
+
- A Feature slug (`FEAT-<SLUG>`) must be unique and must not be changed once Stories reference it.
622
+
- If you are unsure whether a new Feature is needed or an existing Feature should be extended, pause and ask a human reviewer.
623
+
523
624
### Making domain changes
524
625
525
626
- New domain concepts go in `domain/model/` of the relevant bounded context.
@@ -567,6 +668,8 @@ An agent should pause and request human review/approval before:
567
668
- Changing the Artemis messaging topic names or JMS consumer configuration.
568
669
- Adding, modifying, or removing any entry in `docs/requirements.md`.
569
670
- Implementing a change that introduces new system capability not covered by an existing requirement.
671
+
- Retiring or renaming a Feature slug once Stories reference it.
672
+
- Splitting a Feature into multiple Features when Stories already reference the original Feature.
570
673
571
674
---
572
675
@@ -575,6 +678,7 @@ An agent should pause and request human review/approval before:
575
678
| File / Path | Purpose |
576
679
|---|---|
577
680
|`docs/requirements.md`| Authoritative requirement registry — all R/NFR/C requirements documented here; must be updated before new capabilities are implemented |
681
+
|`docs/requirements-guide.md`| Authoring conventions for creating, editing, and retiring requirements |
578
682
|`README.md`| Setup, configuration reference, how to run |
579
683
|`ExceptionHandling.md`| Exception handling conventions (read before touching error handling) |
580
684
|`service_api.md`| Service API design patterns (Mono/Flux, request/response shapes) |
@@ -586,6 +690,7 @@ An agent should pause and request human review/approval before:
586
690
|`datamanager-app/src/main/resources/application.properties`| Full application configuration with env var mappings |
587
691
|`datamanager-bom/pom.xml`| All dependency version pins |
Copy file name to clipboardExpand all lines: docs/prd.md
+19-16Lines changed: 19 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,22 +9,25 @@ By combining structured metadata capture, quality assessment, and interoperabili
9
9
10
10
## 2. Users & primary use cases
11
11
12
-
<!-- PLACEHOLDER: The personas and use cases below are illustrative only. Replace with actual stakeholder research and user feedback before finalising the PRD. -->
13
-
14
-
**Persona A: Dr. Sarah Meyer – Principal Investigator (Biology Group)**
15
-
- Role: Leads a translational cancer biology research group at University of Tübingen
16
-
- Primary need: Design and track multi-year, multi-omics studies with 200+ samples from patient cohorts
17
-
- Pain point: Tracks experimental metadata in spreadsheets; struggles to ensure consistent sample naming and measurement parameters across internal lab work and outsourced sequencing
18
-
19
-
**Persona B: Marcus Klein – Lab Manager (QBiC Service Provider)**
20
-
- Role: Manages high-throughput analysis services (NGS, proteomics) at QBiC for internal and external researchers
21
-
- Primary need: Register samples from multiple projects, batch them for efficiency, upload measurement metadata from partner instruments, and track data transfer workflows
22
-
- Pain point: Currently uses OpenBIS and manual scripts; needs a unified UI to manage project-level metadata and track which samples have been measured
23
-
24
-
**Persona C: Jing Liu – Bioinformatician (Data Analyst)**
25
-
- Role: Analyzes omics data for research collaborators; publishes datasets
26
-
- Primary need: Download raw measurement data, review sample metadata, and export projects as FAIR-compliant research objects (RO-Crate) for archival and publication
27
-
- Pain point: Data discovery across projects is fragmented; wants reproducibility and proper attribution (ORCID integration)
12
+
**Persona 1: Anna Becker – Project Manager**
13
+
-**Role:** Employed at the QBiC BioPM team; acts as the primary contact between end-users, customers, and member labs performing sample measurements. Manages service offers, tracks research project progress, and reports back to end-users.
14
+
-**Primary need:** Quick overviews of important project updates and easy access to consolidated information for reporting — without switching between multiple systems.
15
+
-**Pain point:** Manually checking many interfaces for information or updates, and acting as a communication proxy between end-users and internal teams.
16
+
17
+
**Persona 2: Dr. Jonas Weber – Researcher**
18
+
-**Role:** Scientist conducting a scientific study; responsible for defining the experimental setup, providing sample information, and setting quality demands on analysis outputs.
19
+
-**Primary need:** A single place where all project information comes together, so hypotheses can be tested quickly and findings published to maximise scientific impact.
20
+
-**Pain point:** Numerous FAIR data management and best-practice requirements with limited resources and no direct incentive to comply; gets frustrated when excessive manual tasks slow down actual scientific progress.
21
+
22
+
**Persona 3: Laura Hoffmann – Data Steward**
23
+
-**Role:** Operates at an institutional level (university research office or data governance team); oversees data management standards and FAIR/CARE compliance across multiple research groups and projects.
24
+
-**Primary need:** Visibility into project metadata quality, data export readiness, and audit trails to support governance reporting and funder compliance documentation.
25
+
-**Pain point:** Manually checking compliance status across dispersed projects and coordinating with researchers to resolve metadata gaps; gets frustrated when compliance workflows require extensive back-and-forth communication.
26
+
27
+
**Persona 4: Dr. Minh Tran – Data Scientist**
28
+
-**Role:** Based in a research group or core bioinformatics facility; downloads raw measurement data from the platform, integrates it with external datasets, and performs comparative analysis for publications and grant proposals.
29
+
-**Primary need:** Structured, machine-readable metadata that minimises cleaning and reformatting work before analysis, with reliable sample tracking for reproducibility and traceability.
30
+
-**Pain point:** Incomplete or inconsistent sample metadata that requires detective work to reconcile samples across projects; lack of standardised ontologies makes cross-project analysis cumbersome and delays publication timelines.
28
31
29
32
**Top 3 jobs-to-be-done:**
30
33
1.**Design and document an experiment** – Create a project, define experimental groups, specify variables and confounding factors, and invite collaborators without manual email coordination
0 commit comments