design: validate durable delivery of human phrase decisions - #841
Conversation
…ion handler Signed-off-by: dada-yan <BinjunYann@gmail.com>
Signed-off-by: dada-yan <BinjunYann@gmail.com>
Signed-off-by: dada-yan <BinjunYann@gmail.com>
Signed-off-by: dada-yan <BinjunYann@gmail.com>
|
The content here is decision material — it states a policy and asks maintainers to approve it — and the thinking in it is good. My objection is only about where it lives.
Please give this its own numbered record in #832 in this same batch is the pattern to copy: it moved its reasoning into One thing that is not my call and that I have flagged for the maintainer: whether the executable prototype itself belongs in the repository. Separately, and this one does block: The |
|
Decision on the committed prototype directories, so all three of these can move at once: the conclusions belong in a numbered record; the harness stays out of the repository. The test we are applying is not "prototype versus production". It is: after the decision is made, will anyone run this again?
There is a second reason, and it is the stronger one: an executable specification that is not the implementation is a second source of truth. This is the thing the codebase avoids everywhere else. 0032 refuses to store an expression as a string and evaluate it at run time; the rule model is structured precisely so that what the page shows is generated from what runs and cannot drift from it. A policy module that encodes the rules beside the validator rather than inside it is that same drift, with the added property that nothing will ever fail when the two disagree. So: please lift the reasoning and the decisions requested into a numbered record under None of this is a judgement on the work itself. The analysis is good and the experiments clearly did their job; the argument is only about what survives them. Applied to this PR, with one carve-out:
|
…prototype Signed-off-by: dada-yan <BinjunYann@gmail.com>
…izer. Signed-off-by: dada-yan <BinjunYann@gmail.com>
|
This is still marked as a draft, so I have not merged it — a draft is your signal that it is not finished, and flipping that is your call rather than mine. From my side the rework answers everything I raised: the reasoning is now a numbered record with rows in both index tables, the accepted record carries a dated revision note pointing at it, and the committed harness is gone. CI is green on all four checks and it merges cleanly onto Mark it ready for review when you consider it done and I will merge it. |
Signed-off-by: dada-yan <BinjunYann@gmail.com>
# Conflicts: # docs/decisions/README.md
The durable-delivery reasoning now lives in ADR 0051, indexed in both tables, with a dated contextual note in 0044. The one-off script README is removed; the real Rust regressions stay.
The unused public
try_materializeentry point is removed. Productionmaterializestill calls privatematerialize_in_tx, and productionphrase_bindings::decidecallsdecide_on. Validation still precedes pool acquisition on the existing decide path. The integration target is nowhuman_phrase_materialization_delivery; normal recomputation and process-exit cases use the existing public materializer.Busy orchestration lives only in
materialize_delivery_tests.rsundercfg(test). It acquires the try-lock, calls the same real private body after success, and uses real Deferred handling on Busy. The test observes productionmaterializeblocked in PostgreSQL by that lock, releases it, and verifies completion. The old-to-new assertion map retains rollback, pool release, same-job deferral, late arrivals, reverse/duplicate processing, actual worker startup, bounded deferral, scoped requeue, cost and all three OS process-kill windows.Linux validation at
7e49b7fd6d555727f169a77d36ab12367bf97003against dev69560db5969fae8def8c4e84b7572d841e1dca57:cargo fmt --all --check,cargo clippy --locked --workspace --all-targets -- -D warnings,cargo test --locked --workspace -- --test-threads=1, andcargo build --locked --workspacepassed; database and PDF requirements enabled. Workspace: 959 passed, 0 failed, 5 ignored (existing live HTTPS plus the opt-in entries below).Opt-in commands are in CONTRIBUTING and the test module headers. No production job kind, HTTP 202/status read, Review UI or multi-instance recovery contract is introduced. Partial-projection process kill and failed ack persistence remain future production acceptance; this does not close #800. The proposed contract remains Draft.
Refs #800