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
16 changes: 16 additions & 0 deletions .perry/events.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -496,3 +496,19 @@
{"ts": "2026-08-20T17:58:10", "event": "add", "id": "TASK-120", "title": "the linkage edges are read but never folded into KR progress", "track": "main", "mode": "project", "priority": "P1", "actor": "agent", "summary": "", "depends_on": [], "from": null, "to": "not_started"}
{"ts": "2026-08-20T18:13:04", "event": "done", "id": "TASK-113", "title": "three checks read the project living around them, so ordinary progress turns them red", "track": "main", "owner": "Coding Agent", "role": "", "actor": "agent", "from": "in_progress", "to": "done", "evidence": "evidence/2026-08/TASK-113-dispatch-2026-08-20-1813.md", "rung": "V3"}
{"ts": "2026-08-20T18:13:04", "event": "add", "id": "TASK-121", "title": "the sweep that found four more live-state assertions runs once and then is thrown away", "track": "main", "mode": "project", "priority": "P1", "actor": "agent", "summary": "", "depends_on": [], "from": null, "to": "not_started"}
{"ts": "2026-08-20T18:30:27", "event": "done", "id": "TASK-092", "title": "OKR.md and .perry/config.md become stores with renderers", "track": "main", "owner": "Coding Agent", "role": "", "actor": "agent", "from": "review", "to": "done", "evidence": "evidence/2026-08/TASK-092-dispatch-2026-08-20-1654.md", "rung": "V4"}
{"ts": "2026-08-20T18:30:44", "event": "add", "id": "TASK-122", "title": "the repair path the tools advertise leaves the file needing a whitespace fix", "track": "main", "mode": "project", "priority": "P1", "actor": "agent", "summary": "", "depends_on": [], "from": null, "to": "not_started"}
{"ts": "2026-08-20T18:30:45", "event": "add", "id": "TASK-123", "title": "the goals writer takes the file as truth and derives the store, which is the opposite direction from the KR", "track": "main", "mode": "project", "priority": "P1", "actor": "agent", "summary": "", "depends_on": [], "from": null, "to": "not_started"}
{"ts": "2026-08-20T18:54:21", "event": "done", "id": "TASK-110", "title": "measure what Perry state costs and propose a retention policy, deleting nothing", "track": "main", "owner": "Coding Agent", "role": "", "actor": "agent", "from": "review", "to": "done", "evidence": "evidence/2026-08/TASK-110-dispatch-2026-08-20-1725.md", "rung": "V3"}
{"ts": "2026-08-20T18:54:29", "event": "drop", "id": "TASK-070", "title": "Perry's own state is 19.5% of the tracked repo and grows unbounded", "track": "main", "owner": "Coding Agent", "role": "", "stage": "", "actor": "agent", "from": "not_started", "to": "dropped", "reason": "The measurement this row asked for was made (TASK-110) and it argues against the row. The whole proposal recovers 560,089 bytes — 1.4 days of growth at the measured 405,349 bytes/day — once, and nothing in it keeps pace. The cost is also not paid where the bytes are: perry-lint reads all 135 evidence files in 8ms and no agent loads evidence/ per turn. Rule B's selector decays; rule A deletes the argument history a project that reviews this hard depends on. The lever the measurement does point at is how much prose a V4 round emits, which is a product decision, not this row. Dropped on the evidence, not for lack of interest."}
{"ts": "2026-08-20T18:55:51", "event": "answer", "id": "USER-004", "title": "When migration encounters a file the user has chmod-ed read-only, should it refuse to touch that file, or migrate it and name the overridden permission in the plan? Today it migrates silently: write_atomic renames over the target, and a rename needs write permission on the directory, not on the file.", "answer": "Migrate and name the override; do not refuse. Reasoning recorded because the row was minted for it: refusing would block a whole migration for a reason unrelated to shape, and migration is the one road ADR-004 gives an undeclared project — a refusal there is the wall with no door that this project rejects everywhere else. The override is also reversible: the restore point carries the file's original bytes, verified under TASK-079. The 'at least name it' half of the ADR-004 posture is already satisfied by what shipped in PR #6, and TASK-115 added the guard that keeps that wording an observation rather than advice. The read-only bit stays a signal Perry reports and does not act on.", "actor": "agent", "from": "pending", "to": "answered"}
{"ts": "2026-08-20T18:58:42", "event": "start", "id": "TASK-094", "title": "Delete the header rule and the row splitter for the three stores", "track": "main", "actor": "agent", "from": "not_started", "to": "in_progress"}
{"ts": "2026-08-20T18:58:42", "event": "start", "id": "TASK-111", "title": "a test reads two files outside the repository, so it is green here and red on CI forever", "track": "main", "actor": "agent", "from": "not_started", "to": "in_progress"}
{"ts": "2026-08-20T19:23:44", "event": "status", "id": "TASK-111", "title": "a test reads two files outside the repository, so it is green here and red on CI forever", "track": "main", "actor": "agent", "depends_on": [], "from": "in_progress", "to": "review", "reason": ""}
{"ts": "2026-08-20T19:23:44", "event": "evidence", "id": "TASK-111", "title": "a test reads two files outside the repository, so it is green here and red on CI forever", "track": "main", "actor": "agent", "from": "—", "to": "evidence/2026-08/TASK-111-dispatch-2026-08-20-1930.md"}
{"ts": "2026-08-20T19:23:55", "event": "add", "id": "TASK-124", "title": "the conformance corpus reads a project outside the repo and has no committed substitute", "track": "main", "mode": "project", "priority": "P2", "actor": "agent", "summary": "", "depends_on": [], "from": null, "to": "not_started"}
{"ts": "2026-08-20T19:23:55", "event": "add", "id": "TASK-125", "title": "the Anti-Goals-inside-a-version insert case runs only on the author machine", "track": "main", "mode": "project", "priority": "P2", "actor": "agent", "summary": "", "depends_on": [], "from": null, "to": "not_started"}
{"ts": "2026-08-20T19:50:42", "event": "status", "id": "TASK-094", "title": "Delete the header rule and the row splitter for the three stores", "track": "main", "actor": "agent", "depends_on": [], "from": "in_progress", "to": "review", "reason": ""}
{"ts": "2026-08-20T19:50:42", "event": "evidence", "id": "TASK-094", "title": "Delete the header rule and the row splitter for the three stores", "track": "main", "actor": "agent", "from": "—", "to": "evidence/2026-08/TASK-094-dispatch-2026-08-20-1958.md"}
{"ts": "2026-08-20T19:50:53", "event": "next", "id": "TASK-050", "title": "One normalization for a header cell, not two", "track": "main", "actor": "agent", "from": "After TASK-094 lands, rescope this task to header handling still required by adoption", "to": "unblocks on PR #20; re-scope to the adoption reader (parse_board/parse_okr with no store, parse_tracks, read_conformance, parse_phase/parse_decisions) — the fifth hardening round should be a mutation harness, not another regex"}
{"ts": "2026-08-20T19:50:53", "event": "next", "id": "TASK-067", "title": "The writer can destroy the table it writes to, and perry-lint cannot see it", "track": "main", "actor": "agent", "from": "After TASK-094 and TASK-095 land, retain only foreign-project adoption coverage and the escaped-pipe behavioural corpus", "to": "unblocks on PR #20 but does not become empty: perry-decide still writes DECISIONS.md, perry-goals still writes OKR.md § Commitments in place, perry-migrate still rewrites a stranger files, and ragged-row is still the only catch"}
17 changes: 9 additions & 8 deletions perry/BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,26 @@

