feat: complete verifiable birth-time rectification flow
This commit is contained in:
@@ -122,8 +122,18 @@ The replayable public-case manifest currently contains 10 events: 5 career and 5
|
||||
|
||||
Prevention: add a new domain only after its public cases satisfy the same source/replay contract; never substitute loosely sourced celebrity notes or absence of a match for a negative conclusion.
|
||||
|
||||
## ERR-083 | Duplicate Supabase migration versions skipped required schema | resolved 2026-07-19
|
||||
Four migration pairs reused the same timestamp prefix, while Supabase records that prefix as the migration identity. The remote ledger therefore recorded only one file from each pair: `chart_profiles`, `synastry_reports`, and part of the profile recovery contract were absent even though their SQL files existed locally. Dynamic birth-time migrations were also still pending after the application branch was merged.
|
||||
|
||||
Prevention: `tests/test_supabase_migration_versions.py` requires every migration prefix to be unique. Preserve already-recorded versions, move skipped SQL into later uniquely numbered repair migrations, run `supabase db push --linked --dry-run`, and verify the remote migration ledger plus live schema before deploying dependent application code.
|
||||
|
||||
## Fragment Sweep Command Set
|
||||
|
||||
## ERR-086 | Steve Jobs jyotishganit artifacts used non-San-Francisco coordinates | mitigated 2026-07-21
|
||||
The jyotishganit Shadbala and field-comparison artifacts labelled the public case as San Francisco while using `37.3382, -122.0383`, unlike the canonical parity runner input `37.7749, -122.4194`. The affected artifacts are invalidated and production tuning remains blocked. Probe defaults now use the canonical coordinates; regeneration is still blocked in the active project virtualenv because `skyfield` is unavailable.
|
||||
|
||||
Prevention: hash only normalized calculation-bearing input, require the location label and canonical coordinates to share one input contract, and reject an oracle artifact when its canonical input hash differs from the comparison packet.
|
||||
|
||||
## ERR-084 | Pre-work fragment test assumes zero candidates despite current audited candidates | active 2026-07-19
|
||||
`scripts/pre_work_check.py` reported `fragment_audit.candidate_count=2` on 2026-07-19 and reports `3` in the 2026-07-20 run, while `tests/test_preflight_fragment_scan.py` requires exactly zero. The pre-work command therefore cannot be reported green until the candidates are classified or the test is updated to validate the reviewed state rather than a hard-coded count.
|
||||
|
||||
|
||||
@@ -19,6 +19,33 @@ the tested deployment SHA.
|
||||
| ISSUE-BT-004 | Choosing `都不符合` surfaced the same raw English pattern error. | verified-local | The actual orchestrator treats `都不符合` as a normal direction change; Task 12 E2E advances the durable turn and preserves the single fee; client maps terminal 502/non-JSON failures to stable Chinese copy. | Authenticated production `都不符合` action followed by reload/resume, tied to the deployed SHA. |
|
||||
| ISSUE-BT-005 | Initialization used generic broad-year choices and lost the rich card/chat rectification analysis. | verified-local | Task 9 onboarding soft gate; v3 narrative grounding rejects broad-year questionnaires; Task 12 asserts candidate boundary, D1/D9/D10 layers, three domain rationales, free text, and year/month event request; PG14 proves future background persists without scoring and the legacy suite imports old unfinished work once with `migration_waived`. | Authenticated synthetic first-turn snapshot and one legacy import smoke tied to the deployed SHA. |
|
||||
|
||||
## Initial production diagnosis (preserved)
|
||||
|
||||
The original issue record captured these causes before implementation:
|
||||
|
||||
- Chat deletion lacked both an authenticated `DELETE` grant and an owner-only
|
||||
RLS policy.
|
||||
- `startNewChat()` created only a chat session; the birth profile and
|
||||
rectification case were account-scoped, so a new chat could not start an
|
||||
explicit re-rectification while preserving the active chart.
|
||||
- `dynamic-choice-v2` emitted `request_candidate_confirmation`, but the client
|
||||
sent the legacy `confirm_guided_candidate` mutation, which rejected dynamic
|
||||
cases and left them in `confirming` without applying the candidate.
|
||||
- The reported `都不符合` failure coincided with a deployment replacement in
|
||||
which Caddy returned HTTP 502 while Docker could not resolve the temporarily
|
||||
unavailable `web` service.
|
||||
- WebKit can represent a non-JSON parse failure as a `DOMException` named
|
||||
`SyntaxError`; the old transport recognized JavaScript `SyntaxError` only and
|
||||
could expose `The string did not match the expected pattern.` instead of
|
||||
stable Chinese product copy.
|
||||
|
||||
The original closure checklist required owner-only deletion, explicit
|
||||
account-level re-rectification, atomic idempotent candidate confirmation,
|
||||
deployment availability or bounded retry behavior, stable localized WebKit
|
||||
errors, and authenticated end-to-end coverage for `都不符合`, confirmation,
|
||||
re-rectification, and deletion. The table above maps each requirement to the
|
||||
implemented local evidence and the remaining production proof.
|
||||
|
||||
## Release decision
|
||||
|
||||
All five issues remain `verified-local` until the production closure artifacts
|
||||
|
||||
Reference in New Issue
Block a user