From 0c37af21db2431b95add445f72e0cf4ad15a255c Mon Sep 17 00:00:00 2001 From: Wyndham ARR Date: Thu, 8 Oct 2026 17:47:23 +0800 Subject: [PATCH] Clarify XML optional fields versus source review requirements --- .../tasks/20261008-production-review-9e7b.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.project-docs/30-worklog/tasks/20261008-production-review-9e7b.md b/.project-docs/30-worklog/tasks/20261008-production-review-9e7b.md index 09f219b..d48abde 100644 --- a/.project-docs/30-worklog/tasks/20261008-production-review-9e7b.md +++ b/.project-docs/30-worklog/tasks/20261008-production-review-9e7b.md @@ -94,3 +94,14 @@ Read: memory-index, project-positioning, current-state latest September sections - Saved10/7 evidence for source row1 / confirmation300007418 explicitly has `reservationStatus=Cancelled` and no identified room (`calendar_missing_rooms`). The previous user-facing instruction to fill this room was incomplete: first determine whether such a reservation should enter the report. Do not fabricate a room or silently introduce status filtering. Raw source and review decisions remain unchanged. - Verification: read existing processor/independent-validator/contracts, inspect immutable saved reservation response, and independently review baseline Git history; no network reads, test runs, service changes or real manual decisions were needed. - Follow-up/promotion candidate: settle the upstream ARR selection policy for cancelled/unassigned reservations against original report settings or an explicit business decision before changing inclusion, allowing a blank required room, or changing deduplication. Current source evidence alone cannot resolve that policy. Explain the existing requirement separately from the open report-scope question. + +## Same-task Follow-up: Audit of10/7 Review Against Existing Code + +- User suspects the requested10/7 fields/reasons do not match the project code. Same-task feature ownership resumed successfully; retained planning context and no other worktree owners. Read-only review scope: compare original XML rules, original direct-data rules, current manual source review and actual local review state; no business-policy changes are authorized by this audit. +- Confirmed local task still has revision0,26 unresolved items: room1 / `calendar_missing_rooms` / not optional; block18 / `missing_reservation_block` / optional; packages7 / `missing_reservation_packages` / optional. No user decisions have been saved. Local authenticated reads made no Oracle calls. +- Offline replay of the immutable58-row capture produces40 whitelist candidates. The shared business-field validator produces only1 `DATA_ROOM_MISSING`; the separate direct-input `_DATA_GAPS` contains room1 + block18 + packages7. Therefore it is inaccurate to describe all26 as pre-existing XML mandatory-field failures. +- Original XML normalizes absent optional text to blank and permits missing block/package values. `ARR_XML_RAW_FIELDS.md:30` explicitly allows them to be blank. Original direct JSON, introduced at `ad2c592`, distinguishes explicit empty from unresolved/missing/failed observations and blocks unresolved candidate fields, including optional ones. The new source review exposes those unresolved states as user decisions, allowing explicit empty values for optional fields. This confirmation workflow is additional to the XML flow even though shared business validation has not changed. +- Current page reason mapping uses one generic “来源字段缺失,请核实” message for all three actual reason families, which hides the difference between a missing mandatory business value and an optional value whose source is not established. Earlier user-facing wording did not explain this adequately. +- Version comparison: the desktop primary checkout remains at `ad2c592`; localhost runs the isolated repair checkout with the new source-review/date-switching UI. Nevertheless `process_daily.py`, `validate_daily.py` and `ARR_XML_RAW_FIELDS.md` are byte-identical in both checkouts. `git diff ad2c592` for those files is empty. No new room-required rule or fixed-price/deduplication change was introduced in this repair. +- Verification: authenticated local review/config inspection, exact file comparisons, saved-capture rule replay, Git history and an independent read-only audit. No test rerun, service restart, field confirmation, XML rewrite or Oracle request was needed; all observations and business values are preserved. +- Follow-up/promotion candidate: distinguish mandatory missing values from optional source uncertainty in product copy; assess evidence for treating particular omitted optional API structures as empty before changing that behavior. Preserve the separate unresolved cancellation/report-scope question. Do not silently convert unknown/failed observations to empty or claim all26 fields are required by the original XML rules. Integrate the repair branch into the primary project through the established integration workflow when requested.