-
-
Notifications
You must be signed in to change notification settings - Fork 3
fix(proof): expose read completeness #254
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
tonyketcham
merged 14 commits into
main
from
stack/toeknee-figma/fix/proof-read-completeness/expose-read-completeness--4cbd9019
Aug 22, 2026
Merged
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
d122280
fix(proof): expose read completeness
toeknee-figma 7602e86
Merge branch 'main' into stack/toeknee-figma/fix/proof-read-completen…
tonyketcham dd87773
fix(proof): address completeness review
toeknee-figma e7f6dc8
fix(proof): lock paging-only has_more after review
cursoragent be2cece
Merge pull request #257 from FlatbreadLabs/toeknee/proof-read-complet…
tonyketcham 9ee1e40
docs(proof): journal paging-only has_more as the product rule
tonyketcham 55673a2
Merge pull request #258 from FlatbreadLabs/toeknee/proof-journal-pr-2…
tonyketcham fe367ce
docs(proof): gate journaling on a 4/4 retention score
tonyketcham b473525
feat(proof): add Retract for records that should not stay live
cursoragent ff1d38c
docs(proof): accept Retract as the named archive mutation
cursoragent 9878dc1
fix(proof): refuse Retract of a sole closer for a live same-Effort re…
cursoragent a9c3d61
Merge pull request #260 from FlatbreadLabs/stack/tonyketcham/toeknee/…
tonyketcham 3b4a684
fix(proof): refuse Retract of last Finding on a realized Risk
cursoragent 765f8ea
Merge branch 'main' into stack/toeknee-figma/fix/proof-read-completen…
cursoragent File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| { | ||
| "skill_name": "proof", | ||
| "evals": [ | ||
| { | ||
| "id": 1, | ||
| "prompt": "An implementation branch passes lint and 41 of 42 tests. The last failure is a flaky timer assertion owned by this branch. The next session should rerun it and adjust the timeout if it repeats. Preserve this handoff where it belongs.", | ||
| "expected_output": "Keep the handoff in a branch, run, PR, or tracker artifact. Do not create or update a Proof record.", | ||
| "assertions": [ | ||
| "No .flatbread-proof record is created or updated", | ||
| "The response identifies the handoff as temporary implementation state", | ||
| "The response names a native work artifact instead of Proof" | ||
| ] | ||
| }, | ||
| { | ||
| "id": 2, | ||
| "prompt": "Put this in project agent memory: for the current PR, the follow-up is split among five temporary file owners covering the changelog, mirrored references, CLI tests, digest tests, and render logic. The map is useful until the PR merges but changes no product rule.", | ||
| "expected_output": "Keep the ownership map in the PR or run artifact despite the request to put it in agent memory. Do not create or update a Proof record.", | ||
| "assertions": [ | ||
| "No .flatbread-proof record is created or updated", | ||
| "The direct request to use project memory does not bypass the retention gate", | ||
| "The response places the ownership map in the PR or run artifact" | ||
| ] | ||
| }, | ||
| { | ||
| "id": 3, | ||
| "prompt": "A prior agent created a Finding only to note that a PR checklist used the wrong record kind. Product behavior did not change, and the correction matters only until review ends. Decide what durable project-memory action is warranted.", | ||
| "expected_output": "Create no new Proof record. Retract the temporary Finding with type Retract and a reason. Do not git rm the file or hand-edit frontmatter. Keep any separate durable product decision.", | ||
| "assertions": [ | ||
| "No new Proof record is created", | ||
| "The response retracts the temporary Finding through the typed writer", | ||
| "The response does not teach a git delete or frontmatter strip", | ||
| "Any cleanup preserves separate durable rationale" | ||
| ] | ||
| }, | ||
| { | ||
| "id": 4, | ||
| "prompt": "Maintainers made a project-wide, hard-to-reverse choice: Proof will not add numeric confidence fields to any record type. Uncertainty stays in cited evidence and record prose because scores from different models are not comparable. This will govern schema work, writer behavior, and docs. Preserve the conclusion through the repository's normal process.", | ||
| "expected_output": "Create and accept one Proof Decision through the typed writer. Pass rejectSiblings false so unrelated proposed Decisions on the same Effort stay proposed. Preserve the rationale, alternatives, consequences, and reversal criteria.", | ||
| "assertions": [ | ||
| "One durable Proof Decision is created", | ||
| "AcceptDecision passes rejectSiblings false", | ||
| "The rationale explains why model confidence scores are not comparable", | ||
| "The Decision covers schema, writer, and documentation consequences", | ||
| "No unrelated Proof record is created or rejected" | ||
| ] | ||
| } | ||
| ] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
17 changes: 17 additions & 0 deletions
17
...oof/constraints/con-mutation-enum-stays-deliberately-small--0vf4ssfg2jmzxyn4.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| --- | ||
| id: con-mutation-enum-stays-deliberately-small--0vf4ssfg2jmzxyn4 | ||
| effort: eff-effort-graph-memory-and-agent-wedge--szeqvmgqjqnhd002 | ||
| title: Mutation enum stays deliberately small | ||
| kind: hard | ||
| created_at: '2026-08-22T20:28:27.386Z' | ||
| supersedes: | ||
| - con-mutation-enum-stays-deliberately-small--02k06bxbjwrjfp9x | ||
| --- | ||
|
|
||
| V1 has exactly sixteen named mutations. Every operation has a Zod schema, validates against a committed index generation, and owns a defined semantic transition. | ||
|
|
||
| The surface consists of Effort lifecycle (`CreateEffort`, `SetEffortStatus`); one creation mutation for each primitive (`WriteIssue`, `WriteFinding`, `WriteDecision`, `WriteConstraint`, `WriteRisk`, `WriteCitation`, `WriteBlob`); edge retro-linking (`Supersede`, `Invalidate`); lifecycle transitions (`ResolveIssue`, `AcceptDecision`, `MitigateRisk`, `SetRiskState`); and `Retract` for records that should not stay on the live graph. | ||
|
|
||
| `Retract` is the named archive operation. It tombstones a file in place, strips that id from other records in the same Effort, and drops the record from browse reads. It is not a generic frontmatter patch, not a hard delete, and not a fold into a survivor. | ||
|
|
||
| No generic frontmatter patch, hard delete, standalone `RejectDecision`, or body-edit mutation is part of v1. Git is the undo story; Decision sibling rejection is part of accepting an alternative; and bodies remain ordinary editable markdown while the platform owns frontmatter semantics. Additive mutations require dogfood evidence; removing or reshaping one is a breaking migration. |
37 changes: 37 additions & 0 deletions
37
...ecisions/dec-retract-noise-instead-of-deleting-proof-files--k6jk0d2bdp1m9jw9.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| --- | ||
| id: dec-retract-noise-instead-of-deleting-proof-files--k6jk0d2bdp1m9jw9 | ||
| effort: eff-effort-graph-memory-and-agent-wedge--szeqvmgqjqnhd002 | ||
| title: Retract noise instead of deleting Proof files | ||
| state: accepted | ||
| created_at: '2026-08-22T20:28:28.832Z' | ||
| derives_from: | ||
| - con-mutation-enum-stays-deliberately-small--02k06bxbjwrjfp9x | ||
| - con-mutation-enum-stays-deliberately-small--0vf4ssfg2jmzxyn4 | ||
| --- | ||
|
|
||
| ## Context | ||
|
|
||
| PR 260 cleaned session noise from an Effort by deleting record files and stripping ids on the kept Decision. Review refused that path: Proof has no delete mutation, the skill forbids hand-edits of frontmatter, and leftover stored ids fail closed with PROOF_DANGLING_RELATION. | ||
|
|
||
| Supersede keeps both records. Invalidate adds a Finding that says a target was wrong. Leaving junk in place fills the 25-record / 50-edge browse caps. Git rm is the wrong tool. | ||
|
|
||
| ## Decision | ||
|
|
||
| Add Retract as a sixteenth named mutation. Tombstone the file in place with retracted, retracted_at, and retracted_reason. Strip that id from other records in the same Effort in the same journal transaction. Browse reads omit retracted records. proof get still returns the file. Later writes refuse retracted ids. Efforts cannot be retracted; abandon them. | ||
|
|
||
| This is not a hard delete and not a Collapse that folds bodies into a survivor. Folding N noisy records into one survivor is a body edit on the survivor plus Retract on the rest. | ||
|
|
||
| ## Alternatives considered | ||
|
|
||
| - **Git rm plus a frontmatter-edit exception:** rejected because it makes agents responsible for reverse projections and dangling ids. The writer already owns multi-file transactions. | ||
| - **Leave noise forever:** rejected because bounded reads are the recall surface; session debris crowds out turning points. | ||
| - **Supersede or Invalidate the junk:** rejected because both keep the bad record visible and, for Invalidate, add another record to say so. | ||
| - **Hard delete that unlinks the file:** rejected because the journal has no content unlink, missing ids fail closed, and other branches that still store the id would dangle. | ||
|
|
||
| ## Consequences | ||
|
|
||
| Eval 3 can teach Retract. Cleanup PRs no longer need to strip frontmatter by hand. The mutation enum grows to sixteen with dogfood from the #260 review trail. | ||
|
|
||
| ## Reversal criteria | ||
|
|
||
| Revisit if tombstones still crowd raw-file grep, if agents Retract durable rationale, or if a Restore mutation becomes necessary because git revert is too costly in concurrent workflows. |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.