Reprompt Harvester
Role
Act as a project change harvester.
Convert a finished thread into one append-only DEVLOG.md entry that captures what the thread actually delivered.
Do not write abstract learnings.
Do not inspect repo code.
Do not rewrite prior devlog entries.
Input
- A target project root or explicit
PLAN.md path
- One source thread:
- the current live thread, or
- one or more archived Codex session
.jsonl files
The target project keeps these files at project root:
PLAN.md - original vision, never rewritten here
DEVLOG.md - append-only history, written here
SPEC.md - current-state specification, never touched here
Workflow
- Resolve the target project path and locate
PLAN.md.
- Use thread content only. Do not inspect code, tests, or docs outside the supplied thread transcript.
- If the source is one or more archived
.jsonl files:
- extract the session id, timestamp, and source path from transcript metadata when available
- sort the source sessions by transcript timestamp from oldest to newest before appending
- process and append one session at a time in that sorted order
- If
DEVLOG.md does not exist, create it at the project root and proceed without asking for confirmation.
- If the source is the live thread and no stable session id exists:
- use an explicit user-provided short label when one exists
- otherwise generate a deterministic fallback label from the current date and a short slug of the thread's net outcome
- do not stop just to ask for a label
- Read existing
DEVLOG.md only to preserve append-only formatting and prevent duplicate session ids or duplicate live-thread labels.
- Harvest only the net durable outcome of the thread:
- implemented additions or edits
- explicit removals or narrowed behavior
- accepted decisions that changed the product or documentation set
- Ignore abandoned ideas, intermediate experiments, speculative discussion, and requests that were not clearly carried through by the end of the thread.
- Append exactly one entry per harvested thread. If the thread produced no durable project change, append nothing.
Append Discipline
- Draft the full entry before writing anything.
- Append one contiguous entry block at a time.
- Never start a new
## entry header until the current entry is complete.
- Treat
Summary, Implemented, Changed or Removed, Affected Areas, and Spec Notes as required sections.
- Treat
Open Questions as optional and include it only when the thread ended with an explicit unresolved item.
- If the drafted append would interleave two entries, stop and rewrite the draft into separate complete entries before writing.
Defaults
- Missing
DEVLOG.md is not a blocker. Create it.
- Missing
SPEC.md is irrelevant for harvesting. Ignore it.
- Missing live-thread label is not a blocker. Infer one.
- Prefer acting on these defaults over asking the user for routine confirmation.
DEVLOG Entry Format
Append entries in this shape:
## 2026-04-19 14:35 EEST - admin-ordering-pass
- Session ID: 019d87b3-bafc-7c03-bb52-63ce2518a20f
- Source: /Users/erikuus/.codex/archived_sessions/rollout-2026-04-13T19-36-36-019d87b3-bafc-7c03-bb52-63ce2518a20f.jsonl
### Summary
- Short factual outcome line.
- Short factual outcome line.
### Implemented
- Concrete shipped addition or edit.
### Changed or Removed
- Prior behavior or plan item that was replaced, narrowed, or removed.
### Affected Areas
- Feature, screen, domain, or doc area.
### Open Questions
- Include only if the thread ended with an explicit unresolved item.
### Spec Notes
- Normalized statement suitable for later synthesis into SPEC.md.
Omit ### Open Questions when there was no explicit unresolved item.
If no stable session id exists, replace Session ID with Label.
Fallback labels should be short, kebab-case, and deterministic from the thread outcome, for example 2026-04-19-admin-ordering-pass.
Required section order:
## ...
- metadata lines
### Summary
### Implemented
### Changed or Removed
### Affected Areas
- optional
### Open Questions
### Spec Notes
Extraction Rules
- Write factual, current-language statements, not narrative recap.
- Prefer what was finally accepted or delivered over what was merely discussed.
- Record supersession explicitly in
Changed or Removed when the thread altered or removed previous behavior.
- Keep
Summary to 2-5 short lines.
- Keep
Spec Notes normalized and synthesis-friendly.
- Do not touch
PLAN.md or SPEC.md.
Quality Filter
Before appending an entry, verify all are true:
- The thread produced a durable project change.
- The entry reflects the final thread outcome rather than intermediate exploration.
- The entry is not a duplicate of an existing session id or live-thread label.
- The entry can be understood later without reopening the thread.
- The harvester did not stop for missing routine inputs that can be inferred safely.
- No second
## entry header appears before the current entry's required sections are complete.
- The entry order for archived backfills matches ascending transcript timestamp, not arbitrary input order.
Discard uncertain or speculative candidates.
End Condition
After appending, report whether DEVLOG.md changed and identify the appended entry label or session id.
1---2name: reprompt-harvester3description: Harvest a finished coding thread into project-root DEVLOG.md for projects that keep PLAN.md, DEVLOG.md, and SPEC.md. Use when the user wants to finalize a thread into project docs, harvest a finished thread, or backfill a dev log from the current thread or archived Codex session .jsonl files.4---56# Reprompt Harvester78## Role910Act as a project change harvester.11Convert a finished thread into one append-only `DEVLOG.md` entry that captures what the thread actually delivered.12Do not write abstract learnings.13Do not inspect repo code.14Do not rewrite prior devlog entries.1516## Input1718- A target project root or explicit `PLAN.md` path19- One source thread:20 - the current live thread, or21 - one or more archived Codex session `.jsonl` files2223The target project keeps these files at project root:2425- `PLAN.md` - original vision, never rewritten here26- `DEVLOG.md` - append-only history, written here27- `SPEC.md` - current-state specification, never touched here2829## Workflow30311. Resolve the target project path and locate `PLAN.md`.322. Use thread content only. Do not inspect code, tests, or docs outside the supplied thread transcript.333. If the source is one or more archived `.jsonl` files:34 - extract the session id, timestamp, and source path from transcript metadata when available35 - sort the source sessions by transcript timestamp from oldest to newest before appending36 - process and append one session at a time in that sorted order374. If `DEVLOG.md` does not exist, create it at the project root and proceed without asking for confirmation.385. If the source is the live thread and no stable session id exists:39 - use an explicit user-provided short label when one exists40 - otherwise generate a deterministic fallback label from the current date and a short slug of the thread's net outcome41 - do not stop just to ask for a label426. Read existing `DEVLOG.md` only to preserve append-only formatting and prevent duplicate session ids or duplicate live-thread labels.437. Harvest only the net durable outcome of the thread:44 - implemented additions or edits45 - explicit removals or narrowed behavior46 - accepted decisions that changed the product or documentation set478. Ignore abandoned ideas, intermediate experiments, speculative discussion, and requests that were not clearly carried through by the end of the thread.489. Append exactly one entry per harvested thread. If the thread produced no durable project change, append nothing.4950## Append Discipline5152- Draft the full entry before writing anything.53- Append one contiguous entry block at a time.54- Never start a new `## ` entry header until the current entry is complete.55- Treat `Summary`, `Implemented`, `Changed or Removed`, `Affected Areas`, and `Spec Notes` as required sections.56- Treat `Open Questions` as optional and include it only when the thread ended with an explicit unresolved item.57- If the drafted append would interleave two entries, stop and rewrite the draft into separate complete entries before writing.5859## Defaults6061- Missing `DEVLOG.md` is not a blocker. Create it.62- Missing `SPEC.md` is irrelevant for harvesting. Ignore it.63- Missing live-thread label is not a blocker. Infer one.64- Prefer acting on these defaults over asking the user for routine confirmation.6566## DEVLOG Entry Format6768Append entries in this shape:6970```md71## 2026-04-19 14:35 EEST - admin-ordering-pass7273- Session ID: 019d87b3-bafc-7c03-bb52-63ce2518a20f74- Source: /Users/erikuus/.codex/archived_sessions/rollout-2026-04-13T19-36-36-019d87b3-bafc-7c03-bb52-63ce2518a20f.jsonl7576### Summary77- Short factual outcome line.78- Short factual outcome line.7980### Implemented81- Concrete shipped addition or edit.8283### Changed or Removed84- Prior behavior or plan item that was replaced, narrowed, or removed.8586### Affected Areas87- Feature, screen, domain, or doc area.8889### Open Questions90- Include only if the thread ended with an explicit unresolved item.9192### Spec Notes93- Normalized statement suitable for later synthesis into SPEC.md.94```9596Omit `### Open Questions` when there was no explicit unresolved item.97If no stable session id exists, replace `Session ID` with `Label`.98Fallback labels should be short, kebab-case, and deterministic from the thread outcome, for example `2026-04-19-admin-ordering-pass`.99100Required section order:1011021. `## ...`1032. metadata lines1043. `### Summary`1054. `### Implemented`1065. `### Changed or Removed`1076. `### Affected Areas`1087. optional `### Open Questions`1098. `### Spec Notes`110111## Extraction Rules1121131. Write factual, current-language statements, not narrative recap.1142. Prefer what was finally accepted or delivered over what was merely discussed.1153. Record supersession explicitly in `Changed or Removed` when the thread altered or removed previous behavior.1164. Keep `Summary` to 2-5 short lines.1175. Keep `Spec Notes` normalized and synthesis-friendly.1186. Do not touch `PLAN.md` or `SPEC.md`.119120## Quality Filter121122Before appending an entry, verify all are true:123124- The thread produced a durable project change.125- The entry reflects the final thread outcome rather than intermediate exploration.126- The entry is not a duplicate of an existing session id or live-thread label.127- The entry can be understood later without reopening the thread.128- The harvester did not stop for missing routine inputs that can be inferred safely.129- No second `## ` entry header appears before the current entry's required sections are complete.130- The entry order for archived backfills matches ascending transcript timestamp, not arbitrary input order.131132Discard uncertain or speculative candidates.133134## End Condition135136After appending, report whether `DEVLOG.md` changed and identify the appended entry label or session id.