| ID | Title | Owner | Status | Next action | Evidence | Verification | Depends on |
|---|---|---|---|---|---|---|---|
| TASK-050 | One normalization for a header cell, not two | Coding Agent | blocked | After TASK-094 lands, rescope this task to header handling still required by adoption | — | V4 | TASK-094 |
| TASK-067 | The writer can destroy the table it writes to, and perry-lint cannot see it | Coding Agent | blocked | After TASK-094 and TASK-095 land, retain only foreign-project adoption coverage and the escaped-pipe behavioural corpus | evidence/2026-08/TASK-067-finding.md | V4 | TASK-094, TASK-095 |
| TASK-050 | One normalization for a header cell, not two | Coding Agent | blocked | unblocks on PR #20; re-scope to the adoption reader (parse_board/parse_okr with no store, parse_tracks, read_conformance, parse_phase/parse_decisions) — the fifth hardening round should be a mutation harness, not another regex | — | V4 | TASK-094 |
| TASK-067 | The writer can destroy the table it writes to, and perry-lint cannot see it | Coding Agent | blocked | unblocks on PR #20 but does not become empty: perry-decide still writes DECISIONS.md, perry-goals still writes OKR.md § Commitments in place, perry-migrate still rewrites a stranger files, and ragged-row is still the only catch | evidence/2026-08/TASK-067-finding.md | V4 | TASK-094, TASK-095 |

