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
5 changes: 4 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,10 @@ For the full workflow narrative, conventions, and registry schemas, read
coupled to the registry. Claude and Codex discovery is installed by
PyAutoBrain; they source `scripts/prompt_sync.sh` for commit/push.
- **Scripts** — `scripts/status.sh` (inventory), `scripts/prompt_sync.sh`
(commit/push helpers).
(commit/push helpers), `scripts/lifecycle.py` (state moves + drift checks;
`lifecycle.py dates [--write]` reports/backfills the date every registry
entry and issued prompt carries — see [REFERENCE.md](REFERENCE.md) "Task
dates").

## Hard rules

Expand Down
50 changes: 50 additions & 0 deletions REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,7 @@ Free-form markdown. Strong conventions:
Autonomy: supervised # safe | supervised | human-required
Priority: normal # low | normal | high
Status: draft
Issued: 2026-08-19 # optional; set when the prompt advances to active/
Blocked-by: PyAutoFit#1436 # optional; see "Declaring a gate" below
```

Expand Down Expand Up @@ -354,6 +355,7 @@ Each task is an H2 section:
```markdown
## <task-name-kebab-case>
- issue: https://github.com/<owner>/<repo>/issues/<n>
- issued: YYYY-MM-DD # the day the task was issued
- session: claude --resume <session-id> # optional
- status: <library-dev | workspace-dev | ready-to-ship | awaiting-input | …>
- location: <cli-in-progress | ready-for-mobile | …> # optional, used by /handoff
Expand All @@ -375,6 +377,54 @@ Each task is an H2 section:
Free-form summary of progress and next steps.
```

### Task dates

The Mind used to date only what it **finished** — every completion record
carries `completed:` — so it could answer "what shipped in July?" but not "what
did we start?". Every task now carries a machine-readable date from the moment
it leaves the backlog:

| Where | Field | The event it dates |
|-------|-------|--------------------|
| `active.md` | `- issued: YYYY-MM-DD` | the day the task got its GitHub issue |
| `planned.md` | `- filed: YYYY-MM-DD` | the day it was scoped |
| `parked.md` | `- parked: YYYY-MM-DD` | the day it stopped |
| `active/<name>.md` | `Issued: YYYY-MM-DD` | the prompt's own copy, in its light header |
| `complete/<YYYY>/<MM>/<slug>.md` | `- completed: YYYY-MM-DD` | unchanged — the ledger already did this |

The **key names the event**, so a merged feed can say what each date means
rather than showing a bare timestamp. Reading is tolerant: `registered:`,
`started:`, `planned:`, `found:` and `shipped:` are all read as dates too (the
registries are hand-edited by many sessions, and an entry that says when it
happened should count however it said it) — the table is what a *writer*
should use. The most specific event wins when an entry carries several, so a
task that was filed and later issued dates from its issue.

A date inside another field's prose (`- issue: …/1501 (issued 2026-08-19)`) is
deliberately **not** read — that is the un-parseable habit this convention
replaces. The prompt's `Issued:` header is its own copy of the registry date,
so an issued prompt stays dated even if its registry row goes missing.

`scripts/lifecycle.py dates` reports every entry and issued prompt carrying no
date; `dates --write` backfills them retroactively from the evidence the repo
already holds, annotating each inferred date with where it came from:

```
Issued: 2026-08-18 (backfilled from parked.md `parked:`)
```

The sources, in order: the commit that introduced the entry or moved the prompt
into `active/`; the dated registry entry that claims the prompt; a date the
entry already stated in its own prose. Nothing is guessed — an entry with no
evidence is reported for a human to date by hand. A **shallow** clone (CI, a
cloud session) cannot see past its boundary commit, so git dates at or before
it are discarded rather than stamping every task with the day the clone was
made.

The dashboard's [Recent](dashboard.md#recent) table is the payoff: the 20
newest events across the whole Mind — issued, parked, filed and completed — in
one place.

### Completion record (`complete/<YYYY>/<MM>/<slug>.md`) schema

The dated records are the completion ledger (`complete/AGENTS.md`; the
Expand Down
1 change: 1 addition & 0 deletions active.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## transformed-message-factor-gradient-unpack
- issue: https://github.com/PyAutoLabs/PyAutoFit/issues/1501 (issued 2026-08-19)
- issued: 2026-08-19
- prompt: active/16_transformed_message_factor_gradient_unpack.md
- status: HOLD — do not start dev. Fix-or-delete hangs off the PyAutoFit#1498 logpdf-contract
decision (parked #1500 design bundle); dead code (zero production callers), crashes on first
Expand Down
1 change: 1 addition & 0 deletions active/12_single_source_density_refactor.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Difficulty: too-large
Autonomy: supervised
Priority: normal
Status: formalised
Issued: 2026-08-18 (backfilled from parked.md `parked:`)

Found during the priors/messages audit (see
`PyAutoPrompt/autofit/priors_and_messages_math_audit.md`, finding C1).
Expand Down
1 change: 1 addition & 0 deletions active/13_collapse_prior_and_message.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Difficulty: too-large
Autonomy: supervised
Priority: normal
Status: formalised
Issued: 2026-08-18 (backfilled from parked.md `parked:`)

Found during the priors/messages audit (see
`PyAutoPrompt/autofit/priors_and_messages_math_audit.md`, finding C4).
Expand Down
1 change: 1 addition & 0 deletions active/16_transformed_message_factor_gradient_unpack.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Autonomy: supervised
Priority: normal
Status: issued 2026-08-19 as PyAutoFit#1501 — awaiting external verification
(fix-or-delete hangs off the #1498 contract decision); do not start dev
Issued: 2026-08-19 (backfilled from active.md `registered:`)

Same shape as census finding A1 (#1331-01): a code path that has never run
end-to-end, dead on arrival.
Expand Down
1 change: 1 addition & 0 deletions active/pyautoreduce_slacs1430_acs_comparison.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Difficulty: medium
Autonomy: safe
Priority: normal
Status: formalised
Issued: 2026-08-08 (backfilled from parked.md `parked:`)

Validate PyAutoReduce against a trusted legacy reduction: reduce the SLACS lens slacs1430+4105 from archival HST/ACS data using PyAutoReduce, then compare the resulting modeling-ready dataset (data, noise map, PSF) to the long-used collaborator-provided dataset at /mnt/c/Users/Jammy/Science/subhalo/dataset/slacs/slacs1430+4105 (used for many years in subhalo work). Comparison is a science project driven through autolens_assistant: image/noise/PSF residuals plus lens-model parity fits on both datasets.

Expand Down
Loading
Loading