Task: Add User Hypothesis
You are executing **Step 4** of the `propose-hypotheses` workflow. The user has reviewed the generated L0 hypotheses and wants to add their own hypothesis to the evaluation set. Your role is to formalize the user's idea into a properly structured hypothesis file that conforms to FPF standards.
Overview
Task: Add User Hypothesis
Context
You are executing Step 4 of the propose-hypotheses workflow. The user has reviewed the generated L0 hypotheses and wants to add their own hypothesis to the evaluation set. Your role is to formalize the user's idea into a properly structured hypothesis file that conforms to FPF standards.
This task is part of the Abduction phase of the ADI (Abduction-Deduction-Induction) cycle. User-proposed hypotheses are valuable because they bring domain expertise and alternative perspectives that automated generation may miss.
Goal
Transform the user's hypothesis description into a well-structured L0 hypothesis file in .fpf/knowledge/L0/ that:
- Follows the exact FPF hypothesis file format
- Captures the user's intent accurately
- Is ready for verification in subsequent workflow steps
- Integrates seamlessly with auto-generated hypotheses
Input
You will receive:
- User's hypothesis description: A natural language description of their proposed solution or approach
- Decision context: The problem being evaluated (found in
.fpf/context.md) - Existing hypotheses: Reference to other L0 files to ensure uniqueness and proper scoping
Instructions
Step 1: Read Context
-
Read
.fpf/context.mdto understand:- The bounded context and problem domain
- Key vocabulary and invariants
- Constraints that apply to all hypotheses
-
List existing L0 files in
.fpf/knowledge/L0/to:- Avoid duplicate hypotheses
- Understand the scope of existing options
- Extract the
decision_contextvalue for consistency
Step 2: Analyze User Input
Parse the user's hypothesis description to extract:
| Element | Description | How to Extract |
|---|---|---|
| Core idea | What the user proposes | Main action/solution described |
| Method | How it would work | Steps or approach mentioned |
| Expected outcome | What success looks like | Benefits or goals stated |
| Scope | Where it applies | Constraints or contexts mentioned |
| Kind | Type of hypothesis | system (code/architecture) or episteme (process/docs) |
If any element is unclear, make a reasonable inference based on context, but document your inference in the Rationale section.
Step 3: Generate Hypothesis ID
Create a kebab-case ID that:
- Is unique among existing L0 hypotheses
- Summarizes the core idea in 3-5 words
- Uses lowercase letters and hyphens only
- Matches the filename (without
.md)
Examples:
- "Use Redis for caching" ->
use-redis-for-caching - "Implement event sourcing" ->
implement-event-sourcing - "Add user-proposed prefix for clarity" ->
user-proposed-caching-layer
Step 4: Create Hypothesis File
Create a file in .fpf/knowledge/L0/ with this exact structure:
---
id: <generated-id>
title: <User's Solution Title>
kind: <system|episteme>
scope:
decision_context: <same as other hypotheses>
depends_on: []
created:
layer: L0
---
# <User's Solution Title>
## Method (The Recipe)
1.
2.
3.
## Expected Outcome
## Rationale
- **Source**: User input
- **Problem**:
- **Note**: Manually injected hypothesis for evaluation against alternatives
- **Inferences**:
Step 5: Validate File
Before completing, verify:
- File created in
.fpf/knowledge/L0/ - Filename matches
idfield (with.mdextension) - All required frontmatter fields present
-
layerfield set toL0 -
decision_contextmatches other hypotheses - ISO 8601 timestamp is valid
- Kebab-case used for ID and filename
- No duplicate hypothesis exists
Constraints
- MUST create the file in
.fpf/knowledge/L0/- mentioning it in prose is NOT sufficient - MUST NOT modify existing hypothesis files
- MUST NOT skip any required frontmatter fields
- MUST use
kind: systemfor code/architecture solutions orkind: epistemefor process/documentation solutions - MUST preserve the user's intent - do not transform their idea into something different
- SHOULD keep the Method section actionable with numbered steps
- MAY expand on terse user input to create complete documentation
Expected Output
Return a structured result to the orchestrator:
## Task Result
**Status**: SUCCESS | FAILURE
**Files Created**: [path to created hypothesis file]
## Hypothesis Summary
| Field | Value |
|-------|-------|
| ID | <hypothesis-id> |
| Title | <title> |
| Kind | <system/episteme> |
| Scope | <brief scope> |
| File | `.fpf/knowledge/L0/<id>.md` |
## User Intent Captured
<1-2 sentence confirmation of what was formalized>
## Ready for Verification
This hypothesis is now queued for L0 -> L1 verification in subsequent workflow steps.
Success Criteria
- Hypothesis file created with valid frontmatter (all required fields present)
- File location is
.fpf/knowledge/L0/<id>.md - User's core idea accurately captured in Method section
- Expected Outcome reflects user's stated or implied goals
- Rationale documents this as user-proposed hypothesis
- ID is unique among existing L0 hypotheses
- File is ready for verification workflow (no schema errors)
Error Handling
| Error Condition | Action |
|---|---|
.fpf/ directory doesn't exist | Return FAILURE, instruct orchestrator to run init-context first |
| User input is too vague | Make reasonable inferences, document them in Rationale |
| Duplicate hypothesis exists | Return FAILURE with existing file path, ask user to clarify difference |
| Invalid kind determination | Default to system, note uncertainty in Rationale |