## P1

| ID | Title | Owner | Status | Next action | Evidence | Verification | Depends on | Track | Stage | Stage since | Arrived | Parent | Commitment | Role |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TASK-077 | DESIGN-006 F — a finance-shaped role runs one real task end to end | Coding Agent | not_started | Run the finance-shaped role end to end on a copy of gimegime-pmo, then write the extraction report. | evidence/2026-08/TASK-077-context.md | V5 | TASK-073, TASK-075, TASK-076 | main | | | | | | |
| TASK-092 | OKR.md and .perry/config.md become stores with renderers | Coding Agent | review | V4 review re-dispatched after the first reviewer stalled at 600s; PR #16 is merged and nine rows wait on this row closing | evidence/2026-08/TASK-092-dispatch-2026-08-20-1654.md | V4 | TASK-090 | main | | | | | | |
| TASK-094 | Delete the header rule and the row splitter for the three stores | Coding Agent | not_started | — | — | V3 | TASK-090, TASK-092 | main | | | | | | |
| TASK-094 | Delete the header rule and the row splitter for the three stores | Coding Agent | review | scope decision: PR #20 leaves 13 splits / 87 resolutions on four storeless BOARD registers, so verification item 1 (0 call sites) is unmet as written | evidence/2026-08/TASK-094-dispatch-2026-08-20-1958.md | V3 | TASK-090, TASK-092 | main | | | | | | |
| TASK-095 | Remove the parser for the three stores; keep what adoption needs | Coding Agent | not_started | — | — | V4 | TASK-094 | main | | | | | | |
| TASK-097 | Migrate the two real projects to the store, at V5 | Coding Agent | not_started | — | — | V5 | TASK-092 | main | | | | | | |
| TASK-099 | Sweep bin/, viewer/ and tests/ for document handling that ADR-007 made dead | Coding Agent | not_started | — | — | V4 | TASK-095 | main | | | | | | |
| TASK-102 | Evidence becomes a typed relation: {path, kind, round}, not one prose cell | Coding Agent | not_started | — | — | V4 | TASK-090, TASK-092 | main | | | | | | |
| TASK-070 | Perry's own state is 19.5% of the tracked repo and grows unbounded | Coding Agent | not_started | decide the retention proposal in TASK-110's evidence; nothing is deleted until then | evidence/2026-08/TASK-070-context.md | V3 | — | main | | | | | | |
| TASK-110 | measure what Perry state costs and propose a retention policy, deleting nothing | Coding Agent | review | the user decides the retention policy; the measurement says the whole proposal recovers 1.4 days of growth | evidence/2026-08/TASK-110-dispatch-2026-08-20-1725.md | V3 | — | main | | | | | | |
| TASK-111 | a test reads two files outside the repository, so it is green here and red on CI forever | Coding Agent | not_started | CI red on every run since the corpus silently shrinks; see tests/test_goals_writer.py ELSEWHERE | — | V3 | — | main | | | | | | |
| TASK-111 | a test reads two files outside the repository, so it is green here and red on CI forever | Coding Agent | review | PR #19 review: the corpus is IN_REPO-only and CI-covered; merge after origin is reconciled | evidence/2026-08/TASK-111-dispatch-2026-08-20-1930.md | V3 | — | main | | | | | | |
| TASK-114 | aiMark reads Perry through the current contracts instead of a pin nine versions old | Coding Agent | in_progress | delegated to an aiMark coding agent; awaiting paste-back | evidence/2026-08/TASK-114-delegation-prompt.md | V4 | — | main | | | | | | |
| TASK-119 | the linkage graph is documented as machine-written and no tool writes it | Coding Agent | not_started | — | — | V3 | | main | | | | | | |
| TASK-120 | the linkage edges are read but never folded into KR progress | Coding Agent | not_started | — | — | V3 | | main | | | | | | |
| TASK-121 | the sweep that found four more live-state assertions runs once and then is thrown away | Coding Agent | not_started | — | — | V3 | | main | | | | | | |
| TASK-122 | the repair path the tools advertise leaves the file needing a whitespace fix | Coding Agent | not_started | — | — | V3 | | main | | | | | | |
| TASK-123 | the goals writer takes the file as truth and derives the store, which is the opposite direction from the KR | Coding Agent | not_started | — | — | V4 | | main | | | | | | |

