Skip to content

P1: Mark committed graph reconciliation failures as reload-required - #228

Merged
philipgreat merged 2 commits into
fix/committed-audit-postcommit-javafrom
fix/committed-postcommit-reconcile-java
Oct 21, 2026
Merged

philipgreat merged 2 commits into
fix/committed-audit-postcommit-javafrom
fix/committed-postcommit-reconcile-java

Conversation

@philipgreat

@philipgreat philipgreat commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on audit-delivery draft #226; not for direct merge to main.

A test-only GraphEntity setter fault after SQLite transaction return reproduced an ordinary save error despite a committed business row and Outbox event. This candidate returns a dedicated committed/reload-required error and marks only the participating EntityMutationLedger unsafe for another save; an independent graph in the same UserContext still saves.

At head 092e483, post-commit reconciliation failure no longer suppresses independent audit delivery. Audit events take the authoritative committed version from the provider result, not a partially reconciled entity. If audit delivery also fails, its sanitized failure is suppressed on the reconciliation exception. SQLite tests cover root and child audit attempts, both-failure classification, persisted row/Outbox, and rejection of same-graph retries.

Local verification: GraphTraceSqliteTest 36/36 and the full affected teaql-runtime + teaql-sqlite Maven reactor passed. The feature-targeted Example Gate and CI-only main-targeted #230 passed all five named gates at the exact 092e483 head; #230 was closed without merge. This is a controlled fault-injection boundary, not a claim of normal generated-entity failure or full P1 acceptance. Human review, audit-delivery API choice, and formal #216 integration remain open.

@philipgreat

Copy link
Copy Markdown
Contributor Author

Exact candidate head 628991a: local affected reactor mvn -q -pl teaql-runtime,teaql-sqlite -am test passed after root/child fault-injection and ledger-scope tests. CI-only main-targeted #229 then passed all five named gates (Build and Test, examples, PostgreSQL/MySQL, SQL Server, Business ID SQL Server), plus the separate feature-targeted Example Gate; #229 was closed unmerged. This remains a draft stacked on #226. Reconciliation failure currently prevents replay but does not itself guarantee delivery of every post-commit audit callback; audit semantics, integration into #216, immutable artifact consumers and public delivery remain separate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant