fix(housekeeping): correct people partial audit evidence
This commit is contained in:
1 parent
91c9efcbb4
commit
fcd1dfd96e
5 files changed
+339
-89
No files matched your search
@@ -254,4 +254,57 @@ pnpm exec biome check --formatter-enabled=false <28 exact changed TypeScript/TSX
|
|||||||
Checked 28 files. No fixes applied.
|
Checked 28 files. No fixes applied.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The approved Node engine warning remains: the repository requests Node `>=26.8.1 <27`, while the host runs Node `v26.7.0` with pnpm `11.24.0`. No database operation, deployment, push, or pull-request update was performed.
|
||||||
|
|
||||||
|
## Official review fix round 3
|
||||||
|
|
||||||
|
The round-2 re-review reported 0 Critical, 2 Important, and 2 adjacent Minor findings. This round addresses all four findings without changing the nine-route manifest, the public command IDs, or legacy external call ordering and permissions.
|
||||||
|
|
||||||
|
### RED evidence
|
||||||
|
|
||||||
|
```text
|
||||||
|
Focused external-audit, bulk-production, and dispatcher matrix
|
||||||
|
Test Files 2 failed (2)
|
||||||
|
Tests 15 failed | 54 passed (69)
|
||||||
|
|
||||||
|
The ten external-only false/throw cases persisted optimistic desired after-state instead of confirmed unchanged or unknown delivery evidence. Four bulk currency/badge false/throw cases reported completed=0 and Database error after a committed database write. The dispatcher accepted one ok:false result carrying impossible completion metadata.
|
||||||
|
```
|
||||||
|
|
||||||
|
### GREEN implementation
|
||||||
|
|
||||||
|
- External-only alert, disconnect, mute, unmute, and send-currency keep desired state in intent/success evidence. Confirmed RCON `false` now writes a dedicated unchanged/no-delivery failure snapshot; an exception writes unknown delivery with a null after-state. Correlation and failure outcome stay identical across intent/outcome records.
|
||||||
|
- Bulk currency and badge count a successful database write before RCON. RCON false/throw is additive `externalSyncFailures` sync debt, never a database failure; `failedIds` remains reserved for database/business failures and the result is typed partial with an explicit no-automatic-retry warning.
|
||||||
|
- Webhook notification remains explicit fire-and-forget best effort (`void notify(...)`) and no longer participates in mutation completion. The impossible promise-rejection test was replaced with the real void contract.
|
||||||
|
- The dispatcher runtime schema now accepts `completion` only for `ok: true`, matching the TypeScript `HousekeepingResult` contract; failure envelopes containing it are rejected as malformed.
|
||||||
|
|
||||||
|
### Final verification after review fix round 3
|
||||||
|
|
||||||
|
```text
|
||||||
|
Focused external audit + production bulk + dispatcher
|
||||||
|
Test Files 3 passed (3)
|
||||||
|
Tests 73 passed (73)
|
||||||
|
|
||||||
|
People + foundation + legacy wrappers + staff-smoke matrix
|
||||||
|
Test Files 48 passed (48)
|
||||||
|
Tests 470 passed (470)
|
||||||
|
|
||||||
|
pnpm test:housekeeping
|
||||||
|
Test Files 58 passed (58)
|
||||||
|
Tests 516 passed (516)
|
||||||
|
|
||||||
|
pnpm test
|
||||||
|
Test Files 206 passed | 3 skipped (209)
|
||||||
|
Tests 1359 passed | 5 skipped (1364)
|
||||||
|
|
||||||
|
pnpm typecheck
|
||||||
|
tsc --noEmit
|
||||||
|
Exit 0
|
||||||
|
|
||||||
|
pnpm exec biome check --formatter-enabled=false <4 exact changed source/test files>
|
||||||
|
Checked 4 files. No fixes applied.
|
||||||
|
|
||||||
|
git diff --check
|
||||||
|
Exit 0
|
||||||
|
```
|
||||||
|
|
||||||
The approved Node engine warning remains: the repository requests Node `>=26.8.1 <27`, while the host runs Node `v26.7.0` with pnpm `11.24.0`. No database operation, deployment, push, or pull-request update was performed.
|
The approved Node engine warning remains: the repository requests Node `>=26.8.1 <27`, while the host runs Node `v26.7.0` with pnpm `11.24.0`. No database operation, deployment, push, or pull-request update was performed.
|
||||||
+211
-50
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -952,6 +952,22 @@ describe("dispatchHousekeepingCommand", () => {
|
|||||||
"invalid failure error",
|
"invalid failure error",
|
||||||
{ ok: false, error: null, correlationId: "forged" },
|
{ ok: false, error: null, correlationId: "forged" },
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
"failure completion metadata",
|
||||||
|
{
|
||||||
|
ok: false,
|
||||||
|
error: {
|
||||||
|
code: "DEPENDENCY_UNAVAILABLE",
|
||||||
|
messageKey: "errors.housekeeping.dependencyUnavailable",
|
||||||
|
},
|
||||||
|
correlationId: "forged",
|
||||||
|
completion: {
|
||||||
|
status: "partial",
|
||||||
|
external: "failed",
|
||||||
|
audit: "persisted",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
[
|
[
|
||||||
"throwing getter",
|
"throwing getter",
|
||||||
Object.defineProperty({}, "ok", {
|
Object.defineProperty({}, "ok", {
|
||||||
|
|||||||
@@ -71,13 +71,6 @@ const housekeepingResultSchema = z.discriminatedUnion("ok", [
|
|||||||
ok: z.literal(false),
|
ok: z.literal(false),
|
||||||
error: housekeepingErrorSchema,
|
error: housekeepingErrorSchema,
|
||||||
correlationId: z.string().min(1).max(160),
|
correlationId: z.string().min(1).max(160),
|
||||||
completion: z
|
|
||||||
.strictObject({
|
|
||||||
status: z.literal("partial"),
|
|
||||||
external: z.enum(["not-required", "completed", "failed"]),
|
|
||||||
audit: z.enum(["persisted", "unavailable"]),
|
|
||||||
})
|
|
||||||
.optional(),
|
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user