## P2

Expand All @@ -51,6 +50,8 @@
| TASK-116 | the mention list is write-only, mislabelled, and two of its carve-outs are unpinned | Coding Agent | not_started | — | — | V3 | |
| TASK-117 | two tools disagree about whether the board has drifted when the event log is absent | Coding Agent | not_started | — | — | V3 | |
| TASK-118 | the id minters read three sources and the canonical store is not one of them | Coding Agent | not_started | — | — | V3 | |
| TASK-124 | the conformance corpus reads a project outside the repo and has no committed substitute | Coding Agent | not_started | — | — | V3 | |
| TASK-125 | the Anti-Goals-inside-a-version insert case runs only on the author machine | Coding Agent | not_started | — | — | V3 | |

## Cadence (recurring; doesn't consume P0 slots)

Expand All @@ -65,7 +66,7 @@
| USER-001 | Staleness threshold N | TASK-005 | — | **answered 2026-08-16: 30 days** | |
| USER-002 | `--claims` vs `--strict` | — | — | **answered 2026-08-16: exempt** | |
| USER-003 | Please confirm whether Perry may make tasks.jsonl the authoritative Task record, with BOARD.md becoming a generated view whose direct edits are reported instead of accepted. | TASK-038 | | answered 2026-08-20: Already decided in ADR-007 decision 2 on 2026-08-19 (Deciders: Ran Jiao): BOARD.md becomes rendered output and a hand edit becomes drift. This row was minted the same day and duplicates that decision; recorded here so the queue matches the record. TASK-038 is unblocked, and still needs its V5 signature, which is a different act from this permission. | 2026-08-19 |
| USER-004 | When migration encounters a file the user has chmod-ed read-only, should it refuse to touch that file, or migrate it and name the overridden permission in the plan? Today it migrates silently: write_atomic renames over the target, and a rename needs write permission on the directory, not on the file. | TASK-079 | | pending | 2026-08-20 |
| USER-004 | When migration encounters a file the user has chmod-ed read-only, should it refuse to touch that file, or migrate it and name the overridden permission in the plan? Today it migrates silently: write_atomic renames over the target, and a rename needs write permission on the directory, not on the file. | TASK-079 | | answered 2026-08-20: Migrate and name the override; do not refuse. Reasoning recorded because the row was minted for it: refusing would block a whole migration for a reason unrelated to shape, and migration is the one road ADR-004 gives an undeclared project — a refusal there is the wall with no door that this project rejects everywhere else. The override is also reversible: the restore point carries the file's original bytes, verified under TASK-079. The 'at least name it' half of the ADR-004 posture is already satisfied by what shipped in PR #6, and TASK-115 added the guard that keeps that wording an observation rather than advice. The read-only bit stays a signal Perry reports and does not act on. | 2026-08-20 |

## Done this period (leaves the board at next triage)

Expand Down
Loading
Loading