Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
## Summary

Describe what memory records are added or updated.

## Record Types

- [ ] episode
- [ ] procedure
- [ ] insight

## Checklist

- [ ] Frontmatter required fields are complete.
- [ ] `type` and folder location are consistent.
- [ ] `schema_version` is present and valid.
- [ ] Required sections exist (`Context`, `Reproduce`, `Evidence`, `Failure Boundary`).
- [ ] Evidence is sufficient for another contributor to reproduce.
- [ ] Failure boundaries and non-applicable conditions are documented.
- [ ] No sensitive data or secrets are included.
- [ ] `python3 scripts/validate_records.py` passes locally.

## Notes for Reviewers

Highlight risk, assumptions, and anything needing extra review.

24 changes: 24 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Validate Records

on:
pull_request:
push:
branches:
- main
- codex/**

jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Validate memory records
run: python3 scripts/validate_records.py

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.DS_Store
__pycache__/
.pytest_cache/
48 changes: 48 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Contributing

## Branch and PR Policy

1. Create a feature branch from `main`.
2. Keep one logical topic per pull request.
3. Do not push directly to `main`.

## What to Contribute

Contribute only reusable memory records:
- `episode`
- `procedure`
- `insight`

Use the correct folder and template:
- `episodes/*` with `templates/episode.md`
- `procedures/*` with `templates/procedure.md`
- `insights/*` with `templates/insight.md`

## Required Checks

Before opening a PR, run:

```bash
python3 scripts/validate_records.py
```

Your PR should pass:
- schema and frontmatter checks
- required section checks
- content quality review

## Content Quality Rules

Each record must:
- provide reproducible steps
- provide evidence references
- define applicability and failure boundary
- avoid sensitive data

## Schema Changes

If you modify record schema:
1. Update `schemas/memory-record.schema.json`.
2. Explain migration impact in the PR description.
3. Keep backward compatibility when possible.

113 changes: 113 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# Open Research Memory

Open Research Memory is a shared repository for reusable AI R&D experience records.

The goal is to accumulate evidence-backed memory that other contributors can apply safely across projects.

## Scope

This repository accepts:
- `verified` episodes
- `active` procedures
- `active` insights

This repository does not accept:
- run-local `working` state
- unverified noise logs
- secrets or organization-specific sensitive data

## Repository Structure

```text
episodes/
environment/
training/
evaluation/
reproduction/
procedures/
setup/
debug/
reproduce/
experiment/
insights/
planning/
debugging/
evaluation/
templates/
schemas/
scripts/
```

## Record Contract

Each record must be a Markdown file with YAML frontmatter.

Required frontmatter fields:
- `id`
- `type` (`episode|procedure|insight`)
- `status`
- `title`
- `tags`
- `created_at`
- `updated_at`
- `confidence`
- `human_verified`
- `source_run_id`
- `schema_version`

Recommended statuses:
- `draft`
- `reviewed`
- `verified`
- `trusted`
- `deprecated`
- `conflicted`
- `active`

## Minimum Content Requirements

Every shared record must contain these sections:
1. `Context`
2. `Reproduce`
3. `Evidence`
4. `Failure Boundary`

Use templates from [`templates/`](templates).

## Contribution Workflow

1. Export candidate records from your local workspace.
2. Place records in the correct folder (`episodes/`, `procedures/`, `insights/`).
3. Run validation:
- `python3 scripts/validate_records.py`
4. Open a pull request.
5. Merge only after checks and review pass.

Do not push directly to `main`.

## Validation

Validation script:
- checks frontmatter required fields
- checks status/type consistency
- checks minimum required sections
- checks confidence and schema version format

Run locally:

```bash
python3 scripts/validate_records.py
```

## Review Standard

A record is mergeable only when it is:
- reproducible by another contributor
- evidence-backed (logs, metrics, commits, artifacts)
- explicit about applicability and failure boundary
- free of sensitive data

## Schema

See [`schemas/memory-record.schema.json`](schemas/memory-record.schema.json) for the machine-readable schema.

1 change: 1 addition & 0 deletions episodes/environment/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions episodes/evaluation/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions episodes/reproduction/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions episodes/training/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions insights/debugging/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions insights/evaluation/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions insights/planning/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions procedures/debug/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions procedures/experiment/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions procedures/reproduce/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions procedures/setup/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

71 changes: 71 additions & 0 deletions schemas/memory-record.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://recursive-forge.github.io/open-research-memory/schemas/memory-record.schema.json",
"title": "Open Research Memory Record Metadata",
"type": "object",
"additionalProperties": true,
"properties": {
"id": {
"type": "string",
"minLength": 3
},
"type": {
"type": "string",
"enum": ["episode", "procedure", "insight"]
},
"status": {
"type": "string",
"enum": ["draft", "reviewed", "verified", "trusted", "deprecated", "conflicted", "active"]
},
"title": {
"type": "string",
"minLength": 3
},
"tags": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"human_verified": {
"type": "boolean"
},
"source_run_id": {
"type": "string",
"minLength": 1
},
"schema_version": {
"type": "string",
"pattern": "^[0-9]+\\.[0-9]+(\\.[0-9]+)?$"
}
},
"required": [
"id",
"type",
"status",
"title",
"tags",
"created_at",
"updated_at",
"confidence",
"human_verified",
"source_run_id",
"schema_version"
]
}

Loading