A statement that may not answer its question is never kept as an example - #299
Open
sandeep-agami wants to merge 2 commits into
Open
sandeep-agami wants to merge 2 commits into
sandeep-agami wants to merge 2 commits into
Conversation
sandeep-agami
force-pushed
the
ACE-119-reconcile-prose-evidence
branch
2 times, most recently
from
September 13, 2026 02:21
bff0c57 to
adb1492
Compare
sandeep-agami
force-pushed
the
ACE-120-reconcile-question-fit
branch
from
September 13, 2026 02:23
2279828 to
a7ef27d
Compare
Phase 3e keeps a match row as a worked example, which teaches the AI a question-to-SQL pairing, and nothing stood between a sound statement paired with the wrong question and that step. Now the skill reads the question beside the statement (Phase 1.5g), doubtful when the grain, the measure, a filter or the time window differs, and writes question_fit.json. The ledger's question_fit part grades a plausible fit confirmed, by reading and saying so; a doubtful fit unresolved with the reason, so the row is match_unverified at best; no part for a statement that came alone; and an open part when the file is missing after a run that succeeded, by the same rule every expected file follows. The one part of the ledger graded by judgment, and it can only withhold. Spec: ACE-120 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ction, not a pass Fourth review round. `no_question` removes the fit part, and nothing checked that the row really carried no question, so a malformed file could send a sound statement paired with the wrong question to the keep-offer, the exact harm this spec exists to block. The findings verb now cross-checks the row record against the ledger and refuses to treat such a row as a statement that held. Phase 1.5g and statement-check step 10 say the file is written for every statement row and that `no_question` is only for a statement that came alone; part-ledger.md names `question_fit` among the parts a missing file opens. Fixture 14 asserts the fit is the only open part and that the same statement read as plausible reaches match. Spec: ACE-120 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
sandeep-agami
force-pushed
the
ACE-119-reconcile-prose-evidence
branch
from
September 13, 2026 23:36
adb1492 to
0e0e398
Compare
sandeep-agami
force-pushed
the
ACE-120-reconcile-question-fit
branch
from
September 13, 2026 23:36
a7ef27d to
39ca742
Compare
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Spec: ACE-120 (feature
reconcile-evidence, brief F10)Stacked on #298 (which stacks on #291, #290, #289, #288). Base is
ACE-119-reconcile-prose-evidence. Merge the five below it first, then retarget this tomain. Do not merge without manual review.Summary
Phase 3e keeps a
matchrow as a worked example, which teaches the AI a question-to-SQL pairing. A sound statement paired with the wrong question was the most harmful thing that step could keep, and nothing stood in its way: the ledger grades a statement against the semantic model and the data, never against the question it came with. Now the skill reads the two side by side and the ledger withholds a doubtful row.What changed
question_fit.jsonas{"fit": "plausible" | "doubtful" | "no_question", "reason"}. A judgment made by reading, named as the one part of the ledger that is; it can withhold a row and never proves anything about the semantic model.question_fitpart:plausible→confirmed, the note saying it was read, not measured;doubtful→unresolvedwith the reason, so a matching number gradesmatch_unverifiedand never reaches Phase 3e (whose pinned text is untouched);no_question→ no part; file absent after a successful run →unresolved, by the same missing-input rule every expected file follows.part-ledger.md,statement-check.md(step 10) andevidence-row.mdname the step, the file and the part.Verification
Run tests with
uvx --with pytest-cov --with-editable "packages/agami-core[model,server]" pytest …oruv run dev.py check.row_statusreachingmatch_unverified, no question, missing or unknown after a successful run and nothing after a failed one); an end-to-end fixture whose statement counts items for a question about orders and is withheld with matching numbers; pins on 1.5g's four doubt signals and file, on 3b.5, and on the three reference docs. The two clean-row expectations gain thequestion_fitpart deliberately.uv run dev.py checkat the top of the stack: ruff and gitleaks clean, 5766 passed, 12 skipped, 1 pre-existing failure:tests/test_golden_run.py::test_a_client_that_cannot_be_found_still_fails_as_a_generation, which fails identically on untouchedorigin/mainon this machine because a client binary exists at/opt/homebrew/bin/claude.Review round 4
A panel pass found the one way past the gate this spec builds: a
no_questionfit removes the part, and nothing checked that the row really carried no question, so a malformed file could send a sound statement paired with the wrong question to the keep-offer. Fixed in the second commit, with tests:question_fitpart is never treated as a statement that held.no_questionis only for a statement that came alone.part-ledger.mdnamesquestion_fitamong the parts a missing file opens, and the 3b.5 example quotes the code's own note.match.Rebase note (2026-09-13). Replayed onto main at 99e44a8 with every branch below it; content unchanged, force-pushed with lease.
🤖 Generated with Claude Code